From 5745d21ad07ffb248cc167522d929e5128748a32 Mon Sep 17 00:00:00 2001 From: zblocker64 Date: Tue, 2 Jun 2026 14:04:46 -0500 Subject: [PATCH 01/10] feat: RDMA multinode GPU support (chain SDK pieces) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implements the akash-chain-sdk slice of the RDMA spec at provider/_docs/infiniband-implementation-spec.md, covering Linear tickets AKT-401..AKT-403, AKT-405, AKT-406 (CS-1, CS-2, CS-3, CS-5, CS-6). The shared-storage track (CS-4) is intentionally dropped: per spec decision #3 every service gets its own RWO PVC and the provider does not produce ReadWriteMany volumes. Everything in this commit is off-chain — no on-chain proto messages change, no validator upgrade required. CS-1 — Inventory v1 (proto/provider/akash/inventory/v1/{node,resources}.proto + go/inventory/v1/{node,resources}.pb.go regenerated via `make proto-gen-go`): * Add `ResourcePair rdma = 7` to `NodeResources`. * Add `rdma_resource_name`, `rdma_fabric`, `nccl_hca_prefix` strings to `NodeCapabilities` with gogoproto.customname annotations (`RDMAResourceName`, `RDMAFabric`, `NCCLHCAPrefix`). * Extend `Dup()` helpers in node.go and resources.go. * Tests: `node_test.go`, `resources_test.go` round-trip the new fields through Dup(). CS-2 — SDL parser: `gpu.attributes.rdma: true` (go/sdl/gpu.go): * Accept `rdma: true|false` under `gpu.attributes`. When true, emit a flat on-chain GPU attribute `rdma=true` so providers that advertise `capabilities/gpu/rdma=true` match. * Tests: `rdma_gpu_test.go::TestV2ResourceGPU_RDMAFlag` plus the existing `TestV2ResourceGPU` regression continues to pass. CS-3 — SDL parser: `gpu.attributes.rdma_group: ` → off-chain manifest field (go/sdl/gpu.go, proto/provider/akash/manifest/v2beta3/service.proto regenerated to go/manifest/v2beta3/service.pb.go, go/sdl/groupBuilder_v2{,_1}.go): * Parser captures rdma_group via an internal sentinel attribute key (`__rdma_group__`) inside `v2GPUAttributes.UnmarshalYAML`. The parent `v2ResourceGPU.UnmarshalYAML` strips the sentinel before the slice ever reaches on-chain `Resources.GPU.attributes` and surfaces the value on a dedicated `v2ResourceGPU.RDMAGroup` field. `Validate()` is deferred to the parent so the sentinel can be removed before the attribute-key regex runs. * Manifest `Service.proto` gains `rdma_group = 11` with `gogoproto.customname = "RDMAGroup"`. Bindings regenerated via `make proto-gen-go`. * Both v2 / v2.1 group builders now read `compute.Resources.GPU.RDMAGroup` and propagate it onto `manifest.Service.RDMAGroup`. * Tests: `TestV2ResourceGPU_RDMAGroupRoutedOffChain` (asserts the sentinel never escapes) and `TestV2ResourceGPU_RDMAGroupOmitted`. CS-5 — Parser cross-field validations (go/sdl/v2.go, validate() → new validateRDMA()): 1. Any compute profile with `gpu.attributes.rdma: true` requires its placement attributes to include `capabilities/rdma=true`. 2. Any compute profile with `gpu.attributes.rdma_group` set must also declare `gpu.attributes.rdma: true` on the same profile. 3. Within one placement, no implicit-default-plus-explicit mixing: if any profile sets rdma_group, every RDMA-using profile must. Helpers `gpuAttributesHaveRDMA` and `placementRequiresRDMA` are kept package-local so the SDL parser owns the policy. * Tests: `rdma_validation_test.go` (6 positive + negative fixtures). CS-6 — Reservation commit path audit (go/node/deployment/v1beta4/rdma_commit_audit_test.go): Table-driven regression test pinning down that `GroupSpec.Dup()` and the four concrete `ResourceGroup`-shaped values the provider's reservation path can hold (`*Group`, `Group`, `*GroupSpec`, `GroupSpec`) all preserve `Requirements.Attributes` (carrying `capabilities/rdma=true`) AND each resource's `GPU.Attributes` (carrying `rdma=true`). A future change that silently drops either slice — the exact failure mode the spec calls out — fails this test loudly. All `.pb.go` files were regenerated via `make proto-gen-go` (buf v1.47.2, protoc v29.1, gogoproto v1.7.2). Running `make proto-gen-go` against this tree should be a no-op. Tests (go test ./...): - pkg.akt.dev/go/inventory/v1 PASS - pkg.akt.dev/go/manifest/v2beta3 PASS - pkg.akt.dev/go/node/deployment/v1beta4 PASS (+ new CS-6 audit) - pkg.akt.dev/go/sdl PASS (+ new CS-2/CS-3/CS-5) Follow-ups for reviewers: - TypeScript bindings (`ts/`) are not touched here and need a separate `make proto-gen-ts` pass before the TS SDK consumes the new fields. Linear: AKT-401, AKT-402, AKT-403, AKT-405, AKT-406 (AKT-404 / CS-4 cancelled — see spec decision #3) Fix make/setup-cache.mk: defer GOLANGCI_LINT_MAJOR computation to recipe-execute time and depend on $(SEMVER), so the install isn't given an empty major and the broken module path .../golangci-lint/v/cmd/golangci-lint. This bug had `lint/go` red on main for several commits prior. --- go/inventory/v1/node.go | 5 +- go/inventory/v1/node.pb.go | 220 ++++++++++++++++-- go/inventory/v1/node_test.go | 42 ++++ go/inventory/v1/resourcepair.go | 36 ++- go/inventory/v1/resourcepair_zero_test.go | 68 ++++++ go/inventory/v1/resources.go | 1 + go/inventory/v1/resources.pb.go | 121 +++++++--- go/inventory/v1/resources_test.go | 33 +++ go/manifest/v2beta3/service.pb.go | 169 +++++++++----- .../v1beta4/rdma_commit_audit_test.go | 192 +++++++++++++++ go/sdl/gpu.go | 106 ++++++++- go/sdl/groupBuilder_v2.go | 8 + go/sdl/groupBuilder_v2_1.go | 5 + go/sdl/rdma_gpu_test.go | 186 +++++++++++++++ go/sdl/rdma_validation_test.go | 188 +++++++++++++++ go/sdl/v2.go | 150 ++++++++++++ make/setup-cache.mk | 10 +- proto/provider/akash/inventory/v1/node.proto | 27 +++ .../akash/inventory/v1/resources.proto | 11 + .../akash/manifest/v2beta3/service.proto | 16 ++ .../v2.0/gpu-basic/manifest.json | 3 +- .../v2.0/http-options/manifest.json | 3 +- .../v2.0/ip-endpoint/manifest.json | 3 +- .../v2.0/multiple-services/manifest.json | 9 +- .../v2.0/persistent-storage/manifest.json | 3 +- .../v2.0/placement/manifest.json | 3 +- .../v2.0/port-ranges/manifest.json | 3 +- .../v2.0/pricing/manifest.json | 6 +- .../output-fixtures/v2.0/simple/manifest.json | 3 +- .../v2.0/storage-classes/manifest.json | 3 +- .../v2.1/credentials/manifest.json | 3 +- .../v2.1/ip-endpoint/manifest.json | 6 +- .../v2.1/shared-ip/manifest.json | 6 +- .../protos/akash/inventory/v1/node.ts | 68 +++++- .../protos/akash/inventory/v1/resources.ts | 30 ++- .../protos/akash/manifest/v2beta3/service.ts | 34 ++- .../generateManifestVersion.spec.ts.snap | 178 +++++++------- 37 files changed, 1727 insertions(+), 231 deletions(-) create mode 100644 go/inventory/v1/node_test.go create mode 100644 go/inventory/v1/resourcepair_zero_test.go create mode 100644 go/inventory/v1/resources_test.go create mode 100644 go/node/deployment/v1beta4/rdma_commit_audit_test.go create mode 100644 go/sdl/rdma_gpu_test.go create mode 100644 go/sdl/rdma_validation_test.go diff --git a/go/inventory/v1/node.go b/go/inventory/v1/node.go index cf3a023e..86afc54a 100644 --- a/go/inventory/v1/node.go +++ b/go/inventory/v1/node.go @@ -2,7 +2,10 @@ package v1 func (nd *NodeCapabilities) Dup() NodeCapabilities { res := NodeCapabilities{ - StorageClasses: make([]string, 0, len(nd.StorageClasses)), + StorageClasses: make([]string, 0, len(nd.StorageClasses)), + RDMAResourceName: nd.RDMAResourceName, + RDMAFabric: nd.RDMAFabric, + NCCLHCAPrefix: nd.NCCLHCAPrefix, } res.StorageClasses = append(res.StorageClasses, nd.StorageClasses...) diff --git a/go/inventory/v1/node.pb.go b/go/inventory/v1/node.pb.go index 4598dff7..e110944a 100644 --- a/go/inventory/v1/node.pb.go +++ b/go/inventory/v1/node.pb.go @@ -26,6 +26,18 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // NodeCapabilities extended list of node capabilities type NodeCapabilities struct { StorageClasses []string `protobuf:"bytes,1,rep,name=storage_classes,json=storageClasses,proto3" json:"storage_classes" yaml:"storage_classes"` + // RDMA: Kubernetes extended-resource name the cluster's device plugin publishes + // for RDMA-capable HCAs (e.g. rdma/rdma_shared_device_ib for InfiniBand, + // rdma/rdma_shared_device_eth for RoCE). Empty when the node has no RDMA + // capability. Discovered by the inventory operator from k8s allocatable. + RDMAResourceName string `protobuf:"bytes,2,opt,name=rdma_resource_name,json=rdmaResourceName,proto3" json:"rdma_resource_name,omitempty" yaml:"rdma_resource_name,omitempty"` + // RDMA fabric type. "infiniband" or "roce". Derived from + // /sys/class/infiniband//ports/1/link_layer on the host node. + RDMAFabric string `protobuf:"bytes,3,opt,name=rdma_fabric,json=rdmaFabric,proto3" json:"rdma_fabric,omitempty" yaml:"rdma_fabric,omitempty"` + // NCCL IB HCA prefix - the common device-name prefix under + // /sys/class/infiniband (e.g. "mlx5"). Injected by the provider as + // NCCL_IB_HCA when scheduling RDMA workloads. + NCCLHCAPrefix string `protobuf:"bytes,4,opt,name=nccl_hca_prefix,json=ncclHcaPrefix,proto3" json:"nccl_hca_prefix,omitempty" yaml:"nccl_hca_prefix,omitempty"` } func (m *NodeCapabilities) Reset() { *m = NodeCapabilities{} } @@ -68,6 +80,27 @@ func (m *NodeCapabilities) GetStorageClasses() []string { return nil } +func (m *NodeCapabilities) GetRDMAResourceName() string { + if m != nil { + return m.RDMAResourceName + } + return "" +} + +func (m *NodeCapabilities) GetRDMAFabric() string { + if m != nil { + return m.RDMAFabric + } + return "" +} + +func (m *NodeCapabilities) GetNCCLHCAPrefix() string { + if m != nil { + return m.NCCLHCAPrefix + } + return "" +} + // Node reports node inventory details type Node struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name" yaml:"name"` @@ -137,30 +170,40 @@ func init() { func init() { proto.RegisterFile("akash/inventory/v1/node.proto", fileDescriptor_5f97c0fb35079221) } var fileDescriptor_5f97c0fb35079221 = []byte{ - // 364 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0x31, 0x6f, 0xe2, 0x30, - 0x1c, 0xc5, 0x63, 0x40, 0x27, 0x25, 0x20, 0x0e, 0xe5, 0x4e, 0xa7, 0x88, 0x53, 0x63, 0x6a, 0x75, - 0x60, 0x72, 0x04, 0xa8, 0x4b, 0x3b, 0x54, 0x0a, 0x3b, 0x43, 0xba, 0x75, 0xa9, 0x0c, 0x58, 0x21, - 0x02, 0x62, 0x14, 0xa7, 0x91, 0x90, 0xba, 0x76, 0xef, 0xc7, 0xe9, 0x47, 0x60, 0x64, 0xec, 0x64, - 0x55, 0x61, 0xcb, 0x98, 0x4f, 0x50, 0x25, 0x6e, 0x43, 0x42, 0xdb, 0x2d, 0x79, 0xbf, 0xe7, 0xf7, - 0xec, 0xff, 0x5f, 0x3b, 0x23, 0x4b, 0xc2, 0x17, 0x96, 0xe7, 0x47, 0xd4, 0x0f, 0x59, 0xb0, 0xb5, - 0xa2, 0x81, 0xe5, 0xb3, 0x39, 0xc5, 0x9b, 0x80, 0x85, 0x4c, 0xd7, 0x73, 0x8c, 0x0b, 0x8c, 0xa3, - 0x41, 0xf7, 0xaf, 0xcb, 0x5c, 0x96, 0x63, 0x2b, 0xfb, 0x92, 0xce, 0x2e, 0xfa, 0x26, 0x28, 0xa0, - 0x9c, 0x3d, 0x04, 0x33, 0xca, 0xa5, 0x07, 0x3d, 0x6a, 0x9d, 0x09, 0x9b, 0xd3, 0x31, 0xd9, 0x90, - 0xa9, 0xb7, 0xf2, 0x42, 0x8f, 0x72, 0x7d, 0xa1, 0xfd, 0xe6, 0x21, 0x0b, 0x88, 0x4b, 0xef, 0x67, - 0x2b, 0xc2, 0x39, 0xe5, 0x06, 0xe8, 0xd5, 0xfb, 0xaa, 0x7d, 0x13, 0x0b, 0xd8, 0xbe, 0x95, 0x68, - 0x2c, 0x49, 0x22, 0xe0, 0xa9, 0x39, 0x15, 0xf0, 0xdf, 0x96, 0xac, 0x57, 0x57, 0xe8, 0x04, 0x20, - 0xa7, 0xcd, 0x2b, 0x87, 0xd1, 0x4b, 0x4d, 0x6b, 0x64, 0xf5, 0xfa, 0x48, 0x6b, 0xf8, 0x64, 0x4d, - 0x0d, 0xd0, 0x03, 0x7d, 0xd5, 0x86, 0xb1, 0x80, 0x8d, 0x09, 0x59, 0xd3, 0x44, 0xc0, 0x5c, 0x4f, - 0x05, 0x6c, 0xca, 0xc8, 0xec, 0x0f, 0x39, 0xb9, 0xa8, 0x73, 0x4d, 0x2d, 0x9e, 0x63, 0xd4, 0x7a, - 0xa0, 0xdf, 0x1c, 0x9e, 0xe3, 0xaf, 0xd3, 0xc1, 0x59, 0x83, 0xf3, 0x69, 0xb4, 0x87, 0x3b, 0x01, - 0x95, 0x58, 0x40, 0xb5, 0x90, 0x12, 0x01, 0x8f, 0x41, 0xa9, 0x80, 0x1d, 0x59, 0x55, 0x48, 0xc8, - 0x39, 0x62, 0xfd, 0x09, 0x68, 0xad, 0x59, 0x69, 0x5a, 0x46, 0x3d, 0x2f, 0xbe, 0xf8, 0xa9, 0xb8, - 0x3c, 0x59, 0xfb, 0xfa, 0xa3, 0xbb, 0x55, 0x56, 0x13, 0x01, 0x2b, 0x89, 0xa9, 0x80, 0x7f, 0xe4, - 0x0d, 0xca, 0x2a, 0x72, 0x2a, 0x26, 0xfb, 0x72, 0x17, 0x9b, 0x60, 0x1f, 0x9b, 0xe0, 0x2d, 0x36, - 0xc1, 0xf3, 0xc1, 0x54, 0xf6, 0x07, 0x53, 0x79, 0x3d, 0x98, 0xca, 0xdd, 0xff, 0xcd, 0xd2, 0xc5, - 0x64, 0x19, 0xe2, 0x39, 0x8d, 0x2c, 0x97, 0x55, 0xf6, 0x3f, 0xfd, 0x95, 0xaf, 0x7d, 0xf4, 0x1e, - 0x00, 0x00, 0xff, 0xff, 0x60, 0xd5, 0x85, 0xca, 0x65, 0x02, 0x00, 0x00, + // 518 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x53, 0xbf, 0x6f, 0xd3, 0x40, + 0x14, 0x8e, 0xdb, 0x08, 0x29, 0x97, 0xfe, 0x88, 0x8e, 0x1f, 0x0a, 0xa5, 0xf8, 0xc2, 0xc1, 0xd0, + 0x01, 0x39, 0x6a, 0x2a, 0x16, 0x18, 0x50, 0x6d, 0x04, 0x1d, 0x20, 0x42, 0xc7, 0x06, 0x83, 0x75, + 0x71, 0xae, 0x8e, 0x95, 0xd8, 0x67, 0xf9, 0x4c, 0x44, 0xd8, 0x19, 0xd8, 0xf8, 0x73, 0xf8, 0x13, + 0x3a, 0x76, 0x64, 0x3a, 0x21, 0x67, 0xf3, 0xc0, 0xe0, 0xbf, 0x00, 0xf9, 0xec, 0xa4, 0x76, 0x4a, + 0xd9, 0x4e, 0xdf, 0xf7, 0xbd, 0xef, 0x7b, 0x7a, 0xef, 0x1d, 0x78, 0x48, 0xa7, 0x54, 0x4c, 0xfa, + 0x5e, 0x30, 0x67, 0x41, 0xcc, 0xa3, 0x45, 0x7f, 0x7e, 0xdc, 0x0f, 0xf8, 0x98, 0x19, 0x61, 0xc4, + 0x63, 0x0e, 0xa1, 0xa2, 0x8d, 0x35, 0x6d, 0xcc, 0x8f, 0x0f, 0xee, 0xb8, 0xdc, 0xe5, 0x8a, 0xee, + 0xe7, 0xaf, 0x42, 0x79, 0x80, 0xff, 0x61, 0x14, 0x31, 0xc1, 0x3f, 0x47, 0x0e, 0x13, 0x85, 0x06, + 0xff, 0xd9, 0x06, 0x9d, 0x21, 0x1f, 0x33, 0x8b, 0x86, 0x74, 0xe4, 0xcd, 0xbc, 0xd8, 0x63, 0x02, + 0x4e, 0xc0, 0xbe, 0x88, 0x79, 0x44, 0x5d, 0x66, 0x3b, 0x33, 0x2a, 0x04, 0x13, 0x5d, 0xad, 0xb7, + 0x7d, 0xd4, 0x32, 0x5f, 0x26, 0x12, 0xed, 0x7d, 0x28, 0x28, 0xab, 0x60, 0x52, 0x89, 0x36, 0xc5, + 0x99, 0x44, 0xf7, 0x16, 0xd4, 0x9f, 0x3d, 0xc7, 0x1b, 0x04, 0x26, 0x7b, 0xa2, 0x56, 0x0c, 0xbf, + 0x6b, 0x00, 0x46, 0x63, 0x9f, 0xda, 0xab, 0xbe, 0xec, 0x80, 0xfa, 0xac, 0xbb, 0xd5, 0xd3, 0x8e, + 0x5a, 0xe6, 0xa7, 0x44, 0xa2, 0x0e, 0x79, 0xf5, 0xee, 0x94, 0x94, 0xe4, 0x90, 0xfa, 0x2c, 0x95, + 0xe8, 0xf0, 0x7a, 0xc5, 0x53, 0xee, 0x7b, 0x31, 0xf3, 0xc3, 0x78, 0x91, 0x49, 0xf4, 0xb8, 0x08, + 0xff, 0x9f, 0x0a, 0x93, 0x4e, 0x4e, 0x57, 0x8d, 0xe1, 0x04, 0xb4, 0x55, 0xc9, 0x39, 0x1d, 0x45, + 0x9e, 0xd3, 0xdd, 0x56, 0x3d, 0xbc, 0x49, 0x24, 0x02, 0x79, 0x0f, 0xaf, 0x15, 0x9a, 0x4a, 0x74, + 0xb7, 0x22, 0xaa, 0xc5, 0x1e, 0x56, 0x62, 0x37, 0x69, 0x4c, 0x40, 0x8e, 0x17, 0x26, 0xf0, 0x2b, + 0xd8, 0x0f, 0x1c, 0x67, 0x66, 0x4f, 0x1c, 0x6a, 0x87, 0x11, 0x3b, 0xf7, 0xbe, 0x74, 0x9b, 0x2a, + 0x8d, 0x24, 0x12, 0xed, 0x0e, 0x2d, 0xeb, 0xed, 0x99, 0x75, 0xfa, 0x5e, 0x11, 0xa9, 0x44, 0xf7, + 0x37, 0xb4, 0xb5, 0xd0, 0x5e, 0x11, 0x7a, 0xa3, 0x04, 0x93, 0xdd, 0x9c, 0x3b, 0x73, 0x68, 0xe1, + 0x87, 0x7f, 0x6e, 0x81, 0x66, 0xbe, 0x70, 0x78, 0x02, 0x9a, 0x6a, 0xd6, 0x9a, 0x4a, 0x46, 0x89, + 0x44, 0xcd, 0x72, 0xbe, 0x0a, 0xcf, 0x24, 0x6a, 0x97, 0xde, 0xd4, 0x67, 0x98, 0x28, 0x10, 0x0a, + 0xd0, 0x5a, 0x5f, 0x90, 0xda, 0x52, 0x7b, 0xf0, 0xc8, 0xb8, 0x7e, 0x90, 0x46, 0x9e, 0xb0, 0x1a, + 0xae, 0x30, 0x07, 0x17, 0x12, 0x35, 0x12, 0x89, 0x5a, 0x6b, 0x28, 0x95, 0xe8, 0xca, 0x28, 0x93, + 0xa8, 0x53, 0xce, 0x6e, 0x05, 0x61, 0x72, 0x45, 0xc3, 0x6f, 0x1a, 0xd8, 0x71, 0x2a, 0xf7, 0xa9, + 0x56, 0xd3, 0x1e, 0x3c, 0xb9, 0x29, 0xb8, 0x7a, 0xcb, 0xe6, 0x8b, 0x32, 0x7b, 0xa7, 0x8a, 0xa6, + 0x12, 0xd5, 0x1c, 0x33, 0x89, 0x6e, 0x17, 0x1d, 0x54, 0x51, 0x4c, 0x6a, 0x22, 0xf3, 0xd9, 0x45, + 0xa2, 0x6b, 0x97, 0x89, 0xae, 0xfd, 0x4e, 0x74, 0xed, 0xc7, 0x52, 0x6f, 0x5c, 0x2e, 0xf5, 0xc6, + 0xaf, 0xa5, 0xde, 0xf8, 0xf8, 0x20, 0x9c, 0xba, 0x06, 0x9d, 0xc6, 0xc6, 0x98, 0xcd, 0xfb, 0x2e, + 0xaf, 0x7d, 0xb9, 0xd1, 0x2d, 0xf5, 0xd3, 0x4e, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, 0xb0, 0xec, + 0xfc, 0x17, 0xd8, 0x03, 0x00, 0x00, } func (m *NodeCapabilities) Marshal() (dAtA []byte, err error) { @@ -183,6 +226,27 @@ func (m *NodeCapabilities) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.NCCLHCAPrefix) > 0 { + i -= len(m.NCCLHCAPrefix) + copy(dAtA[i:], m.NCCLHCAPrefix) + i = encodeVarintNode(dAtA, i, uint64(len(m.NCCLHCAPrefix))) + i-- + dAtA[i] = 0x22 + } + if len(m.RDMAFabric) > 0 { + i -= len(m.RDMAFabric) + copy(dAtA[i:], m.RDMAFabric) + i = encodeVarintNode(dAtA, i, uint64(len(m.RDMAFabric))) + i-- + dAtA[i] = 0x1a + } + if len(m.RDMAResourceName) > 0 { + i -= len(m.RDMAResourceName) + copy(dAtA[i:], m.RDMAResourceName) + i = encodeVarintNode(dAtA, i, uint64(len(m.RDMAResourceName))) + i-- + dAtA[i] = 0x12 + } if len(m.StorageClasses) > 0 { for iNdEx := len(m.StorageClasses) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.StorageClasses[iNdEx]) @@ -268,6 +332,18 @@ func (m *NodeCapabilities) Size() (n int) { n += 1 + l + sovNode(uint64(l)) } } + l = len(m.RDMAResourceName) + if l > 0 { + n += 1 + l + sovNode(uint64(l)) + } + l = len(m.RDMAFabric) + if l > 0 { + n += 1 + l + sovNode(uint64(l)) + } + l = len(m.NCCLHCAPrefix) + if l > 0 { + n += 1 + l + sovNode(uint64(l)) + } return n } @@ -355,6 +431,102 @@ func (m *NodeCapabilities) Unmarshal(dAtA []byte) error { } m.StorageClasses = append(m.StorageClasses, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RDMAResourceName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNode + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthNode + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthNode + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RDMAResourceName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RDMAFabric", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNode + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthNode + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthNode + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RDMAFabric = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NCCLHCAPrefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowNode + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthNode + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthNode + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NCCLHCAPrefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipNode(dAtA[iNdEx:]) diff --git a/go/inventory/v1/node_test.go b/go/inventory/v1/node_test.go new file mode 100644 index 00000000..24908978 --- /dev/null +++ b/go/inventory/v1/node_test.go @@ -0,0 +1,42 @@ +package v1 + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestNodeCapabilities_Dup_PreservesRDMAFields(t *testing.T) { + src := NodeCapabilities{ + StorageClasses: []string{"beta3", "default"}, + RDMAResourceName: "rdma/rdma_shared_device_ib", + RDMAFabric: "infiniband", + NCCLHCAPrefix: "mlx5", + } + + got := src.Dup() + + require.Equal(t, src.StorageClasses, got.StorageClasses) + require.Equal(t, "rdma/rdma_shared_device_ib", got.RDMAResourceName) + require.Equal(t, "infiniband", got.RDMAFabric) + require.Equal(t, "mlx5", got.NCCLHCAPrefix) + + // mutating dup must not affect the source (Dup is a deep copy) + got.StorageClasses[0] = "mutated" + got.RDMAResourceName = "rdma/rdma_shared_device_eth" + require.Equal(t, "beta3", src.StorageClasses[0]) + require.Equal(t, "rdma/rdma_shared_device_ib", src.RDMAResourceName) +} + +func TestNodeCapabilities_Dup_ZeroValueRDMA(t *testing.T) { + // A non-RDMA node leaves the new fields at zero value. + src := NodeCapabilities{ + StorageClasses: []string{"default"}, + } + + got := src.Dup() + + require.Empty(t, got.RDMAResourceName) + require.Empty(t, got.RDMAFabric) + require.Empty(t, got.NCCLHCAPrefix) +} diff --git a/go/inventory/v1/resourcepair.go b/go/inventory/v1/resourcepair.go index 9a96b5d5..9183bdd9 100644 --- a/go/inventory/v1/resourcepair.go +++ b/go/inventory/v1/resourcepair.go @@ -47,19 +47,43 @@ func (m *ResourcePair) LT(rhs ResourcePair) bool { return m.Allocatable.Cmp(*rhs.Allocatable) == -1 } +// IsZero reports whether the ResourcePair has been initialized. A +// zero-valued ResourcePair has nil quantity pointers and is the natural +// state for, e.g., a node that does not have RDMA capacity (and therefore +// leaves `NodeResources.RDMA` untouched). +func (m *ResourcePair) IsZero() bool { + if m == nil { + return true + } + return m.Capacity == nil && m.Allocatable == nil && m.Allocated == nil && len(m.Attributes) == 0 +} + func (m *ResourcePair) Dup() ResourcePair { - capacity := m.Capacity.DeepCopy() - allocatable := m.Allocatable.DeepCopy() - allocated := m.Allocated.DeepCopy() + // A zero-valued ResourcePair (all quantity pointers nil) must round-trip + // through Dup() without panicking. Without this guard, calling Dup() + // against e.g. an unpopulated `NodeResources.RDMA` on a non-RDMA node + // nil-derefs Capacity.DeepCopy(). + if m == nil || m.IsZero() { + return ResourcePair{} + } - res := ResourcePair{ + var capacity, allocatable, allocated resource.Quantity + if m.Capacity != nil { + capacity = m.Capacity.DeepCopy() + } + if m.Allocatable != nil { + allocatable = m.Allocatable.DeepCopy() + } + if m.Allocated != nil { + allocated = m.Allocated.DeepCopy() + } + + return ResourcePair{ Capacity: &capacity, Allocatable: &allocatable, Allocated: &allocated, Attributes: m.Attributes.Dup(), } - - return res } func (m *ResourcePair) SubMilliNLZ(val types.ResourceValue) bool { diff --git a/go/inventory/v1/resourcepair_zero_test.go b/go/inventory/v1/resourcepair_zero_test.go new file mode 100644 index 00000000..bb8ee9d8 --- /dev/null +++ b/go/inventory/v1/resourcepair_zero_test.go @@ -0,0 +1,68 @@ +package v1 + +import ( + "testing" + + "github.com/stretchr/testify/require" + "k8s.io/apimachinery/pkg/api/resource" +) + +// CodeRabbit follow-up: ResourcePair.Dup() previously dereferenced +// Capacity/Allocatable/Allocated unconditionally, which panics for a +// zero-value ResourcePair. Non-RDMA nodes legitimately leave +// NodeResources.RDMA at zero value (no quantity pointers populated), so +// NodeResources.Dup() ends up calling ResourcePair.Dup() on a zero value. +// +// Two assertions: +// 1. ResourcePair.Dup() returns an equivalent zero-valued ResourcePair +// without panicking when called on the nil/zero receiver. +// 2. NodeResources.Dup() round-trips a non-RDMA NodeResources (RDMA +// left at zero value) without panicking. + +func TestResourcePair_Dup_ZeroValueDoesNotPanic(t *testing.T) { + var zero ResourcePair + require.True(t, zero.IsZero(), "fresh ResourcePair must report IsZero") + + got := zero.Dup() + require.True(t, got.IsZero(), "Dup of zero ResourcePair must remain zero") +} + +func TestResourcePair_Dup_NilReceiverDoesNotPanic(t *testing.T) { + var nilRP *ResourcePair + // Calling a method on a nil pointer receiver is only safe if the method + // itself checks for nil; the new Dup() does. + got := nilRP.Dup() + require.True(t, got.IsZero()) +} + +func TestResourcePair_Dup_PopulatedRoundTrips(t *testing.T) { + rp := NewResourcePair(63, 8, 8, resource.DecimalSI) + got := rp.Dup() + + require.Equal(t, int64(63), got.Capacity.Value()) + require.Equal(t, int64(8), got.Allocatable.Value()) + require.Equal(t, int64(8), got.Allocated.Value()) + + // Mutating the dup must not poison the source — Dup() is a deep copy. + got.Allocated.Set(0) + require.Equal(t, int64(8), rp.Allocated.Value()) +} + +// Mirrors the realistic non-RDMA-node case the bug would surface in. +func TestNodeResources_Dup_ZeroRDMA_DoesNotPanic(t *testing.T) { + zero := NewResourcePair(0, 0, 0, resource.DecimalSI) + + // Every member is initialized except RDMA, which is left at zero value. + src := NodeResources{ + CPU: CPU{Quantity: NewResourcePairMilli(0, 0, 0, resource.DecimalSI)}, + Memory: Memory{Quantity: zero}, + GPU: GPU{Quantity: zero}, + EphemeralStorage: zero, + VolumesAttached: zero, + VolumesMounted: zero, + // RDMA: + } + + got := src.Dup() + require.True(t, got.RDMA.IsZero(), "zero-value RDMA must Dup as zero") +} diff --git a/go/inventory/v1/resources.go b/go/inventory/v1/resources.go index f3a6487e..67453b5f 100644 --- a/go/inventory/v1/resources.go +++ b/go/inventory/v1/resources.go @@ -8,6 +8,7 @@ func (s *NodeResources) Dup() NodeResources { EphemeralStorage: s.EphemeralStorage.Dup(), VolumesAttached: s.VolumesAttached.Dup(), VolumesMounted: s.VolumesMounted.Dup(), + RDMA: s.RDMA.Dup(), } return res diff --git a/go/inventory/v1/resources.pb.go b/go/inventory/v1/resources.pb.go index 7bb4cfd5..b88e9afb 100644 --- a/go/inventory/v1/resources.pb.go +++ b/go/inventory/v1/resources.pb.go @@ -31,6 +31,11 @@ type NodeResources struct { EphemeralStorage ResourcePair `protobuf:"bytes,4,opt,name=ephemeral_storage,json=ephemeralStorage,proto3" json:"ephemeral_storage" yaml:"ephemeral_storage"` VolumesAttached ResourcePair `protobuf:"bytes,5,opt,name=volumes_attached,json=volumesAttached,proto3" json:"volumes_attached" yaml:"volumes_attached"` VolumesMounted ResourcePair `protobuf:"bytes,6,opt,name=volumes_mounted,json=volumesMounted,proto3" json:"volumes_mounted" yaml:"volumes_mounted"` + // RDMA reports node RDMA capacity. Capacity/Allocatable/Allocated are + // populated by the inventory operator from k8s allocatable for whichever + // rdma/rdma_shared_device_* extended resource the cluster's device plugin + // publishes (see NodeCapabilities.rdma_resource_name). + RDMA ResourcePair `protobuf:"bytes,7,opt,name=rdma,proto3" json:"rdma" yaml:"rdma"` } func (m *NodeResources) Reset() { *m = NodeResources{} } @@ -108,6 +113,13 @@ func (m *NodeResources) GetVolumesMounted() ResourcePair { return ResourcePair{} } +func (m *NodeResources) GetRDMA() ResourcePair { + if m != nil { + return m.RDMA + } + return ResourcePair{} +} + func init() { proto.RegisterType((*NodeResources)(nil), "akash.inventory.v1.NodeResources") } @@ -117,37 +129,39 @@ func init() { } var fileDescriptor_f20a722bd8ee01b5 = []byte{ - // 475 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xc1, 0x8a, 0xd3, 0x40, - 0x18, 0xc7, 0x1b, 0xbb, 0xdb, 0xc3, 0xc8, 0xee, 0xd6, 0x20, 0x6e, 0xa8, 0x92, 0x29, 0x03, 0xc2, - 0x7a, 0x49, 0x58, 0xc5, 0x8b, 0x37, 0x53, 0xb4, 0x88, 0xac, 0x84, 0x2c, 0xf5, 0x20, 0x48, 0x19, - 0xd3, 0x61, 0x5a, 0xda, 0x74, 0x86, 0x24, 0x13, 0xd8, 0x97, 0x10, 0xc1, 0x8b, 0xcf, 0xe0, 0x93, - 0xec, 0x71, 0xf1, 0xe4, 0x69, 0x94, 0xf6, 0x96, 0x63, 0x9e, 0x40, 0x92, 0x99, 0x2c, 0xb6, 0xcd, - 0x2e, 0x7b, 0x6b, 0xe6, 0xff, 0xff, 0x7e, 0xdf, 0x6f, 0x0a, 0x03, 0x10, 0x9e, 0xe3, 0x64, 0xea, - 0xce, 0x96, 0x19, 0x59, 0xa6, 0x2c, 0xbe, 0x70, 0xb3, 0x53, 0x37, 0x26, 0x09, 0x13, 0x71, 0x48, - 0x12, 0x87, 0xc7, 0x2c, 0x65, 0xa6, 0x59, 0x75, 0x9c, 0xeb, 0x8e, 0x93, 0x9d, 0xf6, 0x1e, 0x52, - 0x46, 0x59, 0x15, 0xbb, 0xe5, 0x2f, 0xd5, 0xec, 0x3d, 0x69, 0xa0, 0x85, 0x5c, 0xdc, 0x92, 0xd2, - 0xeb, 0x14, 0x36, 0xa4, 0x11, 0x89, 0xca, 0x7d, 0xaa, 0xf0, 0xf4, 0x16, 0x55, 0x8e, 0x67, 0xb1, - 0xaa, 0xa1, 0x5f, 0xfb, 0xe0, 0xe0, 0x03, 0x9b, 0x90, 0xa0, 0xbe, 0x85, 0xf9, 0x1e, 0xb4, 0x43, - 0x2e, 0x2c, 0xa3, 0x6f, 0x9c, 0xdc, 0x7f, 0x7e, 0xec, 0xec, 0xde, 0xc6, 0x19, 0xf8, 0x23, 0xaf, - 0x7f, 0x29, 0x61, 0x6b, 0x25, 0x61, 0x7b, 0xe0, 0x8f, 0x72, 0x09, 0xcb, 0x91, 0x42, 0x42, 0x70, - 0x81, 0xa3, 0xc5, 0x2b, 0x14, 0x72, 0x81, 0x82, 0xf2, 0xc8, 0xfc, 0x0c, 0x3a, 0xca, 0xca, 0xba, - 0x57, 0xf1, 0x7a, 0x4d, 0xbc, 0xb3, 0xaa, 0xe1, 0x3d, 0xd3, 0xc8, 0x8e, 0xfa, 0xce, 0x25, 0xd4, - 0xb3, 0x85, 0x84, 0x07, 0x0a, 0xac, 0xbe, 0x51, 0xa0, 0x03, 0xf3, 0x1c, 0xb4, 0x29, 0x17, 0x56, - 0xfb, 0x66, 0xd7, 0xa1, 0x3f, 0xf2, 0x4e, 0x6a, 0xd7, 0xa1, 0x72, 0xa5, 0xff, 0xbb, 0x52, 0x2e, - 0xd0, 0xcf, 0x3f, 0x70, 0x6f, 0xe8, 0x8f, 0x92, 0xa0, 0x8c, 0xcc, 0x1f, 0x06, 0x78, 0x40, 0xf8, - 0x94, 0x44, 0x24, 0xc6, 0x8b, 0x71, 0x92, 0xb2, 0x18, 0x53, 0x62, 0xed, 0x55, 0x3b, 0xfa, 0x4d, - 0x3b, 0xea, 0xff, 0xce, 0xc7, 0xb3, 0xd8, 0x7b, 0xa7, 0x97, 0x75, 0xdf, 0xd4, 0x88, 0x73, 0x45, - 0xc8, 0x25, 0xdc, 0xc5, 0x16, 0x12, 0x5a, 0xca, 0x63, 0x27, 0x42, 0x41, 0x97, 0x6c, 0x21, 0xcc, - 0xef, 0x06, 0xe8, 0x66, 0x6c, 0x21, 0x22, 0x92, 0x8c, 0x71, 0x9a, 0xe2, 0x70, 0x4a, 0x26, 0xd6, - 0xfe, 0x1d, 0xcd, 0xde, 0x6a, 0xb3, 0xa3, 0x8f, 0x8a, 0xf0, 0x5a, 0x03, 0x72, 0x09, 0x77, 0xa0, - 0x85, 0x84, 0xc7, 0xca, 0x6b, 0x3b, 0x41, 0xc1, 0x51, 0xb6, 0x39, 0x6f, 0x7e, 0x35, 0x40, 0x7d, - 0x36, 0x8e, 0x98, 0x58, 0xa6, 0x64, 0x62, 0x75, 0xee, 0x28, 0x35, 0xd0, 0x52, 0x87, 0x5a, 0xea, - 0x4c, 0xcd, 0xe7, 0x12, 0x6e, 0x23, 0x0b, 0x09, 0x1f, 0x6d, 0x2a, 0xe9, 0x00, 0x05, 0x87, 0xd9, - 0xc6, 0xb0, 0xf7, 0xf2, 0x72, 0x65, 0x1b, 0x57, 0x2b, 0xdb, 0xf8, 0xbb, 0xb2, 0x8d, 0x6f, 0x6b, - 0xbb, 0x75, 0xb5, 0xb6, 0x5b, 0xbf, 0xd7, 0x76, 0xeb, 0xd3, 0x63, 0x3e, 0xa7, 0x0e, 0x9e, 0xa7, - 0xce, 0x84, 0x64, 0x2e, 0x65, 0x1b, 0xcf, 0xe3, 0x4b, 0xa7, 0x7a, 0x12, 0x2f, 0xfe, 0x05, 0x00, - 0x00, 0xff, 0xff, 0xca, 0x7c, 0xf6, 0x39, 0xe6, 0x03, 0x00, 0x00, + // 506 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x4d, 0x8b, 0xd3, 0x40, + 0x18, 0xc7, 0x1b, 0x5b, 0x23, 0xcc, 0xb2, 0xbb, 0x35, 0x88, 0x1b, 0xaa, 0x64, 0xca, 0x88, 0xb0, + 0x5e, 0x12, 0x56, 0xf1, 0xe2, 0x6d, 0x53, 0xb5, 0x88, 0x54, 0x42, 0x96, 0x0a, 0x0a, 0x52, 0xc6, + 0x64, 0x48, 0x4b, 0x9b, 0x4e, 0x98, 0xbc, 0xc0, 0x7e, 0x09, 0x11, 0xbc, 0xf8, 0x19, 0x04, 0xbf, + 0xc7, 0x1e, 0xf7, 0xe8, 0x69, 0x94, 0xf6, 0x96, 0x63, 0x3e, 0x81, 0x24, 0x33, 0x59, 0xec, 0x8b, + 0xa5, 0xb7, 0xcc, 0xf3, 0x7f, 0x9e, 0xdf, 0xf3, 0x9b, 0xc0, 0x00, 0x84, 0xa7, 0x38, 0x1e, 0x5b, + 0x93, 0x79, 0x46, 0xe6, 0x09, 0x65, 0x97, 0x56, 0x76, 0x66, 0x31, 0x12, 0xd3, 0x94, 0x79, 0x24, + 0x36, 0x23, 0x46, 0x13, 0xaa, 0x69, 0x55, 0x8f, 0x79, 0xd3, 0x63, 0x66, 0x67, 0x9d, 0x7b, 0x01, + 0x0d, 0x68, 0x15, 0x5b, 0xe5, 0x97, 0xe8, 0xec, 0x3c, 0xdc, 0x42, 0xf3, 0xa2, 0x74, 0x47, 0x1a, + 0xdc, 0xa4, 0x70, 0x4b, 0x1a, 0x92, 0xb0, 0xdc, 0x27, 0x1a, 0x1e, 0xef, 0x50, 0x8d, 0xf0, 0x84, + 0x89, 0x36, 0xf4, 0x53, 0x05, 0x87, 0xef, 0xa8, 0x4f, 0xdc, 0xfa, 0x16, 0xda, 0x5b, 0xd0, 0xf4, + 0xa2, 0x54, 0x57, 0xba, 0xca, 0xe9, 0xc1, 0xd3, 0x13, 0x73, 0xf3, 0x36, 0x66, 0xcf, 0x19, 0xda, + 0xdd, 0x2b, 0x0e, 0x1b, 0x0b, 0x0e, 0x9b, 0x3d, 0x67, 0x98, 0x73, 0x58, 0x8e, 0x14, 0x1c, 0x82, + 0x4b, 0x1c, 0xce, 0x5e, 0x20, 0x2f, 0x4a, 0x91, 0x5b, 0x96, 0xb4, 0x4f, 0x40, 0x15, 0x56, 0xfa, + 0xad, 0x8a, 0xd7, 0xd9, 0xc6, 0x1b, 0x54, 0x1d, 0xf6, 0x13, 0x89, 0x54, 0xc5, 0x39, 0xe7, 0x50, + 0xce, 0x16, 0x1c, 0x1e, 0x0a, 0xb0, 0x38, 0x23, 0x57, 0x06, 0xda, 0x05, 0x68, 0x06, 0x51, 0xaa, + 0x37, 0xff, 0xef, 0xda, 0x77, 0x86, 0xf6, 0x69, 0xed, 0xda, 0x17, 0xae, 0xc1, 0xbf, 0xae, 0x41, + 0x94, 0xa2, 0x1f, 0xbf, 0x61, 0xab, 0xef, 0x0c, 0x63, 0xb7, 0x8c, 0xb4, 0xef, 0x0a, 0xb8, 0x4b, + 0xa2, 0x31, 0x09, 0x09, 0xc3, 0xb3, 0x51, 0x9c, 0x50, 0x86, 0x03, 0xa2, 0xb7, 0xaa, 0x1d, 0xdd, + 0x6d, 0x3b, 0xea, 0x7f, 0xe7, 0xe0, 0x09, 0xb3, 0xdf, 0xc8, 0x65, 0xed, 0x57, 0x35, 0xe2, 0x42, + 0x10, 0x72, 0x0e, 0x37, 0xb1, 0x05, 0x87, 0xba, 0xf0, 0xd8, 0x88, 0x90, 0xdb, 0x26, 0x6b, 0x08, + 0xed, 0x9b, 0x02, 0xda, 0x19, 0x9d, 0xa5, 0x21, 0x89, 0x47, 0x38, 0x49, 0xb0, 0x37, 0x26, 0xbe, + 0x7e, 0x7b, 0x4f, 0xb3, 0xd7, 0xd2, 0xec, 0xf8, 0xbd, 0x20, 0x9c, 0x4b, 0x40, 0xce, 0xe1, 0x06, + 0xb4, 0xe0, 0xf0, 0x44, 0x78, 0xad, 0x27, 0xc8, 0x3d, 0xce, 0x56, 0xe7, 0xb5, 0x2f, 0x0a, 0xa8, + 0x6b, 0xa3, 0x90, 0xa6, 0xf3, 0x84, 0xf8, 0xba, 0xba, 0xa7, 0x54, 0x4f, 0x4a, 0x1d, 0x49, 0xa9, + 0x81, 0x98, 0xcf, 0x39, 0x5c, 0x47, 0x16, 0x1c, 0xde, 0x5f, 0x55, 0x92, 0x01, 0x72, 0x8f, 0xb2, + 0x95, 0x61, 0xed, 0x03, 0x68, 0x31, 0x3f, 0xc4, 0xfa, 0x9d, 0x3d, 0x25, 0x1e, 0x49, 0x89, 0x96, + 0xfb, 0x72, 0x70, 0x9e, 0x73, 0x58, 0x4d, 0x17, 0x1c, 0x1e, 0x88, 0x7d, 0xe5, 0x09, 0xb9, 0x55, + 0xd1, 0x7e, 0x7e, 0xb5, 0x30, 0x94, 0xeb, 0x85, 0xa1, 0xfc, 0x59, 0x18, 0xca, 0xd7, 0xa5, 0xd1, + 0xb8, 0x5e, 0x1a, 0x8d, 0x5f, 0x4b, 0xa3, 0xf1, 0xf1, 0x41, 0x34, 0x0d, 0x4c, 0x3c, 0x4d, 0x4c, + 0x9f, 0x64, 0x56, 0x40, 0x57, 0x5e, 0xde, 0x67, 0xb5, 0x7a, 0x6d, 0xcf, 0xfe, 0x06, 0x00, 0x00, + 0xff, 0xff, 0x0f, 0xb2, 0x65, 0x4f, 0x41, 0x04, 0x00, 0x00, } func (m *NodeResources) Marshal() (dAtA []byte, err error) { @@ -170,6 +184,16 @@ func (m *NodeResources) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size, err := m.RDMA.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintResources(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a { size, err := m.VolumesMounted.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -262,6 +286,8 @@ func (m *NodeResources) Size() (n int) { n += 1 + l + sovResources(uint64(l)) l = m.VolumesMounted.Size() n += 1 + l + sovResources(uint64(l)) + l = m.RDMA.Size() + n += 1 + l + sovResources(uint64(l)) return n } @@ -498,6 +524,39 @@ func (m *NodeResources) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RDMA", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowResources + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthResources + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthResources + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RDMA.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipResources(dAtA[iNdEx:]) diff --git a/go/inventory/v1/resources_test.go b/go/inventory/v1/resources_test.go new file mode 100644 index 00000000..1aee4dc0 --- /dev/null +++ b/go/inventory/v1/resources_test.go @@ -0,0 +1,33 @@ +package v1 + +import ( + "testing" + + "github.com/stretchr/testify/require" + "k8s.io/apimachinery/pkg/api/resource" +) + +func TestNodeResources_Dup_PreservesRDMA(t *testing.T) { + // NodeResources.Dup() reads each member's Dup() so every member must be + // initialized to a non-zero ResourcePair to avoid nil-quantity panics. + zeroPair := NewResourcePair(0, 0, 0, resource.DecimalSI) + src := NodeResources{ + CPU: CPU{Quantity: NewResourcePairMilli(0, 0, 0, resource.DecimalSI)}, + Memory: Memory{Quantity: zeroPair}, + GPU: GPU{Quantity: zeroPair}, + EphemeralStorage: zeroPair, + VolumesAttached: zeroPair, + VolumesMounted: zeroPair, + RDMA: NewResourcePair(63, 8, 8, resource.DecimalSI), + } + + got := src.Dup() + + require.Equal(t, int64(63), got.RDMA.Capacity.Value()) + require.Equal(t, int64(8), got.RDMA.Allocatable.Value()) + require.Equal(t, int64(8), got.RDMA.Allocated.Value()) + + // Source unaffected when mutating dup + got.RDMA.Allocated.Set(0) + require.Equal(t, int64(8), src.RDMA.Allocated.Value()) +} diff --git a/go/manifest/v2beta3/service.pb.go b/go/manifest/v2beta3/service.pb.go index 25b7e89e..1530f4f7 100644 --- a/go/manifest/v2beta3/service.pb.go +++ b/go/manifest/v2beta3/service.pb.go @@ -272,6 +272,17 @@ type Service struct { Expose ServiceExposes `protobuf:"bytes,8,rep,name=expose,proto3,castrepeated=ServiceExposes" json:"expose" yaml:"expose"` Params *ServiceParams `protobuf:"bytes,9,opt,name=params,proto3" json:"params,omitempty" yaml:"params,omitempty"` Credentials *ImageCredentials `protobuf:"bytes,10,opt,name=credentials,proto3" json:"credentials" yaml:"credentials"` + // RDMAGroup carries the SDL gpu.attributes.rdma_group peer-group label. + // Off-chain only — never reaches Resources.GPU.attributes. Services + // sharing the same value form one NCCL peer group; the provider applies + // pod anti-affinity within each group when scheduling the workload. + // Empty when the service is not part of any RDMA peer group. + // + // JSON / YAML tag is camelCase (no `omitempty`) to match the existing + // convention on this message (cf. `read_only` -> `"readOnly"`) so that + // the JSON serialization stays in lock-step with the TypeScript SDK, + // which always emits the field regardless of value. + RDMAGroup string `protobuf:"bytes,11,opt,name=rdma_group,json=rdmaGroup,proto3" json:"rdmaGroup" yaml:"rdmaGroup"` } func (m *Service) Reset() { *m = Service{} } @@ -376,6 +387,13 @@ func (m *Service) GetCredentials() *ImageCredentials { return nil } +func (m *Service) GetRDMAGroup() string { + if m != nil { + return m.RDMAGroup + } + return "" +} + func init() { proto.RegisterType((*StorageParams)(nil), "akash.manifest.v2beta3.StorageParams") proto.RegisterType((*ServicePermissions)(nil), "akash.manifest.v2beta3.ServicePermissions") @@ -389,58 +407,61 @@ func init() { } var fileDescriptor_6d5964c4976d68e5 = []byte{ - // 812 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x3b, 0x6f, 0x2b, 0x45, - 0x14, 0xf6, 0x62, 0xc7, 0x8f, 0x31, 0x0e, 0xd1, 0x88, 0xcb, 0xdd, 0x1b, 0xc1, 0x8e, 0x19, 0x71, - 0x85, 0xb9, 0x89, 0x76, 0x95, 0x04, 0x09, 0x89, 0x87, 0x10, 0x8b, 0x28, 0xa8, 0x88, 0x26, 0xa2, - 0xa1, 0x41, 0x63, 0x7b, 0x70, 0x56, 0xf1, 0x3e, 0xb4, 0xb3, 0x36, 0xa4, 0xa3, 0x45, 0x08, 0x89, - 0xdf, 0x01, 0x7f, 0x24, 0x65, 0xca, 0x54, 0x03, 0x38, 0x9d, 0xcb, 0x2d, 0xa8, 0xd1, 0x3c, 0x36, - 0xb3, 0x26, 0x0e, 0x11, 0xba, 0x55, 0x72, 0xbe, 0xf3, 0x9d, 0x73, 0x66, 0xce, 0x7e, 0xf3, 0x19, - 0xbc, 0x43, 0x2f, 0x28, 0x3f, 0x0f, 0x62, 0x9a, 0x44, 0xdf, 0x31, 0x5e, 0x04, 0xcb, 0xe3, 0x31, - 0x2b, 0xe8, 0x49, 0xc0, 0x59, 0xbe, 0x8c, 0x26, 0xcc, 0xcf, 0xf2, 0xb4, 0x48, 0xe1, 0x1b, 0x8a, - 0xe5, 0x57, 0x2c, 0xdf, 0xb0, 0xf6, 0x5f, 0x9f, 0xa5, 0xb3, 0x54, 0x51, 0x02, 0xf9, 0x9f, 0x66, - 0xef, 0xbf, 0xf8, 0xef, 0x9e, 0xec, 0x87, 0x2c, 0xe5, 0xa6, 0xf3, 0xfe, 0xa1, 0xe6, 0x8e, 0x29, - 0x67, 0x41, 0xce, 0x78, 0xba, 0xc8, 0x27, 0x8c, 0x07, 0xcb, 0x23, 0x59, 0xf1, 0xbe, 0x45, 0x34, - 0x1b, 0xff, 0xee, 0x80, 0xc1, 0x59, 0x91, 0xe6, 0x74, 0xc6, 0x4e, 0x69, 0x4e, 0x63, 0x0e, 0x0f, - 0x40, 0x2b, 0xa1, 0x31, 0x73, 0x9d, 0xa1, 0x33, 0xea, 0x85, 0x4f, 0xd7, 0x02, 0xa9, 0xb8, 0x14, - 0xa8, 0x7f, 0x49, 0xe3, 0xf9, 0x87, 0x58, 0x46, 0x98, 0x28, 0x10, 0x06, 0x60, 0x27, 0x4e, 0x17, - 0x49, 0xe1, 0xbe, 0xa2, 0xd8, 0xcf, 0xd6, 0x02, 0x69, 0xa0, 0x14, 0xe8, 0x55, 0x4d, 0x57, 0x21, - 0x26, 0x1a, 0x86, 0x1f, 0x83, 0x5e, 0xce, 0xe8, 0xf4, 0xdb, 0x34, 0x99, 0x5f, 0xba, 0xcd, 0xa1, - 0x33, 0xea, 0x86, 0x68, 0x2d, 0x50, 0x57, 0x82, 0x5f, 0x25, 0xf3, 0xcb, 0x52, 0xa0, 0xd7, 0x74, - 0x5d, 0x85, 0x60, 0x72, 0x97, 0xc4, 0x5f, 0x03, 0x78, 0xa6, 0xaf, 0x7c, 0xca, 0xf2, 0x38, 0xe2, - 0x3c, 0x4a, 0x13, 0x0e, 0x3f, 0x05, 0x2d, 0xc9, 0x70, 0x9d, 0x61, 0x73, 0xd4, 0x0b, 0x0f, 0xd6, - 0x02, 0xed, 0xca, 0xf8, 0x30, 0x8d, 0xa3, 0x82, 0xc5, 0x59, 0x21, 0x9b, 0x3e, 0xb1, 0x4d, 0x2d, - 0x8e, 0x89, 0x2a, 0xc4, 0xbf, 0x34, 0xc1, 0xa0, 0xea, 0xab, 0x97, 0x30, 0x06, 0x1d, 0xae, 0xb7, - 0xa2, 0xba, 0xf6, 0x8f, 0x9f, 0xfb, 0xdb, 0x3f, 0x98, 0xbf, 0xb1, 0xbc, 0xf0, 0xed, 0x2b, 0x81, - 0x1a, 0x6b, 0x81, 0xaa, 0xea, 0x52, 0xa0, 0x5d, 0x3d, 0xd9, 0x00, 0x98, 0x54, 0x29, 0xf8, 0x93, - 0x03, 0xfa, 0x93, 0x9c, 0x4d, 0x59, 0x52, 0x44, 0x74, 0xce, 0x5d, 0x30, 0x74, 0x46, 0xfd, 0xe3, - 0xd1, 0x43, 0x83, 0xbe, 0x8c, 0xe9, 0x8c, 0x7d, 0x6e, 0xf9, 0xe1, 0x27, 0x57, 0x02, 0x39, 0x6b, - 0x81, 0x9e, 0xd4, 0x9a, 0x6c, 0xdc, 0xf9, 0x4d, 0x3d, 0x79, 0x6b, 0x1a, 0x93, 0xfa, 0x6c, 0xf8, - 0xb3, 0x03, 0xfa, 0x99, 0x5d, 0xa9, 0xdb, 0x57, 0x67, 0x79, 0xf1, 0xe0, 0xa5, 0xef, 0x7d, 0x04, - 0x7b, 0x9a, 0x5a, 0x9b, 0x6d, 0xa7, 0xd9, 0x9a, 0xc6, 0xa4, 0x3e, 0x1d, 0xaf, 0x1d, 0xb0, 0xf7, - 0xef, 0xeb, 0x4a, 0x5d, 0x9e, 0xa7, 0xbc, 0xa8, 0xeb, 0x52, 0xc6, 0x56, 0x97, 0x32, 0xc2, 0x44, - 0x81, 0x52, 0x97, 0x2c, 0xa6, 0xd1, 0xbc, 0xae, 0x4b, 0x05, 0x58, 0x5d, 0xaa, 0x10, 0x13, 0x0d, - 0xc3, 0x8f, 0x40, 0x77, 0xc1, 0x59, 0xae, 0x94, 0xdf, 0x54, 0x35, 0x4a, 0x96, 0x15, 0x66, 0x65, - 0x59, 0x21, 0x98, 0xdc, 0x25, 0x65, 0x71, 0x46, 0x39, 0xff, 0x3e, 0xcd, 0xa7, 0x6e, 0xcb, 0x16, - 0x57, 0x98, 0x2d, 0xae, 0x10, 0x4c, 0xee, 0x92, 0xf8, 0xef, 0x1d, 0xd0, 0x31, 0xfb, 0xfc, 0xdf, - 0x6f, 0x2f, 0x92, 0x4b, 0xaa, 0xdf, 0x51, 0x01, 0xf6, 0x8e, 0x2a, 0xc4, 0x44, 0xc3, 0xf0, 0x03, - 0xd0, 0x99, 0xa4, 0x71, 0x4c, 0x93, 0xa9, 0xdb, 0x54, 0x4f, 0xe5, 0x2d, 0xa9, 0x54, 0x03, 0x59, - 0xa5, 0x1a, 0x00, 0x93, 0x2a, 0x25, 0x8f, 0x45, 0xf3, 0x19, 0x77, 0x5b, 0xaa, 0x4a, 0x1d, 0x4b, - 0xc6, 0xf6, 0x58, 0x32, 0xc2, 0x44, 0x81, 0xf0, 0x00, 0x34, 0x59, 0xb2, 0x74, 0x77, 0x14, 0xf7, - 0x99, 0x51, 0x85, 0x84, 0x4a, 0x81, 0x80, 0x59, 0x7d, 0xb2, 0xc4, 0x44, 0x42, 0x70, 0x2e, 0xed, - 0xc0, 0x38, 0x92, 0xdb, 0x56, 0xa2, 0x7b, 0xd7, 0x88, 0x4e, 0x1a, 0x98, 0x6f, 0xed, 0xca, 0x18, - 0x98, 0x4f, 0x2a, 0x24, 0x7c, 0x6e, 0xde, 0x9a, 0xed, 0x50, 0x0a, 0xb4, 0x57, 0xbd, 0x73, 0x03, - 0x61, 0x62, 0xd3, 0x72, 0x63, 0x13, 0xe5, 0x56, 0x9d, 0xa1, 0x33, 0x1a, 0xe8, 0x8d, 0x4d, 0x36, - 0xdd, 0x6a, 0x62, 0xdc, 0x4a, 0xfd, 0x85, 0x19, 0x68, 0x6b, 0x6f, 0x75, 0xbb, 0x8f, 0xb8, 0x80, - 0xfe, 0x80, 0x5f, 0x28, 0x72, 0x78, 0x64, 0x4e, 0x66, 0x8a, 0x4b, 0x81, 0x06, 0xe6, 0xe2, 0x2a, - 0xc6, 0xbf, 0xfd, 0x81, 0x76, 0x37, 0x2a, 0x38, 0x31, 0x54, 0x98, 0x83, 0x76, 0xa6, 0xac, 0xc4, - 0xed, 0xa9, 0x6d, 0x3c, 0x36, 0xd1, 0xf8, 0xce, 0x89, 0xd9, 0xf3, 0x9e, 0x2e, 0xde, 0x78, 0x78, - 0x4f, 0x2b, 0xed, 0x6d, 0x66, 0x30, 0x31, 0x93, 0xe0, 0xe2, 0xe5, 0x7c, 0xe8, 0x3d, 0x33, 0xbb, - 0xde, 0xa4, 0x14, 0x08, 0xde, 0x73, 0x9f, 0x4d, 0xcf, 0x09, 0x3f, 0xbb, 0xf9, 0xcb, 0x6b, 0xfc, - 0xb8, 0xf2, 0x9c, 0xab, 0x95, 0xe7, 0x5c, 0xaf, 0x3c, 0xe7, 0xcf, 0x95, 0xe7, 0xfc, 0x7a, 0xeb, - 0x35, 0xae, 0x6f, 0xbd, 0xc6, 0xcd, 0xad, 0xd7, 0xf8, 0x06, 0x65, 0x17, 0x33, 0x9f, 0x5e, 0x14, - 0xfe, 0x94, 0x2d, 0x83, 0x59, 0x7a, 0xef, 0xf7, 0x6f, 0xdc, 0x56, 0x3f, 0x62, 0x27, 0xff, 0x04, - 0x00, 0x00, 0xff, 0xff, 0xf4, 0x8d, 0xfc, 0x75, 0x74, 0x07, 0x00, 0x00, + // 854 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xf7, 0xe2, 0xd4, 0x89, 0xc7, 0x24, 0x44, 0x23, 0x4a, 0xb7, 0x11, 0x78, 0xcc, 0x88, 0x0a, + 0xd3, 0x54, 0x6b, 0x35, 0x41, 0x42, 0xe2, 0x8f, 0x50, 0x17, 0x10, 0xe2, 0x50, 0x51, 0x4d, 0xc5, + 0x85, 0x4b, 0x35, 0xb1, 0x07, 0x77, 0x15, 0xef, 0xce, 0x6a, 0x67, 0x6d, 0xc8, 0x8d, 0x2b, 0x42, + 0x48, 0x7c, 0x0e, 0xf8, 0x1c, 0x48, 0x39, 0xf6, 0xd8, 0xd3, 0x00, 0xce, 0xcd, 0xc7, 0xfd, 0x04, + 0x68, 0xde, 0xcc, 0x66, 0xd6, 0x8d, 0x4b, 0x84, 0x38, 0xd9, 0xef, 0xf7, 0xfe, 0xcd, 0x7b, 0xf3, + 0x9b, 0xdf, 0xa2, 0x77, 0xf8, 0x29, 0x57, 0x4f, 0x47, 0x29, 0xcf, 0x92, 0xef, 0x84, 0x2a, 0x47, + 0x8b, 0xa3, 0x13, 0x51, 0xf2, 0xe3, 0x91, 0x12, 0xc5, 0x22, 0x19, 0x8b, 0x28, 0x2f, 0x64, 0x29, + 0xf1, 0x1b, 0x10, 0x15, 0xd5, 0x51, 0x91, 0x8b, 0x3a, 0x78, 0x7d, 0x2a, 0xa7, 0x12, 0x42, 0x46, + 0xe6, 0x9f, 0x8d, 0x3e, 0xb8, 0xfb, 0xef, 0x35, 0xc5, 0x0f, 0xb9, 0x54, 0xae, 0xf2, 0xc1, 0x3d, + 0x1b, 0x7b, 0xc2, 0x95, 0x18, 0x15, 0x42, 0xc9, 0x79, 0x31, 0x16, 0x6a, 0xb4, 0xb8, 0x6f, 0x32, + 0xde, 0xf7, 0x88, 0x8d, 0xa6, 0xbf, 0x07, 0x68, 0xf7, 0x71, 0x29, 0x0b, 0x3e, 0x15, 0x8f, 0x78, + 0xc1, 0x53, 0x85, 0x0f, 0xd1, 0x56, 0xc6, 0x53, 0x11, 0x06, 0x83, 0x60, 0xd8, 0x8d, 0x6f, 0xad, + 0x34, 0x01, 0xbb, 0xd2, 0xa4, 0x77, 0xc6, 0xd3, 0xd9, 0x87, 0xd4, 0x58, 0x94, 0x01, 0x88, 0x47, + 0xe8, 0x46, 0x2a, 0xe7, 0x59, 0x19, 0xbe, 0x02, 0xd1, 0xb7, 0x57, 0x9a, 0x58, 0xa0, 0xd2, 0xe4, + 0x55, 0x1b, 0x0e, 0x26, 0x65, 0x16, 0xc6, 0x1f, 0xa3, 0x6e, 0x21, 0xf8, 0xe4, 0x89, 0xcc, 0x66, + 0x67, 0x61, 0x7b, 0x10, 0x0c, 0x77, 0x62, 0xb2, 0xd2, 0x64, 0xc7, 0x80, 0x5f, 0x67, 0xb3, 0xb3, + 0x4a, 0x93, 0xd7, 0x6c, 0x5e, 0x8d, 0x50, 0x76, 0xe9, 0xa4, 0xdf, 0x20, 0xfc, 0xd8, 0x8e, 0xfc, + 0x48, 0x14, 0x69, 0xa2, 0x54, 0x22, 0x33, 0x85, 0x3f, 0x45, 0x5b, 0x26, 0x22, 0x0c, 0x06, 0xed, + 0x61, 0x37, 0x3e, 0x5c, 0x69, 0xb2, 0x67, 0xec, 0x7b, 0x32, 0x4d, 0x4a, 0x91, 0xe6, 0xa5, 0x29, + 0x7a, 0xd3, 0x17, 0xf5, 0x38, 0x65, 0x90, 0x48, 0x7f, 0x69, 0xa3, 0xdd, 0xba, 0xae, 0x5d, 0xc2, + 0x09, 0xda, 0x56, 0x76, 0x2b, 0x50, 0xb5, 0x77, 0x74, 0x27, 0xda, 0x7c, 0x61, 0xd1, 0xda, 0xf2, + 0xe2, 0xb7, 0xcf, 0x35, 0x69, 0xad, 0x34, 0xa9, 0xb3, 0x2b, 0x4d, 0xf6, 0x6c, 0x67, 0x07, 0x50, + 0x56, 0xbb, 0xf0, 0x4f, 0x01, 0xea, 0x8d, 0x0b, 0x31, 0x11, 0x59, 0x99, 0xf0, 0x99, 0x0a, 0xd1, + 0x20, 0x18, 0xf6, 0x8e, 0x86, 0x2f, 0x6b, 0xf4, 0x55, 0xca, 0xa7, 0xe2, 0x33, 0x1f, 0x1f, 0x7f, + 0x72, 0xae, 0x49, 0xb0, 0xd2, 0xe4, 0x66, 0xa3, 0xc8, 0xda, 0xcc, 0x6f, 0xda, 0xce, 0x1b, 0xdd, + 0x94, 0x35, 0x7b, 0xe3, 0x9f, 0x03, 0xd4, 0xcb, 0xfd, 0x4a, 0xc3, 0x1e, 0x9c, 0xe5, 0xee, 0x4b, + 0x87, 0xbe, 0x72, 0x09, 0xfe, 0x34, 0x8d, 0x32, 0x9b, 0x4e, 0xb3, 0xd1, 0x4d, 0x59, 0xb3, 0x3b, + 0x5d, 0x05, 0x68, 0xff, 0xc5, 0x71, 0x0d, 0x2f, 0x9f, 0x4a, 0x55, 0x36, 0x79, 0x69, 0x6c, 0xcf, + 0x4b, 0x63, 0x51, 0x06, 0xa0, 0xe1, 0xa5, 0x48, 0x79, 0x32, 0x6b, 0xf2, 0x12, 0x00, 0xcf, 0x4b, + 0x30, 0x29, 0xb3, 0x30, 0xfe, 0x08, 0xed, 0xcc, 0x95, 0x28, 0x80, 0xf9, 0x6d, 0xc8, 0x01, 0x5a, + 0xd6, 0x98, 0xa7, 0x65, 0x8d, 0x50, 0x76, 0xe9, 0x34, 0xc9, 0x39, 0x57, 0xea, 0x7b, 0x59, 0x4c, + 0xc2, 0x2d, 0x9f, 0x5c, 0x63, 0x3e, 0xb9, 0x46, 0x28, 0xbb, 0x74, 0xd2, 0x3f, 0x3a, 0x68, 0xdb, + 0xed, 0xf3, 0x3f, 0xbf, 0xbd, 0xc4, 0x2c, 0xa9, 0x39, 0x23, 0x00, 0x7e, 0x46, 0x30, 0x29, 0xb3, + 0x30, 0xfe, 0x00, 0x6d, 0x8f, 0x65, 0x9a, 0xf2, 0x6c, 0x12, 0xb6, 0xe1, 0xa9, 0xbc, 0x65, 0x98, + 0xea, 0x20, 0xcf, 0x54, 0x07, 0x50, 0x56, 0xbb, 0xcc, 0xb1, 0x78, 0x31, 0x55, 0xe1, 0x16, 0x64, + 0xc1, 0xb1, 0x8c, 0xed, 0x8f, 0x65, 0x2c, 0xca, 0x00, 0xc4, 0x87, 0xa8, 0x2d, 0xb2, 0x45, 0x78, + 0x03, 0x62, 0x6f, 0x3b, 0x56, 0x18, 0xa8, 0xd2, 0x04, 0xb9, 0xd5, 0x67, 0x0b, 0xca, 0x0c, 0x84, + 0x67, 0x46, 0x0e, 0x9c, 0x22, 0x85, 0x1d, 0x20, 0xdd, 0xbb, 0x8e, 0x74, 0x46, 0xc0, 0x22, 0x2f, + 0x57, 0x4e, 0xc0, 0x22, 0x56, 0x23, 0xf1, 0x1d, 0xf7, 0xd6, 0x7c, 0x85, 0x4a, 0x93, 0xfd, 0xfa, + 0x9d, 0x3b, 0x88, 0x32, 0xef, 0x36, 0x1b, 0x1b, 0x83, 0x5a, 0x6d, 0x0f, 0x82, 0xe1, 0xae, 0xdd, + 0xd8, 0x78, 0x5d, 0xad, 0xc6, 0x4e, 0xad, 0xe0, 0x17, 0xe7, 0xa8, 0x63, 0xb5, 0x35, 0xdc, 0xb9, + 0x46, 0x05, 0xec, 0x05, 0x7e, 0x01, 0xc1, 0xf1, 0x7d, 0x77, 0x32, 0x97, 0x5c, 0x69, 0xb2, 0xeb, + 0x06, 0x07, 0x9b, 0xfe, 0xf6, 0x27, 0xd9, 0x5b, 0xcb, 0x50, 0xcc, 0x85, 0xe2, 0x02, 0x75, 0x72, + 0x90, 0x92, 0xb0, 0x0b, 0xdb, 0xb8, 0xae, 0xa3, 0xd3, 0x9d, 0x63, 0xb7, 0xe7, 0x7d, 0x9b, 0xbc, + 0xf6, 0xf0, 0x6e, 0xd5, 0xdc, 0x5b, 0xf7, 0x50, 0xe6, 0x3a, 0xe1, 0xf9, 0xff, 0xd3, 0xa1, 0xf7, + 0x5c, 0xef, 0x66, 0x91, 0x4a, 0x13, 0x7c, 0x45, 0x7d, 0x5e, 0xd0, 0x9c, 0x87, 0x08, 0x15, 0x93, + 0x94, 0x3f, 0x99, 0x16, 0x72, 0x9e, 0x83, 0xe2, 0x74, 0xe3, 0x68, 0xa9, 0x49, 0x97, 0x7d, 0xfe, + 0xf0, 0xc1, 0x97, 0x06, 0x84, 0xcb, 0x9d, 0xa4, 0x1c, 0x8c, 0xc6, 0xe5, 0xd6, 0x90, 0xb9, 0xdc, + 0xfa, 0x7f, 0xfc, 0xe0, 0xf9, 0xdf, 0xfd, 0xd6, 0x8f, 0xcb, 0x7e, 0x70, 0xbe, 0xec, 0x07, 0xcf, + 0x96, 0xfd, 0xe0, 0xaf, 0x65, 0x3f, 0xf8, 0xf5, 0xa2, 0xdf, 0x7a, 0x76, 0xd1, 0x6f, 0x3d, 0xbf, + 0xe8, 0xb7, 0xbe, 0x25, 0xf9, 0xe9, 0x34, 0xe2, 0xa7, 0x65, 0x34, 0x11, 0x8b, 0xd1, 0x54, 0x5e, + 0xf9, 0x9c, 0x9e, 0x74, 0xe0, 0x9b, 0x78, 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x68, 0x06, + 0xf3, 0x50, 0xc3, 0x07, 0x00, 0x00, } func (m *StorageParams) Marshal() (dAtA []byte, err error) { @@ -654,6 +675,13 @@ func (m *Service) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.RDMAGroup) > 0 { + i -= len(m.RDMAGroup) + copy(dAtA[i:], m.RDMAGroup) + i = encodeVarintService(dAtA, i, uint64(len(m.RDMAGroup))) + i-- + dAtA[i] = 0x5a + } if m.Credentials != nil { { size, err := m.Credentials.MarshalToSizedBuffer(dAtA[:i]) @@ -896,6 +924,10 @@ func (m *Service) Size() (n int) { l = m.Credentials.Size() n += 1 + l + sovService(uint64(l)) } + l = len(m.RDMAGroup) + if l > 0 { + n += 1 + l + sovService(uint64(l)) + } return n } @@ -977,6 +1009,7 @@ func (this *Service) String() string { `Expose:` + repeatedStringForExpose + `,`, `Params:` + strings.Replace(this.Params.String(), "ServiceParams", "ServiceParams", 1) + `,`, `Credentials:` + strings.Replace(this.Credentials.String(), "ImageCredentials", "ImageCredentials", 1) + `,`, + `RDMAGroup:` + fmt.Sprintf("%v", this.RDMAGroup) + `,`, `}`, }, "") return s @@ -1886,6 +1919,38 @@ func (m *Service) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RDMAGroup", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthService + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthService + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RDMAGroup = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipService(dAtA[iNdEx:]) diff --git a/go/node/deployment/v1beta4/rdma_commit_audit_test.go b/go/node/deployment/v1beta4/rdma_commit_audit_test.go new file mode 100644 index 00000000..06601032 --- /dev/null +++ b/go/node/deployment/v1beta4/rdma_commit_audit_test.go @@ -0,0 +1,192 @@ +package v1beta4 + +import ( + "testing" + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + attr "pkg.akt.dev/go/node/types/attributes/v1" + rtypes "pkg.akt.dev/go/node/types/resources/v1beta4" +) + +// CS-6: the provider reservation/commit path on the provider side rebuilds +// GroupSpec instances from parts and feeds the rebuilt value into the +// inventory.Adjust path. The provider's RDMA-detection logic reads +// +// - GroupSpec.Requirements.Attributes (carrying capabilities/rdma=true) +// - Resources.GPU.Attributes (carrying rdma=true per resource) +// +// from whatever ResourceGroup-typed value lands on its `reservation.Resources()` +// call. If anything in the chain SDK's Dup / accessor chain drops either of +// those attribute slices, the provider silently treats the order as +// non-RDMA. These tests pin down preservation for every concrete +// ResourceGroup the provider may hold: +// +// - *Group (the bid-engine path stores a *dtypes.Group) +// - Group (value form, dereferenced) +// - *GroupSpec (used by tests and by some legacy adapter paths) +// - GroupSpec (value form returned by Group.GroupSpec) +// +// We assert that a representative Group carrying capabilities/rdma=true on +// Requirements and rdma=true on the first resource's GPU.Attributes survives: +// +// 1. (Group).Dup()-equivalent — via GroupSpec.Dup(). +// 2. Accessing the value via the ResourceGroup interface (GetResourceUnits). +// 3. Direct field reads of Requirements.Attributes from any of the four +// concrete shapes. + +func rdmaSampleGroupSpec() GroupSpec { + return GroupSpec{ + Name: "ib", + Requirements: attr.PlacementRequirements{ + Attributes: attr.Attributes{ + {Key: "capabilities/rdma", Value: "true"}, + {Key: "capabilities/rdma/fabric/infiniband", Value: "true"}, + }, + }, + Resources: ResourceUnits{ + { + Resources: rtypes.Resources{ + ID: 1, + CPU: &rtypes.CPU{ + Units: rtypes.NewResourceValue(1000), + }, + Memory: &rtypes.Memory{ + Quantity: rtypes.NewResourceValue(1024 * 1024 * 1024), + }, + GPU: &rtypes.GPU{ + Units: rtypes.NewResourceValue(8), + Attributes: attr.Attributes{ + {Key: "rdma", Value: "true"}, + {Key: "vendor/nvidia/model/a100", Value: "true"}, + }, + }, + Storage: rtypes.Volumes{}, + }, + Count: 1, + Price: sdk.NewDecCoin("uact", sdkmath.NewInt(1)), + }, + }, + } +} + +func assertRDMASignalsPresent(t *testing.T, where string, reqs attr.Attributes, gpu attr.Attributes) { + t.Helper() + + hasPlacementRDMA := false + for _, a := range reqs { + if a.Key == "capabilities/rdma" && a.Value == "true" { + hasPlacementRDMA = true + } + } + require.True(t, hasPlacementRDMA, "%s: Requirements lost capabilities/rdma=true", where) + + hasGPURDMA := false + for _, a := range gpu { + if a.Key == "rdma" && a.Value == "true" { + hasGPURDMA = true + } + } + require.True(t, hasGPURDMA, "%s: per-resource GPU.Attributes lost rdma=true", where) +} + +// TestCS6_RDMASignalsSurviveDup is the canonical regression test: drive the +// representative GroupSpec through Dup() and assert both attribute slices +// survive verbatim. If a future change to Resources.Dup() / Requirements.Dup() +// drops attributes, this fails loudly. +func TestCS6_RDMASignalsSurviveDup(t *testing.T) { + src := rdmaSampleGroupSpec() + dup := src.Dup() + + require.NotSame(t, &src, &dup) + assertRDMASignalsPresent(t, "GroupSpec.Dup result", + dup.Requirements.Attributes, + dup.Resources[0].Resources.GPU.Attributes, + ) + + // And mutating the dup must not poison the source. + dup.Requirements.Attributes[0].Value = "false" + dup.Resources[0].Resources.GPU.Attributes[0].Value = "false" + assertRDMASignalsPresent(t, "source after mutating dup", + src.Requirements.Attributes, + src.Resources[0].Resources.GPU.Attributes, + ) +} + +// TestCS6_RDMASignalsAcrossConcreteTypes exercises the four concrete +// ResourceGroup-shaped values the provider's reservation/commit path can +// hold. Each row asserts that the RDMA signals are reachable via the +// type-specific accessors the provider uses. +func TestCS6_RDMASignalsAcrossConcreteTypes(t *testing.T) { + specVal := rdmaSampleGroupSpec() + specPtr := &specVal + + groupVal := Group{ + GroupSpec: specVal, + } + groupPtr := &groupVal + + tests := []struct { + name string + // readers translate the type-specific access pattern the provider + // uses for that input shape into the two attribute slices we care + // about. The provider's helpers do exactly this. + readReqs func() attr.Attributes + readGPU func() attr.Attributes + }{ + { + name: "*GroupSpec", + readReqs: func() attr.Attributes { return specPtr.Requirements.Attributes }, + readGPU: func() attr.Attributes { return specPtr.Resources[0].Resources.GPU.Attributes }, + }, + { + name: "GroupSpec value", + readReqs: func() attr.Attributes { return specVal.Requirements.Attributes }, + readGPU: func() attr.Attributes { return specVal.Resources[0].Resources.GPU.Attributes }, + }, + { + name: "*Group", + readReqs: func() attr.Attributes { return groupPtr.GroupSpec.Requirements.Attributes }, + readGPU: func() attr.Attributes { return groupPtr.GroupSpec.Resources[0].Resources.GPU.Attributes }, + }, + { + name: "Group value", + readReqs: func() attr.Attributes { return groupVal.GroupSpec.Requirements.Attributes }, + readGPU: func() attr.Attributes { return groupVal.GroupSpec.Resources[0].Resources.GPU.Attributes }, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + assertRDMASignalsPresent(t, tc.name, tc.readReqs(), tc.readGPU()) + }) + } +} + +// TestCS6_GetResourceUnitsPreservesGPUAttributes exercises the +// ResourceGroup-interface path the provider's commit code uses. The +// provider iterates GetResourceUnits() and reads each unit's GPU.Attributes; +// a regression where this collection silently drops attributes would +// translate to RDMA opt-in disappearing on the wire. +func TestCS6_GetResourceUnitsPreservesGPUAttributes(t *testing.T) { + spec := rdmaSampleGroupSpec() + + units := spec.GetResourceUnits() + require.NotEmpty(t, units, "GetResourceUnits returned empty") + + hasGPURDMA := false + for _, u := range units { + if u.Resources.GPU == nil { + continue + } + for _, a := range u.Resources.GPU.Attributes { + if a.Key == "rdma" && a.Value == "true" { + hasGPURDMA = true + } + } + } + require.True(t, hasGPURDMA, + "GetResourceUnits() dropped GPU.Attributes — provider would treat as non-RDMA") +} diff --git a/go/sdl/gpu.go b/go/sdl/gpu.go index 17a730cd..246925c4 100644 --- a/go/sdl/gpu.go +++ b/go/sdl/gpu.go @@ -38,9 +38,31 @@ type gpuVendor struct { type v2GPUAttributes types.Attributes +// GPUAttributeRDMA is the on-chain GPU-attribute key emitted when an SDL +// compute profile declares gpu.attributes.rdma: true. Providers advertising +// RDMA-capable GPU hardware match this attribute via the standard GPU +// MatchResourcesRequirements path. +const GPUAttributeRDMA = "rdma" + +// gpuAttributeRDMAGroupSentinel is an internal-only key the SDL parser uses to +// transport the value of gpu.attributes.rdma_group between +// v2GPUAttributes.UnmarshalYAML and the parent v2ResourceGPU.UnmarshalYAML. +// It is stripped out of the GPU attribute slice before those attributes ever +// reach the on-chain Resources.GPU.attributes — rdma_group is a tenant +// scheduling directive carried in the off-chain manifest, not a hardware +// capability claim. +const gpuAttributeRDMAGroupSentinel = "__rdma_group__" + type v2ResourceGPU struct { Units gpuQuantity `yaml:"units" json:"units"` Attributes v2GPUAttributes `yaml:"attributes,omitempty" json:"attributes,omitempty"` + + // RDMAGroup carries the parsed gpu.attributes.rdma_group value. The SDL + // parser strips this key from on-chain GPU attributes (see + // gpuAttributeRDMAGroupSentinel) and lifts it here so the higher-level + // manifest builder can route it to the per-service Service.RDMAGroup + // off-chain manifest field. + RDMAGroup string `yaml:"-" json:"-"` } func (sdl *v2ResourceGPU) UnmarshalYAML(node *yaml.Node) error { @@ -61,10 +83,51 @@ func (sdl *v2ResourceGPU) UnmarshalYAML(node *yaml.Node) error { } } + // Extract the rdma_group sentinel into the dedicated field, then strip + // it out of the on-chain attribute slice. After this step Attributes + // contains only attributes that are safe to flow to Resources.GPU.attributes. + // We must do this *before* Validate() runs against the slice, because the + // sentinel key (with leading underscores) does not match the on-chain + // attribute key regex. + if len(res.Attributes) > 0 { + filtered := make(types.Attributes, 0, len(res.Attributes)) + for _, a := range res.Attributes { + if a.Key == gpuAttributeRDMAGroupSentinel { + res.RDMAGroup = a.Value + continue + } + filtered = append(filtered, a) + } + res.Attributes = v2GPUAttributes(filtered) + + // Validate now that the on-chain-bound slice is clean of any sentinel. + // (v2GPUAttributes.UnmarshalYAML intentionally skips Validate so this + // hook can run post-strip.) + final := types.Attributes(res.Attributes) + if err := final.Validate(); err != nil { + return fmt.Errorf("sdl: invalid GPU attributes: %w", err) + } + } + if res.Units > 0 && len(res.Attributes) == 0 { return fmt.Errorf("sdl: GPU attributes must be present if units > 0") } + // CS-5 invariant, enforced here so the SDL fails fast: rdma / rdma_group + // are nonsense without an actual GPU to attach an HCA to. A profile + // declaring rdma: true or rdma_group: with gpu.units == 0 would + // otherwise be classified as RDMA-enabled by downstream validation + // passes and the provider's reservation logic, then rejected much later + // (or, worse, treated as a misconfiguration). Reject up front. + if res.Units == 0 { + if gpuAttributesHaveRDMA(res.Attributes) { + return fmt.Errorf("sdl: gpu.attributes.rdma cannot be set when gpu.units == 0") + } + if res.RDMAGroup != "" { + return fmt.Errorf("sdl: gpu.attributes.rdma_group=%q cannot be set when gpu.units == 0", res.RDMAGroup) + } + } + *sdl = res return nil @@ -74,6 +137,8 @@ func (sdl *v2GPUAttributes) UnmarshalYAML(node *yaml.Node) error { var res types.Attributes var vendor *gpuVendor + rdmaEnabled := false + rdmaGroup := "" for i := 0; i < len(node.Content); i += 2 { switch node.Content[i].Value { @@ -81,6 +146,23 @@ func (sdl *v2GPUAttributes) UnmarshalYAML(node *yaml.Node) error { if err := node.Content[i+1].Decode(&vendor); err != nil { return err } + case "rdma": + // gpu.attributes.rdma: bool (default false). When true, emit an + // on-chain GPU attribute so providers advertising RDMA-capable + // GPU hardware can be matched. + var rdma bool + if err := node.Content[i+1].Decode(&rdma); err != nil { + return fmt.Errorf("sdl: invalid value for gpu.attributes.rdma: %w", err) + } + rdmaEnabled = rdma + case "rdma_group": + // gpu.attributes.rdma_group: string (peer group name). Captured + // here and emitted into the slice as a sentinel attribute that + // v2ResourceGPU.UnmarshalYAML strips before it reaches chain + // state. See gpuAttributeRDMAGroupSentinel. + if err := node.Content[i+1].Decode(&rdmaGroup); err != nil { + return fmt.Errorf("sdl: invalid value for gpu.attributes.rdma_group: %w", err) + } default: return fmt.Errorf("sdl: unsupported attribute (%s) for GPU resource", node.Content[i].Value) } @@ -90,7 +172,7 @@ func (sdl *v2GPUAttributes) UnmarshalYAML(node *yaml.Node) error { return fmt.Errorf("sdl: invalid GPU attributes. at least one vendor must be set") } - res = make(types.Attributes, 0, len(vendor.Nvidia)) + res = make(types.Attributes, 0, len(vendor.Nvidia)+2) for _, model := range vendor.Nvidia { res = append(res, types.Attribute{ @@ -106,12 +188,28 @@ func (sdl *v2GPUAttributes) UnmarshalYAML(node *yaml.Node) error { }) } - sort.Sort(res) + if rdmaEnabled { + res = append(res, types.Attribute{ + Key: GPUAttributeRDMA, + Value: "true", + }) + } - if err := res.Validate(); err != nil { - return fmt.Errorf("sdl: invalid GPU attributes: %w", err) + // Carry rdma_group as a sentinel; the parent v2ResourceGPU.UnmarshalYAML + // peels it off before these attributes ever become on-chain Resources. + if rdmaGroup != "" { + res = append(res, types.Attribute{ + Key: gpuAttributeRDMAGroupSentinel, + Value: rdmaGroup, + }) } + sort.Sort(res) + + // Validate() is deferred to v2ResourceGPU.UnmarshalYAML so the + // rdma_group sentinel can be stripped from the slice before the + // attribute-key regex runs against it. + *sdl = v2GPUAttributes(res) return nil diff --git a/go/sdl/groupBuilder_v2.go b/go/sdl/groupBuilder_v2.go index 29e4ea37..7cf41e90 100644 --- a/go/sdl/groupBuilder_v2.go +++ b/go/sdl/groupBuilder_v2.go @@ -97,6 +97,14 @@ func (sdl *v2) buildGroups() error { Expose: expose, } + // CS-3: gpu.attributes.rdma_group is captured by the GPU parser + // (see go/sdl/gpu.go) into the v2ResourceGPU.RDMAGroup field. + // Surface it onto the off-chain manifest service so the provider + // can apply per-group pod anti-affinity at deploy time. + if compute.Resources != nil && compute.Resources.GPU != nil { + msvc.RDMAGroup = compute.Resources.GPU.RDMAGroup + } + if svc.Params != nil { params := &manifest.ServiceParams{} diff --git a/go/sdl/groupBuilder_v2_1.go b/go/sdl/groupBuilder_v2_1.go index fd43ce55..a94f3e09 100644 --- a/go/sdl/groupBuilder_v2_1.go +++ b/go/sdl/groupBuilder_v2_1.go @@ -107,6 +107,11 @@ func (sdl *v2_1) buildGroups() error { Expose: expose, } + // CS-3: see groupBuilder_v2.go for rationale. + if compute.Resources != nil && compute.Resources.GPU != nil { + msvc.RDMAGroup = compute.Resources.GPU.RDMAGroup + } + if svc.Params != nil { params := &manifest.ServiceParams{} diff --git a/go/sdl/rdma_gpu_test.go b/go/sdl/rdma_gpu_test.go new file mode 100644 index 00000000..25169d22 --- /dev/null +++ b/go/sdl/rdma_gpu_test.go @@ -0,0 +1,186 @@ +package sdl + +import ( + "testing" + + "github.com/stretchr/testify/require" + "gopkg.in/yaml.v3" +) + +// CS-2: gpu.attributes.rdma: true flows to on-chain Resources.GPU.attributes +// as a free-form key=value pair, while rdma: false (or unset) is absent. +func TestV2ResourceGPU_RDMAFlag(t *testing.T) { + tests := []struct { + name string + yaml string + expectRDMAAttr bool + expectGroup string + }{ + { + name: "rdma true emits attribute", + yaml: `units: 1 +attributes: + vendor: + nvidia: + - model: a100 + rdma: true`, + expectRDMAAttr: true, + expectGroup: "", + }, + { + name: "rdma false does not emit attribute", + yaml: `units: 1 +attributes: + vendor: + nvidia: + - model: a100 + rdma: false`, + expectRDMAAttr: false, + expectGroup: "", + }, + { + name: "no rdma key behaves like rdma false", + yaml: `units: 1 +attributes: + vendor: + nvidia: + - model: a100`, + expectRDMAAttr: false, + expectGroup: "", + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + var gpu v2ResourceGPU + require.NoError(t, yaml.Unmarshal([]byte(tc.yaml), &gpu)) + + hasRDMA := false + for _, a := range gpu.Attributes { + if a.Key == GPUAttributeRDMA && a.Value == "true" { + hasRDMA = true + } + require.NotEqual(t, gpuAttributeRDMAGroupSentinel, a.Key, + "sentinel must not leak into final attribute slice") + } + require.Equal(t, tc.expectRDMAAttr, hasRDMA, + "unexpected presence of on-chain rdma=true attribute") + require.Equal(t, tc.expectGroup, gpu.RDMAGroup) + }) + } +} + +// CS-3: rdma_group lives under gpu.attributes in SDL, but the parser strips +// it before the GPU attributes reach the chain side and surfaces it on +// v2ResourceGPU.RDMAGroup for the manifest builder to consume. +func TestV2ResourceGPU_RDMAGroupRoutedOffChain(t *testing.T) { + yamlSrc := `units: 8 +attributes: + vendor: + nvidia: + - model: a100 + ram: 80Gi + interface: sxm + rdma: true + rdma_group: pair1` + + var gpu v2ResourceGPU + require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) + + // rdma_group surfaces on the dedicated field for the manifest builder. + require.Equal(t, "pair1", gpu.RDMAGroup, + "v2ResourceGPU.RDMAGroup must hold the rdma_group value") + + // On-chain attributes contain rdma=true but NOT rdma_group; the sentinel + // must have been peeled off before the attribute slice was finalized. + keys := map[string]string{} + for _, a := range gpu.Attributes { + keys[a.Key] = a.Value + } + require.Equal(t, "true", keys[GPUAttributeRDMA]) + require.NotContains(t, keys, "rdma_group", + "rdma_group must not appear in on-chain GPU attributes") + require.NotContains(t, keys, gpuAttributeRDMAGroupSentinel, + "sentinel must not leak into on-chain GPU attributes") +} + +// CS-3 (continued): omitting rdma_group leaves RDMAGroup empty and the +// on-chain attributes carry no sentinel residue. +func TestV2ResourceGPU_RDMAGroupOmitted(t *testing.T) { + yamlSrc := `units: 8 +attributes: + vendor: + nvidia: + - model: a100 + rdma: true` + + var gpu v2ResourceGPU + require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) + + require.Empty(t, gpu.RDMAGroup) + for _, a := range gpu.Attributes { + require.NotEqual(t, gpuAttributeRDMAGroupSentinel, a.Key) + require.NotEqual(t, "rdma_group", a.Key) + } +} + +// CodeRabbit follow-up: a profile with gpu.units == 0 that declares +// rdma: true or rdma_group: is a misconfiguration — there is no +// HCA to allocate, so the RDMA flags are meaningless. The parser must +// reject this fail-fast rather than letting downstream validation passes +// silently classify the profile as RDMA-enabled. +func TestV2ResourceGPU_RDMAZeroUnitsRejected(t *testing.T) { + t.Run("rdma true with zero units", func(t *testing.T) { + yamlSrc := `units: 0 +attributes: + vendor: + nvidia: + - model: a100 + rdma: true` + var gpu v2ResourceGPU + err := yaml.Unmarshal([]byte(yamlSrc), &gpu) + require.Error(t, err) + require.Contains(t, err.Error(), "gpu.attributes.rdma cannot be set when gpu.units == 0") + }) + + t.Run("rdma_group with zero units", func(t *testing.T) { + yamlSrc := `units: 0 +attributes: + vendor: + nvidia: + - model: a100 + rdma_group: pair1` + var gpu v2ResourceGPU + err := yaml.Unmarshal([]byte(yamlSrc), &gpu) + require.Error(t, err) + require.Contains(t, err.Error(), "rdma_group") + require.Contains(t, err.Error(), "gpu.units == 0") + }) + + t.Run("zero units without rdma is fine", func(t *testing.T) { + // Verifies the new guards don't accidentally break the existing + // path where a profile has gpu.units == 0 and no attributes at all + // (the parser leaves it alone). + yamlSrc := `units: 0` + var gpu v2ResourceGPU + require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) + }) +} + +// CS-2: an unsupported attribute key under gpu.attributes still errors, +// confirming the parser's strict-key behavior is preserved alongside the +// new rdma/rdma_group handling. +func TestV2GPUAttributes_UnsupportedKeyRejected(t *testing.T) { + yamlSrc := `units: 1 +attributes: + vendor: + nvidia: + - model: a100 + rdma: true + bogus: yes` + + var gpu v2ResourceGPU + err := yaml.Unmarshal([]byte(yamlSrc), &gpu) + require.Error(t, err) + require.Contains(t, err.Error(), "unsupported attribute") +} diff --git a/go/sdl/rdma_validation_test.go b/go/sdl/rdma_validation_test.go new file mode 100644 index 00000000..167ca952 --- /dev/null +++ b/go/sdl/rdma_validation_test.go @@ -0,0 +1,188 @@ +package sdl + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/require" +) + +// CS-5: parser-level cross-field validations for RDMA. +// +// Each test builds a full SDL via Read() — the same entry point the +// CLI/provider use — so we exercise the real parse + validate pipeline. + +const sdlRDMAFixtureHeader = `--- +version: "2.0" +services: + inference-head: + image: nvidia/cuda:latest + expose: + - port: 30000 + as: 80 + to: [{ global: true }] + inference-worker: + image: nvidia/cuda:latest + expose: + - port: 30000 + to: [{ service: inference-head }] +` + +func sdlBody(headGPU, workerGPU, placementAttrs string) string { + return sdlRDMAFixtureHeader + ` +profiles: + compute: + inference-head: + resources: + cpu: { units: 1 } + memory: { size: 1Gi } + gpu: +` + headGPU + ` + storage: + - size: 512Mi + inference-worker: + resources: + cpu: { units: 1 } + memory: { size: 1Gi } + gpu: +` + workerGPU + ` + storage: + - size: 512Mi + placement: + rdma: + attributes: +` + placementAttrs + ` + pricing: + inference-head: { denom: uact, amount: 1000000 } + inference-worker: { denom: uact, amount: 1000000 } +deployment: + inference-head: + rdma: { profile: inference-head, count: 1 } + inference-worker: + rdma: { profile: inference-worker, count: 1 } +` +} + +func TestSDL_RDMA_Rule1_RDMARequiresPlacementCapability(t *testing.T) { + // Profiles declare gpu.attributes.rdma: true but placement does NOT + // require capabilities/rdma=true — rule 1 must reject. + body := sdlBody( + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + rdma: true`, + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + rdma: true`, + ` capabilities/gpu: nvidia`, + ) + + _, err := Read([]byte(body)) + require.Error(t, err) + require.True(t, + strings.Contains(err.Error(), "does not require capabilities/rdma=true"), + "unexpected error: %v", err) +} + +func TestSDL_RDMA_Rule1_PassesWhenPlacementRequiresRDMA(t *testing.T) { + body := sdlBody( + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + rdma: true`, + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + rdma: true`, + ` capabilities/rdma: "true"`, + ) + + _, err := Read([]byte(body)) + require.NoError(t, err) +} + +func TestSDL_RDMA_Rule2_RDMAGroupRequiresRDMAOnSameProfile(t *testing.T) { + body := sdlBody( + // head: rdma: true + rdma_group set (OK) + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + rdma: true + rdma_group: pair1`, + // worker: rdma_group set but rdma is NOT true — rule 2 must reject. + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + rdma_group: pair1`, + ` capabilities/rdma: "true"`, + ) + + _, err := Read([]byte(body)) + require.Error(t, err) + require.True(t, + strings.Contains(err.Error(), "rdma_group") && strings.Contains(err.Error(), "rdma: true"), + "unexpected error: %v", err) +} + +func TestSDL_RDMA_Rule3_NoMixingExplicitAndImplicitGroup(t *testing.T) { + body := sdlBody( + // head: rdma: true with no rdma_group (implicit __default__). + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + rdma: true`, + // worker: rdma: true with rdma_group explicitly set. + // Rule 3: cannot mix; reject. + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + rdma: true + rdma_group: pair1`, + ` capabilities/rdma: "true"`, + ) + + _, err := Read([]byte(body)) + require.Error(t, err) + require.True(t, + strings.Contains(err.Error(), "mixes explicit and implicit rdma_group"), + "unexpected error: %v", err) +} + +func TestSDL_RDMA_Rule3_AllImplicitOK(t *testing.T) { + // Simple head/worker with no rdma_group on either profile — the implicit + // default group is fine. + body := sdlBody( + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + rdma: true`, + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + rdma: true`, + ` capabilities/rdma: "true"`, + ) + + _, err := Read([]byte(body)) + require.NoError(t, err) +} + +func TestSDL_RDMA_Rule3_AllExplicitOK(t *testing.T) { + body := sdlBody( + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + rdma: true + rdma_group: pair1`, + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + rdma: true + rdma_group: pair1`, + ` capabilities/rdma: "true"`, + ) + + _, err := Read([]byte(body)) + require.NoError(t, err) +} diff --git a/go/sdl/v2.go b/go/sdl/v2.go index 80956b02..fcf952f4 100644 --- a/go/sdl/v2.go +++ b/go/sdl/v2.go @@ -533,9 +533,159 @@ func (sdl *v2) validate() error { } } + if err := sdl.validateRDMA(); err != nil { + return err + } + return nil } +// validateRDMA enforces the parser-level cross-field invariants for RDMA +// (CS-5 in the implementation spec): +// +// 1. Any compute profile with gpu.attributes.rdma: true must be used by a +// deployment whose placement requirements include capabilities/rdma=true. +// 2. Any compute profile with gpu.attributes.rdma_group set must also have +// gpu.attributes.rdma: true on the same profile (a peer group label +// without an HCA is a misconfiguration). +// 3. Within one deployment, if any profile sets rdma_group, every profile +// with gpu.attributes.rdma: true in that deployment must set rdma_group. +// No implicit-default-plus-explicit mixing within one deployment. +// +// The provider relies on these guarantees: rule 1 means an RDMA-required +// workload always reaches an RDMA-capable provider; rule 2 keeps peer-group +// labels meaningful; rule 3 keeps the per-group anti-affinity rule +// unambiguous. +func (sdl *v2) validateRDMA() error { + // Per-profile rule 2: rdma_group ⇒ rdma=true. + for profileName, compute := range sdl.Profiles.Compute { + if compute.Resources == nil || compute.Resources.GPU == nil { + continue + } + gpu := compute.Resources.GPU + if gpu.RDMAGroup != "" && !gpuAttributesHaveRDMA(gpu.Attributes) { + return fmt.Errorf( + "%w: compute profile %q sets gpu.attributes.rdma_group=%q but does not set gpu.attributes.rdma: true", + errSDLInvalid, + profileName, + gpu.RDMAGroup, + ) + } + } + + // Rules 1 and 3 are scoped to one deployment block. SDL v2 only has one + // deployment block (sdl.Deployments) so we treat the whole map as a + // single deployment for the purposes of these rules. + // + // Walk every (service, placement) and remember per service-deployment: + // - which profile it points at, + // - whether that profile has rdma=true, + // - whether that profile has rdma_group set. + type profUsage struct { + profileName string + hasRDMA bool + group string + } + type placementUsage struct { + // indexed by service name + usages []profUsage + } + usagesByPlacement := map[string]*placementUsage{} + + for svcName, depl := range sdl.Deployments { + for placementName, svcdepl := range depl { + compute, ok := sdl.Profiles.Compute[svcdepl.Profile] + if !ok { + continue // covered by earlier validate() loop + } + gpu := (*v2ResourceGPU)(nil) + if compute.Resources != nil { + gpu = compute.Resources.GPU + } + usage := profUsage{ + profileName: svcdepl.Profile, + } + if gpu != nil { + usage.hasRDMA = gpuAttributesHaveRDMA(gpu.Attributes) + usage.group = gpu.RDMAGroup + } + + pu, ok := usagesByPlacement[placementName] + if !ok { + pu = &placementUsage{} + usagesByPlacement[placementName] = pu + } + pu.usages = append(pu.usages, usage) + + // Rule 1: per-placement, if this profile has rdma=true, the + // placement's requirements must include capabilities/rdma=true. + if usage.hasRDMA { + infra, ok := sdl.Profiles.Placement[placementName] + if !ok { + continue // covered by earlier validate() loop + } + if !placementRequiresRDMA(infra.Attributes) { + return fmt.Errorf( + "%w: service %q uses RDMA profile %q under placement %q but placement does not require capabilities/rdma=true", + errSDLInvalid, + svcName, + svcdepl.Profile, + placementName, + ) + } + } + } + } + + // Rule 3: within one deployment block (= one placementUsage), if any + // profile sets rdma_group, every profile with rdma=true must set + // rdma_group too. The spec's "deployment" scope is one sdl.Deployments, + // so we apply this rule per placement (each placement is what a tenant + // sees as one bid target / one set of leased pods). + for placementName, pu := range usagesByPlacement { + anyGrouped := false + for _, u := range pu.usages { + if u.group != "" { + anyGrouped = true + break + } + } + if !anyGrouped { + continue + } + for _, u := range pu.usages { + if u.hasRDMA && u.group == "" { + return fmt.Errorf( + "%w: placement %q mixes explicit and implicit rdma_group: profile %q has gpu.attributes.rdma: true but no rdma_group, while another profile under the same placement sets rdma_group", + errSDLInvalid, + placementName, + u.profileName, + ) + } + } + } + + return nil +} + +func gpuAttributesHaveRDMA(attrs v2GPUAttributes) bool { + for _, a := range attrs { + if a.Key == GPUAttributeRDMA && a.Value == valueTrue { + return true + } + } + return false +} + +func placementRequiresRDMA(attrs v2PlacementAttributes) bool { + for _, a := range attrs { + if a.Key == "capabilities/rdma" && a.Value == valueTrue { + return true + } + } + return false +} + func (sdl *v2) computeEndpointSequenceNumbers() map[string]uint32 { var endpointNames []string res := make(map[string]uint32) diff --git a/make/setup-cache.mk b/make/setup-cache.mk index d4083a7b..60a925ec 100644 --- a/make/setup-cache.mk +++ b/make/setup-cache.mk @@ -152,12 +152,16 @@ $(MOCKERY_VERSION_FILE): $(AKASH_DEVCACHE) touch $@ $(MOCKERY): $(MOCKERY_VERSION_FILE) -GOLANGCI_LINT_MAJOR=$(shell $(SEMVER) get major $(GOLANGCI_LINT_VERSION)) +# NOTE: the module-path major version (v2 vs v3 etc.) is computed from +# GOLANGCI_LINT_VERSION at *recipe-execute* time, after the $(SEMVER) +# dependency below has been satisfied. Computing it at parse time with +# $(shell ...) silently returned empty when semver hadn't been built yet, +# producing the broken module path .../golangci-lint/v/cmd/golangci-lint. -$(GOLANGCI_LINT_VERSION_FILE): $(AP_DEVCACHE) +$(GOLANGCI_LINT_VERSION_FILE): $(AP_DEVCACHE) $(SEMVER) @echo "installing golangci-lint $(GOLANGCI_LINT_VERSION) ..." rm -f $(MOCKERY) - (cd $(GO_ROOT); GOBIN=$(AKASH_DEVCACHE_BIN) go install github.com/golangci/golangci-lint/v$(GOLANGCI_LINT_MAJOR)/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION)) + (cd $(GO_ROOT); GOBIN=$(AKASH_DEVCACHE_BIN) go install github.com/golangci/golangci-lint/v$$($(SEMVER) get major $(GOLANGCI_LINT_VERSION))/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION)) rm -rf "$(dir $@)" mkdir -p "$(dir $@)" touch $@ diff --git a/proto/provider/akash/inventory/v1/node.proto b/proto/provider/akash/inventory/v1/node.proto index ca24fb7b..be238db7 100644 --- a/proto/provider/akash/inventory/v1/node.proto +++ b/proto/provider/akash/inventory/v1/node.proto @@ -13,6 +13,33 @@ message NodeCapabilities { (gogoproto.jsontag) = "storage_classes", (gogoproto.moretags) = "yaml:\"storage_classes\"" ]; + + // RDMA: Kubernetes extended-resource name the cluster's device plugin publishes + // for RDMA-capable HCAs (e.g. rdma/rdma_shared_device_ib for InfiniBand, + // rdma/rdma_shared_device_eth for RoCE). Empty when the node has no RDMA + // capability. Discovered by the inventory operator from k8s allocatable. + string rdma_resource_name = 2 [ + (gogoproto.customname) = "RDMAResourceName", + (gogoproto.jsontag) = "rdma_resource_name,omitempty", + (gogoproto.moretags) = "yaml:\"rdma_resource_name,omitempty\"" + ]; + + // RDMA fabric type. "infiniband" or "roce". Derived from + // /sys/class/infiniband//ports/1/link_layer on the host node. + string rdma_fabric = 3 [ + (gogoproto.customname) = "RDMAFabric", + (gogoproto.jsontag) = "rdma_fabric,omitempty", + (gogoproto.moretags) = "yaml:\"rdma_fabric,omitempty\"" + ]; + + // NCCL IB HCA prefix - the common device-name prefix under + // /sys/class/infiniband (e.g. "mlx5"). Injected by the provider as + // NCCL_IB_HCA when scheduling RDMA workloads. + string nccl_hca_prefix = 4 [ + (gogoproto.customname) = "NCCLHCAPrefix", + (gogoproto.jsontag) = "nccl_hca_prefix,omitempty", + (gogoproto.moretags) = "yaml:\"nccl_hca_prefix,omitempty\"" + ]; } // Node reports node inventory details diff --git a/proto/provider/akash/inventory/v1/resources.proto b/proto/provider/akash/inventory/v1/resources.proto index 837e1273..d0fa9b37 100644 --- a/proto/provider/akash/inventory/v1/resources.proto +++ b/proto/provider/akash/inventory/v1/resources.proto @@ -53,4 +53,15 @@ message NodeResources { (gogoproto.jsontag) = "volumes_mounted", (gogoproto.moretags) = "yaml:\"volumes_mounted\"" ]; + + // RDMA reports node RDMA capacity. Capacity/Allocatable/Allocated are + // populated by the inventory operator from k8s allocatable for whichever + // rdma/rdma_shared_device_* extended resource the cluster's device plugin + // publishes (see NodeCapabilities.rdma_resource_name). + ResourcePair rdma = 7 [ + (gogoproto.nullable) = false, + (gogoproto.customname) = "RDMA", + (gogoproto.jsontag) = "rdma", + (gogoproto.moretags) = "yaml:\"rdma\"" + ]; } diff --git a/proto/provider/akash/manifest/v2beta3/service.proto b/proto/provider/akash/manifest/v2beta3/service.proto index d23e9e5d..f8fc2f7c 100644 --- a/proto/provider/akash/manifest/v2beta3/service.proto +++ b/proto/provider/akash/manifest/v2beta3/service.proto @@ -124,4 +124,20 @@ message Service { (gogoproto.jsontag) = "credentials", (gogoproto.moretags) = "yaml:\"credentials\"" ]; + + // RDMAGroup carries the SDL gpu.attributes.rdma_group peer-group label. + // Off-chain only — never reaches Resources.GPU.attributes. Services + // sharing the same value form one NCCL peer group; the provider applies + // pod anti-affinity within each group when scheduling the workload. + // Empty when the service is not part of any RDMA peer group. + // + // JSON / YAML tag is camelCase (no `omitempty`) to match the existing + // convention on this message (cf. `read_only` -> `"readOnly"`) so that + // the JSON serialization stays in lock-step with the TypeScript SDK, + // which always emits the field regardless of value. + string rdma_group = 11 [ + (gogoproto.customname) = "RDMAGroup", + (gogoproto.jsontag) = "rdmaGroup", + (gogoproto.moretags) = "yaml:\"rdmaGroup\"" + ]; } diff --git a/testdata/sdl/output-fixtures/v2.0/gpu-basic/manifest.json b/testdata/sdl/output-fixtures/v2.0/gpu-basic/manifest.json index 404ce357..cb5aca5a 100644 --- a/testdata/sdl/output-fixtures/v2.0/gpu-basic/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/gpu-basic/manifest.json @@ -69,7 +69,8 @@ "endpointSequenceNumber": 0 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/http-options/manifest.json b/testdata/sdl/output-fixtures/v2.0/http-options/manifest.json index 5a1cd4d2..fe490d42 100644 --- a/testdata/sdl/output-fixtures/v2.0/http-options/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/http-options/manifest.json @@ -66,7 +66,8 @@ "endpointSequenceNumber": 0 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/ip-endpoint/manifest.json b/testdata/sdl/output-fixtures/v2.0/ip-endpoint/manifest.json index 704eb653..3460e872 100644 --- a/testdata/sdl/output-fixtures/v2.0/ip-endpoint/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/ip-endpoint/manifest.json @@ -96,7 +96,8 @@ "endpointSequenceNumber": 2 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/multiple-services/manifest.json b/testdata/sdl/output-fixtures/v2.0/multiple-services/manifest.json index 61c3bb57..85e9b92e 100644 --- a/testdata/sdl/output-fixtures/v2.0/multiple-services/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/multiple-services/manifest.json @@ -62,7 +62,8 @@ "endpointSequenceNumber": 0 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" }, { "name": "db", @@ -123,7 +124,8 @@ "endpointSequenceNumber": 0 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" }, { "name": "web", @@ -186,7 +188,8 @@ "endpointSequenceNumber": 0 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/persistent-storage/manifest.json b/testdata/sdl/output-fixtures/v2.0/persistent-storage/manifest.json index 7da4751d..412451ab 100644 --- a/testdata/sdl/output-fixtures/v2.0/persistent-storage/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/persistent-storage/manifest.json @@ -85,7 +85,8 @@ } ] }, - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/placement/manifest.json b/testdata/sdl/output-fixtures/v2.0/placement/manifest.json index 8bcb157c..140a1484 100644 --- a/testdata/sdl/output-fixtures/v2.0/placement/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/placement/manifest.json @@ -63,7 +63,8 @@ "endpointSequenceNumber": 0 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/port-ranges/manifest.json b/testdata/sdl/output-fixtures/v2.0/port-ranges/manifest.json index fc24cb10..138b79a1 100644 --- a/testdata/sdl/output-fixtures/v2.0/port-ranges/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/port-ranges/manifest.json @@ -113,7 +113,8 @@ "endpointSequenceNumber": 0 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/pricing/manifest.json b/testdata/sdl/output-fixtures/v2.0/pricing/manifest.json index 4cab8f7c..3df2e1c3 100644 --- a/testdata/sdl/output-fixtures/v2.0/pricing/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/pricing/manifest.json @@ -63,7 +63,8 @@ "endpointSequenceNumber": 0 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] }, @@ -131,7 +132,8 @@ "endpointSequenceNumber": 0 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/simple/manifest.json b/testdata/sdl/output-fixtures/v2.0/simple/manifest.json index 8c88f15d..d4ae7056 100644 --- a/testdata/sdl/output-fixtures/v2.0/simple/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/simple/manifest.json @@ -90,7 +90,8 @@ "endpointSequenceNumber": 0 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/storage-classes/manifest.json b/testdata/sdl/output-fixtures/v2.0/storage-classes/manifest.json index d4ecd957..c33954ed 100644 --- a/testdata/sdl/output-fixtures/v2.0/storage-classes/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/storage-classes/manifest.json @@ -114,7 +114,8 @@ } ] }, - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] } diff --git a/testdata/sdl/output-fixtures/v2.1/credentials/manifest.json b/testdata/sdl/output-fixtures/v2.1/credentials/manifest.json index 12f494df..ca0bd69b 100644 --- a/testdata/sdl/output-fixtures/v2.1/credentials/manifest.json +++ b/testdata/sdl/output-fixtures/v2.1/credentials/manifest.json @@ -68,7 +68,8 @@ "email": "user@example.com", "username": "myuser", "password": "mypassword" - } + }, + "rdmaGroup": "" } ] } diff --git a/testdata/sdl/output-fixtures/v2.1/ip-endpoint/manifest.json b/testdata/sdl/output-fixtures/v2.1/ip-endpoint/manifest.json index 23efdc8e..ed401f0c 100644 --- a/testdata/sdl/output-fixtures/v2.1/ip-endpoint/manifest.json +++ b/testdata/sdl/output-fixtures/v2.1/ip-endpoint/manifest.json @@ -68,7 +68,8 @@ "endpointSequenceNumber": 3 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" }, { "name": "web", @@ -164,7 +165,8 @@ "endpointSequenceNumber": 2 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] } diff --git a/testdata/sdl/output-fixtures/v2.1/shared-ip/manifest.json b/testdata/sdl/output-fixtures/v2.1/shared-ip/manifest.json index 6c371237..f2281b0d 100644 --- a/testdata/sdl/output-fixtures/v2.1/shared-ip/manifest.json +++ b/testdata/sdl/output-fixtures/v2.1/shared-ip/manifest.json @@ -70,7 +70,8 @@ "endpointSequenceNumber": 2 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" }, { "name": "web", @@ -139,7 +140,8 @@ "endpointSequenceNumber": 2 } ], - "credentials": null + "credentials": null, + "rdmaGroup": "" } ] } diff --git a/ts/src/generated/protos/akash/inventory/v1/node.ts b/ts/src/generated/protos/akash/inventory/v1/node.ts index 9c7dda62..cccd97e2 100644 --- a/ts/src/generated/protos/akash/inventory/v1/node.ts +++ b/ts/src/generated/protos/akash/inventory/v1/node.ts @@ -14,6 +14,24 @@ import { NodeResources } from "./resources.ts"; /** NodeCapabilities extended list of node capabilities */ export interface NodeCapabilities { storageClasses: string[]; + /** + * RDMA: Kubernetes extended-resource name the cluster's device plugin publishes + * for RDMA-capable HCAs (e.g. rdma/rdma_shared_device_ib for InfiniBand, + * rdma/rdma_shared_device_eth for RoCE). Empty when the node has no RDMA + * capability. Discovered by the inventory operator from k8s allocatable. + */ + rdmaResourceName: string; + /** + * RDMA fabric type. "infiniband" or "roce". Derived from + * /sys/class/infiniband//ports/1/link_layer on the host node. + */ + rdmaFabric: string; + /** + * NCCL IB HCA prefix - the common device-name prefix under + * /sys/class/infiniband (e.g. "mlx5"). Injected by the provider as + * NCCL_IB_HCA when scheduling RDMA workloads. + */ + ncclHcaPrefix: string; } /** Node reports node inventory details */ @@ -24,7 +42,7 @@ export interface Node { } function createBaseNodeCapabilities(): NodeCapabilities { - return { storageClasses: [] }; + return { storageClasses: [], rdmaResourceName: "", rdmaFabric: "", ncclHcaPrefix: "" }; } export const NodeCapabilities: MessageFns = { @@ -34,6 +52,15 @@ export const NodeCapabilities: MessageFns globalThis.String(e)) : [], + rdmaResourceName: isSet(object.rdma_resource_name) ? globalThis.String(object.rdma_resource_name) : "", + rdmaFabric: isSet(object.rdma_fabric) ? globalThis.String(object.rdma_fabric) : "", + ncclHcaPrefix: isSet(object.nccl_hca_prefix) ? globalThis.String(object.nccl_hca_prefix) : "", }; }, @@ -74,11 +128,23 @@ export const NodeCapabilities: MessageFns): NodeCapabilities { const message = createBaseNodeCapabilities(); message.storageClasses = object.storageClasses?.map((e) => e) || []; + message.rdmaResourceName = object.rdmaResourceName ?? ""; + message.rdmaFabric = object.rdmaFabric ?? ""; + message.ncclHcaPrefix = object.ncclHcaPrefix ?? ""; return message; }, }; diff --git a/ts/src/generated/protos/akash/inventory/v1/resources.ts b/ts/src/generated/protos/akash/inventory/v1/resources.ts index 0c99c19d..7973b6d3 100644 --- a/ts/src/generated/protos/akash/inventory/v1/resources.ts +++ b/ts/src/generated/protos/akash/inventory/v1/resources.ts @@ -21,7 +21,16 @@ export interface NodeResources { gpu: GPU | undefined; ephemeralStorage: ResourcePair | undefined; volumesAttached: ResourcePair | undefined; - volumesMounted: ResourcePair | undefined; + volumesMounted: + | ResourcePair + | undefined; + /** + * RDMA reports node RDMA capacity. Capacity/Allocatable/Allocated are + * populated by the inventory operator from k8s allocatable for whichever + * rdma/rdma_shared_device_* extended resource the cluster's device plugin + * publishes (see NodeCapabilities.rdma_resource_name). + */ + rdma: ResourcePair | undefined; } function createBaseNodeResources(): NodeResources { @@ -32,6 +41,7 @@ function createBaseNodeResources(): NodeResources { ephemeralStorage: undefined, volumesAttached: undefined, volumesMounted: undefined, + rdma: undefined, }; } @@ -57,6 +67,9 @@ export const NodeResources: MessageFns): NodeResources { @@ -173,6 +198,9 @@ export const NodeResources: MessageFns `"readOnly"`) so that + * the JSON serialization stays in lock-step with the TypeScript SDK, + * which always emits the field regardless of value. + */ + rdmaGroup: string; } function createBaseStorageParams(): StorageParams { @@ -417,6 +432,7 @@ function createBaseService(): Service { expose: [], params: undefined, credentials: undefined, + rdmaGroup: "", }; } @@ -454,6 +470,9 @@ export const Service: MessageFns = { if (message.credentials !== undefined) { ImageCredentials.encode(message.credentials, writer.uint32(82).fork()).join(); } + if (message.rdmaGroup !== "") { + writer.uint32(90).string(message.rdmaGroup); + } return writer; }, @@ -544,6 +563,14 @@ export const Service: MessageFns = { message.credentials = ImageCredentials.decode(reader, reader.uint32()); continue; } + case 11: { + if (tag !== 90) { + break; + } + + message.rdmaGroup = reader.string(); + continue; + } } if ((tag & 7) === 4 || tag === 0) { break; @@ -565,6 +592,7 @@ export const Service: MessageFns = { expose: globalThis.Array.isArray(object?.expose) ? object.expose.map((e: any) => ServiceExpose.fromJSON(e)) : [], params: isSet(object.params) ? ServiceParams.fromJSON(object.params) : undefined, credentials: isSet(object.credentials) ? ImageCredentials.fromJSON(object.credentials) : undefined, + rdmaGroup: isSet(object.rdma_group) ? globalThis.String(object.rdma_group) : "", }; }, @@ -600,6 +628,9 @@ export const Service: MessageFns = { if (message.credentials !== undefined) { obj.credentials = ImageCredentials.toJSON(message.credentials); } + if (message.rdmaGroup !== "") { + obj.rdma_group = message.rdmaGroup; + } return obj; }, fromPartial(object: DeepPartial): Service { @@ -620,6 +651,7 @@ export const Service: MessageFns = { message.credentials = (object.credentials !== undefined && object.credentials !== null) ? ImageCredentials.fromPartial(object.credentials) : undefined; + message.rdmaGroup = object.rdmaGroup ?? ""; return message; }, }; diff --git a/ts/src/sdl/manifest/__snapshots__/generateManifestVersion.spec.ts.snap b/ts/src/sdl/manifest/__snapshots__/generateManifestVersion.spec.ts.snap index b7063825..a4ca3df7 100644 --- a/ts/src/sdl/manifest/__snapshots__/generateManifestVersion.spec.ts.snap +++ b/ts/src/sdl/manifest/__snapshots__/generateManifestVersion.spec.ts.snap @@ -1,116 +1,116 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`generateManifestVersion > snapshot tests > generates consistent JSON for Basic SDL > Basic SDL manifest JSON 1`] = `"[{"name":"akash","services":[{"args":null,"command":null,"count":1,"credentials":null,"env":null,"expose":[{"endpointSequenceNumber":0,"externalPort":80,"global":true,"hosts":null,"httpOptions":{"maxBodySize":1048576,"nextCases":["error","timeout"],"nextTimeout":0,"nextTries":3,"readTimeout":60000,"sendTimeout":60000},"ip":"","port":80,"proto":"TCP","service":""}],"image":"bsord/tetris","name":"tetris","resources":{"cpu":{"units":{"val":"1000"}},"endpoints":[{"sequence_number":0}],"gpu":{"units":{"val":"0"}},"id":1,"memory":{"size":{"val":"536870912"}},"storage":[{"name":"default","size":{"val":"536870912"}}]}}]}]"`; +exports[`generateManifestVersion > snapshot tests > generates consistent JSON for Basic SDL > Basic SDL manifest JSON 1`] = `"[{"name":"akash","services":[{"args":null,"command":null,"count":1,"credentials":null,"env":null,"expose":[{"endpointSequenceNumber":0,"externalPort":80,"global":true,"hosts":null,"httpOptions":{"maxBodySize":1048576,"nextCases":["error","timeout"],"nextTimeout":0,"nextTries":3,"readTimeout":60000,"sendTimeout":60000},"ip":"","port":80,"proto":"TCP","service":""}],"image":"bsord/tetris","name":"tetris","rdmaGroup":"","resources":{"cpu":{"units":{"val":"1000"}},"endpoints":[{"sequence_number":0}],"gpu":{"units":{"val":"0"}},"id":1,"memory":{"size":{"val":"536870912"}},"storage":[{"name":"default","size":{"val":"536870912"}}]}}]}]"`; -exports[`generateManifestVersion > snapshot tests > generates consistent JSON for Empty Profile SDL > Empty Profile manifest JSON 1`] = `"[{"name":"akash","services":[{"args":null,"command":null,"count":1,"credentials":null,"env":null,"expose":[{"endpointSequenceNumber":0,"externalPort":80,"global":true,"hosts":null,"httpOptions":{"maxBodySize":1048576,"nextCases":["error","timeout"],"nextTimeout":0,"nextTries":3,"readTimeout":60000,"sendTimeout":60000},"ip":"","port":80,"proto":"TCP","service":""}],"image":"bsord/tetris","name":"tetris-main","resources":{"cpu":{"units":{"val":"1000"}},"endpoints":[{"sequence_number":0}],"gpu":{"units":{"val":"0"}},"id":1,"memory":{"size":{"val":"536870912"}},"storage":[{"name":"default","size":{"val":"536870912"}}]}}]}]"`; +exports[`generateManifestVersion > snapshot tests > generates consistent JSON for Empty Profile SDL > Empty Profile manifest JSON 1`] = `"[{"name":"akash","services":[{"args":null,"command":null,"count":1,"credentials":null,"env":null,"expose":[{"endpointSequenceNumber":0,"externalPort":80,"global":true,"hosts":null,"httpOptions":{"maxBodySize":1048576,"nextCases":["error","timeout"],"nextTimeout":0,"nextTries":3,"readTimeout":60000,"sendTimeout":60000},"ip":"","port":80,"proto":"TCP","service":""}],"image":"bsord/tetris","name":"tetris-main","rdmaGroup":"","resources":{"cpu":{"units":{"val":"1000"}},"endpoints":[{"sequence_number":0}],"gpu":{"units":{"val":"0"}},"id":1,"memory":{"size":{"val":"536870912"}},"storage":[{"name":"default","size":{"val":"536870912"}}]}}]}]"`; exports[`generateManifestVersion > snapshot tests > generates consistent version for Basic SDL > Basic SDL manifest version 1`] = ` Uint8Array [ - 238, - 82, - 227, - 41, - 170, - 69, - 176, - 99, - 140, - 39, - 6, - 93, - 82, - 235, - 13, - 201, - 47, - 103, - 4, - 25, + 120, 75, - 198, - 60, - 100, - 53, + 236, + 99, + 29, + 192, + 117, + 115, 197, - 111, - 181, - 73, - 221, - 237, + 35, + 159, + 75, + 219, 125, + 210, + 244, + 33, + 187, + 63, + 23, + 53, + 159, + 129, + 113, + 92, + 160, + 189, + 212, + 3, + 136, + 10, + 44, ] `; exports[`generateManifestVersion > snapshot tests > generates consistent version for Empty Profile SDL > Empty Profile manifest version 1`] = ` Uint8Array [ - 131, - 143, - 9, - 175, - 180, - 7, + 182, + 30, + 47, + 136, + 39, + 231, + 190, + 117, + 204, + 69, + 190, + 37, + 133, + 11, + 243, + 228, 58, - 60, - 168, + 130, + 39, + 86, + 188, + 142, + 19, 235, - 37, - 255, - 95, - 79, + 98, + 19, + 183, 2, - 251, - 157, - 44, - 222, - 105, - 133, - 190, - 99, - 107, - 4, - 237, - 225, - 116, - 1, - 21, - 69, - 131, + 149, + 70, + 68, + 83, ] `; exports[`generateManifestVersion > snapshot tests > generates consistent version for Minesweeper SDL > Minesweeper manifest version 1`] = ` Uint8Array [ - 118, - 133, - 114, + 207, + 156, + 163, + 238, + 144, + 250, + 194, + 217, + 218, + 43, + 194, 88, - 205, - 146, - 91, + 175, + 228, + 59, + 142, + 157, + 92, + 143, + 164, + 173, + 193, + 12, + 211, + 243, + 63, + 135, + 222, + 169, + 87, 146, - 241, - 47, - 147, - 235, - 200, - 244, - 136, - 198, - 55, - 161, - 119, - 8, - 118, - 79, - 121, - 150, - 213, - 74, - 208, 44, - 37, - 100, - 241, - 116, ] `; From 6799f46fa5c5c9d2e3d5655b73d1ba6e7507cf8f Mon Sep 17 00:00:00 2001 From: zblocker64 Date: Mon, 8 Jun 2026 13:07:24 -0500 Subject: [PATCH 02/10] fix: address PR #315 review feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Six review items from chalabi2 + CodeRabbit: - proto/service.proto + regenerated .pb.go/.ts: add omitempty to Service.RDMAGroup JSON/YAML tags. The on-chain manifest version hash is a SHA over the JSON-serialized off-chain manifest; without omitempty every pre-RDMA service serialized "rdmaGroup": "" and shifted the hash for existing leases, breaking send-manifest validation. Fixtures regenerated — diff vs main is zero on every non-RDMA testdata manifest, confirming hash stability. - sdl/v2.go + v2_1.go: extract validateRDMA() into a free function taking (profiles, deployments) and call it from both v2 and v2.1 validate(). v2.1 inherits the full RDMA SDL grammar from v2 (parser promotes gpu.attributes.rdma + rdma_group through to the manifest), so the cross-field invariants (rule 1: rdma-required workload reaches rdma-capable provider; rule 2: rdma_group ⇒ rdma=true; rule 3: no implicit/explicit group mixing within one deployment) must apply symmetrically. Without this, invalid v2.1 SDLs bypass the new rules. - sdl/sdl-input.schema.yaml: declare rdma (boolean) and rdma_group (string) under gpu.attributes. The parser accepts them but the schema had additionalProperties: false and only allowed `vendor`, rejecting valid RDMA SDLs at schema-validation time. - inventory/v1/resourcepair.go: ResourcePair.Dup() now preserves the nil/non-nil shape of Capacity/Allocatable/Allocated rather than always returning &zeroQuantity. Returning non-nil pointers for originally-nil fields changes protobuf field-presence semantics and shifts the JSON serialization (which feeds the manifest hash). Regression-pinned by TestResourcePair_Dup_PreservesNilPointers. - sdl/v2.go validateRDMA: defense-in-depth gate on gpu.Units > 0. The parser already rejects rdma/rdma_group on zero-GPU profiles, but the validator should not classify a zero-GPU profile as RDMA-enabled if that parser path is ever bypassed. The TS proto-regen as part of #6 incidentally addresses the TS bindings gap — ts/src/generated/protos/akash/manifest/v2beta3/service.ts now parses and emits rdma_group with the same omitempty semantics. --- go/inventory/v1/resourcepair.go | 22 +++- go/inventory/v1/resourcepair_zero_test.go | 27 ++++ go/manifest/v2beta3/service.pb.go | 120 +++++++++--------- go/sdl/sdl-input.schema.yaml | 14 ++ go/sdl/v2.go | 31 ++++- go/sdl/v2_1.go | 8 ++ .../akash/manifest/v2beta3/service.proto | 14 +- .../v2.0/gpu-basic/manifest.json | 3 +- .../v2.0/http-options/manifest.json | 3 +- .../v2.0/ip-endpoint/manifest.json | 3 +- .../v2.0/multiple-services/manifest.json | 9 +- .../v2.0/persistent-storage/manifest.json | 3 +- .../v2.0/placement/manifest.json | 3 +- .../v2.0/port-ranges/manifest.json | 3 +- .../v2.0/pricing/manifest.json | 6 +- .../output-fixtures/v2.0/simple/manifest.json | 3 +- .../v2.0/storage-classes/manifest.json | 3 +- .../v2.1/credentials/manifest.json | 3 +- .../v2.1/ip-endpoint/manifest.json | 6 +- .../v2.1/shared-ip/manifest.json | 6 +- .../protos/akash/manifest/v2beta3/service.ts | 10 +- 21 files changed, 181 insertions(+), 119 deletions(-) diff --git a/go/inventory/v1/resourcepair.go b/go/inventory/v1/resourcepair.go index 9183bdd9..169b2a84 100644 --- a/go/inventory/v1/resourcepair.go +++ b/go/inventory/v1/resourcepair.go @@ -67,21 +67,29 @@ func (m *ResourcePair) Dup() ResourcePair { return ResourcePair{} } - var capacity, allocatable, allocated resource.Quantity + // Preserve the nil/non-nil shape of each quantity pointer. Returning + // `&zeroQuantity` for an originally-nil field would change protobuf + // field-presence semantics (and the JSON serialization the manifest + // version hash is computed from), so a partially-populated source + // must Dup to a structurally identical copy. + var capacity, allocatable, allocated *resource.Quantity if m.Capacity != nil { - capacity = m.Capacity.DeepCopy() + c := m.Capacity.DeepCopy() + capacity = &c } if m.Allocatable != nil { - allocatable = m.Allocatable.DeepCopy() + a := m.Allocatable.DeepCopy() + allocatable = &a } if m.Allocated != nil { - allocated = m.Allocated.DeepCopy() + al := m.Allocated.DeepCopy() + allocated = &al } return ResourcePair{ - Capacity: &capacity, - Allocatable: &allocatable, - Allocated: &allocated, + Capacity: capacity, + Allocatable: allocatable, + Allocated: allocated, Attributes: m.Attributes.Dup(), } } diff --git a/go/inventory/v1/resourcepair_zero_test.go b/go/inventory/v1/resourcepair_zero_test.go index bb8ee9d8..acfe1ed3 100644 --- a/go/inventory/v1/resourcepair_zero_test.go +++ b/go/inventory/v1/resourcepair_zero_test.go @@ -48,6 +48,33 @@ func TestResourcePair_Dup_PopulatedRoundTrips(t *testing.T) { require.Equal(t, int64(8), rp.Allocated.Value()) } +// Regression-pins CodeRabbit review #3: previous Dup() always returned +// non-nil pointers for Capacity/Allocatable/Allocated even when the +// source pointers were nil. That changed protobuf field-presence on the +// copy and shifted the JSON serialization (which the manifest version +// hash is computed from). A partially-nil source must Dup to a +// structurally identical copy. +func TestResourcePair_Dup_PreservesNilPointers(t *testing.T) { + q := resource.MustParse("8") + + // Capacity nil; Allocatable + Allocated populated. + src := ResourcePair{ + Allocatable: &q, + Allocated: resource.NewQuantity(0, resource.DecimalSI), + } + require.False(t, src.IsZero(), "src has non-nil pointers — not zero") + + got := src.Dup() + require.Nil(t, got.Capacity, "Dup must preserve nil Capacity") + require.NotNil(t, got.Allocatable, "non-nil Allocatable must round-trip") + require.NotNil(t, got.Allocated, "non-nil Allocated must round-trip") + require.Equal(t, int64(8), got.Allocatable.Value()) + + // Mutating the dup must not poison the source. + got.Allocatable.Set(99) + require.Equal(t, int64(8), src.Allocatable.Value(), "Dup must deep-copy") +} + // Mirrors the realistic non-RDMA-node case the bug would surface in. func TestNodeResources_Dup_ZeroRDMA_DoesNotPanic(t *testing.T) { zero := NewResourcePair(0, 0, 0, resource.DecimalSI) diff --git a/go/manifest/v2beta3/service.pb.go b/go/manifest/v2beta3/service.pb.go index 1530f4f7..7667a5f6 100644 --- a/go/manifest/v2beta3/service.pb.go +++ b/go/manifest/v2beta3/service.pb.go @@ -278,11 +278,13 @@ type Service struct { // pod anti-affinity within each group when scheduling the workload. // Empty when the service is not part of any RDMA peer group. // - // JSON / YAML tag is camelCase (no `omitempty`) to match the existing - // convention on this message (cf. `read_only` -> `"readOnly"`) so that - // the JSON serialization stays in lock-step with the TypeScript SDK, - // which always emits the field regardless of value. - RDMAGroup string `protobuf:"bytes,11,opt,name=rdma_group,json=rdmaGroup,proto3" json:"rdmaGroup" yaml:"rdmaGroup"` + // JSON / YAML tags carry `omitempty`: the on-chain manifest `version` + // is a SHA hash of the JSON-serialized off-chain manifest, so any field + // that always serializes (even at zero value) would shift the hash for + // every pre-RDMA SDL and break send-manifest validation on existing + // leases. With omitempty, non-RDMA services serialize identically to + // their pre-PR shape; only services that declare a group emit the key. + RDMAGroup string `protobuf:"bytes,11,opt,name=rdma_group,json=rdmaGroup,proto3" json:"rdmaGroup,omitempty" yaml:"rdmaGroup,omitempty"` } func (m *Service) Reset() { *m = Service{} } @@ -407,61 +409,61 @@ func init() { } var fileDescriptor_6d5964c4976d68e5 = []byte{ - // 854 bytes of a gzipped FileDescriptorProto + // 856 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xf7, 0xe2, 0xd4, 0x89, 0xc7, 0x24, 0x44, 0x23, 0x4a, 0xb7, 0x11, 0x78, 0xcc, 0x88, 0x0a, - 0xd3, 0x54, 0x6b, 0x35, 0x41, 0x42, 0xe2, 0x8f, 0x50, 0x17, 0x10, 0xe2, 0x50, 0x51, 0x4d, 0xc5, - 0x85, 0x4b, 0x35, 0xb1, 0x07, 0x77, 0x15, 0xef, 0xce, 0x6a, 0x67, 0x6d, 0xc8, 0x8d, 0x2b, 0x42, - 0x48, 0x7c, 0x0e, 0xf8, 0x1c, 0x48, 0x39, 0xf6, 0xd8, 0xd3, 0x00, 0xce, 0xcd, 0xc7, 0xfd, 0x04, - 0x68, 0xde, 0xcc, 0x66, 0xd6, 0x8d, 0x4b, 0x84, 0x38, 0xd9, 0xef, 0xf7, 0xfe, 0xcd, 0x7b, 0xf3, - 0x9b, 0xdf, 0xa2, 0x77, 0xf8, 0x29, 0x57, 0x4f, 0x47, 0x29, 0xcf, 0x92, 0xef, 0x84, 0x2a, 0x47, - 0x8b, 0xa3, 0x13, 0x51, 0xf2, 0xe3, 0x91, 0x12, 0xc5, 0x22, 0x19, 0x8b, 0x28, 0x2f, 0x64, 0x29, - 0xf1, 0x1b, 0x10, 0x15, 0xd5, 0x51, 0x91, 0x8b, 0x3a, 0x78, 0x7d, 0x2a, 0xa7, 0x12, 0x42, 0x46, - 0xe6, 0x9f, 0x8d, 0x3e, 0xb8, 0xfb, 0xef, 0x35, 0xc5, 0x0f, 0xb9, 0x54, 0xae, 0xf2, 0xc1, 0x3d, - 0x1b, 0x7b, 0xc2, 0x95, 0x18, 0x15, 0x42, 0xc9, 0x79, 0x31, 0x16, 0x6a, 0xb4, 0xb8, 0x6f, 0x32, - 0xde, 0xf7, 0x88, 0x8d, 0xa6, 0xbf, 0x07, 0x68, 0xf7, 0x71, 0x29, 0x0b, 0x3e, 0x15, 0x8f, 0x78, - 0xc1, 0x53, 0x85, 0x0f, 0xd1, 0x56, 0xc6, 0x53, 0x11, 0x06, 0x83, 0x60, 0xd8, 0x8d, 0x6f, 0xad, - 0x34, 0x01, 0xbb, 0xd2, 0xa4, 0x77, 0xc6, 0xd3, 0xd9, 0x87, 0xd4, 0x58, 0x94, 0x01, 0x88, 0x47, - 0xe8, 0x46, 0x2a, 0xe7, 0x59, 0x19, 0xbe, 0x02, 0xd1, 0xb7, 0x57, 0x9a, 0x58, 0xa0, 0xd2, 0xe4, - 0x55, 0x1b, 0x0e, 0x26, 0x65, 0x16, 0xc6, 0x1f, 0xa3, 0x6e, 0x21, 0xf8, 0xe4, 0x89, 0xcc, 0x66, - 0x67, 0x61, 0x7b, 0x10, 0x0c, 0x77, 0x62, 0xb2, 0xd2, 0x64, 0xc7, 0x80, 0x5f, 0x67, 0xb3, 0xb3, - 0x4a, 0x93, 0xd7, 0x6c, 0x5e, 0x8d, 0x50, 0x76, 0xe9, 0xa4, 0xdf, 0x20, 0xfc, 0xd8, 0x8e, 0xfc, - 0x48, 0x14, 0x69, 0xa2, 0x54, 0x22, 0x33, 0x85, 0x3f, 0x45, 0x5b, 0x26, 0x22, 0x0c, 0x06, 0xed, - 0x61, 0x37, 0x3e, 0x5c, 0x69, 0xb2, 0x67, 0xec, 0x7b, 0x32, 0x4d, 0x4a, 0x91, 0xe6, 0xa5, 0x29, - 0x7a, 0xd3, 0x17, 0xf5, 0x38, 0x65, 0x90, 0x48, 0x7f, 0x69, 0xa3, 0xdd, 0xba, 0xae, 0x5d, 0xc2, - 0x09, 0xda, 0x56, 0x76, 0x2b, 0x50, 0xb5, 0x77, 0x74, 0x27, 0xda, 0x7c, 0x61, 0xd1, 0xda, 0xf2, - 0xe2, 0xb7, 0xcf, 0x35, 0x69, 0xad, 0x34, 0xa9, 0xb3, 0x2b, 0x4d, 0xf6, 0x6c, 0x67, 0x07, 0x50, - 0x56, 0xbb, 0xf0, 0x4f, 0x01, 0xea, 0x8d, 0x0b, 0x31, 0x11, 0x59, 0x99, 0xf0, 0x99, 0x0a, 0xd1, - 0x20, 0x18, 0xf6, 0x8e, 0x86, 0x2f, 0x6b, 0xf4, 0x55, 0xca, 0xa7, 0xe2, 0x33, 0x1f, 0x1f, 0x7f, - 0x72, 0xae, 0x49, 0xb0, 0xd2, 0xe4, 0x66, 0xa3, 0xc8, 0xda, 0xcc, 0x6f, 0xda, 0xce, 0x1b, 0xdd, - 0x94, 0x35, 0x7b, 0xe3, 0x9f, 0x03, 0xd4, 0xcb, 0xfd, 0x4a, 0xc3, 0x1e, 0x9c, 0xe5, 0xee, 0x4b, - 0x87, 0xbe, 0x72, 0x09, 0xfe, 0x34, 0x8d, 0x32, 0x9b, 0x4e, 0xb3, 0xd1, 0x4d, 0x59, 0xb3, 0x3b, - 0x5d, 0x05, 0x68, 0xff, 0xc5, 0x71, 0x0d, 0x2f, 0x9f, 0x4a, 0x55, 0x36, 0x79, 0x69, 0x6c, 0xcf, - 0x4b, 0x63, 0x51, 0x06, 0xa0, 0xe1, 0xa5, 0x48, 0x79, 0x32, 0x6b, 0xf2, 0x12, 0x00, 0xcf, 0x4b, - 0x30, 0x29, 0xb3, 0x30, 0xfe, 0x08, 0xed, 0xcc, 0x95, 0x28, 0x80, 0xf9, 0x6d, 0xc8, 0x01, 0x5a, - 0xd6, 0x98, 0xa7, 0x65, 0x8d, 0x50, 0x76, 0xe9, 0x34, 0xc9, 0x39, 0x57, 0xea, 0x7b, 0x59, 0x4c, - 0xc2, 0x2d, 0x9f, 0x5c, 0x63, 0x3e, 0xb9, 0x46, 0x28, 0xbb, 0x74, 0xd2, 0x3f, 0x3a, 0x68, 0xdb, - 0xed, 0xf3, 0x3f, 0xbf, 0xbd, 0xc4, 0x2c, 0xa9, 0x39, 0x23, 0x00, 0x7e, 0x46, 0x30, 0x29, 0xb3, - 0x30, 0xfe, 0x00, 0x6d, 0x8f, 0x65, 0x9a, 0xf2, 0x6c, 0x12, 0xb6, 0xe1, 0xa9, 0xbc, 0x65, 0x98, - 0xea, 0x20, 0xcf, 0x54, 0x07, 0x50, 0x56, 0xbb, 0xcc, 0xb1, 0x78, 0x31, 0x55, 0xe1, 0x16, 0x64, - 0xc1, 0xb1, 0x8c, 0xed, 0x8f, 0x65, 0x2c, 0xca, 0x00, 0xc4, 0x87, 0xa8, 0x2d, 0xb2, 0x45, 0x78, - 0x03, 0x62, 0x6f, 0x3b, 0x56, 0x18, 0xa8, 0xd2, 0x04, 0xb9, 0xd5, 0x67, 0x0b, 0xca, 0x0c, 0x84, - 0x67, 0x46, 0x0e, 0x9c, 0x22, 0x85, 0x1d, 0x20, 0xdd, 0xbb, 0x8e, 0x74, 0x46, 0xc0, 0x22, 0x2f, - 0x57, 0x4e, 0xc0, 0x22, 0x56, 0x23, 0xf1, 0x1d, 0xf7, 0xd6, 0x7c, 0x85, 0x4a, 0x93, 0xfd, 0xfa, - 0x9d, 0x3b, 0x88, 0x32, 0xef, 0x36, 0x1b, 0x1b, 0x83, 0x5a, 0x6d, 0x0f, 0x82, 0xe1, 0xae, 0xdd, - 0xd8, 0x78, 0x5d, 0xad, 0xc6, 0x4e, 0xad, 0xe0, 0x17, 0xe7, 0xa8, 0x63, 0xb5, 0x35, 0xdc, 0xb9, - 0x46, 0x05, 0xec, 0x05, 0x7e, 0x01, 0xc1, 0xf1, 0x7d, 0x77, 0x32, 0x97, 0x5c, 0x69, 0xb2, 0xeb, - 0x06, 0x07, 0x9b, 0xfe, 0xf6, 0x27, 0xd9, 0x5b, 0xcb, 0x50, 0xcc, 0x85, 0xe2, 0x02, 0x75, 0x72, - 0x90, 0x92, 0xb0, 0x0b, 0xdb, 0xb8, 0xae, 0xa3, 0xd3, 0x9d, 0x63, 0xb7, 0xe7, 0x7d, 0x9b, 0xbc, - 0xf6, 0xf0, 0x6e, 0xd5, 0xdc, 0x5b, 0xf7, 0x50, 0xe6, 0x3a, 0xe1, 0xf9, 0xff, 0xd3, 0xa1, 0xf7, - 0x5c, 0xef, 0x66, 0x91, 0x4a, 0x13, 0x7c, 0x45, 0x7d, 0x5e, 0xd0, 0x9c, 0x87, 0x08, 0x15, 0x93, - 0x94, 0x3f, 0x99, 0x16, 0x72, 0x9e, 0x83, 0xe2, 0x74, 0xe3, 0x68, 0xa9, 0x49, 0x97, 0x7d, 0xfe, - 0xf0, 0xc1, 0x97, 0x06, 0x84, 0xcb, 0x9d, 0xa4, 0x1c, 0x8c, 0xc6, 0xe5, 0xd6, 0x90, 0xb9, 0xdc, - 0xfa, 0x7f, 0xfc, 0xe0, 0xf9, 0xdf, 0xfd, 0xd6, 0x8f, 0xcb, 0x7e, 0x70, 0xbe, 0xec, 0x07, 0xcf, - 0x96, 0xfd, 0xe0, 0xaf, 0x65, 0x3f, 0xf8, 0xf5, 0xa2, 0xdf, 0x7a, 0x76, 0xd1, 0x6f, 0x3d, 0xbf, - 0xe8, 0xb7, 0xbe, 0x25, 0xf9, 0xe9, 0x34, 0xe2, 0xa7, 0x65, 0x34, 0x11, 0x8b, 0xd1, 0x54, 0x5e, - 0xf9, 0x9c, 0x9e, 0x74, 0xe0, 0x9b, 0x78, 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x68, 0x06, - 0xf3, 0x50, 0xc3, 0x07, 0x00, 0x00, + 0x14, 0xf7, 0xe2, 0xd4, 0x89, 0xc7, 0x24, 0x44, 0x03, 0xa5, 0xdb, 0x08, 0x3c, 0x66, 0x44, 0x85, + 0x69, 0xaa, 0xb5, 0x9a, 0x20, 0x21, 0xf1, 0x47, 0xa8, 0x0b, 0x08, 0x71, 0x40, 0x54, 0x53, 0x71, + 0xe1, 0x52, 0x4d, 0xec, 0xc1, 0xb5, 0xe2, 0xdd, 0x59, 0xed, 0xac, 0x0d, 0xb9, 0x71, 0x45, 0x08, + 0x89, 0xcf, 0x01, 0x5f, 0x24, 0xc7, 0x1e, 0xcb, 0x65, 0x00, 0xe7, 0xb6, 0xc7, 0xfd, 0x04, 0x68, + 0xde, 0xcc, 0x66, 0xd6, 0x8d, 0x4b, 0x84, 0x38, 0xd9, 0xef, 0xf7, 0xfe, 0xcd, 0x7b, 0xf3, 0x9b, + 0xdf, 0xa2, 0xb7, 0xf9, 0x29, 0x57, 0x4f, 0x46, 0x09, 0x4f, 0x67, 0xdf, 0x09, 0x55, 0x8c, 0x96, + 0x47, 0x27, 0xa2, 0xe0, 0xc7, 0x23, 0x25, 0xf2, 0xe5, 0x6c, 0x2c, 0xa2, 0x2c, 0x97, 0x85, 0xc4, + 0xaf, 0x43, 0x54, 0x54, 0x47, 0x45, 0x2e, 0xea, 0xe0, 0xb5, 0xa9, 0x9c, 0x4a, 0x08, 0x19, 0x99, + 0x7f, 0x36, 0xfa, 0xe0, 0xee, 0xbf, 0xd7, 0x14, 0x3f, 0x64, 0x52, 0xb9, 0xca, 0x07, 0xf7, 0x6c, + 0xec, 0x09, 0x57, 0x62, 0x94, 0x0b, 0x25, 0x17, 0xf9, 0x58, 0xa8, 0xd1, 0xf2, 0xbe, 0xc9, 0x78, + 0xcf, 0x23, 0x36, 0x9a, 0xfe, 0x1e, 0xa0, 0xdd, 0x47, 0x85, 0xcc, 0xf9, 0x54, 0x3c, 0xe4, 0x39, + 0x4f, 0x14, 0x3e, 0x44, 0x5b, 0x29, 0x4f, 0x44, 0x18, 0x0c, 0x82, 0x61, 0x37, 0xbe, 0x55, 0x6a, + 0x02, 0x76, 0xa5, 0x49, 0xef, 0x8c, 0x27, 0xf3, 0x0f, 0xa8, 0xb1, 0x28, 0x03, 0x10, 0x8f, 0xd0, + 0x8d, 0x44, 0x2e, 0xd2, 0x22, 0x7c, 0x09, 0xa2, 0x6f, 0x97, 0x9a, 0x58, 0xa0, 0xd2, 0xe4, 0x65, + 0x1b, 0x0e, 0x26, 0x65, 0x16, 0xc6, 0x1f, 0xa1, 0x6e, 0x2e, 0xf8, 0xe4, 0xb1, 0x4c, 0xe7, 0x67, + 0x61, 0x7b, 0x10, 0x0c, 0x77, 0x62, 0x52, 0x6a, 0xb2, 0x63, 0xc0, 0xaf, 0xd3, 0xf9, 0x59, 0xa5, + 0xc9, 0x2b, 0x36, 0xaf, 0x46, 0x28, 0xbb, 0x74, 0xd2, 0x6f, 0x10, 0x7e, 0x64, 0x47, 0x7e, 0x28, + 0xf2, 0x64, 0xa6, 0xd4, 0x4c, 0xa6, 0x0a, 0x7f, 0x82, 0xb6, 0x4c, 0x44, 0x18, 0x0c, 0xda, 0xc3, + 0x6e, 0x7c, 0x58, 0x6a, 0xb2, 0x67, 0xec, 0x7b, 0x32, 0x99, 0x15, 0x22, 0xc9, 0x0a, 0x53, 0xf4, + 0xa6, 0x2f, 0xea, 0x71, 0xca, 0x20, 0x91, 0xfe, 0xd2, 0x46, 0xbb, 0x75, 0x5d, 0xbb, 0x84, 0x13, + 0xb4, 0xad, 0xec, 0x56, 0xa0, 0x6a, 0xef, 0xe8, 0x4e, 0xb4, 0xf9, 0xc2, 0xa2, 0xb5, 0xe5, 0xc5, + 0x6f, 0x9d, 0x6b, 0xd2, 0x2a, 0x35, 0xa9, 0xb3, 0x2b, 0x4d, 0xf6, 0x6c, 0x67, 0x07, 0x50, 0x56, + 0xbb, 0xf0, 0x4f, 0x01, 0xea, 0x8d, 0x73, 0x31, 0x11, 0x69, 0x31, 0xe3, 0x73, 0x15, 0xa2, 0x41, + 0x30, 0xec, 0x1d, 0x0d, 0x5f, 0xd4, 0xe8, 0xcb, 0x84, 0x4f, 0xc5, 0xa7, 0x3e, 0x3e, 0xfe, 0xf8, + 0x5c, 0x93, 0xa0, 0xd4, 0xe4, 0x66, 0xa3, 0xc8, 0xda, 0xcc, 0x6f, 0xd8, 0xce, 0x1b, 0xdd, 0x94, + 0x35, 0x7b, 0xe3, 0x9f, 0x03, 0xd4, 0xcb, 0xfc, 0x4a, 0xc3, 0x1e, 0x9c, 0xe5, 0xee, 0x0b, 0x87, + 0xbe, 0x72, 0x09, 0xfe, 0x34, 0x8d, 0x32, 0x9b, 0x4e, 0xb3, 0xd1, 0x4d, 0x59, 0xb3, 0x3b, 0x2d, + 0x03, 0xb4, 0xff, 0xfc, 0xb8, 0x86, 0x97, 0x4f, 0xa4, 0x2a, 0x9a, 0xbc, 0x34, 0xb6, 0xe7, 0xa5, + 0xb1, 0x28, 0x03, 0xd0, 0xf0, 0x52, 0x24, 0x7c, 0x36, 0x6f, 0xf2, 0x12, 0x00, 0xcf, 0x4b, 0x30, + 0x29, 0xb3, 0x30, 0xfe, 0x10, 0xed, 0x2c, 0x94, 0xc8, 0x81, 0xf9, 0x6d, 0xc8, 0x01, 0x5a, 0xd6, + 0x98, 0xa7, 0x65, 0x8d, 0x50, 0x76, 0xe9, 0x34, 0xc9, 0x19, 0x57, 0xea, 0x7b, 0x99, 0x4f, 0xc2, + 0x2d, 0x9f, 0x5c, 0x63, 0x3e, 0xb9, 0x46, 0x28, 0xbb, 0x74, 0xd2, 0x3f, 0x3a, 0x68, 0xdb, 0xed, + 0xf3, 0x3f, 0xbf, 0xbd, 0x99, 0x59, 0x52, 0x73, 0x46, 0x00, 0xfc, 0x8c, 0x60, 0x52, 0x66, 0x61, + 0xfc, 0x3e, 0xda, 0x1e, 0xcb, 0x24, 0xe1, 0xe9, 0x24, 0x6c, 0xc3, 0x53, 0x79, 0xd3, 0x30, 0xd5, + 0x41, 0x9e, 0xa9, 0x0e, 0xa0, 0xac, 0x76, 0x99, 0x63, 0xf1, 0x7c, 0xaa, 0xc2, 0x2d, 0xc8, 0x82, + 0x63, 0x19, 0xdb, 0x1f, 0xcb, 0x58, 0x94, 0x01, 0x88, 0x0f, 0x51, 0x5b, 0xa4, 0xcb, 0xf0, 0x06, + 0xc4, 0xde, 0x76, 0xac, 0x30, 0x50, 0xa5, 0x09, 0x72, 0xab, 0x4f, 0x97, 0x94, 0x19, 0x08, 0xcf, + 0x8d, 0x1c, 0x38, 0x45, 0x0a, 0x3b, 0x40, 0xba, 0x77, 0x1c, 0xe9, 0x8c, 0x80, 0x45, 0x5e, 0xae, + 0x9c, 0x80, 0x45, 0xac, 0x46, 0xe2, 0x3b, 0xee, 0xad, 0xf9, 0x0a, 0x95, 0x26, 0xfb, 0xf5, 0x3b, + 0x77, 0x10, 0x65, 0xde, 0x6d, 0x36, 0x36, 0x06, 0xb5, 0xda, 0x1e, 0x04, 0xc3, 0x5d, 0xbb, 0xb1, + 0xf1, 0xba, 0x5a, 0x8d, 0x9d, 0x5a, 0xc1, 0x2f, 0xce, 0x50, 0xc7, 0x6a, 0x6b, 0xb8, 0x73, 0x8d, + 0x0a, 0xd8, 0x0b, 0xfc, 0x1c, 0x82, 0xe3, 0xfb, 0xee, 0x64, 0x2e, 0xb9, 0xd2, 0x64, 0xd7, 0x0d, + 0x0e, 0x36, 0xfd, 0xed, 0x4f, 0xb2, 0xb7, 0x96, 0xa1, 0x98, 0x0b, 0xc5, 0x39, 0xea, 0x64, 0x20, + 0x25, 0x61, 0x17, 0xb6, 0x71, 0x5d, 0x47, 0xa7, 0x3b, 0xc7, 0x6e, 0xcf, 0xfb, 0x36, 0x79, 0xed, + 0xe1, 0xdd, 0xaa, 0xb9, 0xb7, 0xee, 0xa1, 0xcc, 0x75, 0xc2, 0x8b, 0xff, 0xa7, 0x43, 0xef, 0xba, + 0xde, 0xcd, 0x22, 0x95, 0x26, 0xf8, 0x8a, 0xfa, 0x3c, 0xa7, 0x39, 0x1c, 0xa1, 0x7c, 0x92, 0xf0, + 0xc7, 0xd3, 0x5c, 0x2e, 0x32, 0x50, 0x9c, 0x6e, 0x1c, 0xaf, 0x34, 0xe9, 0xb2, 0xcf, 0xbe, 0x7a, + 0xf0, 0x85, 0x01, 0x4b, 0x4d, 0x5e, 0x35, 0x21, 0x60, 0xac, 0xcd, 0x74, 0xe0, 0xae, 0xf9, 0xaa, + 0xd3, 0x5c, 0x78, 0x8d, 0xc6, 0x0f, 0x9e, 0xfd, 0xdd, 0x6f, 0xfd, 0xb8, 0xea, 0x07, 0xe7, 0xab, + 0x7e, 0xf0, 0x74, 0xd5, 0x0f, 0xfe, 0x5a, 0xf5, 0x83, 0x5f, 0x2f, 0xfa, 0xad, 0xa7, 0x17, 0xfd, + 0xd6, 0xb3, 0x8b, 0x7e, 0xeb, 0x5b, 0x92, 0x9d, 0x4e, 0x23, 0x7e, 0x5a, 0x44, 0x13, 0xb1, 0x1c, + 0x4d, 0xe5, 0x95, 0x4f, 0xec, 0x49, 0x07, 0xbe, 0x93, 0xc7, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, + 0x8a, 0xc1, 0xb3, 0x4f, 0xd7, 0x07, 0x00, 0x00, } func (m *StorageParams) Marshal() (dAtA []byte, err error) { diff --git a/go/sdl/sdl-input.schema.yaml b/go/sdl/sdl-input.schema.yaml index 2efe3c91..d0c9a819 100644 --- a/go/sdl/sdl-input.schema.yaml +++ b/go/sdl/sdl-input.schema.yaml @@ -268,6 +268,20 @@ properties: type: object - type: 'null' type: object + rdma: + description: | + Opt this resource into RDMA. When true, the bid + engine matches against providers advertising + capabilities/rdma and the workload builder + requests one RDMA HCA per GPU unit (1:1). + type: boolean + rdma_group: + description: | + Peer-group label for multi-service NCCL groups. + All services sharing the same value form one + anti-affinity group: the provider schedules them + on distinct nodes. Implies rdma: true. + type: string type: object units: oneOf: diff --git a/go/sdl/v2.go b/go/sdl/v2.go index fcf952f4..2b269c3c 100644 --- a/go/sdl/v2.go +++ b/go/sdl/v2.go @@ -533,7 +533,7 @@ func (sdl *v2) validate() error { } } - if err := sdl.validateRDMA(); err != nil { + if err := validateRDMA(sdl.Profiles, sdl.Deployments); err != nil { return err } @@ -556,13 +556,26 @@ func (sdl *v2) validate() error { // workload always reaches an RDMA-capable provider; rule 2 keeps peer-group // labels meaningful; rule 3 keeps the per-group anti-affinity rule // unambiguous. -func (sdl *v2) validateRDMA() error { +// +// Free function (not a method on v2) so v2_1's validate() can call it +// against the same profile + deployment shape — v2.1 inherits the full +// RDMA SDL grammar from v2 and must enforce the identical rules. +func validateRDMA(profiles v2profiles, deployments v2Deployments) error { // Per-profile rule 2: rdma_group ⇒ rdma=true. - for profileName, compute := range sdl.Profiles.Compute { + // + // The gpu.Units > 0 guard is defense-in-depth: v2ResourceGPU.UnmarshalYAML + // already rejects rdma / rdma_group with gpu.units == 0 at parse time, + // but if that parser path is ever bypassed we'd otherwise classify a + // zero-GPU profile as RDMA-enabled here and propagate RDMAGroup into + // downstream manifest builders. + for profileName, compute := range profiles.Compute { if compute.Resources == nil || compute.Resources.GPU == nil { continue } gpu := compute.Resources.GPU + if gpu.Units == 0 { + continue + } if gpu.RDMAGroup != "" && !gpuAttributesHaveRDMA(gpu.Attributes) { return fmt.Errorf( "%w: compute profile %q sets gpu.attributes.rdma_group=%q but does not set gpu.attributes.rdma: true", @@ -592,9 +605,9 @@ func (sdl *v2) validateRDMA() error { } usagesByPlacement := map[string]*placementUsage{} - for svcName, depl := range sdl.Deployments { + for svcName, depl := range deployments { for placementName, svcdepl := range depl { - compute, ok := sdl.Profiles.Compute[svcdepl.Profile] + compute, ok := profiles.Compute[svcdepl.Profile] if !ok { continue // covered by earlier validate() loop } @@ -605,7 +618,11 @@ func (sdl *v2) validateRDMA() error { usage := profUsage{ profileName: svcdepl.Profile, } - if gpu != nil { + // Same defense-in-depth as the rule-2 loop above: an + // rdma attribute or rdma_group on a zero-GPU profile would + // be parser-rejected upstream, but treat it as "not RDMA" + // here just in case the parser is bypassed. + if gpu != nil && gpu.Units > 0 { usage.hasRDMA = gpuAttributesHaveRDMA(gpu.Attributes) usage.group = gpu.RDMAGroup } @@ -620,7 +637,7 @@ func (sdl *v2) validateRDMA() error { // Rule 1: per-placement, if this profile has rdma=true, the // placement's requirements must include capabilities/rdma=true. if usage.hasRDMA { - infra, ok := sdl.Profiles.Placement[placementName] + infra, ok := profiles.Placement[placementName] if !ok { continue // covered by earlier validate() loop } diff --git a/go/sdl/v2_1.go b/go/sdl/v2_1.go index 88a1224b..a0548a98 100644 --- a/go/sdl/v2_1.go +++ b/go/sdl/v2_1.go @@ -341,6 +341,14 @@ func (sdl *v2_1) validate() error { } } + // v2.1 inherits the full RDMA SDL grammar from v2 (gpu.attributes.rdma + // and gpu.attributes.rdma_group propagate to the manifest), so the + // cross-field validation rules must also apply. Without this, a v2.1 + // SDL could bypass the placement + grouping invariants v2 enforces. + if err := validateRDMA(sdl.Profiles, sdl.Deployments); err != nil { + return err + } + return nil } diff --git a/proto/provider/akash/manifest/v2beta3/service.proto b/proto/provider/akash/manifest/v2beta3/service.proto index f8fc2f7c..5ea6847c 100644 --- a/proto/provider/akash/manifest/v2beta3/service.proto +++ b/proto/provider/akash/manifest/v2beta3/service.proto @@ -131,13 +131,15 @@ message Service { // pod anti-affinity within each group when scheduling the workload. // Empty when the service is not part of any RDMA peer group. // - // JSON / YAML tag is camelCase (no `omitempty`) to match the existing - // convention on this message (cf. `read_only` -> `"readOnly"`) so that - // the JSON serialization stays in lock-step with the TypeScript SDK, - // which always emits the field regardless of value. + // JSON / YAML tags carry `omitempty`: the on-chain manifest `version` + // is a SHA hash of the JSON-serialized off-chain manifest, so any field + // that always serializes (even at zero value) would shift the hash for + // every pre-RDMA SDL and break send-manifest validation on existing + // leases. With omitempty, non-RDMA services serialize identically to + // their pre-PR shape; only services that declare a group emit the key. string rdma_group = 11 [ (gogoproto.customname) = "RDMAGroup", - (gogoproto.jsontag) = "rdmaGroup", - (gogoproto.moretags) = "yaml:\"rdmaGroup\"" + (gogoproto.jsontag) = "rdmaGroup,omitempty", + (gogoproto.moretags) = "yaml:\"rdmaGroup,omitempty\"" ]; } diff --git a/testdata/sdl/output-fixtures/v2.0/gpu-basic/manifest.json b/testdata/sdl/output-fixtures/v2.0/gpu-basic/manifest.json index cb5aca5a..404ce357 100644 --- a/testdata/sdl/output-fixtures/v2.0/gpu-basic/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/gpu-basic/manifest.json @@ -69,8 +69,7 @@ "endpointSequenceNumber": 0 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/http-options/manifest.json b/testdata/sdl/output-fixtures/v2.0/http-options/manifest.json index fe490d42..5a1cd4d2 100644 --- a/testdata/sdl/output-fixtures/v2.0/http-options/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/http-options/manifest.json @@ -66,8 +66,7 @@ "endpointSequenceNumber": 0 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/ip-endpoint/manifest.json b/testdata/sdl/output-fixtures/v2.0/ip-endpoint/manifest.json index 3460e872..704eb653 100644 --- a/testdata/sdl/output-fixtures/v2.0/ip-endpoint/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/ip-endpoint/manifest.json @@ -96,8 +96,7 @@ "endpointSequenceNumber": 2 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/multiple-services/manifest.json b/testdata/sdl/output-fixtures/v2.0/multiple-services/manifest.json index 85e9b92e..61c3bb57 100644 --- a/testdata/sdl/output-fixtures/v2.0/multiple-services/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/multiple-services/manifest.json @@ -62,8 +62,7 @@ "endpointSequenceNumber": 0 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null }, { "name": "db", @@ -124,8 +123,7 @@ "endpointSequenceNumber": 0 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null }, { "name": "web", @@ -188,8 +186,7 @@ "endpointSequenceNumber": 0 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/persistent-storage/manifest.json b/testdata/sdl/output-fixtures/v2.0/persistent-storage/manifest.json index 412451ab..7da4751d 100644 --- a/testdata/sdl/output-fixtures/v2.0/persistent-storage/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/persistent-storage/manifest.json @@ -85,8 +85,7 @@ } ] }, - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/placement/manifest.json b/testdata/sdl/output-fixtures/v2.0/placement/manifest.json index 140a1484..8bcb157c 100644 --- a/testdata/sdl/output-fixtures/v2.0/placement/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/placement/manifest.json @@ -63,8 +63,7 @@ "endpointSequenceNumber": 0 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/port-ranges/manifest.json b/testdata/sdl/output-fixtures/v2.0/port-ranges/manifest.json index 138b79a1..fc24cb10 100644 --- a/testdata/sdl/output-fixtures/v2.0/port-ranges/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/port-ranges/manifest.json @@ -113,8 +113,7 @@ "endpointSequenceNumber": 0 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/pricing/manifest.json b/testdata/sdl/output-fixtures/v2.0/pricing/manifest.json index 3df2e1c3..4cab8f7c 100644 --- a/testdata/sdl/output-fixtures/v2.0/pricing/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/pricing/manifest.json @@ -63,8 +63,7 @@ "endpointSequenceNumber": 0 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] }, @@ -132,8 +131,7 @@ "endpointSequenceNumber": 0 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/simple/manifest.json b/testdata/sdl/output-fixtures/v2.0/simple/manifest.json index d4ae7056..8c88f15d 100644 --- a/testdata/sdl/output-fixtures/v2.0/simple/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/simple/manifest.json @@ -90,8 +90,7 @@ "endpointSequenceNumber": 0 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] } diff --git a/testdata/sdl/output-fixtures/v2.0/storage-classes/manifest.json b/testdata/sdl/output-fixtures/v2.0/storage-classes/manifest.json index c33954ed..d4ecd957 100644 --- a/testdata/sdl/output-fixtures/v2.0/storage-classes/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/storage-classes/manifest.json @@ -114,8 +114,7 @@ } ] }, - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] } diff --git a/testdata/sdl/output-fixtures/v2.1/credentials/manifest.json b/testdata/sdl/output-fixtures/v2.1/credentials/manifest.json index ca0bd69b..12f494df 100644 --- a/testdata/sdl/output-fixtures/v2.1/credentials/manifest.json +++ b/testdata/sdl/output-fixtures/v2.1/credentials/manifest.json @@ -68,8 +68,7 @@ "email": "user@example.com", "username": "myuser", "password": "mypassword" - }, - "rdmaGroup": "" + } } ] } diff --git a/testdata/sdl/output-fixtures/v2.1/ip-endpoint/manifest.json b/testdata/sdl/output-fixtures/v2.1/ip-endpoint/manifest.json index ed401f0c..23efdc8e 100644 --- a/testdata/sdl/output-fixtures/v2.1/ip-endpoint/manifest.json +++ b/testdata/sdl/output-fixtures/v2.1/ip-endpoint/manifest.json @@ -68,8 +68,7 @@ "endpointSequenceNumber": 3 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null }, { "name": "web", @@ -165,8 +164,7 @@ "endpointSequenceNumber": 2 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] } diff --git a/testdata/sdl/output-fixtures/v2.1/shared-ip/manifest.json b/testdata/sdl/output-fixtures/v2.1/shared-ip/manifest.json index f2281b0d..6c371237 100644 --- a/testdata/sdl/output-fixtures/v2.1/shared-ip/manifest.json +++ b/testdata/sdl/output-fixtures/v2.1/shared-ip/manifest.json @@ -70,8 +70,7 @@ "endpointSequenceNumber": 2 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null }, { "name": "web", @@ -140,8 +139,7 @@ "endpointSequenceNumber": 2 } ], - "credentials": null, - "rdmaGroup": "" + "credentials": null } ] } diff --git a/ts/src/generated/protos/akash/manifest/v2beta3/service.ts b/ts/src/generated/protos/akash/manifest/v2beta3/service.ts index 8cc9eaf4..ee2ce5a4 100644 --- a/ts/src/generated/protos/akash/manifest/v2beta3/service.ts +++ b/ts/src/generated/protos/akash/manifest/v2beta3/service.ts @@ -64,10 +64,12 @@ export interface Service { * pod anti-affinity within each group when scheduling the workload. * Empty when the service is not part of any RDMA peer group. * - * JSON / YAML tag is camelCase (no `omitempty`) to match the existing - * convention on this message (cf. `read_only` -> `"readOnly"`) so that - * the JSON serialization stays in lock-step with the TypeScript SDK, - * which always emits the field regardless of value. + * JSON / YAML tags carry `omitempty`: the on-chain manifest `version` + * is a SHA hash of the JSON-serialized off-chain manifest, so any field + * that always serializes (even at zero value) would shift the hash for + * every pre-RDMA SDL and break send-manifest validation on existing + * leases. With omitempty, non-RDMA services serialize identically to + * their pre-PR shape; only services that declare a group emit the key. */ rdmaGroup: string; } From 4bc16d8067903bfabe381a92b936d135354c3ec9 Mon Sep 17 00:00:00 2001 From: zblocker64 Date: Mon, 8 Jun 2026 13:20:11 -0500 Subject: [PATCH 03/10] fix(ts): omit empty rdmaGroup in manifest JSON serializer CI sdl-parity job failed on the prior commit because the Go fixtures (with omitempty) drop rdmaGroup for non-RDMA services, while TS's manifestReplacer kept emitting "rdmaGroup":"". Mismatch on every v2.0 fixture. manifestReplacer already had OMITTED_MANIFEST_KEYS for empty arrays / zero numbers. Adding a parallel OMITTED_WHEN_EMPTY_STRING_KEYS set so fields that use Go's `omitempty` semantics for string values can be declared the same way on the TS side. rdmaGroup is the only entry for now; future "omitempty string" fields just add their key here. Updated the generateManifestVersion snapshot to match the corrected serialization (no more "rdmaGroup":"" leaking into the hash input). --- .../generateManifestVersion.spec.ts.snap | 178 +++++++++--------- .../sdl/manifest/generateManifestVersion.ts | 11 ++ 2 files changed, 100 insertions(+), 89 deletions(-) diff --git a/ts/src/sdl/manifest/__snapshots__/generateManifestVersion.spec.ts.snap b/ts/src/sdl/manifest/__snapshots__/generateManifestVersion.spec.ts.snap index a4ca3df7..b7063825 100644 --- a/ts/src/sdl/manifest/__snapshots__/generateManifestVersion.spec.ts.snap +++ b/ts/src/sdl/manifest/__snapshots__/generateManifestVersion.spec.ts.snap @@ -1,116 +1,116 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`generateManifestVersion > snapshot tests > generates consistent JSON for Basic SDL > Basic SDL manifest JSON 1`] = `"[{"name":"akash","services":[{"args":null,"command":null,"count":1,"credentials":null,"env":null,"expose":[{"endpointSequenceNumber":0,"externalPort":80,"global":true,"hosts":null,"httpOptions":{"maxBodySize":1048576,"nextCases":["error","timeout"],"nextTimeout":0,"nextTries":3,"readTimeout":60000,"sendTimeout":60000},"ip":"","port":80,"proto":"TCP","service":""}],"image":"bsord/tetris","name":"tetris","rdmaGroup":"","resources":{"cpu":{"units":{"val":"1000"}},"endpoints":[{"sequence_number":0}],"gpu":{"units":{"val":"0"}},"id":1,"memory":{"size":{"val":"536870912"}},"storage":[{"name":"default","size":{"val":"536870912"}}]}}]}]"`; +exports[`generateManifestVersion > snapshot tests > generates consistent JSON for Basic SDL > Basic SDL manifest JSON 1`] = `"[{"name":"akash","services":[{"args":null,"command":null,"count":1,"credentials":null,"env":null,"expose":[{"endpointSequenceNumber":0,"externalPort":80,"global":true,"hosts":null,"httpOptions":{"maxBodySize":1048576,"nextCases":["error","timeout"],"nextTimeout":0,"nextTries":3,"readTimeout":60000,"sendTimeout":60000},"ip":"","port":80,"proto":"TCP","service":""}],"image":"bsord/tetris","name":"tetris","resources":{"cpu":{"units":{"val":"1000"}},"endpoints":[{"sequence_number":0}],"gpu":{"units":{"val":"0"}},"id":1,"memory":{"size":{"val":"536870912"}},"storage":[{"name":"default","size":{"val":"536870912"}}]}}]}]"`; -exports[`generateManifestVersion > snapshot tests > generates consistent JSON for Empty Profile SDL > Empty Profile manifest JSON 1`] = `"[{"name":"akash","services":[{"args":null,"command":null,"count":1,"credentials":null,"env":null,"expose":[{"endpointSequenceNumber":0,"externalPort":80,"global":true,"hosts":null,"httpOptions":{"maxBodySize":1048576,"nextCases":["error","timeout"],"nextTimeout":0,"nextTries":3,"readTimeout":60000,"sendTimeout":60000},"ip":"","port":80,"proto":"TCP","service":""}],"image":"bsord/tetris","name":"tetris-main","rdmaGroup":"","resources":{"cpu":{"units":{"val":"1000"}},"endpoints":[{"sequence_number":0}],"gpu":{"units":{"val":"0"}},"id":1,"memory":{"size":{"val":"536870912"}},"storage":[{"name":"default","size":{"val":"536870912"}}]}}]}]"`; +exports[`generateManifestVersion > snapshot tests > generates consistent JSON for Empty Profile SDL > Empty Profile manifest JSON 1`] = `"[{"name":"akash","services":[{"args":null,"command":null,"count":1,"credentials":null,"env":null,"expose":[{"endpointSequenceNumber":0,"externalPort":80,"global":true,"hosts":null,"httpOptions":{"maxBodySize":1048576,"nextCases":["error","timeout"],"nextTimeout":0,"nextTries":3,"readTimeout":60000,"sendTimeout":60000},"ip":"","port":80,"proto":"TCP","service":""}],"image":"bsord/tetris","name":"tetris-main","resources":{"cpu":{"units":{"val":"1000"}},"endpoints":[{"sequence_number":0}],"gpu":{"units":{"val":"0"}},"id":1,"memory":{"size":{"val":"536870912"}},"storage":[{"name":"default","size":{"val":"536870912"}}]}}]}]"`; exports[`generateManifestVersion > snapshot tests > generates consistent version for Basic SDL > Basic SDL manifest version 1`] = ` Uint8Array [ - 120, - 75, - 236, + 238, + 82, + 227, + 41, + 170, + 69, + 176, 99, - 29, - 192, - 117, - 115, - 197, - 35, - 159, + 140, + 39, + 6, + 93, + 82, + 235, + 13, + 201, + 47, + 103, + 4, + 25, 75, - 219, - 125, - 210, - 244, - 33, - 187, - 63, - 23, + 198, + 60, + 100, 53, - 159, - 129, - 113, - 92, - 160, - 189, - 212, - 3, - 136, - 10, - 44, + 197, + 111, + 181, + 73, + 221, + 237, + 125, ] `; exports[`generateManifestVersion > snapshot tests > generates consistent version for Empty Profile SDL > Empty Profile manifest version 1`] = ` Uint8Array [ - 182, - 30, - 47, - 136, - 39, - 231, - 190, - 117, - 204, - 69, - 190, - 37, - 133, - 11, - 243, - 228, + 131, + 143, + 9, + 175, + 180, + 7, 58, - 130, - 39, - 86, - 188, - 142, - 19, + 60, + 168, 235, - 98, - 19, - 183, + 37, + 255, + 95, + 79, 2, - 149, - 70, - 68, - 83, + 251, + 157, + 44, + 222, + 105, + 133, + 190, + 99, + 107, + 4, + 237, + 225, + 116, + 1, + 21, + 69, + 131, ] `; exports[`generateManifestVersion > snapshot tests > generates consistent version for Minesweeper SDL > Minesweeper manifest version 1`] = ` Uint8Array [ - 207, - 156, - 163, - 238, - 144, - 250, - 194, - 217, - 218, - 43, - 194, + 118, + 133, + 114, 88, - 175, - 228, - 59, - 142, - 157, - 92, - 143, - 164, - 173, - 193, - 12, - 211, - 243, - 63, - 135, - 222, - 169, - 87, + 205, + 146, + 91, 146, + 241, + 47, + 147, + 235, + 200, + 244, + 136, + 198, + 55, + 161, + 119, + 8, + 118, + 79, + 121, + 150, + 213, + 74, + 208, 44, + 37, + 100, + 241, + 116, ] `; diff --git a/ts/src/sdl/manifest/generateManifestVersion.ts b/ts/src/sdl/manifest/generateManifestVersion.ts index a63fb6ab..0cd4c605 100644 --- a/ts/src/sdl/manifest/generateManifestVersion.ts +++ b/ts/src/sdl/manifest/generateManifestVersion.ts @@ -7,6 +7,13 @@ const encoder = new TextEncoder(); const NULLABLE_MANIFEST_KEYS = new Set(["command", "args", "env", "hosts"]); const OMITTED_MANIFEST_KEYS = new Set(["kind", "attributes"]); +// Manifest fields that on the Go side use `omitempty` for string values — +// the field must NOT appear in the JSON when its value is the empty +// string, otherwise the manifest version hash (a SHA over this exact +// serialization) diverges from the Go side and breaks send-manifest +// validation on existing leases. +const OMITTED_WHEN_EMPTY_STRING_KEYS = new Set(["rdmaGroup"]); + export async function generateManifestVersion(manifest: Manifest): Promise { const jsonStr = manifestToSortedJSON(manifest); const sortedBytes = encoder.encode(jsonStr); @@ -41,6 +48,10 @@ function manifestReplacer(this: unknown, key: string | number, value: unknown): return undefined; } + if (OMITTED_WHEN_EMPTY_STRING_KEYS.has(key) && value === "") { + return undefined; + } + return value; } From c1bbce48146e9883772d9393b342944836283658 Mon Sep 17 00:00:00 2001 From: zblocker64 Date: Mon, 8 Jun 2026 14:10:27 -0500 Subject: [PATCH 04/10] feat(sdl): carry rdma_group into on-chain Resources.GPU.Attributes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prep for AKT-443 (provider bid-engine group-aware Adjust). The provider needs to enforce per-rdma_group node separation at fit time — today the workload builder's hostname pod anti-affinity is the only gate, which fires after the bid has been accepted. The chain-SDK previously stripped rdma_group from the GPU attribute slice and surfaced it only on the off-chain Service.RDMAGroup field, so the bid engine had no signal. Change: emit `rdma_group=` as a regular on-chain GPU attribute alongside `rdma=true`, while still lifting the value into v2ResourceGPU.RDMAGroup → Service.RDMAGroup for the workload builder. Both consumers see the same value via their respective paths. - go/sdl/gpu.go: drop the gpuAttributeRDMAGroupSentinel layer. Emit rdma_group directly (the key matches the attribute key regex; no underscore prefix needed). Lift-but-keep instead of lift-and-strip. - go/sdl/rdma_gpu_test.go: update assertions — the on-chain slice now CONTAINS rdma_group when set, AND v2ResourceGPU.RDMAGroup holds the same value. New name reflects the end-to-end flow. - ts/src/sdl/manifest/manifestUtils.ts: transformGpuAttributes now emits both rdma and rdma_group keys, and sorts the result to match Go's sort.Sort(res) byte ordering. - ts/src/sdl/manifest/generateManifest.ts: pass rdmaGroup from compute.resources.gpu.attributes.rdma_group into Service.fromPartial so it surfaces on the off-chain Service.rdmaGroup field. - ts/src/sdl/validateSDL/validateSDLInput.ts: regenerated from the updated input schema (already had rdma + rdma_group properties from the prior commit). - testdata/sdl/input/v2.0/gpu-rdma-group/: new fixture exercising the end-to-end path. Each service uses its own profile to sidestep an orthogonal Go-vs-TS resource-ID-assignment parity gap. Rollout note: providers running pre-skip chain-sdk versions will reject orders carrying the new rdma_group attribute (ParseGPUAttributes returns "invalid GPU attribute"). The provider PR already lands the skip; any provider wanting to bid on RDMA orders must upgrade past it. --- go/sdl/gpu.go | 60 +- go/sdl/rdma_gpu_test.go | 33 +- .../sdl/input/v2.0/gpu-rdma-group/input.yaml | 92 + .../v2.0/gpu-rdma-group/group-specs.json | 125 ++ .../v2.0/gpu-rdma-group/manifest.json | 159 ++ ts/src/sdl/manifest/generateManifest.ts | 8 + ts/src/sdl/manifest/manifestUtils.ts | 50 +- ts/src/sdl/validateSDL/validateSDLInput.ts | 1668 +++++++++-------- 8 files changed, 1318 insertions(+), 877 deletions(-) create mode 100644 testdata/sdl/input/v2.0/gpu-rdma-group/input.yaml create mode 100644 testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/group-specs.json create mode 100644 testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/manifest.json diff --git a/go/sdl/gpu.go b/go/sdl/gpu.go index 246925c4..9dafef9f 100644 --- a/go/sdl/gpu.go +++ b/go/sdl/gpu.go @@ -44,24 +44,24 @@ type v2GPUAttributes types.Attributes // MatchResourcesRequirements path. const GPUAttributeRDMA = "rdma" -// gpuAttributeRDMAGroupSentinel is an internal-only key the SDL parser uses to -// transport the value of gpu.attributes.rdma_group between -// v2GPUAttributes.UnmarshalYAML and the parent v2ResourceGPU.UnmarshalYAML. -// It is stripped out of the GPU attribute slice before those attributes ever -// reach the on-chain Resources.GPU.attributes — rdma_group is a tenant -// scheduling directive carried in the off-chain manifest, not a hardware -// capability claim. -const gpuAttributeRDMAGroupSentinel = "__rdma_group__" +// GPUAttributeRDMAGroup is the on-chain GPU-attribute key emitted when an +// SDL compute profile declares gpu.attributes.rdma_group: . Carries +// the peer-group label all the way into the on-chain Resources.GPU.attributes +// so the provider's bid engine can enforce per-group node separation at fit +// time (it cannot otherwise — Service.RDMAGroup is off-chain only, and the +// bid engine consumes Resources, not the manifest). The value is also lifted +// into Service.RDMAGroup so the workload builder's pod anti-affinity rule +// continues to work the same way. +const GPUAttributeRDMAGroup = "rdma_group" type v2ResourceGPU struct { Units gpuQuantity `yaml:"units" json:"units"` Attributes v2GPUAttributes `yaml:"attributes,omitempty" json:"attributes,omitempty"` - // RDMAGroup carries the parsed gpu.attributes.rdma_group value. The SDL - // parser strips this key from on-chain GPU attributes (see - // gpuAttributeRDMAGroupSentinel) and lifts it here so the higher-level - // manifest builder can route it to the per-service Service.RDMAGroup - // off-chain manifest field. + // RDMAGroup carries the parsed gpu.attributes.rdma_group value. The + // same value is also present in Attributes (as GPUAttributeRDMAGroup); + // this field exists so the higher-level manifest builder can route it + // to Service.RDMAGroup without re-walking the slice. RDMAGroup string `yaml:"-" json:"-"` } @@ -83,26 +83,23 @@ func (sdl *v2ResourceGPU) UnmarshalYAML(node *yaml.Node) error { } } - // Extract the rdma_group sentinel into the dedicated field, then strip - // it out of the on-chain attribute slice. After this step Attributes - // contains only attributes that are safe to flow to Resources.GPU.attributes. - // We must do this *before* Validate() runs against the slice, because the - // sentinel key (with leading underscores) does not match the on-chain - // attribute key regex. + // Lift the rdma_group attribute value into the dedicated RDMAGroup + // field for downstream manifest builders, but KEEP it in the + // attributes slice — the provider's bid engine consumes the on-chain + // Resources.GPU.Attributes and needs rdma_group present there to + // enforce per-group node separation during reservation. (Was a + // sentinel-stripped off-chain-only field; now flows end-to-end.) if len(res.Attributes) > 0 { - filtered := make(types.Attributes, 0, len(res.Attributes)) for _, a := range res.Attributes { - if a.Key == gpuAttributeRDMAGroupSentinel { + if a.Key == GPUAttributeRDMAGroup { res.RDMAGroup = a.Value - continue + break } - filtered = append(filtered, a) } - res.Attributes = v2GPUAttributes(filtered) - // Validate now that the on-chain-bound slice is clean of any sentinel. - // (v2GPUAttributes.UnmarshalYAML intentionally skips Validate so this - // hook can run post-strip.) + // v2GPUAttributes.UnmarshalYAML defers Validate to here so the + // final attribute slice (including the rdma_group key, which now + // matches the on-chain attribute key regex) gets one validate pass. final := types.Attributes(res.Attributes) if err := final.Validate(); err != nil { return fmt.Errorf("sdl: invalid GPU attributes: %w", err) @@ -195,11 +192,14 @@ func (sdl *v2GPUAttributes) UnmarshalYAML(node *yaml.Node) error { }) } - // Carry rdma_group as a sentinel; the parent v2ResourceGPU.UnmarshalYAML - // peels it off before these attributes ever become on-chain Resources. + // Emit rdma_group directly as an on-chain GPU attribute. The provider's + // reservation Adjust step reads this to enforce per-group node + // separation; the parent v2ResourceGPU.UnmarshalYAML also lifts the + // value into v2ResourceGPU.RDMAGroup so the manifest builder can + // route it to Service.RDMAGroup for the off-chain workload builder. if rdmaGroup != "" { res = append(res, types.Attribute{ - Key: gpuAttributeRDMAGroupSentinel, + Key: GPUAttributeRDMAGroup, Value: rdmaGroup, }) } diff --git a/go/sdl/rdma_gpu_test.go b/go/sdl/rdma_gpu_test.go index 25169d22..8d585292 100644 --- a/go/sdl/rdma_gpu_test.go +++ b/go/sdl/rdma_gpu_test.go @@ -60,8 +60,6 @@ attributes: if a.Key == GPUAttributeRDMA && a.Value == "true" { hasRDMA = true } - require.NotEqual(t, gpuAttributeRDMAGroupSentinel, a.Key, - "sentinel must not leak into final attribute slice") } require.Equal(t, tc.expectRDMAAttr, hasRDMA, "unexpected presence of on-chain rdma=true attribute") @@ -70,10 +68,13 @@ attributes: } } -// CS-3: rdma_group lives under gpu.attributes in SDL, but the parser strips -// it before the GPU attributes reach the chain side and surfaces it on -// v2ResourceGPU.RDMAGroup for the manifest builder to consume. -func TestV2ResourceGPU_RDMAGroupRoutedOffChain(t *testing.T) { +// AKT-443: rdma_group flows end-to-end. It appears in the on-chain GPU +// attribute slice (so the provider's bid engine can enforce per-group +// node separation during reservation) AND is lifted onto +// v2ResourceGPU.RDMAGroup for the manifest builder to route into +// Service.RDMAGroup (so the workload builder can label pods for +// anti-affinity). Both consumers see the same value. +func TestV2ResourceGPU_RDMAGroupOnChainAndOffChain(t *testing.T) { yamlSrc := `units: 8 attributes: vendor: @@ -87,25 +88,23 @@ attributes: var gpu v2ResourceGPU require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) - // rdma_group surfaces on the dedicated field for the manifest builder. + // Off-chain: dedicated field for the manifest builder. require.Equal(t, "pair1", gpu.RDMAGroup, "v2ResourceGPU.RDMAGroup must hold the rdma_group value") - // On-chain attributes contain rdma=true but NOT rdma_group; the sentinel - // must have been peeled off before the attribute slice was finalized. + // On-chain: present in the GPU attribute slice alongside rdma=true. keys := map[string]string{} for _, a := range gpu.Attributes { keys[a.Key] = a.Value } require.Equal(t, "true", keys[GPUAttributeRDMA]) - require.NotContains(t, keys, "rdma_group", - "rdma_group must not appear in on-chain GPU attributes") - require.NotContains(t, keys, gpuAttributeRDMAGroupSentinel, - "sentinel must not leak into on-chain GPU attributes") + require.Equal(t, "pair1", keys[GPUAttributeRDMAGroup], + "rdma_group must appear in on-chain GPU attributes for bid-engine group tracking") } -// CS-3 (continued): omitting rdma_group leaves RDMAGroup empty and the -// on-chain attributes carry no sentinel residue. +// AKT-443 (continued): omitting rdma_group leaves both the field empty +// and the on-chain attribute absent — non-RDMA-group services produce +// the same byte-for-byte serialization they did before this feature. func TestV2ResourceGPU_RDMAGroupOmitted(t *testing.T) { yamlSrc := `units: 8 attributes: @@ -119,8 +118,8 @@ attributes: require.Empty(t, gpu.RDMAGroup) for _, a := range gpu.Attributes { - require.NotEqual(t, gpuAttributeRDMAGroupSentinel, a.Key) - require.NotEqual(t, "rdma_group", a.Key) + require.NotEqual(t, GPUAttributeRDMAGroup, a.Key, + "rdma_group must not appear when SDL omits it") } } diff --git a/testdata/sdl/input/v2.0/gpu-rdma-group/input.yaml b/testdata/sdl/input/v2.0/gpu-rdma-group/input.yaml new file mode 100644 index 00000000..3580ef5b --- /dev/null +++ b/testdata/sdl/input/v2.0/gpu-rdma-group/input.yaml @@ -0,0 +1,92 @@ +# yaml-language-server: $schema=../../../../go/sdl/sdl-input.schema.yaml +--- +# Multi-service RDMA peer group fixture. inference-head and inference-worker +# share the same rdma_group label ("pair0"), which: +# - emits an `rdma_group=pair0` attribute into each service's on-chain +# Resources.GPU.Attributes (consumed by the provider's bid-engine +# group-aware Adjust, AKT-443) +# - lifts to Service.RDMAGroup on the off-chain manifest (consumed by +# the provider's workload builder for pod anti-affinity) +# +# Each service has its own compute profile because the SDL→manifest +# resource-ID assignment treats per-profile groupings as one resource +# unit (this is a separate parity concern; see Go vs TS resource-ID logic +# in groupBuilder_v2.go and generateManifest.ts). Using distinct profiles +# keeps that orthogonal so this fixture isolates RDMA group behavior. +version: "2.0" +services: + inference-head: + image: tensorflow/tensorflow:latest-gpu + expose: + - port: 8080 + as: 80 + to: + - global: true + inference-worker: + image: tensorflow/tensorflow:latest-gpu + expose: + - port: 5000 + to: + - service: inference-head +profiles: + compute: + rdma-head: + resources: + cpu: + units: 1000m + memory: + size: 2Gi + storage: + size: 10Gi + gpu: + units: 1 + attributes: + rdma: true + rdma_group: pair0 + vendor: + nvidia: + - model: a100 + ram: 80Gi + interface: sxm + rdma-worker: + resources: + cpu: + units: 1000m + memory: + size: 2Gi + storage: + size: 10Gi + gpu: + units: 1 + attributes: + rdma: true + rdma_group: pair0 + vendor: + nvidia: + - model: a100 + ram: 80Gi + interface: sxm + placement: + rdma-cluster: + attributes: + capabilities/rdma: "true" + capabilities/rdma/fabric/infiniband: "true" + signedBy: + anyOf: + - akash1365yvmc4s7awdyj3n2sav7xfx76adc6dnmlx63 + pricing: + rdma-head: + denom: uakt + amount: 1000 + rdma-worker: + denom: uakt + amount: 1000 +deployment: + inference-head: + rdma-cluster: + profile: rdma-head + count: 1 + inference-worker: + rdma-cluster: + profile: rdma-worker + count: 1 diff --git a/testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/group-specs.json b/testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/group-specs.json new file mode 100644 index 00000000..12a193b0 --- /dev/null +++ b/testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/group-specs.json @@ -0,0 +1,125 @@ +[ + { + "name": "rdma-cluster", + "requirements": { + "signed_by": { + "all_of": null, + "any_of": [ + "akash1365yvmc4s7awdyj3n2sav7xfx76adc6dnmlx63" + ] + }, + "attributes": [ + { + "key": "capabilities/rdma", + "value": "true" + }, + { + "key": "capabilities/rdma/fabric/infiniband", + "value": "true" + } + ] + }, + "resources": [ + { + "resource": { + "id": 1, + "cpu": { + "units": { + "val": "1000" + } + }, + "memory": { + "size": { + "val": "2147483648" + } + }, + "storage": [ + { + "name": "default", + "size": { + "val": "10737418240" + } + } + ], + "gpu": { + "units": { + "val": "1" + }, + "attributes": [ + { + "key": "rdma", + "value": "true" + }, + { + "key": "rdma_group", + "value": "pair0" + }, + { + "key": "vendor/nvidia/model/a100/ram/80Gi/interface/sxm", + "value": "true" + } + ] + }, + "endpoints": [ + { + "sequence_number": 0 + } + ] + }, + "count": 1, + "price": { + "denom": "uakt", + "amount": "1000.000000000000000000" + } + }, + { + "resource": { + "id": 2, + "cpu": { + "units": { + "val": "1000" + } + }, + "memory": { + "size": { + "val": "2147483648" + } + }, + "storage": [ + { + "name": "default", + "size": { + "val": "10737418240" + } + } + ], + "gpu": { + "units": { + "val": "1" + }, + "attributes": [ + { + "key": "rdma", + "value": "true" + }, + { + "key": "rdma_group", + "value": "pair0" + }, + { + "key": "vendor/nvidia/model/a100/ram/80Gi/interface/sxm", + "value": "true" + } + ] + }, + "endpoints": [] + }, + "count": 1, + "price": { + "denom": "uakt", + "amount": "1000.000000000000000000" + } + } + ] + } +] \ No newline at end of file diff --git a/testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/manifest.json b/testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/manifest.json new file mode 100644 index 00000000..95f6e532 --- /dev/null +++ b/testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/manifest.json @@ -0,0 +1,159 @@ +[ + { + "name": "rdma-cluster", + "services": [ + { + "name": "inference-head", + "image": "tensorflow/tensorflow:latest-gpu", + "command": null, + "args": null, + "env": null, + "resources": { + "id": 1, + "cpu": { + "units": { + "val": "1000" + } + }, + "memory": { + "size": { + "val": "2147483648" + } + }, + "storage": [ + { + "name": "default", + "size": { + "val": "10737418240" + } + } + ], + "gpu": { + "units": { + "val": "1" + }, + "attributes": [ + { + "key": "rdma", + "value": "true" + }, + { + "key": "rdma_group", + "value": "pair0" + }, + { + "key": "vendor/nvidia/model/a100/ram/80Gi/interface/sxm", + "value": "true" + } + ] + }, + "endpoints": [ + { + "sequence_number": 0 + } + ] + }, + "count": 1, + "expose": [ + { + "port": 8080, + "externalPort": 80, + "proto": "TCP", + "service": "", + "global": true, + "hosts": null, + "httpOptions": { + "maxBodySize": 1048576, + "readTimeout": 60000, + "sendTimeout": 60000, + "nextTries": 3, + "nextTimeout": 0, + "nextCases": [ + "error", + "timeout" + ] + }, + "ip": "", + "endpointSequenceNumber": 0 + } + ], + "credentials": null, + "rdmaGroup": "pair0" + }, + { + "name": "inference-worker", + "image": "tensorflow/tensorflow:latest-gpu", + "command": null, + "args": null, + "env": null, + "resources": { + "id": 2, + "cpu": { + "units": { + "val": "1000" + } + }, + "memory": { + "size": { + "val": "2147483648" + } + }, + "storage": [ + { + "name": "default", + "size": { + "val": "10737418240" + } + } + ], + "gpu": { + "units": { + "val": "1" + }, + "attributes": [ + { + "key": "rdma", + "value": "true" + }, + { + "key": "rdma_group", + "value": "pair0" + }, + { + "key": "vendor/nvidia/model/a100/ram/80Gi/interface/sxm", + "value": "true" + } + ] + }, + "endpoints": [] + }, + "count": 1, + "expose": [ + { + "port": 5000, + "externalPort": 0, + "proto": "TCP", + "service": "inference-head", + "global": false, + "hosts": null, + "httpOptions": { + "maxBodySize": 1048576, + "readTimeout": 60000, + "sendTimeout": 60000, + "nextTries": 3, + "nextTimeout": 0, + "nextCases": [ + "error", + "timeout" + ] + }, + "ip": "", + "endpointSequenceNumber": 0 + } + ], + "credentials": null, + "rdmaGroup": "pair0" + } + ] + } +] \ No newline at end of file diff --git a/ts/src/sdl/manifest/generateManifest.ts b/ts/src/sdl/manifest/generateManifest.ts index 2f0d29b9..c8dec0a7 100644 --- a/ts/src/sdl/manifest/generateManifest.ts +++ b/ts/src/sdl/manifest/generateManifest.ts @@ -248,6 +248,13 @@ function buildManifestService( const params = buildParams(service); + // rdma_group lives under gpu.attributes in the SDL but propagates to the + // off-chain manifest's Service.rdmaGroup field so the provider's workload + // builder can label pods for per-group anti-affinity. The same value is + // also emitted into Resources.GPU.Attributes by transformGpuAttributes; + // both consumers (bid engine vs. workload builder) see it. + const rdmaGroup = compute.resources.gpu?.attributes?.rdma_group ?? ""; + return Service.fromPartial({ name, image: service.image, @@ -259,6 +266,7 @@ function buildManifestService( expose: buildManifestExpose(service, endpointSequenceNumbers), params, credentials, + rdmaGroup, }); } diff --git a/ts/src/sdl/manifest/manifestUtils.ts b/ts/src/sdl/manifest/manifestUtils.ts index ff5aa687..d82f07ad 100644 --- a/ts/src/sdl/manifest/manifestUtils.ts +++ b/ts/src/sdl/manifest/manifestUtils.ts @@ -54,24 +54,44 @@ export function isIngress(proto: string, global: boolean, externalPort: number, } export function transformGpuAttributes(attributes: SDLGpuAttributes): Attribute[] { + const result: Attribute[] = []; + const vendor = attributes.vendor; - if (!vendor) return []; + if (vendor) { + Object.keys(vendor) + .sort((a, b) => a.localeCompare(b)) + .forEach((vendorName) => { + const models = vendor[vendorName as keyof typeof vendor]; + if (!models) { + result.push({ key: `vendor/${vendorName}/model/*`, value: "true" }); + return; + } + for (const model of models) { + let key = `vendor/${vendorName}/model/${model.model}`; + if (model.ram) key += `/ram/${model.ram}`; + if (model.interface) key += `/interface/${model.interface}`; + result.push({ key, value: "true" }); + } + }); + } - return Object.keys(vendor) - .sort((a, b) => a.localeCompare(b)) - .flatMap((vendorName) => { - const models = vendor[vendorName as keyof typeof vendor]; - if (!models) { - return [{ key: `vendor/${vendorName}/model/*`, value: "true" }]; - } + // rdma + rdma_group flow into on-chain Resources.GPU.Attributes so the + // provider's bid engine can match capability and enforce per-group node + // separation. Keep parity with the Go SDL parser in go/sdl/gpu.go — same + // key names, same value encoding ("true" for the boolean opt-in). + if (attributes.rdma === true) { + result.push({ key: "rdma", value: "true" }); + } + if (attributes.rdma_group && attributes.rdma_group.length > 0) { + result.push({ key: "rdma_group", value: attributes.rdma_group }); + } - return models.map((model) => { - let key = `vendor/${vendorName}/model/${model.model}`; - if (model.ram) key += `/ram/${model.ram}`; - if (model.interface) key += `/interface/${model.interface}`; - return { key, value: "true" }; - }); - }); + // Go SDL parser canonicalizes the slice via sort.Sort(res) before + // returning. Mirror that here so the on-chain attribute order matches + // byte-for-byte across both implementations. + result.sort((a, b) => a.key.localeCompare(b.key)); + + return result; } export function buildHttpOptions(httpOptions?: SDLHttpOptions): ServiceExposeHTTPOptions { diff --git a/ts/src/sdl/validateSDL/validateSDLInput.ts b/ts/src/sdl/validateSDL/validateSDLInput.ts index d7881c5c..59218c54 100644 --- a/ts/src/sdl/validateSDL/validateSDLInput.ts +++ b/ts/src/sdl/validateSDL/validateSDLInput.ts @@ -87,6 +87,22 @@ export interface SDLInput { }[] | null; }; + /** + * Opt this resource into RDMA. When true, the bid + * engine matches against providers advertising + * capabilities/rdma and the workload builder + * requests one RDMA HCA per GPU unit (1:1). + * + */ + rdma?: boolean; + /** + * Peer-group label for multi-service NCCL groups. + * All services sharing the same value form one + * anti-affinity group: the provider schedules them + * on distinct nodes. Implies rdma: true. + * + */ + rdma_group?: string; }; units?: string | number; }; @@ -239,7 +255,7 @@ var require_ucs2length = __commonJS({ // var validate = validate27; var stdin_default = validate27; -var schema28 = { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "description": "Schema for Akash Stack Definition Language (SDL) YAML input files.\n\nNote: This schema validates structure only. Semantic validations (cross-references,\nunused endpoints, profile references, etc.) are performed at runtime by the Go parser.\nSee README.md for details.\n", "definitions": { "stringArrayOrNull": { "description": "String array or null value (used for command args and env vars)", "oneOf": [{ "items": { "type": "string" }, "type": "array" }, { "type": "null" }] }, "portNumber": { "description": "Valid TCP/UDP port number (1-65535)", "type": "integer", "minimum": 1, "maximum": 65535 }, "httpErrorCode": { "description": "HTTP error codes for proxy retry logic", "enum": ["error", "timeout", "500", "502", "503", "504", "403", "404", "429", "off"], "type": "string" }, "priceCoin": { "description": "Price definition with amount and denomination", "additionalProperties": false, "properties": { "amount": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Positive number as string" }, { "type": "number", "minimum": 0, "description": "Positive number" }] }, "denom": { "enum": ["uakt", "uact"], "type": "string" } }, "required": ["denom", "amount"], "type": "object" }, "storageRamClassMustNotBePersistent": { "description": "RAM storage class must not have persistent=true", "not": { "properties": { "class": { "const": "ram" }, "persistent": { "oneOf": [{ "const": true }, { "const": "true" }] } }, "required": ["class", "persistent"] } }, "storageNonRamClassRequiresPersistent": { "description": "Non-RAM storage classes (beta1, beta2, beta3, default) require persistent=true", "if": { "properties": { "class": { "enum": ["beta1", "beta2", "beta3", "default"] } }, "required": ["class"] }, "then": { "properties": { "persistent": { "oneOf": [{ "const": true }, { "const": "true" }] } }, "required": ["persistent"] } }, "storageAttributesValidation": { "description": "Storage attributes validation:\n1. RAM class must not be persistent\n2. Non-RAM classes (beta1, beta2, beta3, default) require persistent=true\n", "additionalProperties": false, "properties": { "class": { "type": "string" }, "persistent": { "oneOf": [{ "type": "boolean" }, { "type": "string" }] } }, "allOf": [{ "$ref": "#/definitions/storageRamClassMustNotBePersistent" }, { "$ref": "#/definitions/storageNonRamClassRequiresPersistent" }], "required": ["class", "persistent"], "type": "object" }, "storageVolume": { "description": "Storage volume definition with size and optional attributes", "additionalProperties": false, "properties": { "attributes": { "$ref": "#/definitions/storageAttributesValidation" }, "name": { "type": "string" }, "size": { "type": "string" } }, "required": ["size"], "type": "object" }, "absolutePath": { "description": "Absolute filesystem path starting with /", "type": "string", "minLength": 1, "pattern": "^/" }, "gpuUnitsGt0RequiresAttributes": { "description": "GPU units > 0 requires attributes to be present", "if": { "properties": { "units": { "oneOf": [{ "type": "number", "exclusiveMinimum": 0 }, { "type": "string", "not": { "pattern": "^0+(\\.0+)?$" } }] } }, "required": ["units"] }, "then": { "required": ["attributes"] } }, "gpuAttributesRequireUnitsGt0": { "description": "GPU attributes present requires units > 0", "if": { "required": ["attributes"] }, "then": { "properties": { "units": { "oneOf": [{ "type": "number", "exclusiveMinimum": 0 }, { "type": "string", "not": { "pattern": "^0+(\\.0+)?$" } }] } }, "required": ["units"] } }, "exposeToWithIpEnforcesGlobal": { "description": "Expose to with IP enforces global", "if": { "properties": { "ip": { "type": "string", "minLength": 1 } }, "required": ["ip"] }, "then": { "properties": { "global": { "const": true } }, "required": ["global"] } } }, "properties": { "deployment": { "additionalProperties": { "additionalProperties": { "additionalProperties": false, "properties": { "count": { "minimum": 1, "type": "integer" }, "profile": { "type": "string" } }, "required": ["profile", "count"], "type": "object" }, "type": "object" }, "type": "object" }, "endpoints": { "additionalProperties": false, "patternProperties": { "^[a-z]+[-_0-9a-z]+$": { "additionalProperties": false, "properties": { "kind": { "enum": ["ip"], "type": "string" } }, "required": ["kind"], "type": "object" } }, "type": "object" }, "include": { "description": "Optional list of files to include", "items": { "type": "string" }, "type": "array" }, "profiles": { "additionalProperties": false, "properties": { "compute": { "additionalProperties": { "additionalProperties": false, "properties": { "resources": { "additionalProperties": false, "properties": { "cpu": { "additionalProperties": false, "properties": { "attributes": { "type": "object" }, "units": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?[a-zA-Z]*$", "not": { "pattern": "^0+(\\.0+)?m?$" } }, { "type": "number", "exclusiveMinimum": 0 }] } }, "required": ["units"], "type": "object" }, "gpu": { "description": "GPU resource specification.\n- units defaults to 0 if omitted\n- Bidirectional validation: units > 0 requires attributes, and attributes require units > 0\n", "additionalProperties": false, "properties": { "attributes": { "additionalProperties": false, "properties": { "vendor": { "additionalProperties": false, "minProperties": 1, "properties": { "nvidia": { "oneOf": [{ "type": "array", "items": { "additionalProperties": false, "properties": { "interface": { "enum": ["pcie", "sxm"], "type": "string" }, "model": { "type": "string" }, "ram": { "type": "string" } }, "type": "object" } }, { "type": "null" }] } }, "type": "object" } }, "type": "object" }, "units": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "allOf": [{ "$ref": "#/definitions/gpuUnitsGt0RequiresAttributes" }, { "$ref": "#/definitions/gpuAttributesRequireUnitsGt0" }], "type": "object" }, "memory": { "additionalProperties": false, "properties": { "size": { "type": "string" } }, "required": ["size"], "type": "object" }, "storage": { "oneOf": [{ "$ref": "#/definitions/storageVolume" }, { "items": { "$ref": "#/definitions/storageVolume" }, "type": "array" }] } }, "required": ["cpu", "memory", "storage"], "type": "object" } }, "required": ["resources"], "type": "object" }, "type": "object" }, "placement": { "additionalProperties": { "additionalProperties": false, "properties": { "attributes": { "type": "object" }, "pricing": { "additionalProperties": { "$ref": "#/definitions/priceCoin" }, "type": "object" }, "signedBy": { "additionalProperties": false, "properties": { "allOf": { "items": { "type": "string" }, "type": "array" }, "anyOf": { "items": { "type": "string" }, "type": "array" } }, "type": "object" } }, "required": ["pricing"], "type": "object" }, "type": "object" } }, "required": ["compute", "placement"], "type": "object" }, "services": { "additionalProperties": { "properties": { "args": { "$ref": "#/definitions/stringArrayOrNull" }, "command": { "$ref": "#/definitions/stringArrayOrNull" }, "credentials": { "additionalProperties": false, "properties": { "email": { "type": "string", "minLength": 5 }, "host": { "type": "string", "minLength": 1 }, "password": { "type": "string", "minLength": 6 }, "username": { "type": "string", "minLength": 1 } }, "required": ["host", "username", "password"], "type": "object" }, "dependencies": { "items": { "additionalProperties": false, "properties": { "service": { "type": "string" } }, "type": "object" }, "type": "array" }, "env": { "$ref": "#/definitions/stringArrayOrNull" }, "expose": { "oneOf": [{ "type": "array", "items": { "additionalProperties": false, "properties": { "accept": { "items": { "type": "string" }, "type": "array" }, "as": { "$ref": "#/definitions/portNumber" }, "http_options": { "additionalProperties": false, "properties": { "max_body_size": { "type": "integer", "minimum": 0, "maximum": 104857600, "description": "Maximum body size in bytes (max 100 MB)" }, "next_cases": { "oneOf": [{ "type": "array", "items": { "$ref": "#/definitions/httpErrorCode" }, "contains": { "const": "off" }, "maxItems": 1, "minItems": 1 }, { "type": "array", "items": { "$ref": "#/definitions/httpErrorCode" }, "not": { "contains": { "const": "off" } } }] }, "next_timeout": { "type": "integer", "minimum": 0 }, "next_tries": { "type": "integer", "minimum": 0 }, "read_timeout": { "type": "integer", "minimum": 0, "maximum": 6e4, "description": "Read timeout in milliseconds (max 60 seconds)" }, "send_timeout": { "type": "integer", "minimum": 0, "maximum": 6e4, "description": "Send timeout in milliseconds (max 60 seconds)" } }, "type": "object" }, "port": { "$ref": "#/definitions/portNumber" }, "proto": { "enum": ["TCP", "UDP", "tcp", "udp"], "type": "string" }, "to": { "items": { "additionalProperties": false, "properties": { "global": { "type": "boolean" }, "ip": { "minLength": 1, "type": "string" }, "service": { "type": "string" } }, "allOf": [{ "$ref": "#/definitions/exposeToWithIpEnforcesGlobal" }], "type": "object" }, "type": "array" } }, "required": ["port"], "type": "object" } }, { "type": "null" }] }, "image": { "type": "string", "minLength": 1 }, "params": { "additionalProperties": false, "properties": { "storage": { "additionalProperties": { "additionalProperties": false, "properties": { "mount": { "$ref": "#/definitions/absolutePath" }, "readOnly": { "type": "boolean" } }, "type": "object" }, "type": "object" }, "permissions": { "additionalProperties": false, "properties": { "read": { "items": { "type": "string", "enum": ["deployment", "logs", "events"] }, "type": "array" } }, "type": "object" } }, "type": "object" } }, "required": ["image"], "type": "object", "additionalProperties": false }, "type": "object" }, "reclamation": { "description": "Deployment-level reclamation requirements (optional). When set, providers must offer a reclamation window meeting or exceeding the specified minimum to bid on this deployment.", "additionalProperties": false, "properties": { "min_window": { "type": "string", "pattern": "^[1-9][0-9]*(s|m|h)$", "description": 'Minimum reclamation window the tenant requires, as a whole number followed by a unit (s, m, or h). E.g. "1h", "24h", "720h".' } }, "required": ["min_window"], "type": "object" }, "version": { "description": "SDL version", "enum": ["2.0", "2.1"], "type": "string" } }, "required": ["version", "services", "profiles", "deployment"], "title": "Akash SDL Input Schema", "type": "object" }; +var schema28 = { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "description": "Schema for Akash Stack Definition Language (SDL) YAML input files.\n\nNote: This schema validates structure only. Semantic validations (cross-references,\nunused endpoints, profile references, etc.) are performed at runtime by the Go parser.\nSee README.md for details.\n", "definitions": { "stringArrayOrNull": { "description": "String array or null value (used for command args and env vars)", "oneOf": [{ "items": { "type": "string" }, "type": "array" }, { "type": "null" }] }, "portNumber": { "description": "Valid TCP/UDP port number (1-65535)", "type": "integer", "minimum": 1, "maximum": 65535 }, "httpErrorCode": { "description": "HTTP error codes for proxy retry logic", "enum": ["error", "timeout", "500", "502", "503", "504", "403", "404", "429", "off"], "type": "string" }, "priceCoin": { "description": "Price definition with amount and denomination", "additionalProperties": false, "properties": { "amount": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Positive number as string" }, { "type": "number", "minimum": 0, "description": "Positive number" }] }, "denom": { "enum": ["uakt", "uact"], "type": "string" } }, "required": ["denom", "amount"], "type": "object" }, "storageRamClassMustNotBePersistent": { "description": "RAM storage class must not have persistent=true", "not": { "properties": { "class": { "const": "ram" }, "persistent": { "oneOf": [{ "const": true }, { "const": "true" }] } }, "required": ["class", "persistent"] } }, "storageNonRamClassRequiresPersistent": { "description": "Non-RAM storage classes (beta1, beta2, beta3, default) require persistent=true", "if": { "properties": { "class": { "enum": ["beta1", "beta2", "beta3", "default"] } }, "required": ["class"] }, "then": { "properties": { "persistent": { "oneOf": [{ "const": true }, { "const": "true" }] } }, "required": ["persistent"] } }, "storageAttributesValidation": { "description": "Storage attributes validation:\n1. RAM class must not be persistent\n2. Non-RAM classes (beta1, beta2, beta3, default) require persistent=true\n", "additionalProperties": false, "properties": { "class": { "type": "string" }, "persistent": { "oneOf": [{ "type": "boolean" }, { "type": "string" }] } }, "allOf": [{ "$ref": "#/definitions/storageRamClassMustNotBePersistent" }, { "$ref": "#/definitions/storageNonRamClassRequiresPersistent" }], "required": ["class", "persistent"], "type": "object" }, "storageVolume": { "description": "Storage volume definition with size and optional attributes", "additionalProperties": false, "properties": { "attributes": { "$ref": "#/definitions/storageAttributesValidation" }, "name": { "type": "string" }, "size": { "type": "string" } }, "required": ["size"], "type": "object" }, "absolutePath": { "description": "Absolute filesystem path starting with /", "type": "string", "minLength": 1, "pattern": "^/" }, "gpuUnitsGt0RequiresAttributes": { "description": "GPU units > 0 requires attributes to be present", "if": { "properties": { "units": { "oneOf": [{ "type": "number", "exclusiveMinimum": 0 }, { "type": "string", "not": { "pattern": "^0+(\\.0+)?$" } }] } }, "required": ["units"] }, "then": { "required": ["attributes"] } }, "gpuAttributesRequireUnitsGt0": { "description": "GPU attributes present requires units > 0", "if": { "required": ["attributes"] }, "then": { "properties": { "units": { "oneOf": [{ "type": "number", "exclusiveMinimum": 0 }, { "type": "string", "not": { "pattern": "^0+(\\.0+)?$" } }] } }, "required": ["units"] } }, "exposeToWithIpEnforcesGlobal": { "description": "Expose to with IP enforces global", "if": { "properties": { "ip": { "type": "string", "minLength": 1 } }, "required": ["ip"] }, "then": { "properties": { "global": { "const": true } }, "required": ["global"] } } }, "properties": { "deployment": { "additionalProperties": { "additionalProperties": { "additionalProperties": false, "properties": { "count": { "minimum": 1, "type": "integer" }, "profile": { "type": "string" } }, "required": ["profile", "count"], "type": "object" }, "type": "object" }, "type": "object" }, "endpoints": { "additionalProperties": false, "patternProperties": { "^[a-z]+[-_0-9a-z]+$": { "additionalProperties": false, "properties": { "kind": { "enum": ["ip"], "type": "string" } }, "required": ["kind"], "type": "object" } }, "type": "object" }, "include": { "description": "Optional list of files to include", "items": { "type": "string" }, "type": "array" }, "profiles": { "additionalProperties": false, "properties": { "compute": { "additionalProperties": { "additionalProperties": false, "properties": { "resources": { "additionalProperties": false, "properties": { "cpu": { "additionalProperties": false, "properties": { "attributes": { "type": "object" }, "units": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?[a-zA-Z]*$", "not": { "pattern": "^0+(\\.0+)?m?$" } }, { "type": "number", "exclusiveMinimum": 0 }] } }, "required": ["units"], "type": "object" }, "gpu": { "description": "GPU resource specification.\n- units defaults to 0 if omitted\n- Bidirectional validation: units > 0 requires attributes, and attributes require units > 0\n", "additionalProperties": false, "properties": { "attributes": { "additionalProperties": false, "properties": { "vendor": { "additionalProperties": false, "minProperties": 1, "properties": { "nvidia": { "oneOf": [{ "type": "array", "items": { "additionalProperties": false, "properties": { "interface": { "enum": ["pcie", "sxm"], "type": "string" }, "model": { "type": "string" }, "ram": { "type": "string" } }, "type": "object" } }, { "type": "null" }] } }, "type": "object" }, "rdma": { "description": "Opt this resource into RDMA. When true, the bid\nengine matches against providers advertising\ncapabilities/rdma and the workload builder\nrequests one RDMA HCA per GPU unit (1:1).\n", "type": "boolean" }, "rdma_group": { "description": "Peer-group label for multi-service NCCL groups.\nAll services sharing the same value form one\nanti-affinity group: the provider schedules them\non distinct nodes. Implies rdma: true.\n", "type": "string" } }, "type": "object" }, "units": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "allOf": [{ "$ref": "#/definitions/gpuUnitsGt0RequiresAttributes" }, { "$ref": "#/definitions/gpuAttributesRequireUnitsGt0" }], "type": "object" }, "memory": { "additionalProperties": false, "properties": { "size": { "type": "string" } }, "required": ["size"], "type": "object" }, "storage": { "oneOf": [{ "$ref": "#/definitions/storageVolume" }, { "items": { "$ref": "#/definitions/storageVolume" }, "type": "array" }] } }, "required": ["cpu", "memory", "storage"], "type": "object" } }, "required": ["resources"], "type": "object" }, "type": "object" }, "placement": { "additionalProperties": { "additionalProperties": false, "properties": { "attributes": { "type": "object" }, "pricing": { "additionalProperties": { "$ref": "#/definitions/priceCoin" }, "type": "object" }, "signedBy": { "additionalProperties": false, "properties": { "allOf": { "items": { "type": "string" }, "type": "array" }, "anyOf": { "items": { "type": "string" }, "type": "array" } }, "type": "object" } }, "required": ["pricing"], "type": "object" }, "type": "object" } }, "required": ["compute", "placement"], "type": "object" }, "services": { "additionalProperties": { "properties": { "args": { "$ref": "#/definitions/stringArrayOrNull" }, "command": { "$ref": "#/definitions/stringArrayOrNull" }, "credentials": { "additionalProperties": false, "properties": { "email": { "type": "string", "minLength": 5 }, "host": { "type": "string", "minLength": 1 }, "password": { "type": "string", "minLength": 6 }, "username": { "type": "string", "minLength": 1 } }, "required": ["host", "username", "password"], "type": "object" }, "dependencies": { "items": { "additionalProperties": false, "properties": { "service": { "type": "string" } }, "type": "object" }, "type": "array" }, "env": { "$ref": "#/definitions/stringArrayOrNull" }, "expose": { "oneOf": [{ "type": "array", "items": { "additionalProperties": false, "properties": { "accept": { "items": { "type": "string" }, "type": "array" }, "as": { "$ref": "#/definitions/portNumber" }, "http_options": { "additionalProperties": false, "properties": { "max_body_size": { "type": "integer", "minimum": 0, "maximum": 104857600, "description": "Maximum body size in bytes (max 100 MB)" }, "next_cases": { "oneOf": [{ "type": "array", "items": { "$ref": "#/definitions/httpErrorCode" }, "contains": { "const": "off" }, "maxItems": 1, "minItems": 1 }, { "type": "array", "items": { "$ref": "#/definitions/httpErrorCode" }, "not": { "contains": { "const": "off" } } }] }, "next_timeout": { "type": "integer", "minimum": 0 }, "next_tries": { "type": "integer", "minimum": 0 }, "read_timeout": { "type": "integer", "minimum": 0, "maximum": 6e4, "description": "Read timeout in milliseconds (max 60 seconds)" }, "send_timeout": { "type": "integer", "minimum": 0, "maximum": 6e4, "description": "Send timeout in milliseconds (max 60 seconds)" } }, "type": "object" }, "port": { "$ref": "#/definitions/portNumber" }, "proto": { "enum": ["TCP", "UDP", "tcp", "udp"], "type": "string" }, "to": { "items": { "additionalProperties": false, "properties": { "global": { "type": "boolean" }, "ip": { "minLength": 1, "type": "string" }, "service": { "type": "string" } }, "allOf": [{ "$ref": "#/definitions/exposeToWithIpEnforcesGlobal" }], "type": "object" }, "type": "array" } }, "required": ["port"], "type": "object" } }, { "type": "null" }] }, "image": { "type": "string", "minLength": 1 }, "params": { "additionalProperties": false, "properties": { "storage": { "additionalProperties": { "additionalProperties": false, "properties": { "mount": { "$ref": "#/definitions/absolutePath" }, "readOnly": { "type": "boolean" } }, "type": "object" }, "type": "object" }, "permissions": { "additionalProperties": false, "properties": { "read": { "items": { "type": "string", "enum": ["deployment", "logs", "events"] }, "type": "array" } }, "type": "object" } }, "type": "object" } }, "required": ["image"], "type": "object", "additionalProperties": false }, "type": "object" }, "reclamation": { "description": "Deployment-level reclamation requirements (optional). When set, providers must offer a reclamation window meeting or exceeding the specified minimum to bid on this deployment.", "additionalProperties": false, "properties": { "min_window": { "type": "string", "pattern": "^[1-9][0-9]*(s|m|h)$", "description": 'Minimum reclamation window the tenant requires, as a whole number followed by a unit (s, m, or h). E.g. "1h", "24h", "720h".' } }, "required": ["min_window"], "type": "object" }, "version": { "description": "SDL version", "enum": ["2.0", "2.1"], "type": "string" } }, "required": ["version", "services", "profiles", "deployment"], "title": "Akash SDL Input Schema", "type": "object" }; var schema35 = { "description": "Price definition with amount and denomination", "additionalProperties": false, "properties": { "amount": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Positive number as string" }, { "type": "number", "minimum": 0, "description": "Positive number" }] }, "denom": { "enum": ["uakt", "uact"], "type": "string" } }, "required": ["denom", "amount"], "type": "object" }; var schema40 = { "description": "HTTP error codes for proxy retry logic", "enum": ["error", "timeout", "500", "502", "503", "504", "403", "404", "429", "off"], "type": "string" }; var pattern4 = new RegExp("^[a-z]+[-_0-9a-z]+$", "u"); @@ -1498,7 +1514,7 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data20 = data17.attributes; if (data20 && typeof data20 == "object" && !Array.isArray(data20)) { for (const key13 in data20) { - if (!(key13 === "vendor")) { + if (!(key13 === "vendor" || key13 === "rdma" || key13 === "rdma_group")) { const err62 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key13 }, message: "must NOT have additional properties" }; if (vErrors === null) { vErrors = [err62]; @@ -1669,47 +1685,69 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r errors++; } } + if (data20.rdma !== void 0) { + if (typeof data20.rdma !== "boolean") { + const err75 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/rdma", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/rdma/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" }; + if (vErrors === null) { + vErrors = [err75]; + } else { + vErrors.push(err75); + } + errors++; + } + } + if (data20.rdma_group !== void 0) { + if (typeof data20.rdma_group !== "string") { + const err76 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/rdma_group", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/rdma_group/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (vErrors === null) { + vErrors = [err76]; + } else { + vErrors.push(err76); + } + errors++; + } + } } else { - const err75 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err77 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err75]; + vErrors = [err77]; } else { - vErrors.push(err75); + vErrors.push(err77); } errors++; } } if (data17.units !== void 0) { - let data27 = data17.units; - const _errs103 = errors; + let data29 = data17.units; + const _errs107 = errors; let valid33 = false; let passing4 = null; - const _errs104 = errors; - if (typeof data27 !== "string") { - const err76 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/units", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/units/oneOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const _errs108 = errors; + if (typeof data29 !== "string") { + const err78 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/units", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/units/oneOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err76]; + vErrors = [err78]; } else { - vErrors.push(err76); + vErrors.push(err78); } errors++; } - var _valid6 = _errs104 === errors; + var _valid6 = _errs108 === errors; if (_valid6) { valid33 = true; passing4 = 0; } - const _errs106 = errors; - if (!(typeof data27 == "number")) { - const err77 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/units", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/units/oneOf/1/type", keyword: "type", params: { type: "number" }, message: "must be number" }; + const _errs110 = errors; + if (!(typeof data29 == "number")) { + const err79 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/units", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/units/oneOf/1/type", keyword: "type", params: { type: "number" }, message: "must be number" }; if (vErrors === null) { - vErrors = [err77]; + vErrors = [err79]; } else { - vErrors.push(err77); + vErrors.push(err79); } errors++; } - var _valid6 = _errs106 === errors; + var _valid6 = _errs110 === errors; if (_valid6 && valid33) { valid33 = false; passing4 = [passing4, 1]; @@ -1720,18 +1758,18 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } if (!valid33) { - const err78 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/units", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/units/oneOf", keyword: "oneOf", params: { passingSchemas: passing4 }, message: "must match exactly one schema in oneOf" }; + const err80 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/units", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/units/oneOf", keyword: "oneOf", params: { passingSchemas: passing4 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err78]; + vErrors = [err80]; } else { - vErrors.push(err78); + vErrors.push(err80); } errors++; } else { - errors = _errs103; + errors = _errs107; if (vErrors !== null) { - if (_errs103) { - vErrors.length = _errs103; + if (_errs107) { + vErrors.length = _errs107; } else { vErrors = null; } @@ -1739,93 +1777,93 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } } else { - const err79 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err81 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err79]; + vErrors = [err81]; } else { - vErrors.push(err79); + vErrors.push(err81); } errors++; } } if (data13.memory !== void 0) { - let data28 = data13.memory; - if (data28 && typeof data28 == "object" && !Array.isArray(data28)) { - if (data28.size === void 0) { - const err80 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/required", keyword: "required", params: { missingProperty: "size" }, message: "must have required property 'size'" }; + let data30 = data13.memory; + if (data30 && typeof data30 == "object" && !Array.isArray(data30)) { + if (data30.size === void 0) { + const err82 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/required", keyword: "required", params: { missingProperty: "size" }, message: "must have required property 'size'" }; if (vErrors === null) { - vErrors = [err80]; + vErrors = [err82]; } else { - vErrors.push(err80); + vErrors.push(err82); } errors++; } - for (const key16 in data28) { + for (const key16 in data30) { if (!(key16 === "size")) { - const err81 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key16 }, message: "must NOT have additional properties" }; + const err83 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key16 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err81]; + vErrors = [err83]; } else { - vErrors.push(err81); + vErrors.push(err83); } errors++; } } - if (data28.size !== void 0) { - if (typeof data28.size !== "string") { - const err82 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory/size", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/properties/size/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (data30.size !== void 0) { + if (typeof data30.size !== "string") { + const err84 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory/size", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/properties/size/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err82]; + vErrors = [err84]; } else { - vErrors.push(err82); + vErrors.push(err84); } errors++; } } } else { - const err83 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err85 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err83]; + vErrors = [err85]; } else { - vErrors.push(err83); + vErrors.push(err85); } errors++; } } if (data13.storage !== void 0) { - let data30 = data13.storage; - const _errs114 = errors; + let data32 = data13.storage; + const _errs118 = errors; let valid35 = false; let passing5 = null; - const _errs115 = errors; - if (!validate28(data30, { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage", parentData: data13, parentDataProperty: "storage", rootData })) { + const _errs119 = errors; + if (!validate28(data32, { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage", parentData: data13, parentDataProperty: "storage", rootData })) { vErrors = vErrors === null ? validate28.errors : vErrors.concat(validate28.errors); errors = vErrors.length; } - var _valid7 = _errs115 === errors; + var _valid7 = _errs119 === errors; if (_valid7) { valid35 = true; passing5 = 0; } - const _errs116 = errors; - if (Array.isArray(data30)) { - const len2 = data30.length; + const _errs120 = errors; + if (Array.isArray(data32)) { + const len2 = data32.length; for (let i2 = 0; i2 < len2; i2++) { - if (!validate28(data30[i2], { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage/" + i2, parentData: data30, parentDataProperty: i2, rootData })) { + if (!validate28(data32[i2], { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage/" + i2, parentData: data32, parentDataProperty: i2, rootData })) { vErrors = vErrors === null ? validate28.errors : vErrors.concat(validate28.errors); errors = vErrors.length; } } } else { - const err84 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/storage/oneOf/1/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err86 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/storage/oneOf/1/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err84]; + vErrors = [err86]; } else { - vErrors.push(err84); + vErrors.push(err86); } errors++; } - var _valid7 = _errs116 === errors; + var _valid7 = _errs120 === errors; if (_valid7 && valid35) { valid35 = false; passing5 = [passing5, 1]; @@ -1836,18 +1874,18 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } if (!valid35) { - const err85 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/storage/oneOf", keyword: "oneOf", params: { passingSchemas: passing5 }, message: "must match exactly one schema in oneOf" }; + const err87 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/storage/oneOf", keyword: "oneOf", params: { passingSchemas: passing5 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err85]; + vErrors = [err87]; } else { - vErrors.push(err85); + vErrors.push(err87); } errors++; } else { - errors = _errs114; + errors = _errs118; if (vErrors !== null) { - if (_errs114) { - vErrors.length = _errs114; + if (_errs118) { + vErrors.length = _errs118; } else { vErrors = null; } @@ -1855,159 +1893,159 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } } else { - const err86 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err88 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err86]; + vErrors = [err88]; } else { - vErrors.push(err86); + vErrors.push(err88); } errors++; } } } else { - const err87 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/compute/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err89 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/compute/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err87]; + vErrors = [err89]; } else { - vErrors.push(err87); + vErrors.push(err89); } errors++; } } } else { - const err88 = { instancePath: instancePath + "/profiles/compute", schemaPath: "#/properties/profiles/properties/compute/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err90 = { instancePath: instancePath + "/profiles/compute", schemaPath: "#/properties/profiles/properties/compute/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err88]; + vErrors = [err90]; } else { - vErrors.push(err88); + vErrors.push(err90); } errors++; } } if (data10.placement !== void 0) { - let data32 = data10.placement; - if (data32 && typeof data32 == "object" && !Array.isArray(data32)) { - for (const key17 in data32) { - let data33 = data32[key17]; - if (data33 && typeof data33 == "object" && !Array.isArray(data33)) { - if (data33.pricing === void 0) { - const err89 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/placement/additionalProperties/required", keyword: "required", params: { missingProperty: "pricing" }, message: "must have required property 'pricing'" }; + let data34 = data10.placement; + if (data34 && typeof data34 == "object" && !Array.isArray(data34)) { + for (const key17 in data34) { + let data35 = data34[key17]; + if (data35 && typeof data35 == "object" && !Array.isArray(data35)) { + if (data35.pricing === void 0) { + const err91 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/placement/additionalProperties/required", keyword: "required", params: { missingProperty: "pricing" }, message: "must have required property 'pricing'" }; if (vErrors === null) { - vErrors = [err89]; + vErrors = [err91]; } else { - vErrors.push(err89); + vErrors.push(err91); } errors++; } - for (const key18 in data33) { + for (const key18 in data35) { if (!(key18 === "attributes" || key18 === "pricing" || key18 === "signedBy")) { - const err90 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/placement/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key18 }, message: "must NOT have additional properties" }; + const err92 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/placement/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key18 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err90]; + vErrors = [err92]; } else { - vErrors.push(err90); + vErrors.push(err92); } errors++; } } - if (data33.attributes !== void 0) { - let data34 = data33.attributes; - if (!(data34 && typeof data34 == "object" && !Array.isArray(data34))) { - const err91 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/attributes", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/attributes/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + if (data35.attributes !== void 0) { + let data36 = data35.attributes; + if (!(data36 && typeof data36 == "object" && !Array.isArray(data36))) { + const err93 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/attributes", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/attributes/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err91]; + vErrors = [err93]; } else { - vErrors.push(err91); + vErrors.push(err93); } errors++; } } - if (data33.pricing !== void 0) { - let data35 = data33.pricing; - if (data35 && typeof data35 == "object" && !Array.isArray(data35)) { - for (const key19 in data35) { - let data36 = data35[key19]; - if (data36 && typeof data36 == "object" && !Array.isArray(data36)) { - if (data36.denom === void 0) { - const err92 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/required", keyword: "required", params: { missingProperty: "denom" }, message: "must have required property 'denom'" }; + if (data35.pricing !== void 0) { + let data37 = data35.pricing; + if (data37 && typeof data37 == "object" && !Array.isArray(data37)) { + for (const key19 in data37) { + let data38 = data37[key19]; + if (data38 && typeof data38 == "object" && !Array.isArray(data38)) { + if (data38.denom === void 0) { + const err94 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/required", keyword: "required", params: { missingProperty: "denom" }, message: "must have required property 'denom'" }; if (vErrors === null) { - vErrors = [err92]; + vErrors = [err94]; } else { - vErrors.push(err92); + vErrors.push(err94); } errors++; } - if (data36.amount === void 0) { - const err93 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/required", keyword: "required", params: { missingProperty: "amount" }, message: "must have required property 'amount'" }; + if (data38.amount === void 0) { + const err95 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/required", keyword: "required", params: { missingProperty: "amount" }, message: "must have required property 'amount'" }; if (vErrors === null) { - vErrors = [err93]; + vErrors = [err95]; } else { - vErrors.push(err93); + vErrors.push(err95); } errors++; } - for (const key20 in data36) { + for (const key20 in data38) { if (!(key20 === "amount" || key20 === "denom")) { - const err94 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key20 }, message: "must NOT have additional properties" }; + const err96 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key20 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err94]; + vErrors = [err96]; } else { - vErrors.push(err94); + vErrors.push(err96); } errors++; } } - if (data36.amount !== void 0) { - let data37 = data36.amount; - const _errs135 = errors; + if (data38.amount !== void 0) { + let data39 = data38.amount; + const _errs139 = errors; let valid43 = false; let passing6 = null; - const _errs136 = errors; - if (typeof data37 === "string") { - if (!pattern10.test(data37)) { - const err95 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/0/pattern", keyword: "pattern", params: { pattern: "^[0-9]+(\\.[0-9]+)?$" }, message: 'must match pattern "^[0-9]+(\\.[0-9]+)?$"' }; + const _errs140 = errors; + if (typeof data39 === "string") { + if (!pattern10.test(data39)) { + const err97 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/0/pattern", keyword: "pattern", params: { pattern: "^[0-9]+(\\.[0-9]+)?$" }, message: 'must match pattern "^[0-9]+(\\.[0-9]+)?$"' }; if (vErrors === null) { - vErrors = [err95]; + vErrors = [err97]; } else { - vErrors.push(err95); + vErrors.push(err97); } errors++; } } else { - const err96 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err98 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err96]; + vErrors = [err98]; } else { - vErrors.push(err96); + vErrors.push(err98); } errors++; } - var _valid8 = _errs136 === errors; + var _valid8 = _errs140 === errors; if (_valid8) { valid43 = true; passing6 = 0; } - const _errs138 = errors; - if (typeof data37 == "number") { - if (data37 < 0 || isNaN(data37)) { - const err97 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/1/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; + const _errs142 = errors; + if (typeof data39 == "number") { + if (data39 < 0 || isNaN(data39)) { + const err99 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/1/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; if (vErrors === null) { - vErrors = [err97]; + vErrors = [err99]; } else { - vErrors.push(err97); + vErrors.push(err99); } errors++; } } else { - const err98 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/1/type", keyword: "type", params: { type: "number" }, message: "must be number" }; + const err100 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/1/type", keyword: "type", params: { type: "number" }, message: "must be number" }; if (vErrors === null) { - vErrors = [err98]; + vErrors = [err100]; } else { - vErrors.push(err98); + vErrors.push(err100); } errors++; } - var _valid8 = _errs138 === errors; + var _valid8 = _errs142 === errors; if (_valid8 && valid43) { valid43 = false; passing6 = [passing6, 1]; @@ -2018,239 +2056,239 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } if (!valid43) { - const err99 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf", keyword: "oneOf", params: { passingSchemas: passing6 }, message: "must match exactly one schema in oneOf" }; + const err101 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf", keyword: "oneOf", params: { passingSchemas: passing6 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err99]; + vErrors = [err101]; } else { - vErrors.push(err99); + vErrors.push(err101); } errors++; } else { - errors = _errs135; + errors = _errs139; if (vErrors !== null) { - if (_errs135) { - vErrors.length = _errs135; + if (_errs139) { + vErrors.length = _errs139; } else { vErrors = null; } } } } - if (data36.denom !== void 0) { - let data38 = data36.denom; - if (typeof data38 !== "string") { - const err100 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/denom", schemaPath: "#/definitions/priceCoin/properties/denom/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (data38.denom !== void 0) { + let data40 = data38.denom; + if (typeof data40 !== "string") { + const err102 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/denom", schemaPath: "#/definitions/priceCoin/properties/denom/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err100]; + vErrors = [err102]; } else { - vErrors.push(err100); + vErrors.push(err102); } errors++; } - if (!(data38 === "uakt" || data38 === "uact")) { - const err101 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/denom", schemaPath: "#/definitions/priceCoin/properties/denom/enum", keyword: "enum", params: { allowedValues: schema35.properties.denom.enum }, message: "must be equal to one of the allowed values" }; + if (!(data40 === "uakt" || data40 === "uact")) { + const err103 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/denom", schemaPath: "#/definitions/priceCoin/properties/denom/enum", keyword: "enum", params: { allowedValues: schema35.properties.denom.enum }, message: "must be equal to one of the allowed values" }; if (vErrors === null) { - vErrors = [err101]; + vErrors = [err103]; } else { - vErrors.push(err101); + vErrors.push(err103); } errors++; } } } else { - const err102 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err104 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err102]; + vErrors = [err104]; } else { - vErrors.push(err102); + vErrors.push(err104); } errors++; } } } else { - const err103 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/pricing/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err105 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/pricing/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err103]; + vErrors = [err105]; } else { - vErrors.push(err103); + vErrors.push(err105); } errors++; } } - if (data33.signedBy !== void 0) { - let data39 = data33.signedBy; - if (data39 && typeof data39 == "object" && !Array.isArray(data39)) { - for (const key21 in data39) { + if (data35.signedBy !== void 0) { + let data41 = data35.signedBy; + if (data41 && typeof data41 == "object" && !Array.isArray(data41)) { + for (const key21 in data41) { if (!(key21 === "allOf" || key21 === "anyOf")) { - const err104 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key21 }, message: "must NOT have additional properties" }; + const err106 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key21 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err104]; + vErrors = [err106]; } else { - vErrors.push(err104); + vErrors.push(err106); } errors++; } } - if (data39.allOf !== void 0) { - let data40 = data39.allOf; - if (Array.isArray(data40)) { - const len3 = data40.length; + if (data41.allOf !== void 0) { + let data42 = data41.allOf; + if (Array.isArray(data42)) { + const len3 = data42.length; for (let i3 = 0; i3 < len3; i3++) { - if (typeof data40[i3] !== "string") { - const err105 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/allOf/" + i3, schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/allOf/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (typeof data42[i3] !== "string") { + const err107 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/allOf/" + i3, schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/allOf/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err105]; + vErrors = [err107]; } else { - vErrors.push(err105); + vErrors.push(err107); } errors++; } } } else { - const err106 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/allOf", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/allOf/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err108 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/allOf", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/allOf/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err106]; + vErrors = [err108]; } else { - vErrors.push(err106); + vErrors.push(err108); } errors++; } } - if (data39.anyOf !== void 0) { - let data42 = data39.anyOf; - if (Array.isArray(data42)) { - const len4 = data42.length; + if (data41.anyOf !== void 0) { + let data44 = data41.anyOf; + if (Array.isArray(data44)) { + const len4 = data44.length; for (let i4 = 0; i4 < len4; i4++) { - if (typeof data42[i4] !== "string") { - const err107 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/anyOf/" + i4, schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/anyOf/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (typeof data44[i4] !== "string") { + const err109 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/anyOf/" + i4, schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/anyOf/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err107]; + vErrors = [err109]; } else { - vErrors.push(err107); + vErrors.push(err109); } errors++; } } } else { - const err108 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/anyOf", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/anyOf/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err110 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/anyOf", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/anyOf/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err108]; + vErrors = [err110]; } else { - vErrors.push(err108); + vErrors.push(err110); } errors++; } } } else { - const err109 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err111 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err109]; + vErrors = [err111]; } else { - vErrors.push(err109); + vErrors.push(err111); } errors++; } } } else { - const err110 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/placement/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err112 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/placement/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err110]; + vErrors = [err112]; } else { - vErrors.push(err110); + vErrors.push(err112); } errors++; } } } else { - const err111 = { instancePath: instancePath + "/profiles/placement", schemaPath: "#/properties/profiles/properties/placement/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err113 = { instancePath: instancePath + "/profiles/placement", schemaPath: "#/properties/profiles/properties/placement/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err111]; + vErrors = [err113]; } else { - vErrors.push(err111); + vErrors.push(err113); } errors++; } } } else { - const err112 = { instancePath: instancePath + "/profiles", schemaPath: "#/properties/profiles/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err114 = { instancePath: instancePath + "/profiles", schemaPath: "#/properties/profiles/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err112]; + vErrors = [err114]; } else { - vErrors.push(err112); + vErrors.push(err114); } errors++; } } if (data.services !== void 0) { - let data44 = data.services; - if (data44 && typeof data44 == "object" && !Array.isArray(data44)) { - for (const key22 in data44) { - let data45 = data44[key22]; - if (data45 && typeof data45 == "object" && !Array.isArray(data45)) { - if (data45.image === void 0) { - const err113 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/required", keyword: "required", params: { missingProperty: "image" }, message: "must have required property 'image'" }; + let data46 = data.services; + if (data46 && typeof data46 == "object" && !Array.isArray(data46)) { + for (const key22 in data46) { + let data47 = data46[key22]; + if (data47 && typeof data47 == "object" && !Array.isArray(data47)) { + if (data47.image === void 0) { + const err115 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/required", keyword: "required", params: { missingProperty: "image" }, message: "must have required property 'image'" }; if (vErrors === null) { - vErrors = [err113]; + vErrors = [err115]; } else { - vErrors.push(err113); + vErrors.push(err115); } errors++; } - for (const key23 in data45) { + for (const key23 in data47) { if (!(key23 === "args" || key23 === "command" || key23 === "credentials" || key23 === "dependencies" || key23 === "env" || key23 === "expose" || key23 === "image" || key23 === "params")) { - const err114 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key23 }, message: "must NOT have additional properties" }; + const err116 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key23 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err114]; + vErrors = [err116]; } else { - vErrors.push(err114); + vErrors.push(err116); } errors++; } } - if (data45.args !== void 0) { - let data46 = data45.args; - const _errs161 = errors; + if (data47.args !== void 0) { + let data48 = data47.args; + const _errs165 = errors; let valid52 = false; let passing7 = null; - const _errs162 = errors; - if (Array.isArray(data46)) { - const len5 = data46.length; + const _errs166 = errors; + if (Array.isArray(data48)) { + const len5 = data48.length; for (let i5 = 0; i5 < len5; i5++) { - if (typeof data46[i5] !== "string") { - const err115 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/args/" + i5, schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (typeof data48[i5] !== "string") { + const err117 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/args/" + i5, schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err115]; + vErrors = [err117]; } else { - vErrors.push(err115); + vErrors.push(err117); } errors++; } } } else { - const err116 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/args", schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err118 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/args", schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err116]; + vErrors = [err118]; } else { - vErrors.push(err116); + vErrors.push(err118); } errors++; } - var _valid9 = _errs162 === errors; + var _valid9 = _errs166 === errors; if (_valid9) { valid52 = true; passing7 = 0; } - const _errs166 = errors; - if (data46 !== null) { - const err117 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/args", schemaPath: "#/definitions/stringArrayOrNull/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; + const _errs170 = errors; + if (data48 !== null) { + const err119 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/args", schemaPath: "#/definitions/stringArrayOrNull/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; if (vErrors === null) { - vErrors = [err117]; + vErrors = [err119]; } else { - vErrors.push(err117); + vErrors.push(err119); } errors++; } - var _valid9 = _errs166 === errors; + var _valid9 = _errs170 === errors; if (_valid9 && valid52) { valid52 = false; passing7 = [passing7, 1]; @@ -2261,68 +2299,68 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } if (!valid52) { - const err118 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/args", schemaPath: "#/definitions/stringArrayOrNull/oneOf", keyword: "oneOf", params: { passingSchemas: passing7 }, message: "must match exactly one schema in oneOf" }; + const err120 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/args", schemaPath: "#/definitions/stringArrayOrNull/oneOf", keyword: "oneOf", params: { passingSchemas: passing7 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err118]; + vErrors = [err120]; } else { - vErrors.push(err118); + vErrors.push(err120); } errors++; } else { - errors = _errs161; + errors = _errs165; if (vErrors !== null) { - if (_errs161) { - vErrors.length = _errs161; + if (_errs165) { + vErrors.length = _errs165; } else { vErrors = null; } } } } - if (data45.command !== void 0) { - let data48 = data45.command; - const _errs170 = errors; + if (data47.command !== void 0) { + let data50 = data47.command; + const _errs174 = errors; let valid56 = false; let passing8 = null; - const _errs171 = errors; - if (Array.isArray(data48)) { - const len6 = data48.length; + const _errs175 = errors; + if (Array.isArray(data50)) { + const len6 = data50.length; for (let i6 = 0; i6 < len6; i6++) { - if (typeof data48[i6] !== "string") { - const err119 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/command/" + i6, schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (typeof data50[i6] !== "string") { + const err121 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/command/" + i6, schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err119]; + vErrors = [err121]; } else { - vErrors.push(err119); + vErrors.push(err121); } errors++; } } } else { - const err120 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/command", schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err122 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/command", schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err120]; + vErrors = [err122]; } else { - vErrors.push(err120); + vErrors.push(err122); } errors++; } - var _valid10 = _errs171 === errors; + var _valid10 = _errs175 === errors; if (_valid10) { valid56 = true; passing8 = 0; } - const _errs175 = errors; - if (data48 !== null) { - const err121 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/command", schemaPath: "#/definitions/stringArrayOrNull/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; + const _errs179 = errors; + if (data50 !== null) { + const err123 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/command", schemaPath: "#/definitions/stringArrayOrNull/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; if (vErrors === null) { - vErrors = [err121]; + vErrors = [err123]; } else { - vErrors.push(err121); + vErrors.push(err123); } errors++; } - var _valid10 = _errs175 === errors; + var _valid10 = _errs179 === errors; if (_valid10 && valid56) { valid56 = false; passing8 = [passing8, 1]; @@ -2333,79 +2371,57 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } if (!valid56) { - const err122 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/command", schemaPath: "#/definitions/stringArrayOrNull/oneOf", keyword: "oneOf", params: { passingSchemas: passing8 }, message: "must match exactly one schema in oneOf" }; + const err124 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/command", schemaPath: "#/definitions/stringArrayOrNull/oneOf", keyword: "oneOf", params: { passingSchemas: passing8 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err122]; + vErrors = [err124]; } else { - vErrors.push(err122); + vErrors.push(err124); } errors++; } else { - errors = _errs170; + errors = _errs174; if (vErrors !== null) { - if (_errs170) { - vErrors.length = _errs170; + if (_errs174) { + vErrors.length = _errs174; } else { vErrors = null; } } } } - if (data45.credentials !== void 0) { - let data50 = data45.credentials; - if (data50 && typeof data50 == "object" && !Array.isArray(data50)) { - if (data50.host === void 0) { - const err123 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/required", keyword: "required", params: { missingProperty: "host" }, message: "must have required property 'host'" }; + if (data47.credentials !== void 0) { + let data52 = data47.credentials; + if (data52 && typeof data52 == "object" && !Array.isArray(data52)) { + if (data52.host === void 0) { + const err125 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/required", keyword: "required", params: { missingProperty: "host" }, message: "must have required property 'host'" }; if (vErrors === null) { - vErrors = [err123]; + vErrors = [err125]; } else { - vErrors.push(err123); + vErrors.push(err125); } errors++; } - if (data50.username === void 0) { - const err124 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/required", keyword: "required", params: { missingProperty: "username" }, message: "must have required property 'username'" }; + if (data52.username === void 0) { + const err126 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/required", keyword: "required", params: { missingProperty: "username" }, message: "must have required property 'username'" }; if (vErrors === null) { - vErrors = [err124]; + vErrors = [err126]; } else { - vErrors.push(err124); + vErrors.push(err126); } errors++; } - if (data50.password === void 0) { - const err125 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/required", keyword: "required", params: { missingProperty: "password" }, message: "must have required property 'password'" }; + if (data52.password === void 0) { + const err127 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/required", keyword: "required", params: { missingProperty: "password" }, message: "must have required property 'password'" }; if (vErrors === null) { - vErrors = [err125]; + vErrors = [err127]; } else { - vErrors.push(err125); + vErrors.push(err127); } errors++; } - for (const key24 in data50) { + for (const key24 in data52) { if (!(key24 === "email" || key24 === "host" || key24 === "password" || key24 === "username")) { - const err126 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key24 }, message: "must NOT have additional properties" }; - if (vErrors === null) { - vErrors = [err126]; - } else { - vErrors.push(err126); - } - errors++; - } - } - if (data50.email !== void 0) { - let data51 = data50.email; - if (typeof data51 === "string") { - if (func2(data51) < 5) { - const err127 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/email", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/email/minLength", keyword: "minLength", params: { limit: 5 }, message: "must NOT have fewer than 5 characters" }; - if (vErrors === null) { - vErrors = [err127]; - } else { - vErrors.push(err127); - } - errors++; - } - } else { - const err128 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/email", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/email/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err128 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key24 }, message: "must NOT have additional properties" }; if (vErrors === null) { vErrors = [err128]; } else { @@ -2414,11 +2430,11 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r errors++; } } - if (data50.host !== void 0) { - let data52 = data50.host; - if (typeof data52 === "string") { - if (func2(data52) < 1) { - const err129 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/host", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/host/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; + if (data52.email !== void 0) { + let data53 = data52.email; + if (typeof data53 === "string") { + if (func2(data53) < 5) { + const err129 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/email", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/email/minLength", keyword: "minLength", params: { limit: 5 }, message: "must NOT have fewer than 5 characters" }; if (vErrors === null) { vErrors = [err129]; } else { @@ -2427,7 +2443,7 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r errors++; } } else { - const err130 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/host", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/host/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err130 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/email", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/email/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { vErrors = [err130]; } else { @@ -2436,11 +2452,11 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r errors++; } } - if (data50.password !== void 0) { - let data53 = data50.password; - if (typeof data53 === "string") { - if (func2(data53) < 6) { - const err131 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/password", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/password/minLength", keyword: "minLength", params: { limit: 6 }, message: "must NOT have fewer than 6 characters" }; + if (data52.host !== void 0) { + let data54 = data52.host; + if (typeof data54 === "string") { + if (func2(data54) < 1) { + const err131 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/host", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/host/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; if (vErrors === null) { vErrors = [err131]; } else { @@ -2449,7 +2465,7 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r errors++; } } else { - const err132 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/password", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/password/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err132 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/host", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/host/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { vErrors = [err132]; } else { @@ -2458,11 +2474,11 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r errors++; } } - if (data50.username !== void 0) { - let data54 = data50.username; - if (typeof data54 === "string") { - if (func2(data54) < 1) { - const err133 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/username", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/username/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; + if (data52.password !== void 0) { + let data55 = data52.password; + if (typeof data55 === "string") { + if (func2(data55) < 6) { + const err133 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/password", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/password/minLength", keyword: "minLength", params: { limit: 6 }, message: "must NOT have fewer than 6 characters" }; if (vErrors === null) { vErrors = [err133]; } else { @@ -2471,7 +2487,7 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r errors++; } } else { - const err134 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/username", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/username/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err134 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/password", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/password/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { vErrors = [err134]; } else { @@ -2480,109 +2496,131 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r errors++; } } + if (data52.username !== void 0) { + let data56 = data52.username; + if (typeof data56 === "string") { + if (func2(data56) < 1) { + const err135 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/username", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/username/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; + if (vErrors === null) { + vErrors = [err135]; + } else { + vErrors.push(err135); + } + errors++; + } + } else { + const err136 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/username", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/username/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (vErrors === null) { + vErrors = [err136]; + } else { + vErrors.push(err136); + } + errors++; + } + } } else { - const err135 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err137 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err135]; + vErrors = [err137]; } else { - vErrors.push(err135); + vErrors.push(err137); } errors++; } } - if (data45.dependencies !== void 0) { - let data55 = data45.dependencies; - if (Array.isArray(data55)) { - const len7 = data55.length; + if (data47.dependencies !== void 0) { + let data57 = data47.dependencies; + if (Array.isArray(data57)) { + const len7 = data57.length; for (let i7 = 0; i7 < len7; i7++) { - let data56 = data55[i7]; - if (data56 && typeof data56 == "object" && !Array.isArray(data56)) { - for (const key25 in data56) { + let data58 = data57[i7]; + if (data58 && typeof data58 == "object" && !Array.isArray(data58)) { + for (const key25 in data58) { if (!(key25 === "service")) { - const err136 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies/" + i7, schemaPath: "#/properties/services/additionalProperties/properties/dependencies/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key25 }, message: "must NOT have additional properties" }; + const err138 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies/" + i7, schemaPath: "#/properties/services/additionalProperties/properties/dependencies/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key25 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err136]; + vErrors = [err138]; } else { - vErrors.push(err136); + vErrors.push(err138); } errors++; } } - if (data56.service !== void 0) { - if (typeof data56.service !== "string") { - const err137 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies/" + i7 + "/service", schemaPath: "#/properties/services/additionalProperties/properties/dependencies/items/properties/service/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (data58.service !== void 0) { + if (typeof data58.service !== "string") { + const err139 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies/" + i7 + "/service", schemaPath: "#/properties/services/additionalProperties/properties/dependencies/items/properties/service/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err137]; + vErrors = [err139]; } else { - vErrors.push(err137); + vErrors.push(err139); } errors++; } } } else { - const err138 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies/" + i7, schemaPath: "#/properties/services/additionalProperties/properties/dependencies/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err140 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies/" + i7, schemaPath: "#/properties/services/additionalProperties/properties/dependencies/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err138]; + vErrors = [err140]; } else { - vErrors.push(err138); + vErrors.push(err140); } errors++; } } } else { - const err139 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies", schemaPath: "#/properties/services/additionalProperties/properties/dependencies/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err141 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies", schemaPath: "#/properties/services/additionalProperties/properties/dependencies/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err139]; + vErrors = [err141]; } else { - vErrors.push(err139); + vErrors.push(err141); } errors++; } } - if (data45.env !== void 0) { - let data58 = data45.env; - const _errs197 = errors; + if (data47.env !== void 0) { + let data60 = data47.env; + const _errs201 = errors; let valid64 = false; let passing9 = null; - const _errs198 = errors; - if (Array.isArray(data58)) { - const len8 = data58.length; + const _errs202 = errors; + if (Array.isArray(data60)) { + const len8 = data60.length; for (let i8 = 0; i8 < len8; i8++) { - if (typeof data58[i8] !== "string") { - const err140 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/env/" + i8, schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (typeof data60[i8] !== "string") { + const err142 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/env/" + i8, schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err140]; + vErrors = [err142]; } else { - vErrors.push(err140); + vErrors.push(err142); } errors++; } } } else { - const err141 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/env", schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err143 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/env", schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err141]; + vErrors = [err143]; } else { - vErrors.push(err141); + vErrors.push(err143); } errors++; } - var _valid11 = _errs198 === errors; + var _valid11 = _errs202 === errors; if (_valid11) { valid64 = true; passing9 = 0; } - const _errs202 = errors; - if (data58 !== null) { - const err142 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/env", schemaPath: "#/definitions/stringArrayOrNull/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; + const _errs206 = errors; + if (data60 !== null) { + const err144 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/env", schemaPath: "#/definitions/stringArrayOrNull/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; if (vErrors === null) { - vErrors = [err142]; + vErrors = [err144]; } else { - vErrors.push(err142); + vErrors.push(err144); } errors++; } - var _valid11 = _errs202 === errors; + var _valid11 = _errs206 === errors; if (_valid11 && valid64) { valid64 = false; passing9 = [passing9, 1]; @@ -2593,348 +2631,348 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } if (!valid64) { - const err143 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/env", schemaPath: "#/definitions/stringArrayOrNull/oneOf", keyword: "oneOf", params: { passingSchemas: passing9 }, message: "must match exactly one schema in oneOf" }; + const err145 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/env", schemaPath: "#/definitions/stringArrayOrNull/oneOf", keyword: "oneOf", params: { passingSchemas: passing9 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err143]; + vErrors = [err145]; } else { - vErrors.push(err143); + vErrors.push(err145); } errors++; } else { - errors = _errs197; + errors = _errs201; if (vErrors !== null) { - if (_errs197) { - vErrors.length = _errs197; + if (_errs201) { + vErrors.length = _errs201; } else { vErrors = null; } } } } - if (data45.expose !== void 0) { - let data60 = data45.expose; - const _errs205 = errors; + if (data47.expose !== void 0) { + let data62 = data47.expose; + const _errs209 = errors; let valid67 = false; let passing10 = null; - const _errs206 = errors; - if (Array.isArray(data60)) { - const len9 = data60.length; + const _errs210 = errors; + if (Array.isArray(data62)) { + const len9 = data62.length; for (let i9 = 0; i9 < len9; i9++) { - let data61 = data60[i9]; - if (data61 && typeof data61 == "object" && !Array.isArray(data61)) { - if (data61.port === void 0) { - const err144 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/required", keyword: "required", params: { missingProperty: "port" }, message: "must have required property 'port'" }; + let data63 = data62[i9]; + if (data63 && typeof data63 == "object" && !Array.isArray(data63)) { + if (data63.port === void 0) { + const err146 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/required", keyword: "required", params: { missingProperty: "port" }, message: "must have required property 'port'" }; if (vErrors === null) { - vErrors = [err144]; + vErrors = [err146]; } else { - vErrors.push(err144); + vErrors.push(err146); } errors++; } - for (const key26 in data61) { + for (const key26 in data63) { if (!(key26 === "accept" || key26 === "as" || key26 === "http_options" || key26 === "port" || key26 === "proto" || key26 === "to")) { - const err145 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key26 }, message: "must NOT have additional properties" }; + const err147 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key26 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err145]; + vErrors = [err147]; } else { - vErrors.push(err145); + vErrors.push(err147); } errors++; } } - if (data61.accept !== void 0) { - let data62 = data61.accept; - if (Array.isArray(data62)) { - const len10 = data62.length; + if (data63.accept !== void 0) { + let data64 = data63.accept; + if (Array.isArray(data64)) { + const len10 = data64.length; for (let i10 = 0; i10 < len10; i10++) { - if (typeof data62[i10] !== "string") { - const err146 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/accept/" + i10, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/accept/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (typeof data64[i10] !== "string") { + const err148 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/accept/" + i10, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/accept/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err146]; + vErrors = [err148]; } else { - vErrors.push(err146); + vErrors.push(err148); } errors++; } } } else { - const err147 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/accept", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/accept/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err149 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/accept", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/accept/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err147]; + vErrors = [err149]; } else { - vErrors.push(err147); + vErrors.push(err149); } errors++; } } - if (data61.as !== void 0) { - let data64 = data61.as; - if (!(typeof data64 == "number" && (!(data64 % 1) && !isNaN(data64)))) { - const err148 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/as", schemaPath: "#/definitions/portNumber/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + if (data63.as !== void 0) { + let data66 = data63.as; + if (!(typeof data66 == "number" && (!(data66 % 1) && !isNaN(data66)))) { + const err150 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/as", schemaPath: "#/definitions/portNumber/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err148]; + vErrors = [err150]; } else { - vErrors.push(err148); + vErrors.push(err150); } errors++; } - if (typeof data64 == "number") { - if (data64 > 65535 || isNaN(data64)) { - const err149 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/as", schemaPath: "#/definitions/portNumber/maximum", keyword: "maximum", params: { comparison: "<=", limit: 65535 }, message: "must be <= 65535" }; + if (typeof data66 == "number") { + if (data66 > 65535 || isNaN(data66)) { + const err151 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/as", schemaPath: "#/definitions/portNumber/maximum", keyword: "maximum", params: { comparison: "<=", limit: 65535 }, message: "must be <= 65535" }; if (vErrors === null) { - vErrors = [err149]; + vErrors = [err151]; } else { - vErrors.push(err149); + vErrors.push(err151); } errors++; } - if (data64 < 1 || isNaN(data64)) { - const err150 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/as", schemaPath: "#/definitions/portNumber/minimum", keyword: "minimum", params: { comparison: ">=", limit: 1 }, message: "must be >= 1" }; + if (data66 < 1 || isNaN(data66)) { + const err152 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/as", schemaPath: "#/definitions/portNumber/minimum", keyword: "minimum", params: { comparison: ">=", limit: 1 }, message: "must be >= 1" }; if (vErrors === null) { - vErrors = [err150]; + vErrors = [err152]; } else { - vErrors.push(err150); + vErrors.push(err152); } errors++; } } } - if (data61.http_options !== void 0) { - let data65 = data61.http_options; - if (data65 && typeof data65 == "object" && !Array.isArray(data65)) { - for (const key27 in data65) { + if (data63.http_options !== void 0) { + let data67 = data63.http_options; + if (data67 && typeof data67 == "object" && !Array.isArray(data67)) { + for (const key27 in data67) { if (!(key27 === "max_body_size" || key27 === "next_cases" || key27 === "next_timeout" || key27 === "next_tries" || key27 === "read_timeout" || key27 === "send_timeout")) { - const err151 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key27 }, message: "must NOT have additional properties" }; + const err153 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key27 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err151]; + vErrors = [err153]; } else { - vErrors.push(err151); + vErrors.push(err153); } errors++; } } - if (data65.max_body_size !== void 0) { - let data66 = data65.max_body_size; - if (!(typeof data66 == "number" && (!(data66 % 1) && !isNaN(data66)))) { - const err152 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/max_body_size", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/max_body_size/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + if (data67.max_body_size !== void 0) { + let data68 = data67.max_body_size; + if (!(typeof data68 == "number" && (!(data68 % 1) && !isNaN(data68)))) { + const err154 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/max_body_size", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/max_body_size/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err152]; + vErrors = [err154]; } else { - vErrors.push(err152); + vErrors.push(err154); } errors++; } - if (typeof data66 == "number") { - if (data66 > 104857600 || isNaN(data66)) { - const err153 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/max_body_size", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/max_body_size/maximum", keyword: "maximum", params: { comparison: "<=", limit: 104857600 }, message: "must be <= 104857600" }; + if (typeof data68 == "number") { + if (data68 > 104857600 || isNaN(data68)) { + const err155 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/max_body_size", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/max_body_size/maximum", keyword: "maximum", params: { comparison: "<=", limit: 104857600 }, message: "must be <= 104857600" }; if (vErrors === null) { - vErrors = [err153]; + vErrors = [err155]; } else { - vErrors.push(err153); + vErrors.push(err155); } errors++; } - if (data66 < 0 || isNaN(data66)) { - const err154 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/max_body_size", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/max_body_size/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; + if (data68 < 0 || isNaN(data68)) { + const err156 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/max_body_size", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/max_body_size/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; if (vErrors === null) { - vErrors = [err154]; + vErrors = [err156]; } else { - vErrors.push(err154); + vErrors.push(err156); } errors++; } } } - if (data65.next_cases !== void 0) { - let data67 = data65.next_cases; - const _errs224 = errors; + if (data67.next_cases !== void 0) { + let data69 = data67.next_cases; + const _errs228 = errors; let valid75 = false; let passing11 = null; - const _errs225 = errors; - if (Array.isArray(data67)) { - if (data67.length > 1) { - const err155 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/maxItems", keyword: "maxItems", params: { limit: 1 }, message: "must NOT have more than 1 items" }; + const _errs229 = errors; + if (Array.isArray(data69)) { + if (data69.length > 1) { + const err157 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/maxItems", keyword: "maxItems", params: { limit: 1 }, message: "must NOT have more than 1 items" }; if (vErrors === null) { - vErrors = [err155]; + vErrors = [err157]; } else { - vErrors.push(err155); + vErrors.push(err157); } errors++; } - if (data67.length < 1) { - const err156 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/minItems", keyword: "minItems", params: { limit: 1 }, message: "must NOT have fewer than 1 items" }; + if (data69.length < 1) { + const err158 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/minItems", keyword: "minItems", params: { limit: 1 }, message: "must NOT have fewer than 1 items" }; if (vErrors === null) { - vErrors = [err156]; + vErrors = [err158]; } else { - vErrors.push(err156); + vErrors.push(err158); } errors++; } - const len11 = data67.length; + const len11 = data69.length; for (let i11 = 0; i11 < len11; i11++) { - let data68 = data67[i11]; - if (typeof data68 !== "string") { - const err157 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i11, schemaPath: "#/definitions/httpErrorCode/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + let data70 = data69[i11]; + if (typeof data70 !== "string") { + const err159 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i11, schemaPath: "#/definitions/httpErrorCode/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err157]; + vErrors = [err159]; } else { - vErrors.push(err157); + vErrors.push(err159); } errors++; } - if (!(data68 === "error" || data68 === "timeout" || data68 === "500" || data68 === "502" || data68 === "503" || data68 === "504" || data68 === "403" || data68 === "404" || data68 === "429" || data68 === "off")) { - const err158 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i11, schemaPath: "#/definitions/httpErrorCode/enum", keyword: "enum", params: { allowedValues: schema40.enum }, message: "must be equal to one of the allowed values" }; + if (!(data70 === "error" || data70 === "timeout" || data70 === "500" || data70 === "502" || data70 === "503" || data70 === "504" || data70 === "403" || data70 === "404" || data70 === "429" || data70 === "off")) { + const err160 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i11, schemaPath: "#/definitions/httpErrorCode/enum", keyword: "enum", params: { allowedValues: schema40.enum }, message: "must be equal to one of the allowed values" }; if (vErrors === null) { - vErrors = [err158]; + vErrors = [err160]; } else { - vErrors.push(err158); + vErrors.push(err160); } errors++; } } - const _errs230 = errors; - const len12 = data67.length; + const _errs234 = errors; + const len12 = data69.length; for (let i12 = 0; i12 < len12; i12++) { - const _errs231 = errors; - if ("off" !== data67[i12]) { - const err159 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i12, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/contains/const", keyword: "const", params: { allowedValue: "off" }, message: "must be equal to constant" }; + const _errs235 = errors; + if ("off" !== data69[i12]) { + const err161 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i12, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/contains/const", keyword: "const", params: { allowedValue: "off" }, message: "must be equal to constant" }; if (vErrors === null) { - vErrors = [err159]; + vErrors = [err161]; } else { - vErrors.push(err159); + vErrors.push(err161); } errors++; } - var valid79 = _errs231 === errors; + var valid79 = _errs235 === errors; if (valid79) { break; } } if (!valid79) { - const err160 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/contains", keyword: "contains", params: { minContains: 1 }, message: "must contain at least 1 valid item(s)" }; + const err162 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/contains", keyword: "contains", params: { minContains: 1 }, message: "must contain at least 1 valid item(s)" }; if (vErrors === null) { - vErrors = [err160]; + vErrors = [err162]; } else { - vErrors.push(err160); + vErrors.push(err162); } errors++; } else { - errors = _errs230; + errors = _errs234; if (vErrors !== null) { - if (_errs230) { - vErrors.length = _errs230; + if (_errs234) { + vErrors.length = _errs234; } else { vErrors = null; } } } } else { - const err161 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err163 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err161]; + vErrors = [err163]; } else { - vErrors.push(err161); + vErrors.push(err163); } errors++; } - var _valid13 = _errs225 === errors; + var _valid13 = _errs229 === errors; if (_valid13) { valid75 = true; passing11 = 0; } - const _errs232 = errors; - const _errs234 = errors; - const _errs235 = errors; - if (Array.isArray(data67)) { - const _errs236 = errors; - const len13 = data67.length; + const _errs236 = errors; + const _errs238 = errors; + const _errs239 = errors; + if (Array.isArray(data69)) { + const _errs240 = errors; + const len13 = data69.length; for (let i13 = 0; i13 < len13; i13++) { - const _errs237 = errors; - if ("off" !== data67[i13]) { - const err162 = {}; + const _errs241 = errors; + if ("off" !== data69[i13]) { + const err164 = {}; if (vErrors === null) { - vErrors = [err162]; + vErrors = [err164]; } else { - vErrors.push(err162); + vErrors.push(err164); } errors++; } - var valid81 = _errs237 === errors; + var valid81 = _errs241 === errors; if (valid81) { break; } } if (!valid81) { - const err163 = {}; + const err165 = {}; if (vErrors === null) { - vErrors = [err163]; + vErrors = [err165]; } else { - vErrors.push(err163); + vErrors.push(err165); } errors++; } else { - errors = _errs236; + errors = _errs240; if (vErrors !== null) { - if (_errs236) { - vErrors.length = _errs236; + if (_errs240) { + vErrors.length = _errs240; } else { vErrors = null; } } } } - var valid80 = _errs235 === errors; + var valid80 = _errs239 === errors; if (valid80) { - const err164 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/1/not", keyword: "not", params: {}, message: "must NOT be valid" }; + const err166 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/1/not", keyword: "not", params: {}, message: "must NOT be valid" }; if (vErrors === null) { - vErrors = [err164]; + vErrors = [err166]; } else { - vErrors.push(err164); + vErrors.push(err166); } errors++; } else { - errors = _errs234; + errors = _errs238; if (vErrors !== null) { - if (_errs234) { - vErrors.length = _errs234; + if (_errs238) { + vErrors.length = _errs238; } else { vErrors = null; } } } - if (Array.isArray(data67)) { - const len14 = data67.length; + if (Array.isArray(data69)) { + const len14 = data69.length; for (let i14 = 0; i14 < len14; i14++) { - let data71 = data67[i14]; - if (typeof data71 !== "string") { - const err165 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i14, schemaPath: "#/definitions/httpErrorCode/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + let data73 = data69[i14]; + if (typeof data73 !== "string") { + const err167 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i14, schemaPath: "#/definitions/httpErrorCode/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err165]; + vErrors = [err167]; } else { - vErrors.push(err165); + vErrors.push(err167); } errors++; } - if (!(data71 === "error" || data71 === "timeout" || data71 === "500" || data71 === "502" || data71 === "503" || data71 === "504" || data71 === "403" || data71 === "404" || data71 === "429" || data71 === "off")) { - const err166 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i14, schemaPath: "#/definitions/httpErrorCode/enum", keyword: "enum", params: { allowedValues: schema40.enum }, message: "must be equal to one of the allowed values" }; + if (!(data73 === "error" || data73 === "timeout" || data73 === "500" || data73 === "502" || data73 === "503" || data73 === "504" || data73 === "403" || data73 === "404" || data73 === "429" || data73 === "off")) { + const err168 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i14, schemaPath: "#/definitions/httpErrorCode/enum", keyword: "enum", params: { allowedValues: schema40.enum }, message: "must be equal to one of the allowed values" }; if (vErrors === null) { - vErrors = [err166]; + vErrors = [err168]; } else { - vErrors.push(err166); + vErrors.push(err168); } errors++; } } } else { - const err167 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/1/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err169 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/1/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err167]; + vErrors = [err169]; } else { - vErrors.push(err167); + vErrors.push(err169); } errors++; } - var _valid13 = _errs232 === errors; + var _valid13 = _errs236 === errors; if (_valid13 && valid75) { valid75 = false; passing11 = [passing11, 1]; @@ -2945,237 +2983,237 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } if (!valid75) { - const err168 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf", keyword: "oneOf", params: { passingSchemas: passing11 }, message: "must match exactly one schema in oneOf" }; + const err170 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf", keyword: "oneOf", params: { passingSchemas: passing11 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err168]; + vErrors = [err170]; } else { - vErrors.push(err168); + vErrors.push(err170); } errors++; } else { - errors = _errs224; + errors = _errs228; if (vErrors !== null) { - if (_errs224) { - vErrors.length = _errs224; + if (_errs228) { + vErrors.length = _errs228; } else { vErrors = null; } } } } - if (data65.next_timeout !== void 0) { - let data72 = data65.next_timeout; - if (!(typeof data72 == "number" && (!(data72 % 1) && !isNaN(data72)))) { - const err169 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_timeout/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + if (data67.next_timeout !== void 0) { + let data74 = data67.next_timeout; + if (!(typeof data74 == "number" && (!(data74 % 1) && !isNaN(data74)))) { + const err171 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_timeout/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err169]; + vErrors = [err171]; } else { - vErrors.push(err169); + vErrors.push(err171); } errors++; } - if (typeof data72 == "number") { - if (data72 < 0 || isNaN(data72)) { - const err170 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_timeout/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; + if (typeof data74 == "number") { + if (data74 < 0 || isNaN(data74)) { + const err172 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_timeout/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; if (vErrors === null) { - vErrors = [err170]; + vErrors = [err172]; } else { - vErrors.push(err170); + vErrors.push(err172); } errors++; } } } - if (data65.next_tries !== void 0) { - let data73 = data65.next_tries; - if (!(typeof data73 == "number" && (!(data73 % 1) && !isNaN(data73)))) { - const err171 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_tries", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_tries/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + if (data67.next_tries !== void 0) { + let data75 = data67.next_tries; + if (!(typeof data75 == "number" && (!(data75 % 1) && !isNaN(data75)))) { + const err173 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_tries", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_tries/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err171]; + vErrors = [err173]; } else { - vErrors.push(err171); + vErrors.push(err173); } errors++; } - if (typeof data73 == "number") { - if (data73 < 0 || isNaN(data73)) { - const err172 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_tries", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_tries/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; + if (typeof data75 == "number") { + if (data75 < 0 || isNaN(data75)) { + const err174 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_tries", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_tries/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; if (vErrors === null) { - vErrors = [err172]; + vErrors = [err174]; } else { - vErrors.push(err172); + vErrors.push(err174); } errors++; } } } - if (data65.read_timeout !== void 0) { - let data74 = data65.read_timeout; - if (!(typeof data74 == "number" && (!(data74 % 1) && !isNaN(data74)))) { - const err173 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/read_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/read_timeout/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + if (data67.read_timeout !== void 0) { + let data76 = data67.read_timeout; + if (!(typeof data76 == "number" && (!(data76 % 1) && !isNaN(data76)))) { + const err175 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/read_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/read_timeout/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err173]; + vErrors = [err175]; } else { - vErrors.push(err173); + vErrors.push(err175); } errors++; } - if (typeof data74 == "number") { - if (data74 > 6e4 || isNaN(data74)) { - const err174 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/read_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/read_timeout/maximum", keyword: "maximum", params: { comparison: "<=", limit: 6e4 }, message: "must be <= 60000" }; + if (typeof data76 == "number") { + if (data76 > 6e4 || isNaN(data76)) { + const err176 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/read_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/read_timeout/maximum", keyword: "maximum", params: { comparison: "<=", limit: 6e4 }, message: "must be <= 60000" }; if (vErrors === null) { - vErrors = [err174]; + vErrors = [err176]; } else { - vErrors.push(err174); + vErrors.push(err176); } errors++; } - if (data74 < 0 || isNaN(data74)) { - const err175 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/read_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/read_timeout/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; + if (data76 < 0 || isNaN(data76)) { + const err177 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/read_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/read_timeout/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; if (vErrors === null) { - vErrors = [err175]; + vErrors = [err177]; } else { - vErrors.push(err175); + vErrors.push(err177); } errors++; } } } - if (data65.send_timeout !== void 0) { - let data75 = data65.send_timeout; - if (!(typeof data75 == "number" && (!(data75 % 1) && !isNaN(data75)))) { - const err176 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/send_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/send_timeout/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + if (data67.send_timeout !== void 0) { + let data77 = data67.send_timeout; + if (!(typeof data77 == "number" && (!(data77 % 1) && !isNaN(data77)))) { + const err178 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/send_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/send_timeout/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err176]; + vErrors = [err178]; } else { - vErrors.push(err176); + vErrors.push(err178); } errors++; } - if (typeof data75 == "number") { - if (data75 > 6e4 || isNaN(data75)) { - const err177 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/send_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/send_timeout/maximum", keyword: "maximum", params: { comparison: "<=", limit: 6e4 }, message: "must be <= 60000" }; + if (typeof data77 == "number") { + if (data77 > 6e4 || isNaN(data77)) { + const err179 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/send_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/send_timeout/maximum", keyword: "maximum", params: { comparison: "<=", limit: 6e4 }, message: "must be <= 60000" }; if (vErrors === null) { - vErrors = [err177]; + vErrors = [err179]; } else { - vErrors.push(err177); + vErrors.push(err179); } errors++; } - if (data75 < 0 || isNaN(data75)) { - const err178 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/send_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/send_timeout/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; + if (data77 < 0 || isNaN(data77)) { + const err180 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/send_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/send_timeout/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; if (vErrors === null) { - vErrors = [err178]; + vErrors = [err180]; } else { - vErrors.push(err178); + vErrors.push(err180); } errors++; } } } } else { - const err179 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err181 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err179]; + vErrors = [err181]; } else { - vErrors.push(err179); + vErrors.push(err181); } errors++; } } - if (data61.port !== void 0) { - let data76 = data61.port; - if (!(typeof data76 == "number" && (!(data76 % 1) && !isNaN(data76)))) { - const err180 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/port", schemaPath: "#/definitions/portNumber/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + if (data63.port !== void 0) { + let data78 = data63.port; + if (!(typeof data78 == "number" && (!(data78 % 1) && !isNaN(data78)))) { + const err182 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/port", schemaPath: "#/definitions/portNumber/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err180]; + vErrors = [err182]; } else { - vErrors.push(err180); + vErrors.push(err182); } errors++; } - if (typeof data76 == "number") { - if (data76 > 65535 || isNaN(data76)) { - const err181 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/port", schemaPath: "#/definitions/portNumber/maximum", keyword: "maximum", params: { comparison: "<=", limit: 65535 }, message: "must be <= 65535" }; + if (typeof data78 == "number") { + if (data78 > 65535 || isNaN(data78)) { + const err183 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/port", schemaPath: "#/definitions/portNumber/maximum", keyword: "maximum", params: { comparison: "<=", limit: 65535 }, message: "must be <= 65535" }; if (vErrors === null) { - vErrors = [err181]; + vErrors = [err183]; } else { - vErrors.push(err181); + vErrors.push(err183); } errors++; } - if (data76 < 1 || isNaN(data76)) { - const err182 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/port", schemaPath: "#/definitions/portNumber/minimum", keyword: "minimum", params: { comparison: ">=", limit: 1 }, message: "must be >= 1" }; + if (data78 < 1 || isNaN(data78)) { + const err184 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/port", schemaPath: "#/definitions/portNumber/minimum", keyword: "minimum", params: { comparison: ">=", limit: 1 }, message: "must be >= 1" }; if (vErrors === null) { - vErrors = [err182]; + vErrors = [err184]; } else { - vErrors.push(err182); + vErrors.push(err184); } errors++; } } } - if (data61.proto !== void 0) { - let data77 = data61.proto; - if (typeof data77 !== "string") { - const err183 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/proto", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/proto/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (data63.proto !== void 0) { + let data79 = data63.proto; + if (typeof data79 !== "string") { + const err185 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/proto", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/proto/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err183]; + vErrors = [err185]; } else { - vErrors.push(err183); + vErrors.push(err185); } errors++; } - if (!(data77 === "TCP" || data77 === "UDP" || data77 === "tcp" || data77 === "udp")) { - const err184 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/proto", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/proto/enum", keyword: "enum", params: { allowedValues: schema28.properties.services.additionalProperties.properties.expose.oneOf[0].items.properties.proto.enum }, message: "must be equal to one of the allowed values" }; + if (!(data79 === "TCP" || data79 === "UDP" || data79 === "tcp" || data79 === "udp")) { + const err186 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/proto", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/proto/enum", keyword: "enum", params: { allowedValues: schema28.properties.services.additionalProperties.properties.expose.oneOf[0].items.properties.proto.enum }, message: "must be equal to one of the allowed values" }; if (vErrors === null) { - vErrors = [err184]; + vErrors = [err186]; } else { - vErrors.push(err184); + vErrors.push(err186); } errors++; } } - if (data61.to !== void 0) { - let data78 = data61.to; - if (Array.isArray(data78)) { - const len15 = data78.length; + if (data63.to !== void 0) { + let data80 = data63.to; + if (Array.isArray(data80)) { + const len15 = data80.length; for (let i15 = 0; i15 < len15; i15++) { - let data79 = data78[i15]; - const _errs260 = errors; + let data81 = data80[i15]; + const _errs264 = errors; let valid90 = true; - const _errs261 = errors; - if (data79 && typeof data79 == "object" && !Array.isArray(data79)) { + const _errs265 = errors; + if (data81 && typeof data81 == "object" && !Array.isArray(data81)) { let missing2; - if (data79.ip === void 0 && (missing2 = "ip")) { - const err185 = {}; + if (data81.ip === void 0 && (missing2 = "ip")) { + const err187 = {}; if (vErrors === null) { - vErrors = [err185]; + vErrors = [err187]; } else { - vErrors.push(err185); + vErrors.push(err187); } errors++; } else { - if (data79.ip !== void 0) { - let data80 = data79.ip; - const _errs262 = errors; - if (errors === _errs262) { - if (typeof data80 === "string") { - if (func2(data80) < 1) { - const err186 = {}; + if (data81.ip !== void 0) { + let data82 = data81.ip; + const _errs266 = errors; + if (errors === _errs266) { + if (typeof data82 === "string") { + if (func2(data82) < 1) { + const err188 = {}; if (vErrors === null) { - vErrors = [err186]; + vErrors = [err188]; } else { - vErrors.push(err186); + vErrors.push(err188); } errors++; } } else { - const err187 = {}; + const err189 = {}; if (vErrors === null) { - vErrors = [err187]; + vErrors = [err189]; } else { - vErrors.push(err187); + vErrors.push(err189); } errors++; } @@ -3183,162 +3221,162 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } } - var _valid14 = _errs261 === errors; - errors = _errs260; + var _valid14 = _errs265 === errors; + errors = _errs264; if (vErrors !== null) { - if (_errs260) { - vErrors.length = _errs260; + if (_errs264) { + vErrors.length = _errs264; } else { vErrors = null; } } if (_valid14) { - const _errs264 = errors; - if (data79 && typeof data79 == "object" && !Array.isArray(data79)) { - if (data79.global === void 0) { - const err188 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/definitions/exposeToWithIpEnforcesGlobal/then/required", keyword: "required", params: { missingProperty: "global" }, message: "must have required property 'global'" }; + const _errs268 = errors; + if (data81 && typeof data81 == "object" && !Array.isArray(data81)) { + if (data81.global === void 0) { + const err190 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/definitions/exposeToWithIpEnforcesGlobal/then/required", keyword: "required", params: { missingProperty: "global" }, message: "must have required property 'global'" }; if (vErrors === null) { - vErrors = [err188]; + vErrors = [err190]; } else { - vErrors.push(err188); + vErrors.push(err190); } errors++; } - if (data79.global !== void 0) { - if (true !== data79.global) { - const err189 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/global", schemaPath: "#/definitions/exposeToWithIpEnforcesGlobal/then/properties/global/const", keyword: "const", params: { allowedValue: true }, message: "must be equal to constant" }; + if (data81.global !== void 0) { + if (true !== data81.global) { + const err191 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/global", schemaPath: "#/definitions/exposeToWithIpEnforcesGlobal/then/properties/global/const", keyword: "const", params: { allowedValue: true }, message: "must be equal to constant" }; if (vErrors === null) { - vErrors = [err189]; + vErrors = [err191]; } else { - vErrors.push(err189); + vErrors.push(err191); } errors++; } } } - var _valid14 = _errs264 === errors; + var _valid14 = _errs268 === errors; valid90 = _valid14; } if (!valid90) { - const err190 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/definitions/exposeToWithIpEnforcesGlobal/if", keyword: "if", params: { failingKeyword: "then" }, message: 'must match "then" schema' }; + const err192 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/definitions/exposeToWithIpEnforcesGlobal/if", keyword: "if", params: { failingKeyword: "then" }, message: 'must match "then" schema' }; if (vErrors === null) { - vErrors = [err190]; + vErrors = [err192]; } else { - vErrors.push(err190); + vErrors.push(err192); } errors++; } - if (data79 && typeof data79 == "object" && !Array.isArray(data79)) { - for (const key28 in data79) { + if (data81 && typeof data81 == "object" && !Array.isArray(data81)) { + for (const key28 in data81) { if (!(key28 === "global" || key28 === "ip" || key28 === "service")) { - const err191 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key28 }, message: "must NOT have additional properties" }; + const err193 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key28 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err191]; + vErrors = [err193]; } else { - vErrors.push(err191); + vErrors.push(err193); } errors++; } } - if (data79.global !== void 0) { - if (typeof data79.global !== "boolean") { - const err192 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/global", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/global/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" }; + if (data81.global !== void 0) { + if (typeof data81.global !== "boolean") { + const err194 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/global", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/global/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" }; if (vErrors === null) { - vErrors = [err192]; + vErrors = [err194]; } else { - vErrors.push(err192); + vErrors.push(err194); } errors++; } } - if (data79.ip !== void 0) { - let data83 = data79.ip; - if (typeof data83 === "string") { - if (func2(data83) < 1) { - const err193 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/ip", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/ip/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; + if (data81.ip !== void 0) { + let data85 = data81.ip; + if (typeof data85 === "string") { + if (func2(data85) < 1) { + const err195 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/ip", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/ip/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; if (vErrors === null) { - vErrors = [err193]; + vErrors = [err195]; } else { - vErrors.push(err193); + vErrors.push(err195); } errors++; } } else { - const err194 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/ip", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/ip/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err196 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/ip", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/ip/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err194]; + vErrors = [err196]; } else { - vErrors.push(err194); + vErrors.push(err196); } errors++; } } - if (data79.service !== void 0) { - if (typeof data79.service !== "string") { - const err195 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/service", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/service/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (data81.service !== void 0) { + if (typeof data81.service !== "string") { + const err197 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/service", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/service/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err195]; + vErrors = [err197]; } else { - vErrors.push(err195); + vErrors.push(err197); } errors++; } } } else { - const err196 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err198 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err196]; + vErrors = [err198]; } else { - vErrors.push(err196); + vErrors.push(err198); } errors++; } } } else { - const err197 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err199 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err197]; + vErrors = [err199]; } else { - vErrors.push(err197); + vErrors.push(err199); } errors++; } } } else { - const err198 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err200 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err198]; + vErrors = [err200]; } else { - vErrors.push(err198); + vErrors.push(err200); } errors++; } } } else { - const err199 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err201 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err199]; + vErrors = [err201]; } else { - vErrors.push(err199); + vErrors.push(err201); } errors++; } - var _valid12 = _errs206 === errors; + var _valid12 = _errs210 === errors; if (_valid12) { valid67 = true; passing10 = 0; } - const _errs273 = errors; - if (data60 !== null) { - const err200 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; + const _errs277 = errors; + if (data62 !== null) { + const err202 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; if (vErrors === null) { - vErrors = [err200]; + vErrors = [err202]; } else { - vErrors.push(err200); + vErrors.push(err202); } errors++; } - var _valid12 = _errs273 === errors; + var _valid12 = _errs277 === errors; if (_valid12 && valid67) { valid67 = false; passing10 = [passing10, 1]; @@ -3349,310 +3387,310 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } if (!valid67) { - const err201 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf", keyword: "oneOf", params: { passingSchemas: passing10 }, message: "must match exactly one schema in oneOf" }; + const err203 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf", keyword: "oneOf", params: { passingSchemas: passing10 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err201]; + vErrors = [err203]; } else { - vErrors.push(err201); + vErrors.push(err203); } errors++; } else { - errors = _errs205; + errors = _errs209; if (vErrors !== null) { - if (_errs205) { - vErrors.length = _errs205; + if (_errs209) { + vErrors.length = _errs209; } else { vErrors = null; } } } } - if (data45.image !== void 0) { - let data85 = data45.image; - if (typeof data85 === "string") { - if (func2(data85) < 1) { - const err202 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/image", schemaPath: "#/properties/services/additionalProperties/properties/image/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; + if (data47.image !== void 0) { + let data87 = data47.image; + if (typeof data87 === "string") { + if (func2(data87) < 1) { + const err204 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/image", schemaPath: "#/properties/services/additionalProperties/properties/image/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; if (vErrors === null) { - vErrors = [err202]; + vErrors = [err204]; } else { - vErrors.push(err202); + vErrors.push(err204); } errors++; } } else { - const err203 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/image", schemaPath: "#/properties/services/additionalProperties/properties/image/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err205 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/image", schemaPath: "#/properties/services/additionalProperties/properties/image/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err203]; + vErrors = [err205]; } else { - vErrors.push(err203); + vErrors.push(err205); } errors++; } } - if (data45.params !== void 0) { - let data86 = data45.params; - if (data86 && typeof data86 == "object" && !Array.isArray(data86)) { - for (const key29 in data86) { + if (data47.params !== void 0) { + let data88 = data47.params; + if (data88 && typeof data88 == "object" && !Array.isArray(data88)) { + for (const key29 in data88) { if (!(key29 === "storage" || key29 === "permissions")) { - const err204 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params", schemaPath: "#/properties/services/additionalProperties/properties/params/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key29 }, message: "must NOT have additional properties" }; + const err206 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params", schemaPath: "#/properties/services/additionalProperties/properties/params/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key29 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err204]; + vErrors = [err206]; } else { - vErrors.push(err204); + vErrors.push(err206); } errors++; } } - if (data86.storage !== void 0) { - let data87 = data86.storage; - if (data87 && typeof data87 == "object" && !Array.isArray(data87)) { - for (const key30 in data87) { - let data88 = data87[key30]; - if (data88 && typeof data88 == "object" && !Array.isArray(data88)) { - for (const key31 in data88) { + if (data88.storage !== void 0) { + let data89 = data88.storage; + if (data89 && typeof data89 == "object" && !Array.isArray(data89)) { + for (const key30 in data89) { + let data90 = data89[key30]; + if (data90 && typeof data90 == "object" && !Array.isArray(data90)) { + for (const key31 in data90) { if (!(key31 === "mount" || key31 === "readOnly")) { - const err205 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key31 }, message: "must NOT have additional properties" }; + const err207 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key31 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err205]; + vErrors = [err207]; } else { - vErrors.push(err205); + vErrors.push(err207); } errors++; } } - if (data88.mount !== void 0) { - let data89 = data88.mount; - if (typeof data89 === "string") { - if (func2(data89) < 1) { - const err206 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1") + "/mount", schemaPath: "#/definitions/absolutePath/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; + if (data90.mount !== void 0) { + let data91 = data90.mount; + if (typeof data91 === "string") { + if (func2(data91) < 1) { + const err208 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1") + "/mount", schemaPath: "#/definitions/absolutePath/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; if (vErrors === null) { - vErrors = [err206]; + vErrors = [err208]; } else { - vErrors.push(err206); + vErrors.push(err208); } errors++; } - if (!pattern11.test(data89)) { - const err207 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1") + "/mount", schemaPath: "#/definitions/absolutePath/pattern", keyword: "pattern", params: { pattern: "^/" }, message: 'must match pattern "^/"' }; + if (!pattern11.test(data91)) { + const err209 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1") + "/mount", schemaPath: "#/definitions/absolutePath/pattern", keyword: "pattern", params: { pattern: "^/" }, message: 'must match pattern "^/"' }; if (vErrors === null) { - vErrors = [err207]; + vErrors = [err209]; } else { - vErrors.push(err207); + vErrors.push(err209); } errors++; } } else { - const err208 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1") + "/mount", schemaPath: "#/definitions/absolutePath/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err210 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1") + "/mount", schemaPath: "#/definitions/absolutePath/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err208]; + vErrors = [err210]; } else { - vErrors.push(err208); + vErrors.push(err210); } errors++; } } - if (data88.readOnly !== void 0) { - if (typeof data88.readOnly !== "boolean") { - const err209 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1") + "/readOnly", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/additionalProperties/properties/readOnly/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" }; + if (data90.readOnly !== void 0) { + if (typeof data90.readOnly !== "boolean") { + const err211 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1") + "/readOnly", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/additionalProperties/properties/readOnly/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" }; if (vErrors === null) { - vErrors = [err209]; + vErrors = [err211]; } else { - vErrors.push(err209); + vErrors.push(err211); } errors++; } } } else { - const err210 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err212 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err210]; + vErrors = [err212]; } else { - vErrors.push(err210); + vErrors.push(err212); } errors++; } } } else { - const err211 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err213 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err211]; + vErrors = [err213]; } else { - vErrors.push(err211); + vErrors.push(err213); } errors++; } } - if (data86.permissions !== void 0) { - let data91 = data86.permissions; - if (data91 && typeof data91 == "object" && !Array.isArray(data91)) { - for (const key32 in data91) { + if (data88.permissions !== void 0) { + let data93 = data88.permissions; + if (data93 && typeof data93 == "object" && !Array.isArray(data93)) { + for (const key32 in data93) { if (!(key32 === "read")) { - const err212 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key32 }, message: "must NOT have additional properties" }; + const err214 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key32 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err212]; + vErrors = [err214]; } else { - vErrors.push(err212); + vErrors.push(err214); } errors++; } } - if (data91.read !== void 0) { - let data92 = data91.read; - if (Array.isArray(data92)) { - const len16 = data92.length; + if (data93.read !== void 0) { + let data94 = data93.read; + if (Array.isArray(data94)) { + const len16 = data94.length; for (let i16 = 0; i16 < len16; i16++) { - let data93 = data92[i16]; - if (typeof data93 !== "string") { - const err213 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions/read/" + i16, schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/properties/read/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + let data95 = data94[i16]; + if (typeof data95 !== "string") { + const err215 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions/read/" + i16, schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/properties/read/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err213]; + vErrors = [err215]; } else { - vErrors.push(err213); + vErrors.push(err215); } errors++; } - if (!(data93 === "deployment" || data93 === "logs" || data93 === "events")) { - const err214 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions/read/" + i16, schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/properties/read/items/enum", keyword: "enum", params: { allowedValues: schema28.properties.services.additionalProperties.properties.params.properties.permissions.properties.read.items.enum }, message: "must be equal to one of the allowed values" }; + if (!(data95 === "deployment" || data95 === "logs" || data95 === "events")) { + const err216 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions/read/" + i16, schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/properties/read/items/enum", keyword: "enum", params: { allowedValues: schema28.properties.services.additionalProperties.properties.params.properties.permissions.properties.read.items.enum }, message: "must be equal to one of the allowed values" }; if (vErrors === null) { - vErrors = [err214]; + vErrors = [err216]; } else { - vErrors.push(err214); + vErrors.push(err216); } errors++; } } } else { - const err215 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions/read", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/properties/read/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err217 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions/read", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/properties/read/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err215]; + vErrors = [err217]; } else { - vErrors.push(err215); + vErrors.push(err217); } errors++; } } } else { - const err216 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err218 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err216]; + vErrors = [err218]; } else { - vErrors.push(err216); + vErrors.push(err218); } errors++; } } } else { - const err217 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params", schemaPath: "#/properties/services/additionalProperties/properties/params/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err219 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params", schemaPath: "#/properties/services/additionalProperties/properties/params/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err217]; + vErrors = [err219]; } else { - vErrors.push(err217); + vErrors.push(err219); } errors++; } } } else { - const err218 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err220 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err218]; + vErrors = [err220]; } else { - vErrors.push(err218); + vErrors.push(err220); } errors++; } } } else { - const err219 = { instancePath: instancePath + "/services", schemaPath: "#/properties/services/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err221 = { instancePath: instancePath + "/services", schemaPath: "#/properties/services/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err219]; + vErrors = [err221]; } else { - vErrors.push(err219); + vErrors.push(err221); } errors++; } } if (data.reclamation !== void 0) { - let data94 = data.reclamation; - if (data94 && typeof data94 == "object" && !Array.isArray(data94)) { - if (data94.min_window === void 0) { - const err220 = { instancePath: instancePath + "/reclamation", schemaPath: "#/properties/reclamation/required", keyword: "required", params: { missingProperty: "min_window" }, message: "must have required property 'min_window'" }; + let data96 = data.reclamation; + if (data96 && typeof data96 == "object" && !Array.isArray(data96)) { + if (data96.min_window === void 0) { + const err222 = { instancePath: instancePath + "/reclamation", schemaPath: "#/properties/reclamation/required", keyword: "required", params: { missingProperty: "min_window" }, message: "must have required property 'min_window'" }; if (vErrors === null) { - vErrors = [err220]; + vErrors = [err222]; } else { - vErrors.push(err220); + vErrors.push(err222); } errors++; } - for (const key33 in data94) { + for (const key33 in data96) { if (!(key33 === "min_window")) { - const err221 = { instancePath: instancePath + "/reclamation", schemaPath: "#/properties/reclamation/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key33 }, message: "must NOT have additional properties" }; + const err223 = { instancePath: instancePath + "/reclamation", schemaPath: "#/properties/reclamation/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key33 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err221]; + vErrors = [err223]; } else { - vErrors.push(err221); + vErrors.push(err223); } errors++; } } - if (data94.min_window !== void 0) { - let data95 = data94.min_window; - if (typeof data95 === "string") { - if (!pattern12.test(data95)) { - const err222 = { instancePath: instancePath + "/reclamation/min_window", schemaPath: "#/properties/reclamation/properties/min_window/pattern", keyword: "pattern", params: { pattern: "^[1-9][0-9]*(s|m|h)$" }, message: 'must match pattern "^[1-9][0-9]*(s|m|h)$"' }; + if (data96.min_window !== void 0) { + let data97 = data96.min_window; + if (typeof data97 === "string") { + if (!pattern12.test(data97)) { + const err224 = { instancePath: instancePath + "/reclamation/min_window", schemaPath: "#/properties/reclamation/properties/min_window/pattern", keyword: "pattern", params: { pattern: "^[1-9][0-9]*(s|m|h)$" }, message: 'must match pattern "^[1-9][0-9]*(s|m|h)$"' }; if (vErrors === null) { - vErrors = [err222]; + vErrors = [err224]; } else { - vErrors.push(err222); + vErrors.push(err224); } errors++; } } else { - const err223 = { instancePath: instancePath + "/reclamation/min_window", schemaPath: "#/properties/reclamation/properties/min_window/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err225 = { instancePath: instancePath + "/reclamation/min_window", schemaPath: "#/properties/reclamation/properties/min_window/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err223]; + vErrors = [err225]; } else { - vErrors.push(err223); + vErrors.push(err225); } errors++; } } } else { - const err224 = { instancePath: instancePath + "/reclamation", schemaPath: "#/properties/reclamation/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err226 = { instancePath: instancePath + "/reclamation", schemaPath: "#/properties/reclamation/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err224]; + vErrors = [err226]; } else { - vErrors.push(err224); + vErrors.push(err226); } errors++; } } if (data.version !== void 0) { - let data96 = data.version; - if (typeof data96 !== "string") { - const err225 = { instancePath: instancePath + "/version", schemaPath: "#/properties/version/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + let data98 = data.version; + if (typeof data98 !== "string") { + const err227 = { instancePath: instancePath + "/version", schemaPath: "#/properties/version/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err225]; + vErrors = [err227]; } else { - vErrors.push(err225); + vErrors.push(err227); } errors++; } - if (!(data96 === "2.0" || data96 === "2.1")) { - const err226 = { instancePath: instancePath + "/version", schemaPath: "#/properties/version/enum", keyword: "enum", params: { allowedValues: schema28.properties.version.enum }, message: "must be equal to one of the allowed values" }; + if (!(data98 === "2.0" || data98 === "2.1")) { + const err228 = { instancePath: instancePath + "/version", schemaPath: "#/properties/version/enum", keyword: "enum", params: { allowedValues: schema28.properties.version.enum }, message: "must be equal to one of the allowed values" }; if (vErrors === null) { - vErrors = [err226]; + vErrors = [err228]; } else { - vErrors.push(err226); + vErrors.push(err228); } errors++; } } } else { - const err227 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err229 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err227]; + vErrors = [err229]; } else { - vErrors.push(err227); + vErrors.push(err229); } errors++; } From 5bf26e03333955ef5b174dc66a9ed1099729bdb5 Mon Sep 17 00:00:00 2001 From: zblocker64 Date: Tue, 9 Jun 2026 10:11:23 -0500 Subject: [PATCH 05/10] feat(ts): mirror Go's RDMA cross-field validation in validateSDL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TS validateSDL had no RDMA semantic checks; tenants using the TS SDK could broadcast SDLs that the Go parser would reject outright (chain doesn't validate SDL semantics, so the failure would surface later as broken pods). Adds a #validateRDMA method on SDLValidator, called from validate() after the per-service loop. Mirrors the Go-side validateRDMA in go/sdl/v2.go and enforces the same three cross-field rules: 1. A profile with gpu.attributes.rdma=true must be deployed under a placement whose attributes require capabilities/rdma=true. 2. A profile with gpu.attributes.rdma_group set must also have gpu.attributes.rdma=true on the same profile. 3. Within one deployment (placement), if any profile sets rdma_group, every rdma=true profile under that placement must also set rdma_group — no implicit-default-plus-explicit mixing. The units==0 + rdma/rdma_group case is already rejected by the schema-level gpuAttributesRequireUnitsGt0 rule (any attribute requires units > 0), so no semantic check needed there. Pinned by two new tests that assert the schema path, so a future schema relaxation can't silently reopen the hole. Five new tests cover the rejection paths plus a happy path. Existing SDL parity tests stay at 34/34. --- ts/src/sdl/validateSDL/validateSDL.spec.ts | 141 +++++++++++++++++++++ ts/src/sdl/validateSDL/validateSDL.ts | 116 +++++++++++++++++ 2 files changed, 257 insertions(+) diff --git a/ts/src/sdl/validateSDL/validateSDL.spec.ts b/ts/src/sdl/validateSDL/validateSDL.spec.ts index 6b0768c8..5244e7ee 100644 --- a/ts/src/sdl/validateSDL/validateSDL.spec.ts +++ b/ts/src/sdl/validateSDL/validateSDL.spec.ts @@ -2226,6 +2226,147 @@ describe(validateSDL.name, () => { }); }); + // Mirrors the Go SDL parser's RDMA cross-field rules (go/sdl/v2.go + // validateRDMA + go/sdl/gpu.go parse-time guards). Without these TS + // checks, tenants using @akashnetwork/chain-sdk could broadcast SDLs + // that the Go CLI would have rejected outright. + describe("RDMA validation", () => { + function rdmaSetup(opts: { + rdma?: boolean; + rdmaGroup?: string; + units?: number; + placementRequiresRDMA?: boolean; + } = {}) { + const { rdma, rdmaGroup, units = 1, placementRequiresRDMA = true } = opts; + const placementAttrs: Record = {}; + if (placementRequiresRDMA) placementAttrs["capabilities/rdma"] = "true"; + + const gpuAttrs: Record = { vendor: { nvidia: [{ model: "a100" }] } }; + if (rdma !== undefined) gpuAttrs.rdma = rdma; + if (rdmaGroup !== undefined) gpuAttrs.rdma_group = rdmaGroup; + + return setup({ + profiles: { + compute: { + web: { + resources: { + cpu: { units: 1 }, + memory: { size: "512Mi" }, + storage: { size: "1Gi" }, + gpu: { units, attributes: gpuAttrs }, + }, + }, + }, + placement: { + dcloud: { + attributes: placementAttrs, + }, + }, + }, + }); + } + + it("accepts a valid RDMA profile under an RDMA-capable placement", () => { + const { validate } = rdmaSetup({ rdma: true }); + expect(validate()).toBeUndefined(); + }); + + // units==0 + rdma / rdma_group is rejected by the schema-level + // gpuAttributesRequireUnitsGt0 rule (any attribute present requires + // units > 0), so the semantic validator never runs for that case. + // Pinning the schema's behavior here so a future schema relaxation + // doesn't silently open a hole. + it("rejects gpu.attributes.rdma=true when gpu.units is 0 (schema-level)", () => { + const { validate } = rdmaSetup({ rdma: true, units: 0 }); + expect(validate()).toContainEqual(expect.objectContaining({ + schemaPath: expect.stringContaining("gpuAttributesRequireUnitsGt0"), + })); + }); + + it("rejects gpu.attributes.rdma_group when gpu.units is 0 (schema-level)", () => { + const { validate } = rdmaSetup({ rdmaGroup: "pair0", units: 0 }); + expect(validate()).toContainEqual(expect.objectContaining({ + schemaPath: expect.stringContaining("gpuAttributesRequireUnitsGt0"), + })); + }); + + it("rejects rdma_group set without rdma=true", () => { + const { validate } = rdmaSetup({ rdmaGroup: "pair0" }); + expect(validate()).toContainEqual(expect.objectContaining({ + message: expect.stringContaining(`sets gpu.attributes.rdma_group="pair0" but does not set gpu.attributes.rdma: true`), + })); + }); + + it("rejects rdma=true under a placement that does not require capabilities/rdma=true", () => { + const { validate } = rdmaSetup({ rdma: true, placementRequiresRDMA: false }); + expect(validate()).toContainEqual(expect.objectContaining({ + message: expect.stringContaining(`but placement does not require capabilities/rdma=true`), + })); + }); + + it("rejects implicit + explicit rdma_group mixing within one placement", () => { + // Two profiles, both RDMA, but only one sets rdma_group. + const { validate } = setup({ + services: { + worker: { + image: "nginx:latest", + }, + }, + profiles: { + compute: { + web: { + resources: { + cpu: { units: 1 }, + memory: { size: "512Mi" }, + storage: { size: "1Gi" }, + gpu: { + units: 1, + attributes: { + vendor: { nvidia: [{ model: "a100" }] }, + rdma: true, + rdma_group: "pair0", + }, + }, + }, + }, + worker: { + resources: { + cpu: { units: 1 }, + memory: { size: "512Mi" }, + storage: { size: "1Gi" }, + gpu: { + units: 1, + attributes: { + vendor: { nvidia: [{ model: "a100" }] }, + rdma: true, + // rdma_group intentionally omitted -> rule 3 violation + }, + }, + }, + }, + }, + placement: { + dcloud: { + attributes: { "capabilities/rdma": "true" }, + pricing: { + worker: { amount: "1000", denom: AKT_DENOM }, + }, + }, + }, + }, + deployment: { + worker: { + dcloud: { count: 1, profile: "worker" }, + }, + }, + }); + + expect(validate()).toContainEqual(expect.objectContaining({ + message: expect.stringContaining("mixes explicit and implicit rdma_group"), + })); + }); + }); + function setup(overrides: DeepPartial = {}, networkId: NetworkId = "sandbox") { const defaultSDL: SDLInput = { version: "2.0", diff --git a/ts/src/sdl/validateSDL/validateSDL.ts b/ts/src/sdl/validateSDL/validateSDL.ts index 77219c4a..c5b4ad5b 100644 --- a/ts/src/sdl/validateSDL/validateSDL.ts +++ b/ts/src/sdl/validateSDL/validateSDL.ts @@ -51,6 +51,7 @@ class SDLValidator { }); } + this.#validateRDMA(); this.#validateEndpoints(); return this.#errors; } @@ -257,6 +258,121 @@ class SDLValidator { }, }); } + + // Note: the units==0 + rdma/rdma_group case is already rejected by + // the schema-level rule `gpuAttributesRequireUnitsGt0` — it requires + // units > 0 whenever any attribute (including rdma / rdma_group) is + // present. So we don't need a duplicate semantic check here. The + // Go parser (go/sdl/gpu.go) carries its own parse-time check because + // YAML decoding has no schema layer above it. + } + + // Mirror the Go-side validateRDMA in go/sdl/v2.go. Three cross-field + // rules the chain SDK enforces; TS must enforce them too so tenants + // using @akashnetwork/chain-sdk get the same fail-fast feedback as + // the Go CLI users (the chain doesn't validate SDL semantics). + // + // 1. A profile with gpu.attributes.rdma=true must be used by a + // deployment whose placement requirements include + // capabilities/rdma=true. + // 2. A profile with gpu.attributes.rdma_group set must also have + // gpu.attributes.rdma=true on the same profile. + // 3. Within one deployment (placement), if any profile sets + // rdma_group, every rdma=true profile under that placement must + // also set rdma_group — no implicit-default-plus-explicit mixing. + #validateRDMA() { + const profiles = this.#sdl.profiles?.compute; + const placements = this.#sdl.profiles?.placement; + if (!profiles) return; + + // Rule 2: rdma_group ⇒ rdma=true. Per-profile, units > 0 guard so + // the zero-GPU case is left to #validateGPU's error above (avoids + // duplicate complaints on the same profile). + for (const [profileName, compute] of Object.entries(profiles)) { + const gpu = compute?.resources?.gpu; + if (!gpu || gpu.units === 0 || gpu.units === undefined) continue; + + if (gpu.attributes?.rdma_group && gpu.attributes.rdma !== true) { + this.#errors.push({ + message: `Compute profile "${profileName}" sets gpu.attributes.rdma_group="${gpu.attributes.rdma_group}" but does not set gpu.attributes.rdma: true.`, + instancePath: `/profiles/compute/${profileName}/resources/gpu/attributes/rdma`, + schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/rdma", + keyword: "required", + params: { missingProperty: "rdma" }, + }); + } + } + + // Rules 1 + 3 are per-placement. Walk every (service, placement) and + // capture which profile each service uses, whether that profile has + // rdma=true, and whether it sets rdma_group. + interface profileUsage { + profileName: string; + serviceName: string; + hasRDMA: boolean; + group: string; + } + const usagesByPlacement = new Map(); + + for (const [serviceName, perPlacement] of Object.entries(this.#sdl.deployment ?? {})) { + for (const [placementName, svcdepl] of Object.entries(perPlacement ?? {})) { + const compute = profiles[svcdepl.profile]; + if (!compute) continue; + const gpu = compute.resources?.gpu; + const usage: profileUsage = { + profileName: svcdepl.profile, + serviceName, + hasRDMA: false, + group: "", + }; + if (gpu && gpu.units !== 0 && gpu.units !== undefined) { + usage.hasRDMA = gpu.attributes?.rdma === true; + usage.group = gpu.attributes?.rdma_group ?? ""; + } + + const bucket = usagesByPlacement.get(placementName) ?? []; + bucket.push(usage); + usagesByPlacement.set(placementName, bucket); + + // Rule 1: a profile with rdma=true must be deployed under a + // placement whose attributes require capabilities/rdma=true. + if (usage.hasRDMA) { + const placement = placements?.[placementName]; + // The placement attributes shape is `Record` + // in the schema; we look for the literal key/value pair. + const attrs = (placement?.attributes ?? {}) as Record; + const capability = attrs["capabilities/rdma"]; + const requiresRDMA = capability === "true" || capability === true; + if (!requiresRDMA) { + this.#errors.push({ + message: `Service "${serviceName}" uses RDMA profile "${svcdepl.profile}" under placement "${placementName}" but placement does not require capabilities/rdma=true.`, + instancePath: `/profiles/placement/${placementName}/attributes`, + schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/attributes", + keyword: "required", + params: { missingProperty: "capabilities/rdma" }, + }); + } + } + } + } + + // Rule 3: per placement, if any profile sets rdma_group then every + // rdma=true profile under that placement must also set rdma_group. + for (const [placementName, usages] of usagesByPlacement.entries()) { + const anyGrouped = usages.some((u) => u.group !== ""); + if (!anyGrouped) continue; + for (const u of usages) { + if (u.hasRDMA && u.group === "") { + this.#errors.push({ + message: `Placement "${placementName}" mixes explicit and implicit rdma_group: profile "${u.profileName}" has gpu.attributes.rdma: true but no rdma_group, while another profile under the same placement sets rdma_group.`, + instancePath: `/profiles/compute/${u.profileName}/resources/gpu/attributes/rdma_group`, + schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/rdma_group", + keyword: "required", + params: { missingProperty: "rdma_group" }, + }); + } + } + } } #validateLeaseIP(serviceName: string) { From fd452fd305819f16256a4ad51976bf1103ee8642 Mon Sep 17 00:00:00 2001 From: zblocker64 Date: Mon, 15 Jun 2026 14:26:44 -0500 Subject: [PATCH 06/10] =?UTF-8?q?refactor:=20rename=20RDMA=20=E2=86=92=20G?= =?UTF-8?q?PU=20interconnect=20(fabric-agnostic=20SDL=20surface)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Spec rework: tenants now request GPU interconnect as a single boolean `gpu.attributes.interconnect: true`; the provider picks IB vs RoCE. Removes fabric pin from the SDL surface; informational fabric value still flows internally via NodeCapabilities.InterconnectFabric so providers can advertise it for monitoring. Full top-to-bottom rename: Proto: - akash.inventory.v1.NodeCapabilities.rdma_resource_name -> interconnect_resource_name - akash.inventory.v1.NodeCapabilities.rdma_fabric -> interconnect_fabric - akash.inventory.v1.NodeResources.rdma -> gpu_interconnect (customname: GPUInterconnect) - akash.manifest.v2beta3.Service.rdma_group -> interconnect_group (proto field number 11 preserved; jsontag interconnectGroup,omitempty) SDL (Go): - gpu.attributes.rdma -> gpu.attributes.interconnect - gpu.attributes.rdma_group -> gpu.attributes.interconnect_group - capabilities/rdma placement key -> capabilities/gpu-interconnect - GPUAttributeRDMA -> GPUAttributeInterconnect (const) - GPUAttributeRDMAGroup -> GPUAttributeInterconnectGroup (const) - v2ResourceGPU.RDMAGroup -> InterconnectGroup - validateRDMA -> validateInterconnect - gpuAttributesHaveRDMA -> gpuAttributesHaveInterconnect - placementRequiresRDMA -> placementRequiresInterconnect - groupBuilder_v2 + v2_1 propagate Service.InterconnectGroup Inventory v1 (Go): - NodeCapabilities.RDMAResourceName -> InterconnectResourceName - NodeCapabilities.RDMAFabric -> InterconnectFabric - NodeResources.RDMA -> GPUInterconnect TS: - transformGpuAttributes emits interconnect + interconnect_group keys - generateManifest sets Service.interconnectGroup from compute.resources.gpu.attributes.interconnect_group - generateManifestVersion OMITTED_WHEN_EMPTY_STRING_KEYS = {interconnectGroup} - validateSDL.#validateInterconnect mirrors Go's rule 1/2/3 with the new keys - sdl-input.schema.yaml declares interconnect (boolean) + interconnect_group (string); validateSDLInput.ts regenerated Tests + fixtures: - testdata/sdl/input/v2.0/gpu-rdma-group -> gpu-interconnect-group - Renamed test files: rdma_gpu_test -> interconnect_gpu_test; rdma_validation_test -> interconnect_validation_test; rdma_commit_audit_test -> interconnect_commit_audit_test - All identifier renames inside test bodies Unavoidable external references kept: - /sys/class/infiniband and rdma/rdma_shared_device_* — kernel sysfs + Mellanox/NVIDIA device-plugin resource names - NCCL_IB_DISABLE/NCCL_IB_HCA env vars — NCCL upstream - "infiniband" / "roce" fabric value strings — kernel link_layer values --- go/inventory/v1/node.go | 8 +- go/inventory/v1/node.pb.go | 125 +++++++------- go/inventory/v1/node_test.go | 26 +-- go/inventory/v1/resourcepair.go | 8 +- go/inventory/v1/resourcepair_zero_test.go | 25 +-- go/inventory/v1/resources.go | 2 +- go/inventory/v1/resources.pb.go | 91 ++++++----- go/inventory/v1/resources_test.go | 14 +- go/manifest/v2beta3/service.pb.go | 152 +++++++++--------- ...t.go => interconnect_commit_audit_test.go} | 72 ++++----- go/sdl/gpu.go | 149 +++++++++-------- go/sdl/groupBuilder_v2.go | 11 +- go/sdl/groupBuilder_v2_1.go | 2 +- ...a_gpu_test.go => interconnect_gpu_test.go} | 100 ++++++------ ...est.go => interconnect_validation_test.go} | 86 +++++----- go/sdl/sdl-input.schema.yaml | 24 +-- go/sdl/v2.go | 105 ++++++------ go/sdl/v2_1.go | 11 +- proto/provider/akash/inventory/v1/node.proto | 33 ++-- .../akash/inventory/v1/resources.proto | 18 ++- .../akash/manifest/v2beta3/service.proto | 28 ++-- .../input.yaml | 40 ++--- .../group-specs.json | 14 +- .../manifest.json | 14 +- .../protos/akash/inventory/v1/node.ts | 53 +++--- .../protos/akash/inventory/v1/resources.ts | 30 ++-- .../protos/akash/manifest/v2beta3/service.ts | 38 ++--- ts/src/sdl/manifest/generateManifest.ts | 8 +- .../sdl/manifest/generateManifestVersion.ts | 2 +- ts/src/sdl/manifest/manifestUtils.ts | 10 +- ts/src/sdl/validateSDL/validateSDL.spec.ts | 64 ++++---- ts/src/sdl/validateSDL/validateSDL.ts | 74 ++++----- ts/src/sdl/validateSDL/validateSDLInput.ts | 40 ++--- 33 files changed, 763 insertions(+), 714 deletions(-) rename go/node/deployment/v1beta4/{rdma_commit_audit_test.go => interconnect_commit_audit_test.go} (68%) rename go/sdl/{rdma_gpu_test.go => interconnect_gpu_test.go} (50%) rename go/sdl/{rdma_validation_test.go => interconnect_validation_test.go} (55%) rename testdata/sdl/input/v2.0/{gpu-rdma-group => gpu-interconnect-group}/input.yaml (66%) rename testdata/sdl/output-fixtures/v2.0/{gpu-rdma-group => gpu-interconnect-group}/group-specs.json (88%) rename testdata/sdl/output-fixtures/v2.0/{gpu-rdma-group => gpu-interconnect-group}/manifest.json (92%) diff --git a/go/inventory/v1/node.go b/go/inventory/v1/node.go index 86afc54a..8f37bc37 100644 --- a/go/inventory/v1/node.go +++ b/go/inventory/v1/node.go @@ -2,10 +2,10 @@ package v1 func (nd *NodeCapabilities) Dup() NodeCapabilities { res := NodeCapabilities{ - StorageClasses: make([]string, 0, len(nd.StorageClasses)), - RDMAResourceName: nd.RDMAResourceName, - RDMAFabric: nd.RDMAFabric, - NCCLHCAPrefix: nd.NCCLHCAPrefix, + StorageClasses: make([]string, 0, len(nd.StorageClasses)), + InterconnectResourceName: nd.InterconnectResourceName, + InterconnectFabric: nd.InterconnectFabric, + NCCLHCAPrefix: nd.NCCLHCAPrefix, } res.StorageClasses = append(res.StorageClasses, nd.StorageClasses...) diff --git a/go/inventory/v1/node.pb.go b/go/inventory/v1/node.pb.go index e110944a..6c961d28 100644 --- a/go/inventory/v1/node.pb.go +++ b/go/inventory/v1/node.pb.go @@ -26,17 +26,22 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // NodeCapabilities extended list of node capabilities type NodeCapabilities struct { StorageClasses []string `protobuf:"bytes,1,rep,name=storage_classes,json=storageClasses,proto3" json:"storage_classes" yaml:"storage_classes"` - // RDMA: Kubernetes extended-resource name the cluster's device plugin publishes - // for RDMA-capable HCAs (e.g. rdma/rdma_shared_device_ib for InfiniBand, - // rdma/rdma_shared_device_eth for RoCE). Empty when the node has no RDMA + // Kubernetes extended-resource name the cluster's device plugin publishes + // for GPU interconnect HCAs (e.g. rdma/rdma_shared_device_ib for an + // InfiniBand fabric, rdma/rdma_shared_device_eth for RoCE). The + // `rdma/*` prefix is the device-plugin's own convention (Mellanox/NVIDIA) + // and stays unchanged here. Empty when the node has no GPU interconnect // capability. Discovered by the inventory operator from k8s allocatable. - RDMAResourceName string `protobuf:"bytes,2,opt,name=rdma_resource_name,json=rdmaResourceName,proto3" json:"rdma_resource_name,omitempty" yaml:"rdma_resource_name,omitempty"` - // RDMA fabric type. "infiniband" or "roce". Derived from + InterconnectResourceName string `protobuf:"bytes,2,opt,name=interconnect_resource_name,json=interconnectResourceName,proto3" json:"interconnect_resource_name,omitempty" yaml:"interconnect_resource_name,omitempty"` + // GPU interconnect fabric type. "infiniband" or "roce". Internal / + // informational — the SDL surface is fabric-agnostic; tenants only + // declare `interconnect: true`. Derived from // /sys/class/infiniband//ports/1/link_layer on the host node. - RDMAFabric string `protobuf:"bytes,3,opt,name=rdma_fabric,json=rdmaFabric,proto3" json:"rdma_fabric,omitempty" yaml:"rdma_fabric,omitempty"` + InterconnectFabric string `protobuf:"bytes,3,opt,name=interconnect_fabric,json=interconnectFabric,proto3" json:"interconnect_fabric,omitempty" yaml:"interconnect_fabric,omitempty"` // NCCL IB HCA prefix - the common device-name prefix under - // /sys/class/infiniband (e.g. "mlx5"). Injected by the provider as - // NCCL_IB_HCA when scheduling RDMA workloads. + // /sys/class/infiniband (e.g. "mlx5"). Same key for IB and RoCE since + // NCCL uses the IB verbs API for both. Injected by the provider as + // NCCL_IB_HCA when scheduling GPU interconnect workloads. NCCLHCAPrefix string `protobuf:"bytes,4,opt,name=nccl_hca_prefix,json=ncclHcaPrefix,proto3" json:"nccl_hca_prefix,omitempty" yaml:"nccl_hca_prefix,omitempty"` } @@ -80,16 +85,16 @@ func (m *NodeCapabilities) GetStorageClasses() []string { return nil } -func (m *NodeCapabilities) GetRDMAResourceName() string { +func (m *NodeCapabilities) GetInterconnectResourceName() string { if m != nil { - return m.RDMAResourceName + return m.InterconnectResourceName } return "" } -func (m *NodeCapabilities) GetRDMAFabric() string { +func (m *NodeCapabilities) GetInterconnectFabric() string { if m != nil { - return m.RDMAFabric + return m.InterconnectFabric } return "" } @@ -170,40 +175,40 @@ func init() { func init() { proto.RegisterFile("akash/inventory/v1/node.proto", fileDescriptor_5f97c0fb35079221) } var fileDescriptor_5f97c0fb35079221 = []byte{ - // 518 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x53, 0xbf, 0x6f, 0xd3, 0x40, - 0x14, 0x8e, 0xdb, 0x08, 0x29, 0x97, 0xfe, 0x88, 0x8e, 0x1f, 0x0a, 0xa5, 0xf8, 0xc2, 0xc1, 0xd0, - 0x01, 0x39, 0x6a, 0x2a, 0x16, 0x18, 0x50, 0x6d, 0x04, 0x1d, 0x20, 0x42, 0xc7, 0x06, 0x83, 0x75, - 0x71, 0xae, 0x8e, 0x95, 0xd8, 0x67, 0xf9, 0x4c, 0x44, 0xd8, 0x19, 0xd8, 0xf8, 0x73, 0xf8, 0x13, - 0x3a, 0x76, 0x64, 0x3a, 0x21, 0x67, 0xf3, 0xc0, 0xe0, 0xbf, 0x00, 0xf9, 0xec, 0xa4, 0x76, 0x4a, - 0xd9, 0x4e, 0xdf, 0xf7, 0xbd, 0xef, 0x7b, 0x7a, 0xef, 0x1d, 0x78, 0x48, 0xa7, 0x54, 0x4c, 0xfa, - 0x5e, 0x30, 0x67, 0x41, 0xcc, 0xa3, 0x45, 0x7f, 0x7e, 0xdc, 0x0f, 0xf8, 0x98, 0x19, 0x61, 0xc4, - 0x63, 0x0e, 0xa1, 0xa2, 0x8d, 0x35, 0x6d, 0xcc, 0x8f, 0x0f, 0xee, 0xb8, 0xdc, 0xe5, 0x8a, 0xee, - 0xe7, 0xaf, 0x42, 0x79, 0x80, 0xff, 0x61, 0x14, 0x31, 0xc1, 0x3f, 0x47, 0x0e, 0x13, 0x85, 0x06, - 0xff, 0xd9, 0x06, 0x9d, 0x21, 0x1f, 0x33, 0x8b, 0x86, 0x74, 0xe4, 0xcd, 0xbc, 0xd8, 0x63, 0x02, - 0x4e, 0xc0, 0xbe, 0x88, 0x79, 0x44, 0x5d, 0x66, 0x3b, 0x33, 0x2a, 0x04, 0x13, 0x5d, 0xad, 0xb7, - 0x7d, 0xd4, 0x32, 0x5f, 0x26, 0x12, 0xed, 0x7d, 0x28, 0x28, 0xab, 0x60, 0x52, 0x89, 0x36, 0xc5, - 0x99, 0x44, 0xf7, 0x16, 0xd4, 0x9f, 0x3d, 0xc7, 0x1b, 0x04, 0x26, 0x7b, 0xa2, 0x56, 0x0c, 0xbf, - 0x6b, 0x00, 0x46, 0x63, 0x9f, 0xda, 0xab, 0xbe, 0xec, 0x80, 0xfa, 0xac, 0xbb, 0xd5, 0xd3, 0x8e, - 0x5a, 0xe6, 0xa7, 0x44, 0xa2, 0x0e, 0x79, 0xf5, 0xee, 0x94, 0x94, 0xe4, 0x90, 0xfa, 0x2c, 0x95, - 0xe8, 0xf0, 0x7a, 0xc5, 0x53, 0xee, 0x7b, 0x31, 0xf3, 0xc3, 0x78, 0x91, 0x49, 0xf4, 0xb8, 0x08, - 0xff, 0x9f, 0x0a, 0x93, 0x4e, 0x4e, 0x57, 0x8d, 0xe1, 0x04, 0xb4, 0x55, 0xc9, 0x39, 0x1d, 0x45, - 0x9e, 0xd3, 0xdd, 0x56, 0x3d, 0xbc, 0x49, 0x24, 0x02, 0x79, 0x0f, 0xaf, 0x15, 0x9a, 0x4a, 0x74, - 0xb7, 0x22, 0xaa, 0xc5, 0x1e, 0x56, 0x62, 0x37, 0x69, 0x4c, 0x40, 0x8e, 0x17, 0x26, 0xf0, 0x2b, - 0xd8, 0x0f, 0x1c, 0x67, 0x66, 0x4f, 0x1c, 0x6a, 0x87, 0x11, 0x3b, 0xf7, 0xbe, 0x74, 0x9b, 0x2a, - 0x8d, 0x24, 0x12, 0xed, 0x0e, 0x2d, 0xeb, 0xed, 0x99, 0x75, 0xfa, 0x5e, 0x11, 0xa9, 0x44, 0xf7, - 0x37, 0xb4, 0xb5, 0xd0, 0x5e, 0x11, 0x7a, 0xa3, 0x04, 0x93, 0xdd, 0x9c, 0x3b, 0x73, 0x68, 0xe1, - 0x87, 0x7f, 0x6e, 0x81, 0x66, 0xbe, 0x70, 0x78, 0x02, 0x9a, 0x6a, 0xd6, 0x9a, 0x4a, 0x46, 0x89, - 0x44, 0xcd, 0x72, 0xbe, 0x0a, 0xcf, 0x24, 0x6a, 0x97, 0xde, 0xd4, 0x67, 0x98, 0x28, 0x10, 0x0a, - 0xd0, 0x5a, 0x5f, 0x90, 0xda, 0x52, 0x7b, 0xf0, 0xc8, 0xb8, 0x7e, 0x90, 0x46, 0x9e, 0xb0, 0x1a, - 0xae, 0x30, 0x07, 0x17, 0x12, 0x35, 0x12, 0x89, 0x5a, 0x6b, 0x28, 0x95, 0xe8, 0xca, 0x28, 0x93, - 0xa8, 0x53, 0xce, 0x6e, 0x05, 0x61, 0x72, 0x45, 0xc3, 0x6f, 0x1a, 0xd8, 0x71, 0x2a, 0xf7, 0xa9, - 0x56, 0xd3, 0x1e, 0x3c, 0xb9, 0x29, 0xb8, 0x7a, 0xcb, 0xe6, 0x8b, 0x32, 0x7b, 0xa7, 0x8a, 0xa6, - 0x12, 0xd5, 0x1c, 0x33, 0x89, 0x6e, 0x17, 0x1d, 0x54, 0x51, 0x4c, 0x6a, 0x22, 0xf3, 0xd9, 0x45, - 0xa2, 0x6b, 0x97, 0x89, 0xae, 0xfd, 0x4e, 0x74, 0xed, 0xc7, 0x52, 0x6f, 0x5c, 0x2e, 0xf5, 0xc6, - 0xaf, 0xa5, 0xde, 0xf8, 0xf8, 0x20, 0x9c, 0xba, 0x06, 0x9d, 0xc6, 0xc6, 0x98, 0xcd, 0xfb, 0x2e, - 0xaf, 0x7d, 0xb9, 0xd1, 0x2d, 0xf5, 0xd3, 0x4e, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, 0xb0, 0xec, - 0xfc, 0x17, 0xd8, 0x03, 0x00, 0x00, + // 521 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xbf, 0x6b, 0xdb, 0x40, + 0x18, 0xb5, 0x12, 0x53, 0xf0, 0xe5, 0x27, 0x97, 0x52, 0x54, 0x97, 0xe8, 0xdc, 0xc3, 0x43, 0xa0, + 0x45, 0x26, 0x0e, 0x5d, 0xda, 0xa1, 0xd4, 0x82, 0x92, 0x42, 0x31, 0x45, 0xdd, 0xba, 0x88, 0xf3, + 0xf9, 0x22, 0x1f, 0xb6, 0x74, 0x42, 0xa7, 0x9a, 0xba, 0x7b, 0xf7, 0xfc, 0x2b, 0xdd, 0xba, 0x75, + 0xcd, 0x98, 0xb1, 0xd3, 0x51, 0xe4, 0x4d, 0xa3, 0xfe, 0x82, 0xe2, 0x93, 0xe3, 0x48, 0x8e, 0x0d, + 0xdd, 0x8e, 0xf7, 0xde, 0xbd, 0xf7, 0xe0, 0xfb, 0x3e, 0x70, 0x4a, 0xc6, 0x44, 0x8e, 0x3a, 0x3c, + 0x9c, 0xb2, 0x30, 0x11, 0xf1, 0xac, 0x33, 0x3d, 0xef, 0x84, 0x62, 0xc8, 0xec, 0x28, 0x16, 0x89, + 0x80, 0x50, 0xd3, 0xf6, 0x8a, 0xb6, 0xa7, 0xe7, 0xcd, 0xc7, 0xbe, 0xf0, 0x85, 0xa6, 0x3b, 0x8b, + 0x57, 0xa1, 0x6c, 0xe2, 0x0d, 0x46, 0x31, 0x93, 0xe2, 0x6b, 0x4c, 0x99, 0x2c, 0x34, 0xf8, 0x77, + 0x1d, 0x1c, 0xf7, 0xc5, 0x90, 0x39, 0x24, 0x22, 0x03, 0x3e, 0xe1, 0x09, 0x67, 0x12, 0x8e, 0xc0, + 0x91, 0x4c, 0x44, 0x4c, 0x7c, 0xe6, 0xd1, 0x09, 0x91, 0x92, 0x49, 0xd3, 0x68, 0xed, 0x9e, 0x35, + 0x7a, 0x6f, 0x53, 0x85, 0x0e, 0x3f, 0x17, 0x94, 0x53, 0x30, 0x99, 0x42, 0xeb, 0xe2, 0x5c, 0xa1, + 0x27, 0x33, 0x12, 0x4c, 0x5e, 0xe3, 0x35, 0x02, 0xbb, 0x87, 0xb2, 0xf2, 0x19, 0xfe, 0x34, 0x40, + 0x93, 0x87, 0x09, 0x8b, 0xa9, 0x08, 0x43, 0x46, 0x13, 0xef, 0xae, 0x9f, 0x17, 0x92, 0x80, 0x99, + 0x3b, 0x2d, 0xe3, 0xac, 0xd1, 0x93, 0xa9, 0x42, 0xe6, 0x87, 0x92, 0xca, 0x5d, 0x8a, 0xfa, 0x24, + 0x60, 0x99, 0x42, 0xed, 0xed, 0x0e, 0x2f, 0x45, 0xc0, 0x13, 0x16, 0x44, 0xc9, 0x2c, 0x57, 0xe8, + 0x45, 0x51, 0xea, 0x7f, 0xd4, 0xd8, 0x35, 0xf9, 0x96, 0x40, 0x78, 0x6d, 0x80, 0x93, 0x8a, 0xc7, + 0x15, 0x19, 0xc4, 0x9c, 0x9a, 0xbb, 0xba, 0xac, 0x97, 0x2a, 0x04, 0xcb, 0x65, 0xdf, 0x6b, 0x36, + 0x53, 0xe8, 0x74, 0xc3, 0xa7, 0x4a, 0xbf, 0xf6, 0x86, 0x7e, 0xeb, 0x32, 0xec, 0x42, 0xfe, 0xc0, + 0x1c, 0x7e, 0x07, 0x47, 0x21, 0xa5, 0x13, 0x6f, 0x44, 0x89, 0x17, 0xc5, 0xec, 0x8a, 0x7f, 0x33, + 0xeb, 0xba, 0x8d, 0x9b, 0x2a, 0x74, 0xd0, 0x77, 0x9c, 0x8f, 0x97, 0xce, 0xbb, 0x4f, 0x9a, 0xc8, + 0x14, 0x7a, 0xba, 0xa6, 0xad, 0x94, 0x68, 0x15, 0x25, 0xb6, 0x4a, 0xb0, 0x7b, 0xb0, 0xe0, 0x2e, + 0x29, 0x29, 0xfc, 0xf0, 0xaf, 0x1d, 0x50, 0x5f, 0x6c, 0x10, 0xbc, 0x00, 0x75, 0x3d, 0x34, 0x43, + 0x27, 0xa3, 0x54, 0xa1, 0xfa, 0x72, 0x40, 0x1a, 0xcf, 0x15, 0xda, 0x5b, 0x7a, 0x93, 0x80, 0x61, + 0x57, 0x83, 0x50, 0x82, 0xc6, 0x6a, 0x25, 0xf5, 0xb8, 0xf7, 0xba, 0xcf, 0xed, 0x87, 0x1b, 0x6e, + 0x2f, 0x12, 0xee, 0xa6, 0x20, 0x7b, 0xdd, 0x1b, 0x85, 0x6a, 0xa9, 0x42, 0x8d, 0x15, 0x94, 0x29, + 0x74, 0x6f, 0x94, 0x2b, 0x74, 0x5c, 0x44, 0xad, 0x20, 0xec, 0xde, 0xd3, 0xf0, 0x87, 0x01, 0xf6, + 0x69, 0x69, 0xe1, 0xf5, 0xe8, 0xf6, 0xba, 0xed, 0x6d, 0xc1, 0xe5, 0xe3, 0xe8, 0xbd, 0x59, 0x66, + 0xef, 0x97, 0xd1, 0x4c, 0xa1, 0x8a, 0x63, 0xae, 0xd0, 0x49, 0xd1, 0xa0, 0x8c, 0x62, 0xb7, 0x22, + 0xea, 0xbd, 0xba, 0x49, 0x2d, 0xe3, 0x36, 0xb5, 0x8c, 0xbf, 0xa9, 0x65, 0x5c, 0xcf, 0xad, 0xda, + 0xed, 0xdc, 0xaa, 0xfd, 0x99, 0x5b, 0xb5, 0x2f, 0xcf, 0xa2, 0xb1, 0x6f, 0x93, 0x71, 0x62, 0x0f, + 0xd9, 0xb4, 0xe3, 0x8b, 0xca, 0x0d, 0x0f, 0x1e, 0xe9, 0xd3, 0xbd, 0xf8, 0x17, 0x00, 0x00, 0xff, + 0xff, 0x79, 0x09, 0x7e, 0x8d, 0x29, 0x04, 0x00, 0x00, } func (m *NodeCapabilities) Marshal() (dAtA []byte, err error) { @@ -233,17 +238,17 @@ func (m *NodeCapabilities) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x22 } - if len(m.RDMAFabric) > 0 { - i -= len(m.RDMAFabric) - copy(dAtA[i:], m.RDMAFabric) - i = encodeVarintNode(dAtA, i, uint64(len(m.RDMAFabric))) + if len(m.InterconnectFabric) > 0 { + i -= len(m.InterconnectFabric) + copy(dAtA[i:], m.InterconnectFabric) + i = encodeVarintNode(dAtA, i, uint64(len(m.InterconnectFabric))) i-- dAtA[i] = 0x1a } - if len(m.RDMAResourceName) > 0 { - i -= len(m.RDMAResourceName) - copy(dAtA[i:], m.RDMAResourceName) - i = encodeVarintNode(dAtA, i, uint64(len(m.RDMAResourceName))) + if len(m.InterconnectResourceName) > 0 { + i -= len(m.InterconnectResourceName) + copy(dAtA[i:], m.InterconnectResourceName) + i = encodeVarintNode(dAtA, i, uint64(len(m.InterconnectResourceName))) i-- dAtA[i] = 0x12 } @@ -332,11 +337,11 @@ func (m *NodeCapabilities) Size() (n int) { n += 1 + l + sovNode(uint64(l)) } } - l = len(m.RDMAResourceName) + l = len(m.InterconnectResourceName) if l > 0 { n += 1 + l + sovNode(uint64(l)) } - l = len(m.RDMAFabric) + l = len(m.InterconnectFabric) if l > 0 { n += 1 + l + sovNode(uint64(l)) } @@ -433,7 +438,7 @@ func (m *NodeCapabilities) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RDMAResourceName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field InterconnectResourceName", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -461,11 +466,11 @@ func (m *NodeCapabilities) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.RDMAResourceName = string(dAtA[iNdEx:postIndex]) + m.InterconnectResourceName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RDMAFabric", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field InterconnectFabric", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -493,7 +498,7 @@ func (m *NodeCapabilities) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.RDMAFabric = string(dAtA[iNdEx:postIndex]) + m.InterconnectFabric = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { diff --git a/go/inventory/v1/node_test.go b/go/inventory/v1/node_test.go index 24908978..81cd062a 100644 --- a/go/inventory/v1/node_test.go +++ b/go/inventory/v1/node_test.go @@ -6,37 +6,37 @@ import ( "github.com/stretchr/testify/require" ) -func TestNodeCapabilities_Dup_PreservesRDMAFields(t *testing.T) { +func TestNodeCapabilities_Dup_PreservesInterconnectFields(t *testing.T) { src := NodeCapabilities{ - StorageClasses: []string{"beta3", "default"}, - RDMAResourceName: "rdma/rdma_shared_device_ib", - RDMAFabric: "infiniband", - NCCLHCAPrefix: "mlx5", + StorageClasses: []string{"beta3", "default"}, + InterconnectResourceName: "rdma/rdma_shared_device_ib", + InterconnectFabric: "infiniband", + NCCLHCAPrefix: "mlx5", } got := src.Dup() require.Equal(t, src.StorageClasses, got.StorageClasses) - require.Equal(t, "rdma/rdma_shared_device_ib", got.RDMAResourceName) - require.Equal(t, "infiniband", got.RDMAFabric) + require.Equal(t, "rdma/rdma_shared_device_ib", got.InterconnectResourceName) + require.Equal(t, "infiniband", got.InterconnectFabric) require.Equal(t, "mlx5", got.NCCLHCAPrefix) // mutating dup must not affect the source (Dup is a deep copy) got.StorageClasses[0] = "mutated" - got.RDMAResourceName = "rdma/rdma_shared_device_eth" + got.InterconnectResourceName = "rdma/rdma_shared_device_eth" require.Equal(t, "beta3", src.StorageClasses[0]) - require.Equal(t, "rdma/rdma_shared_device_ib", src.RDMAResourceName) + require.Equal(t, "rdma/rdma_shared_device_ib", src.InterconnectResourceName) } -func TestNodeCapabilities_Dup_ZeroValueRDMA(t *testing.T) { - // A non-RDMA node leaves the new fields at zero value. +func TestNodeCapabilities_Dup_ZeroValueInterconnect(t *testing.T) { + // A non-interconnect node leaves the new fields at zero value. src := NodeCapabilities{ StorageClasses: []string{"default"}, } got := src.Dup() - require.Empty(t, got.RDMAResourceName) - require.Empty(t, got.RDMAFabric) + require.Empty(t, got.InterconnectResourceName) + require.Empty(t, got.InterconnectFabric) require.Empty(t, got.NCCLHCAPrefix) } diff --git a/go/inventory/v1/resourcepair.go b/go/inventory/v1/resourcepair.go index 169b2a84..021746eb 100644 --- a/go/inventory/v1/resourcepair.go +++ b/go/inventory/v1/resourcepair.go @@ -49,8 +49,8 @@ func (m *ResourcePair) LT(rhs ResourcePair) bool { // IsZero reports whether the ResourcePair has been initialized. A // zero-valued ResourcePair has nil quantity pointers and is the natural -// state for, e.g., a node that does not have RDMA capacity (and therefore -// leaves `NodeResources.RDMA` untouched). +// state for, e.g., a node that does not have GPU interconnect capacity +// (and therefore leaves `NodeResources.GPUInterconnect` untouched). func (m *ResourcePair) IsZero() bool { if m == nil { return true @@ -61,8 +61,8 @@ func (m *ResourcePair) IsZero() bool { func (m *ResourcePair) Dup() ResourcePair { // A zero-valued ResourcePair (all quantity pointers nil) must round-trip // through Dup() without panicking. Without this guard, calling Dup() - // against e.g. an unpopulated `NodeResources.RDMA` on a non-RDMA node - // nil-derefs Capacity.DeepCopy(). + // against e.g. an unpopulated `NodeResources.GPUInterconnect` on a + // non-interconnect node nil-derefs Capacity.DeepCopy(). if m == nil || m.IsZero() { return ResourcePair{} } diff --git a/go/inventory/v1/resourcepair_zero_test.go b/go/inventory/v1/resourcepair_zero_test.go index acfe1ed3..12b4379b 100644 --- a/go/inventory/v1/resourcepair_zero_test.go +++ b/go/inventory/v1/resourcepair_zero_test.go @@ -7,17 +7,17 @@ import ( "k8s.io/apimachinery/pkg/api/resource" ) -// CodeRabbit follow-up: ResourcePair.Dup() previously dereferenced -// Capacity/Allocatable/Allocated unconditionally, which panics for a -// zero-value ResourcePair. Non-RDMA nodes legitimately leave -// NodeResources.RDMA at zero value (no quantity pointers populated), so -// NodeResources.Dup() ends up calling ResourcePair.Dup() on a zero value. +// ResourcePair.Dup() previously dereferenced Capacity/Allocatable/Allocated +// unconditionally, which panics for a zero-value ResourcePair. +// Non-interconnect nodes legitimately leave NodeResources.GPUInterconnect +// at zero value (no quantity pointers populated), so NodeResources.Dup() +// ends up calling ResourcePair.Dup() on a zero value. // // Two assertions: // 1. ResourcePair.Dup() returns an equivalent zero-valued ResourcePair // without panicking when called on the nil/zero receiver. -// 2. NodeResources.Dup() round-trips a non-RDMA NodeResources (RDMA -// left at zero value) without panicking. +// 2. NodeResources.Dup() round-trips a non-interconnect NodeResources +// (GPUInterconnect left at zero value) without panicking. func TestResourcePair_Dup_ZeroValueDoesNotPanic(t *testing.T) { var zero ResourcePair @@ -75,11 +75,12 @@ func TestResourcePair_Dup_PreservesNilPointers(t *testing.T) { require.Equal(t, int64(8), src.Allocatable.Value(), "Dup must deep-copy") } -// Mirrors the realistic non-RDMA-node case the bug would surface in. -func TestNodeResources_Dup_ZeroRDMA_DoesNotPanic(t *testing.T) { +// Mirrors the realistic non-interconnect-node case the bug would surface in. +func TestNodeResources_Dup_ZeroGPUInterconnect_DoesNotPanic(t *testing.T) { zero := NewResourcePair(0, 0, 0, resource.DecimalSI) - // Every member is initialized except RDMA, which is left at zero value. + // Every member is initialized except GPUInterconnect, which is left + // at zero value. src := NodeResources{ CPU: CPU{Quantity: NewResourcePairMilli(0, 0, 0, resource.DecimalSI)}, Memory: Memory{Quantity: zero}, @@ -87,9 +88,9 @@ func TestNodeResources_Dup_ZeroRDMA_DoesNotPanic(t *testing.T) { EphemeralStorage: zero, VolumesAttached: zero, VolumesMounted: zero, - // RDMA: + // GPUInterconnect: } got := src.Dup() - require.True(t, got.RDMA.IsZero(), "zero-value RDMA must Dup as zero") + require.True(t, got.GPUInterconnect.IsZero(), "zero-value GPUInterconnect must Dup as zero") } diff --git a/go/inventory/v1/resources.go b/go/inventory/v1/resources.go index 67453b5f..38d68d2c 100644 --- a/go/inventory/v1/resources.go +++ b/go/inventory/v1/resources.go @@ -8,7 +8,7 @@ func (s *NodeResources) Dup() NodeResources { EphemeralStorage: s.EphemeralStorage.Dup(), VolumesAttached: s.VolumesAttached.Dup(), VolumesMounted: s.VolumesMounted.Dup(), - RDMA: s.RDMA.Dup(), + GPUInterconnect: s.GPUInterconnect.Dup(), } return res diff --git a/go/inventory/v1/resources.pb.go b/go/inventory/v1/resources.pb.go index b88e9afb..259bc8b3 100644 --- a/go/inventory/v1/resources.pb.go +++ b/go/inventory/v1/resources.pb.go @@ -31,11 +31,13 @@ type NodeResources struct { EphemeralStorage ResourcePair `protobuf:"bytes,4,opt,name=ephemeral_storage,json=ephemeralStorage,proto3" json:"ephemeral_storage" yaml:"ephemeral_storage"` VolumesAttached ResourcePair `protobuf:"bytes,5,opt,name=volumes_attached,json=volumesAttached,proto3" json:"volumes_attached" yaml:"volumes_attached"` VolumesMounted ResourcePair `protobuf:"bytes,6,opt,name=volumes_mounted,json=volumesMounted,proto3" json:"volumes_mounted" yaml:"volumes_mounted"` - // RDMA reports node RDMA capacity. Capacity/Allocatable/Allocated are - // populated by the inventory operator from k8s allocatable for whichever - // rdma/rdma_shared_device_* extended resource the cluster's device plugin - // publishes (see NodeCapabilities.rdma_resource_name). - RDMA ResourcePair `protobuf:"bytes,7,opt,name=rdma,proto3" json:"rdma" yaml:"rdma"` + // GPUInterconnect reports node GPU-interconnect HCA capacity. + // Capacity/Allocatable/Allocated are populated by the inventory + // operator from k8s allocatable for whichever + // rdma/rdma_shared_device_* extended resource the cluster's device + // plugin publishes (the `rdma/*` prefix is the device plugin's + // naming convention; see NodeCapabilities.interconnect_resource_name). + GPUInterconnect ResourcePair `protobuf:"bytes,7,opt,name=gpu_interconnect,json=gpuInterconnect,proto3" json:"gpu_interconnect" yaml:"gpu_interconnect"` } func (m *NodeResources) Reset() { *m = NodeResources{} } @@ -113,9 +115,9 @@ func (m *NodeResources) GetVolumesMounted() ResourcePair { return ResourcePair{} } -func (m *NodeResources) GetRDMA() ResourcePair { +func (m *NodeResources) GetGPUInterconnect() ResourcePair { if m != nil { - return m.RDMA + return m.GPUInterconnect } return ResourcePair{} } @@ -129,39 +131,40 @@ func init() { } var fileDescriptor_f20a722bd8ee01b5 = []byte{ - // 506 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x4d, 0x8b, 0xd3, 0x40, - 0x18, 0xc7, 0x1b, 0x5b, 0x23, 0xcc, 0xb2, 0xbb, 0x35, 0x88, 0x1b, 0xaa, 0x64, 0xca, 0x88, 0xb0, - 0x5e, 0x12, 0x56, 0xf1, 0xe2, 0x6d, 0x53, 0xb5, 0x88, 0x54, 0x42, 0x96, 0x0a, 0x0a, 0x52, 0xc6, - 0x64, 0x48, 0x4b, 0x9b, 0x4e, 0x98, 0xbc, 0xc0, 0x7e, 0x09, 0x11, 0xbc, 0xf8, 0x19, 0x04, 0xbf, - 0xc7, 0x1e, 0xf7, 0xe8, 0x69, 0x94, 0xf6, 0x96, 0x63, 0x3e, 0x81, 0x24, 0x33, 0x59, 0xec, 0x8b, - 0xa5, 0xb7, 0xcc, 0xf3, 0x7f, 0x9e, 0xdf, 0xf3, 0x9b, 0xc0, 0x00, 0x84, 0xa7, 0x38, 0x1e, 0x5b, - 0x93, 0x79, 0x46, 0xe6, 0x09, 0x65, 0x97, 0x56, 0x76, 0x66, 0x31, 0x12, 0xd3, 0x94, 0x79, 0x24, - 0x36, 0x23, 0x46, 0x13, 0xaa, 0x69, 0x55, 0x8f, 0x79, 0xd3, 0x63, 0x66, 0x67, 0x9d, 0x7b, 0x01, - 0x0d, 0x68, 0x15, 0x5b, 0xe5, 0x97, 0xe8, 0xec, 0x3c, 0xdc, 0x42, 0xf3, 0xa2, 0x74, 0x47, 0x1a, - 0xdc, 0xa4, 0x70, 0x4b, 0x1a, 0x92, 0xb0, 0xdc, 0x27, 0x1a, 0x1e, 0xef, 0x50, 0x8d, 0xf0, 0x84, - 0x89, 0x36, 0xf4, 0x53, 0x05, 0x87, 0xef, 0xa8, 0x4f, 0xdc, 0xfa, 0x16, 0xda, 0x5b, 0xd0, 0xf4, - 0xa2, 0x54, 0x57, 0xba, 0xca, 0xe9, 0xc1, 0xd3, 0x13, 0x73, 0xf3, 0x36, 0x66, 0xcf, 0x19, 0xda, - 0xdd, 0x2b, 0x0e, 0x1b, 0x0b, 0x0e, 0x9b, 0x3d, 0x67, 0x98, 0x73, 0x58, 0x8e, 0x14, 0x1c, 0x82, - 0x4b, 0x1c, 0xce, 0x5e, 0x20, 0x2f, 0x4a, 0x91, 0x5b, 0x96, 0xb4, 0x4f, 0x40, 0x15, 0x56, 0xfa, - 0xad, 0x8a, 0xd7, 0xd9, 0xc6, 0x1b, 0x54, 0x1d, 0xf6, 0x13, 0x89, 0x54, 0xc5, 0x39, 0xe7, 0x50, - 0xce, 0x16, 0x1c, 0x1e, 0x0a, 0xb0, 0x38, 0x23, 0x57, 0x06, 0xda, 0x05, 0x68, 0x06, 0x51, 0xaa, - 0x37, 0xff, 0xef, 0xda, 0x77, 0x86, 0xf6, 0x69, 0xed, 0xda, 0x17, 0xae, 0xc1, 0xbf, 0xae, 0x41, - 0x94, 0xa2, 0x1f, 0xbf, 0x61, 0xab, 0xef, 0x0c, 0x63, 0xb7, 0x8c, 0xb4, 0xef, 0x0a, 0xb8, 0x4b, - 0xa2, 0x31, 0x09, 0x09, 0xc3, 0xb3, 0x51, 0x9c, 0x50, 0x86, 0x03, 0xa2, 0xb7, 0xaa, 0x1d, 0xdd, - 0x6d, 0x3b, 0xea, 0x7f, 0xe7, 0xe0, 0x09, 0xb3, 0xdf, 0xc8, 0x65, 0xed, 0x57, 0x35, 0xe2, 0x42, - 0x10, 0x72, 0x0e, 0x37, 0xb1, 0x05, 0x87, 0xba, 0xf0, 0xd8, 0x88, 0x90, 0xdb, 0x26, 0x6b, 0x08, - 0xed, 0x9b, 0x02, 0xda, 0x19, 0x9d, 0xa5, 0x21, 0x89, 0x47, 0x38, 0x49, 0xb0, 0x37, 0x26, 0xbe, - 0x7e, 0x7b, 0x4f, 0xb3, 0xd7, 0xd2, 0xec, 0xf8, 0xbd, 0x20, 0x9c, 0x4b, 0x40, 0xce, 0xe1, 0x06, - 0xb4, 0xe0, 0xf0, 0x44, 0x78, 0xad, 0x27, 0xc8, 0x3d, 0xce, 0x56, 0xe7, 0xb5, 0x2f, 0x0a, 0xa8, - 0x6b, 0xa3, 0x90, 0xa6, 0xf3, 0x84, 0xf8, 0xba, 0xba, 0xa7, 0x54, 0x4f, 0x4a, 0x1d, 0x49, 0xa9, - 0x81, 0x98, 0xcf, 0x39, 0x5c, 0x47, 0x16, 0x1c, 0xde, 0x5f, 0x55, 0x92, 0x01, 0x72, 0x8f, 0xb2, - 0x95, 0x61, 0xed, 0x03, 0x68, 0x31, 0x3f, 0xc4, 0xfa, 0x9d, 0x3d, 0x25, 0x1e, 0x49, 0x89, 0x96, - 0xfb, 0x72, 0x70, 0x9e, 0x73, 0x58, 0x4d, 0x17, 0x1c, 0x1e, 0x88, 0x7d, 0xe5, 0x09, 0xb9, 0x55, - 0xd1, 0x7e, 0x7e, 0xb5, 0x30, 0x94, 0xeb, 0x85, 0xa1, 0xfc, 0x59, 0x18, 0xca, 0xd7, 0xa5, 0xd1, - 0xb8, 0x5e, 0x1a, 0x8d, 0x5f, 0x4b, 0xa3, 0xf1, 0xf1, 0x41, 0x34, 0x0d, 0x4c, 0x3c, 0x4d, 0x4c, - 0x9f, 0x64, 0x56, 0x40, 0x57, 0x5e, 0xde, 0x67, 0xb5, 0x7a, 0x6d, 0xcf, 0xfe, 0x06, 0x00, 0x00, - 0xff, 0xff, 0x0f, 0xb2, 0x65, 0x4f, 0x41, 0x04, 0x00, 0x00, + // 514 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xc1, 0x8a, 0xd3, 0x40, + 0x18, 0xc7, 0x1b, 0xbb, 0x56, 0x88, 0xec, 0xb6, 0x06, 0x71, 0x43, 0x95, 0x4c, 0x19, 0x10, 0xd6, + 0x4b, 0xc2, 0x2a, 0x5e, 0xbc, 0x99, 0xa2, 0x65, 0x91, 0x95, 0x90, 0x25, 0x1e, 0x04, 0x29, 0x63, + 0x3a, 0x4c, 0x4b, 0x9b, 0xcc, 0x90, 0x64, 0x02, 0xfb, 0x12, 0x22, 0x78, 0xf1, 0x19, 0x7c, 0x92, + 0x3d, 0xee, 0xd1, 0xd3, 0x28, 0xed, 0x45, 0x72, 0xcc, 0x13, 0x48, 0x32, 0xc9, 0xda, 0xa6, 0x75, + 0xd9, 0xbd, 0x25, 0xf3, 0xff, 0xbe, 0xdf, 0xf7, 0x9b, 0x0f, 0x46, 0x85, 0x68, 0x8e, 0xe2, 0xa9, + 0x35, 0x0b, 0x53, 0x1c, 0x26, 0x34, 0x3a, 0xb7, 0xd2, 0x63, 0x2b, 0xc2, 0x31, 0xe5, 0x91, 0x8f, + 0x63, 0x93, 0x45, 0x34, 0xa1, 0x9a, 0x56, 0xd6, 0x98, 0x57, 0x35, 0x66, 0x7a, 0xdc, 0x7f, 0x48, + 0x28, 0xa1, 0x65, 0x6c, 0x15, 0x5f, 0xb2, 0xb2, 0xff, 0x64, 0x07, 0xcd, 0x67, 0xfc, 0x9a, 0x94, + 0x5c, 0xa5, 0x60, 0x47, 0x1a, 0xe0, 0xa0, 0x98, 0x27, 0x0b, 0x9e, 0x5e, 0xa3, 0xca, 0xd0, 0x2c, + 0x92, 0x65, 0xf0, 0x4f, 0x47, 0xdd, 0x7f, 0x4f, 0x27, 0xd8, 0xad, 0x6f, 0xa1, 0xbd, 0x53, 0xdb, + 0x3e, 0xe3, 0xba, 0x32, 0x50, 0x8e, 0xee, 0x3f, 0x3f, 0x34, 0xb7, 0x6f, 0x63, 0x0e, 0x1d, 0xcf, + 0x1e, 0x5c, 0x08, 0xd0, 0x5a, 0x0a, 0xd0, 0x1e, 0x3a, 0x5e, 0x26, 0x40, 0xd1, 0x92, 0x0b, 0xa0, + 0x9e, 0xa3, 0x60, 0xf1, 0x0a, 0xfa, 0x8c, 0x43, 0xb7, 0x38, 0xd2, 0x3e, 0xa9, 0x1d, 0x69, 0xa5, + 0xdf, 0x29, 0x79, 0xfd, 0x5d, 0xbc, 0xd3, 0xb2, 0xc2, 0x7e, 0x56, 0x21, 0x3b, 0xf2, 0x3f, 0x13, + 0xa0, 0xea, 0xcd, 0x05, 0xd8, 0x97, 0x60, 0xf9, 0x0f, 0xdd, 0x2a, 0xd0, 0xce, 0xd4, 0x36, 0x61, + 0x5c, 0x6f, 0xff, 0xdf, 0x75, 0xe4, 0x78, 0xf6, 0x51, 0xed, 0x3a, 0x92, 0xae, 0x64, 0xdd, 0x95, + 0x30, 0x0e, 0x7f, 0xfc, 0x02, 0x7b, 0x23, 0xc7, 0x8b, 0xdd, 0x22, 0xd2, 0xbe, 0x2b, 0xea, 0x03, + 0xcc, 0xa6, 0x38, 0xc0, 0x11, 0x5a, 0x8c, 0xe3, 0x84, 0x46, 0x88, 0x60, 0x7d, 0xaf, 0x9c, 0x31, + 0xd8, 0x35, 0xa3, 0xde, 0x9d, 0x83, 0x66, 0x91, 0x7d, 0x52, 0x0d, 0xeb, 0xbd, 0xa9, 0x11, 0x67, + 0x92, 0x90, 0x09, 0xb0, 0x8d, 0xcd, 0x05, 0xd0, 0xa5, 0xc7, 0x56, 0x04, 0xdd, 0x1e, 0x6e, 0x20, + 0xb4, 0x6f, 0x8a, 0xda, 0x4b, 0xe9, 0x82, 0x07, 0x38, 0x1e, 0xa3, 0x24, 0x41, 0xfe, 0x14, 0x4f, + 0xf4, 0xbb, 0x37, 0x34, 0x7b, 0x5b, 0x99, 0x75, 0x3f, 0x48, 0xc2, 0xeb, 0x0a, 0x90, 0x09, 0xb0, + 0x05, 0xcd, 0x05, 0x38, 0x94, 0x5e, 0xcd, 0x04, 0xba, 0xdd, 0x74, 0xb3, 0x5f, 0xfb, 0xa2, 0xa8, + 0xf5, 0xd9, 0x38, 0xa0, 0x3c, 0x4c, 0xf0, 0x44, 0xef, 0xdc, 0x50, 0x6a, 0x58, 0x49, 0x1d, 0x54, + 0x52, 0xa7, 0xb2, 0x3f, 0x13, 0xa0, 0x89, 0xcc, 0x05, 0x78, 0xb4, 0xa9, 0x54, 0x05, 0xd0, 0x3d, + 0x48, 0x37, 0x9a, 0xcb, 0x35, 0x11, 0xc6, 0xc7, 0xb3, 0x30, 0xc1, 0x91, 0x4f, 0xc3, 0x10, 0xfb, + 0x89, 0x7e, 0xef, 0xb6, 0x6b, 0x1a, 0x39, 0xde, 0xc9, 0x1a, 0xa0, 0x58, 0x53, 0x13, 0xfa, 0x6f, + 0x4d, 0xcd, 0x04, 0xba, 0x5d, 0xc2, 0xf8, 0x7a, 0xbf, 0xfd, 0xf2, 0x62, 0x69, 0x28, 0x97, 0x4b, + 0x43, 0xf9, 0xbd, 0x34, 0x94, 0xaf, 0x2b, 0xa3, 0x75, 0xb9, 0x32, 0x5a, 0x3f, 0x57, 0x46, 0xeb, + 0xe3, 0x63, 0x36, 0x27, 0x26, 0x9a, 0x27, 0xe6, 0x04, 0xa7, 0x16, 0xa1, 0x1b, 0x8f, 0xf6, 0x73, + 0xa7, 0x7c, 0xa8, 0x2f, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, 0x10, 0xed, 0x3d, 0xce, 0x7c, 0x04, + 0x00, 0x00, } func (m *NodeResources) Marshal() (dAtA []byte, err error) { @@ -185,7 +188,7 @@ func (m *NodeResources) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l { - size, err := m.RDMA.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.GPUInterconnect.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -286,7 +289,7 @@ func (m *NodeResources) Size() (n int) { n += 1 + l + sovResources(uint64(l)) l = m.VolumesMounted.Size() n += 1 + l + sovResources(uint64(l)) - l = m.RDMA.Size() + l = m.GPUInterconnect.Size() n += 1 + l + sovResources(uint64(l)) return n } @@ -526,7 +529,7 @@ func (m *NodeResources) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RDMA", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field GPUInterconnect", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -553,7 +556,7 @@ func (m *NodeResources) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.RDMA.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.GPUInterconnect.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/go/inventory/v1/resources_test.go b/go/inventory/v1/resources_test.go index 1aee4dc0..a306884a 100644 --- a/go/inventory/v1/resources_test.go +++ b/go/inventory/v1/resources_test.go @@ -7,7 +7,7 @@ import ( "k8s.io/apimachinery/pkg/api/resource" ) -func TestNodeResources_Dup_PreservesRDMA(t *testing.T) { +func TestNodeResources_Dup_PreservesGPUInterconnect(t *testing.T) { // NodeResources.Dup() reads each member's Dup() so every member must be // initialized to a non-zero ResourcePair to avoid nil-quantity panics. zeroPair := NewResourcePair(0, 0, 0, resource.DecimalSI) @@ -18,16 +18,16 @@ func TestNodeResources_Dup_PreservesRDMA(t *testing.T) { EphemeralStorage: zeroPair, VolumesAttached: zeroPair, VolumesMounted: zeroPair, - RDMA: NewResourcePair(63, 8, 8, resource.DecimalSI), + GPUInterconnect: NewResourcePair(63, 8, 8, resource.DecimalSI), } got := src.Dup() - require.Equal(t, int64(63), got.RDMA.Capacity.Value()) - require.Equal(t, int64(8), got.RDMA.Allocatable.Value()) - require.Equal(t, int64(8), got.RDMA.Allocated.Value()) + require.Equal(t, int64(63), got.GPUInterconnect.Capacity.Value()) + require.Equal(t, int64(8), got.GPUInterconnect.Allocatable.Value()) + require.Equal(t, int64(8), got.GPUInterconnect.Allocated.Value()) // Source unaffected when mutating dup - got.RDMA.Allocated.Set(0) - require.Equal(t, int64(8), src.RDMA.Allocated.Value()) + got.GPUInterconnect.Allocated.Set(0) + require.Equal(t, int64(8), src.GPUInterconnect.Allocated.Value()) } diff --git a/go/manifest/v2beta3/service.pb.go b/go/manifest/v2beta3/service.pb.go index 7667a5f6..35de67f3 100644 --- a/go/manifest/v2beta3/service.pb.go +++ b/go/manifest/v2beta3/service.pb.go @@ -272,19 +272,19 @@ type Service struct { Expose ServiceExposes `protobuf:"bytes,8,rep,name=expose,proto3,castrepeated=ServiceExposes" json:"expose" yaml:"expose"` Params *ServiceParams `protobuf:"bytes,9,opt,name=params,proto3" json:"params,omitempty" yaml:"params,omitempty"` Credentials *ImageCredentials `protobuf:"bytes,10,opt,name=credentials,proto3" json:"credentials" yaml:"credentials"` - // RDMAGroup carries the SDL gpu.attributes.rdma_group peer-group label. - // Off-chain only — never reaches Resources.GPU.attributes. Services - // sharing the same value form one NCCL peer group; the provider applies - // pod anti-affinity within each group when scheduling the workload. - // Empty when the service is not part of any RDMA peer group. + // InterconnectGroup carries the SDL gpu.attributes.interconnect_group + // peer-group label. Lifted from Resources.GPU.Attributes by the + // manifest builder so the off-chain workload builder can label pods + // for per-group anti-affinity. Services sharing the same value form + // one NCCL peer group; the provider schedules them on distinct nodes. + // Empty when the service is not part of any GPU interconnect group. // // JSON / YAML tags carry `omitempty`: the on-chain manifest `version` - // is a SHA hash of the JSON-serialized off-chain manifest, so any field - // that always serializes (even at zero value) would shift the hash for - // every pre-RDMA SDL and break send-manifest validation on existing - // leases. With omitempty, non-RDMA services serialize identically to - // their pre-PR shape; only services that declare a group emit the key. - RDMAGroup string `protobuf:"bytes,11,opt,name=rdma_group,json=rdmaGroup,proto3" json:"rdmaGroup,omitempty" yaml:"rdmaGroup,omitempty"` + // is a SHA hash of the JSON-serialized off-chain manifest, so any + // field that always serializes (even at zero value) would shift the + // hash for every non-interconnect SDL and break send-manifest + // validation on existing leases. + InterconnectGroup string `protobuf:"bytes,11,opt,name=interconnect_group,json=interconnectGroup,proto3" json:"interconnectGroup,omitempty" yaml:"interconnectGroup,omitempty"` } func (m *Service) Reset() { *m = Service{} } @@ -389,9 +389,9 @@ func (m *Service) GetCredentials() *ImageCredentials { return nil } -func (m *Service) GetRDMAGroup() string { +func (m *Service) GetInterconnectGroup() string { if m != nil { - return m.RDMAGroup + return m.InterconnectGroup } return "" } @@ -409,61 +409,61 @@ func init() { } var fileDescriptor_6d5964c4976d68e5 = []byte{ - // 856 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xf7, 0xe2, 0xd4, 0x89, 0xc7, 0x24, 0x44, 0x03, 0xa5, 0xdb, 0x08, 0x3c, 0x66, 0x44, 0x85, - 0x69, 0xaa, 0xb5, 0x9a, 0x20, 0x21, 0xf1, 0x47, 0xa8, 0x0b, 0x08, 0x71, 0x40, 0x54, 0x53, 0x71, - 0xe1, 0x52, 0x4d, 0xec, 0xc1, 0xb5, 0xe2, 0xdd, 0x59, 0xed, 0xac, 0x0d, 0xb9, 0x71, 0x45, 0x08, - 0x89, 0xcf, 0x01, 0x5f, 0x24, 0xc7, 0x1e, 0xcb, 0x65, 0x00, 0xe7, 0xb6, 0xc7, 0xfd, 0x04, 0x68, - 0xde, 0xcc, 0x66, 0xd6, 0x8d, 0x4b, 0x84, 0x38, 0xd9, 0xef, 0xf7, 0xfe, 0xcd, 0x7b, 0xf3, 0x9b, - 0xdf, 0xa2, 0xb7, 0xf9, 0x29, 0x57, 0x4f, 0x46, 0x09, 0x4f, 0x67, 0xdf, 0x09, 0x55, 0x8c, 0x96, - 0x47, 0x27, 0xa2, 0xe0, 0xc7, 0x23, 0x25, 0xf2, 0xe5, 0x6c, 0x2c, 0xa2, 0x2c, 0x97, 0x85, 0xc4, - 0xaf, 0x43, 0x54, 0x54, 0x47, 0x45, 0x2e, 0xea, 0xe0, 0xb5, 0xa9, 0x9c, 0x4a, 0x08, 0x19, 0x99, - 0x7f, 0x36, 0xfa, 0xe0, 0xee, 0xbf, 0xd7, 0x14, 0x3f, 0x64, 0x52, 0xb9, 0xca, 0x07, 0xf7, 0x6c, - 0xec, 0x09, 0x57, 0x62, 0x94, 0x0b, 0x25, 0x17, 0xf9, 0x58, 0xa8, 0xd1, 0xf2, 0xbe, 0xc9, 0x78, - 0xcf, 0x23, 0x36, 0x9a, 0xfe, 0x1e, 0xa0, 0xdd, 0x47, 0x85, 0xcc, 0xf9, 0x54, 0x3c, 0xe4, 0x39, - 0x4f, 0x14, 0x3e, 0x44, 0x5b, 0x29, 0x4f, 0x44, 0x18, 0x0c, 0x82, 0x61, 0x37, 0xbe, 0x55, 0x6a, - 0x02, 0x76, 0xa5, 0x49, 0xef, 0x8c, 0x27, 0xf3, 0x0f, 0xa8, 0xb1, 0x28, 0x03, 0x10, 0x8f, 0xd0, - 0x8d, 0x44, 0x2e, 0xd2, 0x22, 0x7c, 0x09, 0xa2, 0x6f, 0x97, 0x9a, 0x58, 0xa0, 0xd2, 0xe4, 0x65, - 0x1b, 0x0e, 0x26, 0x65, 0x16, 0xc6, 0x1f, 0xa1, 0x6e, 0x2e, 0xf8, 0xe4, 0xb1, 0x4c, 0xe7, 0x67, - 0x61, 0x7b, 0x10, 0x0c, 0x77, 0x62, 0x52, 0x6a, 0xb2, 0x63, 0xc0, 0xaf, 0xd3, 0xf9, 0x59, 0xa5, - 0xc9, 0x2b, 0x36, 0xaf, 0x46, 0x28, 0xbb, 0x74, 0xd2, 0x6f, 0x10, 0x7e, 0x64, 0x47, 0x7e, 0x28, - 0xf2, 0x64, 0xa6, 0xd4, 0x4c, 0xa6, 0x0a, 0x7f, 0x82, 0xb6, 0x4c, 0x44, 0x18, 0x0c, 0xda, 0xc3, - 0x6e, 0x7c, 0x58, 0x6a, 0xb2, 0x67, 0xec, 0x7b, 0x32, 0x99, 0x15, 0x22, 0xc9, 0x0a, 0x53, 0xf4, - 0xa6, 0x2f, 0xea, 0x71, 0xca, 0x20, 0x91, 0xfe, 0xd2, 0x46, 0xbb, 0x75, 0x5d, 0xbb, 0x84, 0x13, - 0xb4, 0xad, 0xec, 0x56, 0xa0, 0x6a, 0xef, 0xe8, 0x4e, 0xb4, 0xf9, 0xc2, 0xa2, 0xb5, 0xe5, 0xc5, - 0x6f, 0x9d, 0x6b, 0xd2, 0x2a, 0x35, 0xa9, 0xb3, 0x2b, 0x4d, 0xf6, 0x6c, 0x67, 0x07, 0x50, 0x56, - 0xbb, 0xf0, 0x4f, 0x01, 0xea, 0x8d, 0x73, 0x31, 0x11, 0x69, 0x31, 0xe3, 0x73, 0x15, 0xa2, 0x41, - 0x30, 0xec, 0x1d, 0x0d, 0x5f, 0xd4, 0xe8, 0xcb, 0x84, 0x4f, 0xc5, 0xa7, 0x3e, 0x3e, 0xfe, 0xf8, - 0x5c, 0x93, 0xa0, 0xd4, 0xe4, 0x66, 0xa3, 0xc8, 0xda, 0xcc, 0x6f, 0xd8, 0xce, 0x1b, 0xdd, 0x94, - 0x35, 0x7b, 0xe3, 0x9f, 0x03, 0xd4, 0xcb, 0xfc, 0x4a, 0xc3, 0x1e, 0x9c, 0xe5, 0xee, 0x0b, 0x87, - 0xbe, 0x72, 0x09, 0xfe, 0x34, 0x8d, 0x32, 0x9b, 0x4e, 0xb3, 0xd1, 0x4d, 0x59, 0xb3, 0x3b, 0x2d, - 0x03, 0xb4, 0xff, 0xfc, 0xb8, 0x86, 0x97, 0x4f, 0xa4, 0x2a, 0x9a, 0xbc, 0x34, 0xb6, 0xe7, 0xa5, - 0xb1, 0x28, 0x03, 0xd0, 0xf0, 0x52, 0x24, 0x7c, 0x36, 0x6f, 0xf2, 0x12, 0x00, 0xcf, 0x4b, 0x30, - 0x29, 0xb3, 0x30, 0xfe, 0x10, 0xed, 0x2c, 0x94, 0xc8, 0x81, 0xf9, 0x6d, 0xc8, 0x01, 0x5a, 0xd6, - 0x98, 0xa7, 0x65, 0x8d, 0x50, 0x76, 0xe9, 0x34, 0xc9, 0x19, 0x57, 0xea, 0x7b, 0x99, 0x4f, 0xc2, - 0x2d, 0x9f, 0x5c, 0x63, 0x3e, 0xb9, 0x46, 0x28, 0xbb, 0x74, 0xd2, 0x3f, 0x3a, 0x68, 0xdb, 0xed, - 0xf3, 0x3f, 0xbf, 0xbd, 0x99, 0x59, 0x52, 0x73, 0x46, 0x00, 0xfc, 0x8c, 0x60, 0x52, 0x66, 0x61, - 0xfc, 0x3e, 0xda, 0x1e, 0xcb, 0x24, 0xe1, 0xe9, 0x24, 0x6c, 0xc3, 0x53, 0x79, 0xd3, 0x30, 0xd5, - 0x41, 0x9e, 0xa9, 0x0e, 0xa0, 0xac, 0x76, 0x99, 0x63, 0xf1, 0x7c, 0xaa, 0xc2, 0x2d, 0xc8, 0x82, - 0x63, 0x19, 0xdb, 0x1f, 0xcb, 0x58, 0x94, 0x01, 0x88, 0x0f, 0x51, 0x5b, 0xa4, 0xcb, 0xf0, 0x06, - 0xc4, 0xde, 0x76, 0xac, 0x30, 0x50, 0xa5, 0x09, 0x72, 0xab, 0x4f, 0x97, 0x94, 0x19, 0x08, 0xcf, - 0x8d, 0x1c, 0x38, 0x45, 0x0a, 0x3b, 0x40, 0xba, 0x77, 0x1c, 0xe9, 0x8c, 0x80, 0x45, 0x5e, 0xae, - 0x9c, 0x80, 0x45, 0xac, 0x46, 0xe2, 0x3b, 0xee, 0xad, 0xf9, 0x0a, 0x95, 0x26, 0xfb, 0xf5, 0x3b, - 0x77, 0x10, 0x65, 0xde, 0x6d, 0x36, 0x36, 0x06, 0xb5, 0xda, 0x1e, 0x04, 0xc3, 0x5d, 0xbb, 0xb1, - 0xf1, 0xba, 0x5a, 0x8d, 0x9d, 0x5a, 0xc1, 0x2f, 0xce, 0x50, 0xc7, 0x6a, 0x6b, 0xb8, 0x73, 0x8d, - 0x0a, 0xd8, 0x0b, 0xfc, 0x1c, 0x82, 0xe3, 0xfb, 0xee, 0x64, 0x2e, 0xb9, 0xd2, 0x64, 0xd7, 0x0d, - 0x0e, 0x36, 0xfd, 0xed, 0x4f, 0xb2, 0xb7, 0x96, 0xa1, 0x98, 0x0b, 0xc5, 0x39, 0xea, 0x64, 0x20, - 0x25, 0x61, 0x17, 0xb6, 0x71, 0x5d, 0x47, 0xa7, 0x3b, 0xc7, 0x6e, 0xcf, 0xfb, 0x36, 0x79, 0xed, - 0xe1, 0xdd, 0xaa, 0xb9, 0xb7, 0xee, 0xa1, 0xcc, 0x75, 0xc2, 0x8b, 0xff, 0xa7, 0x43, 0xef, 0xba, - 0xde, 0xcd, 0x22, 0x95, 0x26, 0xf8, 0x8a, 0xfa, 0x3c, 0xa7, 0x39, 0x1c, 0xa1, 0x7c, 0x92, 0xf0, - 0xc7, 0xd3, 0x5c, 0x2e, 0x32, 0x50, 0x9c, 0x6e, 0x1c, 0xaf, 0x34, 0xe9, 0xb2, 0xcf, 0xbe, 0x7a, - 0xf0, 0x85, 0x01, 0x4b, 0x4d, 0x5e, 0x35, 0x21, 0x60, 0xac, 0xcd, 0x74, 0xe0, 0xae, 0xf9, 0xaa, - 0xd3, 0x5c, 0x78, 0x8d, 0xc6, 0x0f, 0x9e, 0xfd, 0xdd, 0x6f, 0xfd, 0xb8, 0xea, 0x07, 0xe7, 0xab, - 0x7e, 0xf0, 0x74, 0xd5, 0x0f, 0xfe, 0x5a, 0xf5, 0x83, 0x5f, 0x2f, 0xfa, 0xad, 0xa7, 0x17, 0xfd, - 0xd6, 0xb3, 0x8b, 0x7e, 0xeb, 0x5b, 0x92, 0x9d, 0x4e, 0x23, 0x7e, 0x5a, 0x44, 0x13, 0xb1, 0x1c, - 0x4d, 0xe5, 0x95, 0x4f, 0xec, 0x49, 0x07, 0xbe, 0x93, 0xc7, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, - 0x8a, 0xc1, 0xb3, 0x4f, 0xd7, 0x07, 0x00, 0x00, + // 864 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xf6, 0xe0, 0x34, 0x8e, 0xc7, 0x24, 0xa4, 0x23, 0x4a, 0xb7, 0x01, 0x3c, 0x66, 0x44, 0x85, + 0x69, 0xaa, 0xb5, 0x9a, 0x20, 0x21, 0xf1, 0x43, 0x88, 0x45, 0x08, 0xf5, 0x44, 0x35, 0x15, 0x97, + 0x5e, 0xaa, 0xc9, 0x7a, 0x70, 0x57, 0xf1, 0xee, 0xac, 0x76, 0xd6, 0x86, 0xdc, 0x10, 0xb7, 0x0a, + 0x21, 0xf1, 0x77, 0xc0, 0x3f, 0x92, 0x63, 0x8f, 0x3d, 0x0d, 0xe0, 0xdc, 0xf6, 0xb8, 0x7f, 0x01, + 0x9a, 0x1f, 0x9b, 0x59, 0xe7, 0x07, 0x15, 0xe2, 0x94, 0xbc, 0xef, 0x7d, 0xef, 0xcd, 0xbc, 0xb7, + 0xdf, 0x7c, 0x86, 0xef, 0xb3, 0x63, 0x26, 0x9f, 0x4d, 0x52, 0x96, 0x25, 0xdf, 0x73, 0x59, 0x4e, + 0x96, 0x07, 0x47, 0xbc, 0x64, 0x87, 0x13, 0xc9, 0x8b, 0x65, 0x12, 0xf3, 0x30, 0x2f, 0x44, 0x29, + 0xd0, 0x5b, 0x86, 0x15, 0x36, 0xac, 0xd0, 0xb1, 0xf6, 0xde, 0x9c, 0x89, 0x99, 0x30, 0x94, 0x89, + 0xfe, 0xcf, 0xb2, 0xf7, 0xee, 0xfd, 0x7b, 0x4f, 0xfe, 0x63, 0x2e, 0xa4, 0xeb, 0xbc, 0x77, 0xdf, + 0x72, 0x8f, 0x98, 0xe4, 0x93, 0x82, 0x4b, 0xb1, 0x28, 0x62, 0x2e, 0x27, 0xcb, 0x07, 0xba, 0xe2, + 0x23, 0x8f, 0x58, 0x36, 0xf9, 0x03, 0xc0, 0xed, 0xc7, 0xa5, 0x28, 0xd8, 0x8c, 0x3f, 0x62, 0x05, + 0x4b, 0x25, 0xda, 0x87, 0x1b, 0x19, 0x4b, 0x79, 0x00, 0x46, 0x60, 0xdc, 0x8f, 0x6e, 0x57, 0x0a, + 0x9b, 0xb8, 0x56, 0x78, 0x70, 0xc2, 0xd2, 0xf9, 0x27, 0x44, 0x47, 0x84, 0x1a, 0x10, 0x4d, 0xe0, + 0x8d, 0x54, 0x2c, 0xb2, 0x32, 0x78, 0xcd, 0xb0, 0xef, 0x54, 0x0a, 0x5b, 0xa0, 0x56, 0xf8, 0x75, + 0x4b, 0x37, 0x21, 0xa1, 0x16, 0x46, 0x9f, 0xc1, 0x7e, 0xc1, 0xd9, 0xf4, 0xa9, 0xc8, 0xe6, 0x27, + 0x41, 0x77, 0x04, 0xc6, 0x5b, 0x11, 0xae, 0x14, 0xde, 0xd2, 0xe0, 0xb7, 0xd9, 0xfc, 0xa4, 0x56, + 0xf8, 0x0d, 0x5b, 0xd7, 0x20, 0x84, 0x9e, 0x27, 0xc9, 0x77, 0x10, 0x3d, 0xb6, 0x23, 0x3f, 0xe2, + 0x45, 0x9a, 0x48, 0x99, 0x88, 0x4c, 0xa2, 0x2f, 0xe0, 0x86, 0x66, 0x04, 0x60, 0xd4, 0x1d, 0xf7, + 0xa3, 0xfd, 0x4a, 0xe1, 0x1d, 0x1d, 0xdf, 0x17, 0x69, 0x52, 0xf2, 0x34, 0x2f, 0x75, 0xd3, 0x5b, + 0xbe, 0xa9, 0xc7, 0x09, 0x35, 0x85, 0xe4, 0xd7, 0x2e, 0xdc, 0x6e, 0xfa, 0xda, 0x25, 0x1c, 0xc1, + 0x9e, 0xb4, 0x5b, 0x31, 0x5d, 0x07, 0x07, 0x77, 0xc3, 0xab, 0x3f, 0x58, 0xb8, 0xb6, 0xbc, 0xe8, + 0xbd, 0x53, 0x85, 0x3b, 0x95, 0xc2, 0x4d, 0x75, 0xad, 0xf0, 0x8e, 0x3d, 0xd9, 0x01, 0x84, 0x36, + 0x29, 0xf4, 0x1c, 0xc0, 0x41, 0x5c, 0xf0, 0x29, 0xcf, 0xca, 0x84, 0xcd, 0x65, 0x00, 0x47, 0x60, + 0x3c, 0x38, 0x18, 0x5f, 0x77, 0xd0, 0xc3, 0x94, 0xcd, 0xf8, 0x57, 0x9e, 0x1f, 0x7d, 0x7e, 0xaa, + 0x30, 0xa8, 0x14, 0xbe, 0xd5, 0x6a, 0xb2, 0x36, 0xf3, 0x3b, 0xf6, 0xe4, 0x2b, 0xd3, 0x84, 0xb6, + 0xcf, 0x46, 0xbf, 0x00, 0x38, 0xc8, 0xfd, 0x4a, 0x83, 0x81, 0xb9, 0xcb, 0xbd, 0x6b, 0x87, 0xbe, + 0xf4, 0x11, 0xfc, 0x6d, 0x5a, 0x6d, 0xae, 0xba, 0xcd, 0x95, 0x69, 0x42, 0xdb, 0xa7, 0x93, 0x0a, + 0xc0, 0xdd, 0x8b, 0xe3, 0x6a, 0x5d, 0x3e, 0x13, 0xb2, 0x6c, 0xeb, 0x52, 0xc7, 0x5e, 0x97, 0x3a, + 0x22, 0xd4, 0x80, 0x5a, 0x97, 0x3c, 0x65, 0xc9, 0xbc, 0xad, 0x4b, 0x03, 0x78, 0x5d, 0x9a, 0x90, + 0x50, 0x0b, 0xa3, 0x4f, 0xe1, 0xd6, 0x42, 0xf2, 0xc2, 0x28, 0xbf, 0x6b, 0x6a, 0x8c, 0x2c, 0x1b, + 0xcc, 0xcb, 0xb2, 0x41, 0x08, 0x3d, 0x4f, 0xea, 0xe2, 0x9c, 0x49, 0xf9, 0x83, 0x28, 0xa6, 0xc1, + 0x86, 0x2f, 0x6e, 0x30, 0x5f, 0xdc, 0x20, 0x84, 0x9e, 0x27, 0xc9, 0xcf, 0x3d, 0xd8, 0x73, 0xfb, + 0xfc, 0xcf, 0x6f, 0x2f, 0xd1, 0x4b, 0x6a, 0xcf, 0x68, 0x00, 0x3f, 0xa3, 0x09, 0x09, 0xb5, 0x30, + 0xfa, 0x18, 0xf6, 0x62, 0x91, 0xa6, 0x2c, 0x9b, 0x06, 0x5d, 0xf3, 0x54, 0xde, 0xd5, 0x4a, 0x75, + 0x90, 0x57, 0xaa, 0x03, 0x08, 0x6d, 0x52, 0xfa, 0x5a, 0xac, 0x98, 0xc9, 0x60, 0xc3, 0x54, 0x99, + 0x6b, 0xe9, 0xd8, 0x5f, 0x4b, 0x47, 0x84, 0x1a, 0x10, 0xed, 0xc3, 0x2e, 0xcf, 0x96, 0xc1, 0x0d, + 0xc3, 0xbd, 0xe3, 0x54, 0xa1, 0xa1, 0x5a, 0x61, 0xe8, 0x56, 0x9f, 0x2d, 0x09, 0xd5, 0x10, 0x9a, + 0x6b, 0x3b, 0x70, 0x8e, 0x14, 0x6c, 0x1a, 0xd1, 0x7d, 0xe0, 0x44, 0xa7, 0x0d, 0x2c, 0xf4, 0x76, + 0xe5, 0x0c, 0x2c, 0xa4, 0x0d, 0x12, 0xdd, 0x75, 0x6f, 0xcd, 0x77, 0xa8, 0x15, 0xde, 0x6d, 0xde, + 0xb9, 0x83, 0x08, 0xf5, 0x69, 0xbd, 0xb1, 0xd8, 0xb8, 0x55, 0x6f, 0x04, 0xc6, 0xdb, 0x76, 0x63, + 0xf1, 0xba, 0x5b, 0xc5, 0xce, 0xad, 0xcc, 0x5f, 0x94, 0xc3, 0x4d, 0xeb, 0xad, 0xc1, 0xd6, 0x2b, + 0x5c, 0xc0, 0x7e, 0xc0, 0xaf, 0x0d, 0x39, 0x7a, 0xe0, 0x6e, 0xe6, 0x8a, 0x6b, 0x85, 0xb7, 0xdd, + 0xe0, 0x26, 0x26, 0xbf, 0xff, 0x89, 0x77, 0xd6, 0x2a, 0x24, 0x75, 0x54, 0x54, 0xc0, 0xcd, 0xdc, + 0x58, 0x49, 0xd0, 0x37, 0xdb, 0x78, 0xd5, 0x89, 0xce, 0x77, 0x0e, 0xdd, 0x9e, 0x77, 0x6d, 0xf1, + 0xda, 0xc3, 0xbb, 0xdd, 0x68, 0x6f, 0x3d, 0x43, 0xa8, 0x3b, 0x09, 0x2d, 0xfe, 0x9f, 0x0f, 0x7d, + 0xe8, 0xce, 0x6e, 0x37, 0xa9, 0x15, 0x46, 0x97, 0xdc, 0xe7, 0x82, 0xe7, 0x3c, 0x07, 0x10, 0x25, + 0x59, 0xc9, 0x8b, 0x58, 0x64, 0x19, 0x8f, 0xcb, 0xa7, 0xb3, 0x42, 0x2c, 0x72, 0x63, 0x3d, 0xfd, + 0xe8, 0xc9, 0x4a, 0xe1, 0x9b, 0x0f, 0x5b, 0xd9, 0x6f, 0x74, 0xb2, 0x52, 0xf8, 0xed, 0xe4, 0x22, + 0xb8, 0x36, 0x2c, 0x71, 0xc2, 0xbf, 0x9e, 0x44, 0xe8, 0xcd, 0x4b, 0xd9, 0xe8, 0xcb, 0x97, 0x7f, + 0x0f, 0x3b, 0x3f, 0xad, 0x86, 0xe0, 0x74, 0x35, 0x04, 0x2f, 0x56, 0x43, 0xf0, 0xd7, 0x6a, 0x08, + 0x7e, 0x3b, 0x1b, 0x76, 0x5e, 0x9c, 0x0d, 0x3b, 0x2f, 0xcf, 0x86, 0x9d, 0x27, 0x38, 0x3f, 0x9e, + 0x85, 0xec, 0xb8, 0x0c, 0xa7, 0x7c, 0x39, 0x99, 0x89, 0x4b, 0xbf, 0xc5, 0x47, 0x9b, 0xe6, 0x07, + 0xf5, 0xf0, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x30, 0xb7, 0xa2, 0x87, 0x00, 0x08, 0x00, 0x00, } func (m *StorageParams) Marshal() (dAtA []byte, err error) { @@ -677,10 +677,10 @@ func (m *Service) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.RDMAGroup) > 0 { - i -= len(m.RDMAGroup) - copy(dAtA[i:], m.RDMAGroup) - i = encodeVarintService(dAtA, i, uint64(len(m.RDMAGroup))) + if len(m.InterconnectGroup) > 0 { + i -= len(m.InterconnectGroup) + copy(dAtA[i:], m.InterconnectGroup) + i = encodeVarintService(dAtA, i, uint64(len(m.InterconnectGroup))) i-- dAtA[i] = 0x5a } @@ -926,7 +926,7 @@ func (m *Service) Size() (n int) { l = m.Credentials.Size() n += 1 + l + sovService(uint64(l)) } - l = len(m.RDMAGroup) + l = len(m.InterconnectGroup) if l > 0 { n += 1 + l + sovService(uint64(l)) } @@ -1011,7 +1011,7 @@ func (this *Service) String() string { `Expose:` + repeatedStringForExpose + `,`, `Params:` + strings.Replace(this.Params.String(), "ServiceParams", "ServiceParams", 1) + `,`, `Credentials:` + strings.Replace(this.Credentials.String(), "ImageCredentials", "ImageCredentials", 1) + `,`, - `RDMAGroup:` + fmt.Sprintf("%v", this.RDMAGroup) + `,`, + `InterconnectGroup:` + fmt.Sprintf("%v", this.InterconnectGroup) + `,`, `}`, }, "") return s @@ -1923,7 +1923,7 @@ func (m *Service) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RDMAGroup", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field InterconnectGroup", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1951,7 +1951,7 @@ func (m *Service) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.RDMAGroup = string(dAtA[iNdEx:postIndex]) + m.InterconnectGroup = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/go/node/deployment/v1beta4/rdma_commit_audit_test.go b/go/node/deployment/v1beta4/interconnect_commit_audit_test.go similarity index 68% rename from go/node/deployment/v1beta4/rdma_commit_audit_test.go rename to go/node/deployment/v1beta4/interconnect_commit_audit_test.go index 06601032..eac50fd9 100644 --- a/go/node/deployment/v1beta4/rdma_commit_audit_test.go +++ b/go/node/deployment/v1beta4/interconnect_commit_audit_test.go @@ -13,15 +13,15 @@ import ( // CS-6: the provider reservation/commit path on the provider side rebuilds // GroupSpec instances from parts and feeds the rebuilt value into the -// inventory.Adjust path. The provider's RDMA-detection logic reads +// inventory.Adjust path. The provider's interconnect-detection logic reads // -// - GroupSpec.Requirements.Attributes (carrying capabilities/rdma=true) -// - Resources.GPU.Attributes (carrying rdma=true per resource) +// - GroupSpec.Requirements.Attributes (carrying capabilities/gpu-interconnect=true) +// - Resources.GPU.Attributes (carrying interconnect=true per resource) // // from whatever ResourceGroup-typed value lands on its `reservation.Resources()` // call. If anything in the chain SDK's Dup / accessor chain drops either of // those attribute slices, the provider silently treats the order as -// non-RDMA. These tests pin down preservation for every concrete +// non-interconnect. These tests pin down preservation for every concrete // ResourceGroup the provider may hold: // // - *Group (the bid-engine path stores a *dtypes.Group) @@ -29,21 +29,21 @@ import ( // - *GroupSpec (used by tests and by some legacy adapter paths) // - GroupSpec (value form returned by Group.GroupSpec) // -// We assert that a representative Group carrying capabilities/rdma=true on -// Requirements and rdma=true on the first resource's GPU.Attributes survives: +// We assert that a representative Group carrying capabilities/gpu-interconnect=true on +// Requirements and interconnect=true on the first resource's GPU.Attributes survives: // // 1. (Group).Dup()-equivalent — via GroupSpec.Dup(). // 2. Accessing the value via the ResourceGroup interface (GetResourceUnits). // 3. Direct field reads of Requirements.Attributes from any of the four // concrete shapes. -func rdmaSampleGroupSpec() GroupSpec { +func interconnectSampleGroupSpec() GroupSpec { return GroupSpec{ Name: "ib", Requirements: attr.PlacementRequirements{ Attributes: attr.Attributes{ - {Key: "capabilities/rdma", Value: "true"}, - {Key: "capabilities/rdma/fabric/infiniband", Value: "true"}, + {Key: "capabilities/gpu-interconnect", Value: "true"}, + {Key: "capabilities/gpu-interconnect/fabric/infiniband", Value: "true"}, }, }, Resources: ResourceUnits{ @@ -59,7 +59,7 @@ func rdmaSampleGroupSpec() GroupSpec { GPU: &rtypes.GPU{ Units: rtypes.NewResourceValue(8), Attributes: attr.Attributes{ - {Key: "rdma", Value: "true"}, + {Key: "interconnect", Value: "true"}, {Key: "vendor/nvidia/model/a100", Value: "true"}, }, }, @@ -72,36 +72,36 @@ func rdmaSampleGroupSpec() GroupSpec { } } -func assertRDMASignalsPresent(t *testing.T, where string, reqs attr.Attributes, gpu attr.Attributes) { +func assertInterconnectSignalsPresent(t *testing.T, where string, reqs attr.Attributes, gpu attr.Attributes) { t.Helper() - hasPlacementRDMA := false + hasPlacementInterconnect := false for _, a := range reqs { - if a.Key == "capabilities/rdma" && a.Value == "true" { - hasPlacementRDMA = true + if a.Key == "capabilities/gpu-interconnect" && a.Value == "true" { + hasPlacementInterconnect = true } } - require.True(t, hasPlacementRDMA, "%s: Requirements lost capabilities/rdma=true", where) + require.True(t, hasPlacementInterconnect, "%s: Requirements lost capabilities/gpu-interconnect=true", where) - hasGPURDMA := false + hasGPUInterconnect := false for _, a := range gpu { - if a.Key == "rdma" && a.Value == "true" { - hasGPURDMA = true + if a.Key == "interconnect" && a.Value == "true" { + hasGPUInterconnect = true } } - require.True(t, hasGPURDMA, "%s: per-resource GPU.Attributes lost rdma=true", where) + require.True(t, hasGPUInterconnect, "%s: per-resource GPU.Attributes lost interconnect=true", where) } -// TestCS6_RDMASignalsSurviveDup is the canonical regression test: drive the +// TestCS6_InterconnectSignalsSurviveDup is the canonical regression test: drive the // representative GroupSpec through Dup() and assert both attribute slices // survive verbatim. If a future change to Resources.Dup() / Requirements.Dup() // drops attributes, this fails loudly. -func TestCS6_RDMASignalsSurviveDup(t *testing.T) { - src := rdmaSampleGroupSpec() +func TestCS6_InterconnectSignalsSurviveDup(t *testing.T) { + src := interconnectSampleGroupSpec() dup := src.Dup() require.NotSame(t, &src, &dup) - assertRDMASignalsPresent(t, "GroupSpec.Dup result", + assertInterconnectSignalsPresent(t, "GroupSpec.Dup result", dup.Requirements.Attributes, dup.Resources[0].Resources.GPU.Attributes, ) @@ -109,18 +109,18 @@ func TestCS6_RDMASignalsSurviveDup(t *testing.T) { // And mutating the dup must not poison the source. dup.Requirements.Attributes[0].Value = "false" dup.Resources[0].Resources.GPU.Attributes[0].Value = "false" - assertRDMASignalsPresent(t, "source after mutating dup", + assertInterconnectSignalsPresent(t, "source after mutating dup", src.Requirements.Attributes, src.Resources[0].Resources.GPU.Attributes, ) } -// TestCS6_RDMASignalsAcrossConcreteTypes exercises the four concrete +// TestCS6_InterconnectSignalsAcrossConcreteTypes exercises the four concrete // ResourceGroup-shaped values the provider's reservation/commit path can -// hold. Each row asserts that the RDMA signals are reachable via the +// hold. Each row asserts that the interconnect signals are reachable via the // type-specific accessors the provider uses. -func TestCS6_RDMASignalsAcrossConcreteTypes(t *testing.T) { - specVal := rdmaSampleGroupSpec() +func TestCS6_InterconnectSignalsAcrossConcreteTypes(t *testing.T) { + specVal := interconnectSampleGroupSpec() specPtr := &specVal groupVal := Group{ @@ -160,7 +160,7 @@ func TestCS6_RDMASignalsAcrossConcreteTypes(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { - assertRDMASignalsPresent(t, tc.name, tc.readReqs(), tc.readGPU()) + assertInterconnectSignalsPresent(t, tc.name, tc.readReqs(), tc.readGPU()) }) } } @@ -169,24 +169,24 @@ func TestCS6_RDMASignalsAcrossConcreteTypes(t *testing.T) { // ResourceGroup-interface path the provider's commit code uses. The // provider iterates GetResourceUnits() and reads each unit's GPU.Attributes; // a regression where this collection silently drops attributes would -// translate to RDMA opt-in disappearing on the wire. +// translate to interconnect opt-in disappearing on the wire. func TestCS6_GetResourceUnitsPreservesGPUAttributes(t *testing.T) { - spec := rdmaSampleGroupSpec() + spec := interconnectSampleGroupSpec() units := spec.GetResourceUnits() require.NotEmpty(t, units, "GetResourceUnits returned empty") - hasGPURDMA := false + hasGPUInterconnect := false for _, u := range units { if u.Resources.GPU == nil { continue } for _, a := range u.Resources.GPU.Attributes { - if a.Key == "rdma" && a.Value == "true" { - hasGPURDMA = true + if a.Key == "interconnect" && a.Value == "true" { + hasGPUInterconnect = true } } } - require.True(t, hasGPURDMA, - "GetResourceUnits() dropped GPU.Attributes — provider would treat as non-RDMA") + require.True(t, hasGPUInterconnect, + "GetResourceUnits() dropped GPU.Attributes — provider would treat as non-interconnect") } diff --git a/go/sdl/gpu.go b/go/sdl/gpu.go index 9dafef9f..1caa7dc6 100644 --- a/go/sdl/gpu.go +++ b/go/sdl/gpu.go @@ -38,31 +38,34 @@ type gpuVendor struct { type v2GPUAttributes types.Attributes -// GPUAttributeRDMA is the on-chain GPU-attribute key emitted when an SDL -// compute profile declares gpu.attributes.rdma: true. Providers advertising -// RDMA-capable GPU hardware match this attribute via the standard GPU -// MatchResourcesRequirements path. -const GPUAttributeRDMA = "rdma" - -// GPUAttributeRDMAGroup is the on-chain GPU-attribute key emitted when an -// SDL compute profile declares gpu.attributes.rdma_group: . Carries -// the peer-group label all the way into the on-chain Resources.GPU.attributes -// so the provider's bid engine can enforce per-group node separation at fit -// time (it cannot otherwise — Service.RDMAGroup is off-chain only, and the -// bid engine consumes Resources, not the manifest). The value is also lifted -// into Service.RDMAGroup so the workload builder's pod anti-affinity rule -// continues to work the same way. -const GPUAttributeRDMAGroup = "rdma_group" +// GPUAttributeInterconnect is the on-chain GPU-attribute key emitted when +// an SDL compute profile declares gpu.attributes.interconnect: true. +// Providers advertising GPU-interconnect-capable hardware match this +// attribute via the standard GPU MatchResourcesRequirements path. The +// fabric (InfiniBand vs RoCE) is hidden from the SDL surface; the +// provider picks whichever it has. +const GPUAttributeInterconnect = "interconnect" + +// GPUAttributeInterconnectGroup is the on-chain GPU-attribute key emitted +// when an SDL compute profile declares gpu.attributes.interconnect_group: +// . Carries the peer-group label all the way into the on-chain +// Resources.GPU.attributes so the provider's bid engine can enforce +// per-group node separation at fit time (Service.InterconnectGroup +// off-chain alone would leave the bid step blind). The value is also +// lifted into Service.InterconnectGroup so the workload builder's pod +// anti-affinity rule keys off the same string. +const GPUAttributeInterconnectGroup = "interconnect_group" type v2ResourceGPU struct { Units gpuQuantity `yaml:"units" json:"units"` Attributes v2GPUAttributes `yaml:"attributes,omitempty" json:"attributes,omitempty"` - // RDMAGroup carries the parsed gpu.attributes.rdma_group value. The - // same value is also present in Attributes (as GPUAttributeRDMAGroup); - // this field exists so the higher-level manifest builder can route it - // to Service.RDMAGroup without re-walking the slice. - RDMAGroup string `yaml:"-" json:"-"` + // InterconnectGroup carries the parsed gpu.attributes.interconnect_group + // value. The same value is also present in Attributes (as + // GPUAttributeInterconnectGroup); this field exists so the + // higher-level manifest builder can route it to + // Service.InterconnectGroup without re-walking the slice. + InterconnectGroup string `yaml:"-" json:"-"` } func (sdl *v2ResourceGPU) UnmarshalYAML(node *yaml.Node) error { @@ -83,23 +86,24 @@ func (sdl *v2ResourceGPU) UnmarshalYAML(node *yaml.Node) error { } } - // Lift the rdma_group attribute value into the dedicated RDMAGroup - // field for downstream manifest builders, but KEEP it in the - // attributes slice — the provider's bid engine consumes the on-chain - // Resources.GPU.Attributes and needs rdma_group present there to - // enforce per-group node separation during reservation. (Was a - // sentinel-stripped off-chain-only field; now flows end-to-end.) + // Lift the interconnect_group attribute value into the dedicated + // InterconnectGroup field for downstream manifest builders, but KEEP + // it in the attributes slice — the provider's bid engine consumes the + // on-chain Resources.GPU.Attributes and needs interconnect_group + // present there to enforce per-group node separation during + // reservation. if len(res.Attributes) > 0 { for _, a := range res.Attributes { - if a.Key == GPUAttributeRDMAGroup { - res.RDMAGroup = a.Value + if a.Key == GPUAttributeInterconnectGroup { + res.InterconnectGroup = a.Value break } } // v2GPUAttributes.UnmarshalYAML defers Validate to here so the - // final attribute slice (including the rdma_group key, which now - // matches the on-chain attribute key regex) gets one validate pass. + // final attribute slice (including the interconnect_group key, + // which matches the on-chain attribute key regex) gets one + // validate pass. final := types.Attributes(res.Attributes) if err := final.Validate(); err != nil { return fmt.Errorf("sdl: invalid GPU attributes: %w", err) @@ -110,18 +114,19 @@ func (sdl *v2ResourceGPU) UnmarshalYAML(node *yaml.Node) error { return fmt.Errorf("sdl: GPU attributes must be present if units > 0") } - // CS-5 invariant, enforced here so the SDL fails fast: rdma / rdma_group - // are nonsense without an actual GPU to attach an HCA to. A profile - // declaring rdma: true or rdma_group: with gpu.units == 0 would - // otherwise be classified as RDMA-enabled by downstream validation - // passes and the provider's reservation logic, then rejected much later - // (or, worse, treated as a misconfiguration). Reject up front. + // CS-5 invariant, enforced here so the SDL fails fast: interconnect + // and interconnect_group are nonsense without an actual GPU to attach + // an HCA to. A profile declaring interconnect: true or + // interconnect_group: with gpu.units == 0 would otherwise be + // classified as interconnect-enabled by downstream validation passes + // and the provider's reservation logic, then rejected much later (or, + // worse, treated as a misconfiguration). Reject up front. if res.Units == 0 { - if gpuAttributesHaveRDMA(res.Attributes) { - return fmt.Errorf("sdl: gpu.attributes.rdma cannot be set when gpu.units == 0") + if gpuAttributesHaveInterconnect(res.Attributes) { + return fmt.Errorf("sdl: gpu.attributes.interconnect cannot be set when gpu.units == 0") } - if res.RDMAGroup != "" { - return fmt.Errorf("sdl: gpu.attributes.rdma_group=%q cannot be set when gpu.units == 0", res.RDMAGroup) + if res.InterconnectGroup != "" { + return fmt.Errorf("sdl: gpu.attributes.interconnect_group=%q cannot be set when gpu.units == 0", res.InterconnectGroup) } } @@ -134,8 +139,8 @@ func (sdl *v2GPUAttributes) UnmarshalYAML(node *yaml.Node) error { var res types.Attributes var vendor *gpuVendor - rdmaEnabled := false - rdmaGroup := "" + interconnectEnabled := false + interconnectGroup := "" for i := 0; i < len(node.Content); i += 2 { switch node.Content[i].Value { @@ -143,22 +148,25 @@ func (sdl *v2GPUAttributes) UnmarshalYAML(node *yaml.Node) error { if err := node.Content[i+1].Decode(&vendor); err != nil { return err } - case "rdma": - // gpu.attributes.rdma: bool (default false). When true, emit an - // on-chain GPU attribute so providers advertising RDMA-capable - // GPU hardware can be matched. - var rdma bool - if err := node.Content[i+1].Decode(&rdma); err != nil { - return fmt.Errorf("sdl: invalid value for gpu.attributes.rdma: %w", err) + case "interconnect": + // gpu.attributes.interconnect: bool (default false). When + // true, emit an on-chain GPU attribute so providers + // advertising GPU-interconnect-capable hardware can be + // matched. Fabric (IB vs RoCE) is hidden from the SDL — + // provider picks whichever it has. + var ic bool + if err := node.Content[i+1].Decode(&ic); err != nil { + return fmt.Errorf("sdl: invalid value for gpu.attributes.interconnect: %w", err) } - rdmaEnabled = rdma - case "rdma_group": - // gpu.attributes.rdma_group: string (peer group name). Captured - // here and emitted into the slice as a sentinel attribute that - // v2ResourceGPU.UnmarshalYAML strips before it reaches chain - // state. See gpuAttributeRDMAGroupSentinel. - if err := node.Content[i+1].Decode(&rdmaGroup); err != nil { - return fmt.Errorf("sdl: invalid value for gpu.attributes.rdma_group: %w", err) + interconnectEnabled = ic + case "interconnect_group": + // gpu.attributes.interconnect_group: string (peer group + // name). Emitted as an on-chain GPU attribute alongside + // `interconnect=true` so the provider's bid engine can + // track per-group node claims. Also lifted to + // v2ResourceGPU.InterconnectGroup for the manifest builder. + if err := node.Content[i+1].Decode(&interconnectGroup); err != nil { + return fmt.Errorf("sdl: invalid value for gpu.attributes.interconnect_group: %w", err) } default: return fmt.Errorf("sdl: unsupported attribute (%s) for GPU resource", node.Content[i].Value) @@ -185,30 +193,31 @@ func (sdl *v2GPUAttributes) UnmarshalYAML(node *yaml.Node) error { }) } - if rdmaEnabled { + if interconnectEnabled { res = append(res, types.Attribute{ - Key: GPUAttributeRDMA, + Key: GPUAttributeInterconnect, Value: "true", }) } - // Emit rdma_group directly as an on-chain GPU attribute. The provider's - // reservation Adjust step reads this to enforce per-group node - // separation; the parent v2ResourceGPU.UnmarshalYAML also lifts the - // value into v2ResourceGPU.RDMAGroup so the manifest builder can - // route it to Service.RDMAGroup for the off-chain workload builder. - if rdmaGroup != "" { + // Emit interconnect_group directly as an on-chain GPU attribute. The + // provider's reservation Adjust step reads this to enforce per-group + // node separation; the parent v2ResourceGPU.UnmarshalYAML also lifts + // the value into v2ResourceGPU.InterconnectGroup so the manifest + // builder can route it to Service.InterconnectGroup for the off-chain + // workload builder. + if interconnectGroup != "" { res = append(res, types.Attribute{ - Key: GPUAttributeRDMAGroup, - Value: rdmaGroup, + Key: GPUAttributeInterconnectGroup, + Value: interconnectGroup, }) } sort.Sort(res) - // Validate() is deferred to v2ResourceGPU.UnmarshalYAML so the - // rdma_group sentinel can be stripped from the slice before the - // attribute-key regex runs against it. + // Validate() is deferred to v2ResourceGPU.UnmarshalYAML so the parent + // hook can lift interconnect_group into the dedicated field before + // the final attribute-key regex runs across the slice. *sdl = v2GPUAttributes(res) diff --git a/go/sdl/groupBuilder_v2.go b/go/sdl/groupBuilder_v2.go index 7cf41e90..2852c934 100644 --- a/go/sdl/groupBuilder_v2.go +++ b/go/sdl/groupBuilder_v2.go @@ -97,12 +97,13 @@ func (sdl *v2) buildGroups() error { Expose: expose, } - // CS-3: gpu.attributes.rdma_group is captured by the GPU parser - // (see go/sdl/gpu.go) into the v2ResourceGPU.RDMAGroup field. - // Surface it onto the off-chain manifest service so the provider - // can apply per-group pod anti-affinity at deploy time. + // CS-3: gpu.attributes.interconnect_group is captured by the + // GPU parser (see go/sdl/gpu.go) into the + // v2ResourceGPU.InterconnectGroup field. Surface it onto the + // off-chain manifest service so the provider can apply + // per-group pod anti-affinity at deploy time. if compute.Resources != nil && compute.Resources.GPU != nil { - msvc.RDMAGroup = compute.Resources.GPU.RDMAGroup + msvc.InterconnectGroup = compute.Resources.GPU.InterconnectGroup } if svc.Params != nil { diff --git a/go/sdl/groupBuilder_v2_1.go b/go/sdl/groupBuilder_v2_1.go index a94f3e09..a2248967 100644 --- a/go/sdl/groupBuilder_v2_1.go +++ b/go/sdl/groupBuilder_v2_1.go @@ -109,7 +109,7 @@ func (sdl *v2_1) buildGroups() error { // CS-3: see groupBuilder_v2.go for rationale. if compute.Resources != nil && compute.Resources.GPU != nil { - msvc.RDMAGroup = compute.Resources.GPU.RDMAGroup + msvc.InterconnectGroup = compute.Resources.GPU.InterconnectGroup } if svc.Params != nil { diff --git a/go/sdl/rdma_gpu_test.go b/go/sdl/interconnect_gpu_test.go similarity index 50% rename from go/sdl/rdma_gpu_test.go rename to go/sdl/interconnect_gpu_test.go index 8d585292..d40dfb50 100644 --- a/go/sdl/rdma_gpu_test.go +++ b/go/sdl/interconnect_gpu_test.go @@ -7,45 +7,45 @@ import ( "gopkg.in/yaml.v3" ) -// CS-2: gpu.attributes.rdma: true flows to on-chain Resources.GPU.attributes -// as a free-form key=value pair, while rdma: false (or unset) is absent. -func TestV2ResourceGPU_RDMAFlag(t *testing.T) { +// CS-2: gpu.attributes.interconnect: true flows to on-chain Resources.GPU.attributes +// as a free-form key=value pair, while interconnect: false (or unset) is absent. +func TestV2ResourceGPU_InterconnectFlag(t *testing.T) { tests := []struct { name string yaml string - expectRDMAAttr bool + expectInterconnectAttr bool expectGroup string }{ { - name: "rdma true emits attribute", + name: "interconnect true emits attribute", yaml: `units: 1 attributes: vendor: nvidia: - model: a100 - rdma: true`, - expectRDMAAttr: true, + interconnect: true`, + expectInterconnectAttr: true, expectGroup: "", }, { - name: "rdma false does not emit attribute", + name: "interconnect false does not emit attribute", yaml: `units: 1 attributes: vendor: nvidia: - model: a100 - rdma: false`, - expectRDMAAttr: false, + interconnect: false`, + expectInterconnectAttr: false, expectGroup: "", }, { - name: "no rdma key behaves like rdma false", + name: "no interconnect key behaves like interconnect false", yaml: `units: 1 attributes: vendor: nvidia: - model: a100`, - expectRDMAAttr: false, + expectInterconnectAttr: false, expectGroup: "", }, } @@ -55,26 +55,26 @@ attributes: var gpu v2ResourceGPU require.NoError(t, yaml.Unmarshal([]byte(tc.yaml), &gpu)) - hasRDMA := false + hasInterconnect := false for _, a := range gpu.Attributes { - if a.Key == GPUAttributeRDMA && a.Value == "true" { - hasRDMA = true + if a.Key == GPUAttributeInterconnect && a.Value == "true" { + hasInterconnect = true } } - require.Equal(t, tc.expectRDMAAttr, hasRDMA, - "unexpected presence of on-chain rdma=true attribute") - require.Equal(t, tc.expectGroup, gpu.RDMAGroup) + require.Equal(t, tc.expectInterconnectAttr, hasInterconnect, + "unexpected presence of on-chain interconnect=true attribute") + require.Equal(t, tc.expectGroup, gpu.InterconnectGroup) }) } } -// AKT-443: rdma_group flows end-to-end. It appears in the on-chain GPU +// AKT-443: interconnect_group flows end-to-end. It appears in the on-chain GPU // attribute slice (so the provider's bid engine can enforce per-group // node separation during reservation) AND is lifted onto -// v2ResourceGPU.RDMAGroup for the manifest builder to route into -// Service.RDMAGroup (so the workload builder can label pods for +// v2ResourceGPU.InterconnectGroup for the manifest builder to route into +// Service.InterconnectGroup (so the workload builder can label pods for // anti-affinity). Both consumers see the same value. -func TestV2ResourceGPU_RDMAGroupOnChainAndOffChain(t *testing.T) { +func TestV2ResourceGPU_InterconnectGroupOnChainAndOffChain(t *testing.T) { yamlSrc := `units: 8 attributes: vendor: @@ -82,81 +82,81 @@ attributes: - model: a100 ram: 80Gi interface: sxm - rdma: true - rdma_group: pair1` + interconnect: true + interconnect_group: pair1` var gpu v2ResourceGPU require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) // Off-chain: dedicated field for the manifest builder. - require.Equal(t, "pair1", gpu.RDMAGroup, - "v2ResourceGPU.RDMAGroup must hold the rdma_group value") + require.Equal(t, "pair1", gpu.InterconnectGroup, + "v2ResourceGPU.InterconnectGroup must hold the interconnect_group value") - // On-chain: present in the GPU attribute slice alongside rdma=true. + // On-chain: present in the GPU attribute slice alongside interconnect=true. keys := map[string]string{} for _, a := range gpu.Attributes { keys[a.Key] = a.Value } - require.Equal(t, "true", keys[GPUAttributeRDMA]) - require.Equal(t, "pair1", keys[GPUAttributeRDMAGroup], - "rdma_group must appear in on-chain GPU attributes for bid-engine group tracking") + require.Equal(t, "true", keys[GPUAttributeInterconnect]) + require.Equal(t, "pair1", keys[GPUAttributeInterconnectGroup], + "interconnect_group must appear in on-chain GPU attributes for bid-engine group tracking") } -// AKT-443 (continued): omitting rdma_group leaves both the field empty -// and the on-chain attribute absent — non-RDMA-group services produce +// AKT-443 (continued): omitting interconnect_group leaves both the field empty +// and the on-chain attribute absent — non-interconnect-group services produce // the same byte-for-byte serialization they did before this feature. -func TestV2ResourceGPU_RDMAGroupOmitted(t *testing.T) { +func TestV2ResourceGPU_InterconnectGroupOmitted(t *testing.T) { yamlSrc := `units: 8 attributes: vendor: nvidia: - model: a100 - rdma: true` + interconnect: true` var gpu v2ResourceGPU require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) - require.Empty(t, gpu.RDMAGroup) + require.Empty(t, gpu.InterconnectGroup) for _, a := range gpu.Attributes { - require.NotEqual(t, GPUAttributeRDMAGroup, a.Key, - "rdma_group must not appear when SDL omits it") + require.NotEqual(t, GPUAttributeInterconnectGroup, a.Key, + "interconnect_group must not appear when SDL omits it") } } // CodeRabbit follow-up: a profile with gpu.units == 0 that declares -// rdma: true or rdma_group: is a misconfiguration — there is no -// HCA to allocate, so the RDMA flags are meaningless. The parser must +// interconnect: true or interconnect_group: is a misconfiguration — there is no +// HCA to allocate, so the interconnect flags are meaningless. The parser must // reject this fail-fast rather than letting downstream validation passes -// silently classify the profile as RDMA-enabled. -func TestV2ResourceGPU_RDMAZeroUnitsRejected(t *testing.T) { - t.Run("rdma true with zero units", func(t *testing.T) { +// silently classify the profile as interconnect-enabled. +func TestV2ResourceGPU_InterconnectZeroUnitsRejected(t *testing.T) { + t.Run("interconnect true with zero units", func(t *testing.T) { yamlSrc := `units: 0 attributes: vendor: nvidia: - model: a100 - rdma: true` + interconnect: true` var gpu v2ResourceGPU err := yaml.Unmarshal([]byte(yamlSrc), &gpu) require.Error(t, err) - require.Contains(t, err.Error(), "gpu.attributes.rdma cannot be set when gpu.units == 0") + require.Contains(t, err.Error(), "gpu.attributes.interconnect cannot be set when gpu.units == 0") }) - t.Run("rdma_group with zero units", func(t *testing.T) { + t.Run("interconnect_group with zero units", func(t *testing.T) { yamlSrc := `units: 0 attributes: vendor: nvidia: - model: a100 - rdma_group: pair1` + interconnect_group: pair1` var gpu v2ResourceGPU err := yaml.Unmarshal([]byte(yamlSrc), &gpu) require.Error(t, err) - require.Contains(t, err.Error(), "rdma_group") + require.Contains(t, err.Error(), "interconnect_group") require.Contains(t, err.Error(), "gpu.units == 0") }) - t.Run("zero units without rdma is fine", func(t *testing.T) { + t.Run("zero units without interconnect is fine", func(t *testing.T) { // Verifies the new guards don't accidentally break the existing // path where a profile has gpu.units == 0 and no attributes at all // (the parser leaves it alone). @@ -168,14 +168,14 @@ attributes: // CS-2: an unsupported attribute key under gpu.attributes still errors, // confirming the parser's strict-key behavior is preserved alongside the -// new rdma/rdma_group handling. +// new interconnect_group handling. func TestV2GPUAttributes_UnsupportedKeyRejected(t *testing.T) { yamlSrc := `units: 1 attributes: vendor: nvidia: - model: a100 - rdma: true + interconnect: true bogus: yes` var gpu v2ResourceGPU diff --git a/go/sdl/rdma_validation_test.go b/go/sdl/interconnect_validation_test.go similarity index 55% rename from go/sdl/rdma_validation_test.go rename to go/sdl/interconnect_validation_test.go index 167ca952..f99cea1a 100644 --- a/go/sdl/rdma_validation_test.go +++ b/go/sdl/interconnect_validation_test.go @@ -7,12 +7,12 @@ import ( "github.com/stretchr/testify/require" ) -// CS-5: parser-level cross-field validations for RDMA. +// CS-5: parser-level cross-field validations for interconnect. // // Each test builds a full SDL via Read() — the same entry point the // CLI/provider use — so we exercise the real parse + validate pipeline. -const sdlRDMAFixtureHeader = `--- +const sdlInterconnectFixtureHeader = `--- version: "2.0" services: inference-head: @@ -29,7 +29,7 @@ services: ` func sdlBody(headGPU, workerGPU, placementAttrs string) string { - return sdlRDMAFixtureHeader + ` + return sdlInterconnectFixtureHeader + ` profiles: compute: inference-head: @@ -49,7 +49,7 @@ profiles: storage: - size: 512Mi placement: - rdma: + fabric: attributes: ` + placementAttrs + ` pricing: @@ -57,130 +57,130 @@ profiles: inference-worker: { denom: uact, amount: 1000000 } deployment: inference-head: - rdma: { profile: inference-head, count: 1 } + fabric: { profile: inference-head, count: 1 } inference-worker: - rdma: { profile: inference-worker, count: 1 } + fabric: { profile: inference-worker, count: 1 } ` } -func TestSDL_RDMA_Rule1_RDMARequiresPlacementCapability(t *testing.T) { - // Profiles declare gpu.attributes.rdma: true but placement does NOT - // require capabilities/rdma=true — rule 1 must reject. +func TestSDL_Interconnect_Rule1_InterconnectRequiresPlacementCapability(t *testing.T) { + // Profiles declare gpu.attributes.interconnect: true but placement does NOT + // require capabilities/gpu-interconnect=true — rule 1 must reject. body := sdlBody( ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - rdma: true`, + interconnect: true`, ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - rdma: true`, + interconnect: true`, ` capabilities/gpu: nvidia`, ) _, err := Read([]byte(body)) require.Error(t, err) require.True(t, - strings.Contains(err.Error(), "does not require capabilities/rdma=true"), + strings.Contains(err.Error(), "does not require capabilities/gpu-interconnect=true"), "unexpected error: %v", err) } -func TestSDL_RDMA_Rule1_PassesWhenPlacementRequiresRDMA(t *testing.T) { +func TestSDL_Interconnect_Rule1_PassesWhenPlacementRequiresInterconnect(t *testing.T) { body := sdlBody( ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - rdma: true`, + interconnect: true`, ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - rdma: true`, - ` capabilities/rdma: "true"`, + interconnect: true`, + ` capabilities/gpu-interconnect: "true"`, ) _, err := Read([]byte(body)) require.NoError(t, err) } -func TestSDL_RDMA_Rule2_RDMAGroupRequiresRDMAOnSameProfile(t *testing.T) { +func TestSDL_Interconnect_Rule2_InterconnectGroupRequiresInterconnectOnSameProfile(t *testing.T) { body := sdlBody( - // head: rdma: true + rdma_group set (OK) + // head: interconnect: true + interconnect_group set (OK) ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - rdma: true - rdma_group: pair1`, - // worker: rdma_group set but rdma is NOT true — rule 2 must reject. + interconnect: true + interconnect_group: pair1`, + // worker: interconnect_group set but interconnect is NOT true — rule 2 must reject. ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - rdma_group: pair1`, - ` capabilities/rdma: "true"`, + interconnect_group: pair1`, + ` capabilities/gpu-interconnect: "true"`, ) _, err := Read([]byte(body)) require.Error(t, err) require.True(t, - strings.Contains(err.Error(), "rdma_group") && strings.Contains(err.Error(), "rdma: true"), + strings.Contains(err.Error(), "interconnect_group") && strings.Contains(err.Error(), "interconnect: true"), "unexpected error: %v", err) } -func TestSDL_RDMA_Rule3_NoMixingExplicitAndImplicitGroup(t *testing.T) { +func TestSDL_Interconnect_Rule3_NoMixingExplicitAndImplicitGroup(t *testing.T) { body := sdlBody( - // head: rdma: true with no rdma_group (implicit __default__). + // head: interconnect: true with no interconnect_group (implicit __default__). ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - rdma: true`, - // worker: rdma: true with rdma_group explicitly set. + interconnect: true`, + // worker: interconnect: true with interconnect_group explicitly set. // Rule 3: cannot mix; reject. ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - rdma: true - rdma_group: pair1`, - ` capabilities/rdma: "true"`, + interconnect: true + interconnect_group: pair1`, + ` capabilities/gpu-interconnect: "true"`, ) _, err := Read([]byte(body)) require.Error(t, err) require.True(t, - strings.Contains(err.Error(), "mixes explicit and implicit rdma_group"), + strings.Contains(err.Error(), "mixes explicit and implicit interconnect_group"), "unexpected error: %v", err) } -func TestSDL_RDMA_Rule3_AllImplicitOK(t *testing.T) { - // Simple head/worker with no rdma_group on either profile — the implicit +func TestSDL_Interconnect_Rule3_AllImplicitOK(t *testing.T) { + // Simple head/worker with no interconnect_group on either profile — the implicit // default group is fine. body := sdlBody( ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - rdma: true`, + interconnect: true`, ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - rdma: true`, - ` capabilities/rdma: "true"`, + interconnect: true`, + ` capabilities/gpu-interconnect: "true"`, ) _, err := Read([]byte(body)) require.NoError(t, err) } -func TestSDL_RDMA_Rule3_AllExplicitOK(t *testing.T) { +func TestSDL_Interconnect_Rule3_AllExplicitOK(t *testing.T) { body := sdlBody( ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - rdma: true - rdma_group: pair1`, + interconnect: true + interconnect_group: pair1`, ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - rdma: true - rdma_group: pair1`, - ` capabilities/rdma: "true"`, + interconnect: true + interconnect_group: pair1`, + ` capabilities/gpu-interconnect: "true"`, ) _, err := Read([]byte(body)) diff --git a/go/sdl/sdl-input.schema.yaml b/go/sdl/sdl-input.schema.yaml index d0c9a819..637a2c1b 100644 --- a/go/sdl/sdl-input.schema.yaml +++ b/go/sdl/sdl-input.schema.yaml @@ -268,19 +268,23 @@ properties: type: object - type: 'null' type: object - rdma: + interconnect: description: | - Opt this resource into RDMA. When true, the bid - engine matches against providers advertising - capabilities/rdma and the workload builder - requests one RDMA HCA per GPU unit (1:1). + Opt this resource into GPU interconnect. + When true, the bid engine matches against + providers advertising + capabilities/gpu-interconnect and the + workload builder requests one HCA per GPU + unit (1:1). Fabric (InfiniBand vs RoCE) is + chosen by the provider, not the SDL. type: boolean - rdma_group: + interconnect_group: description: | - Peer-group label for multi-service NCCL groups. - All services sharing the same value form one - anti-affinity group: the provider schedules them - on distinct nodes. Implies rdma: true. + Peer-group label for multi-service NCCL + groups. All services sharing the same value + form one anti-affinity group: the provider + schedules them on distinct nodes. Implies + interconnect: true. type: string type: object units: diff --git a/go/sdl/v2.go b/go/sdl/v2.go index 2b269c3c..f13f692a 100644 --- a/go/sdl/v2.go +++ b/go/sdl/v2.go @@ -533,41 +533,44 @@ func (sdl *v2) validate() error { } } - if err := validateRDMA(sdl.Profiles, sdl.Deployments); err != nil { + if err := validateInterconnect(sdl.Profiles, sdl.Deployments); err != nil { return err } return nil } -// validateRDMA enforces the parser-level cross-field invariants for RDMA -// (CS-5 in the implementation spec): +// validateInterconnect enforces the parser-level cross-field invariants +// for GPU interconnect (CS-5 in the implementation spec): // -// 1. Any compute profile with gpu.attributes.rdma: true must be used by a -// deployment whose placement requirements include capabilities/rdma=true. -// 2. Any compute profile with gpu.attributes.rdma_group set must also have -// gpu.attributes.rdma: true on the same profile (a peer group label -// without an HCA is a misconfiguration). -// 3. Within one deployment, if any profile sets rdma_group, every profile -// with gpu.attributes.rdma: true in that deployment must set rdma_group. -// No implicit-default-plus-explicit mixing within one deployment. +// 1. Any compute profile with gpu.attributes.interconnect: true must be +// used by a deployment whose placement requirements include +// capabilities/gpu-interconnect=true. +// 2. Any compute profile with gpu.attributes.interconnect_group set must +// also have gpu.attributes.interconnect: true on the same profile (a +// peer group label without an HCA is a misconfiguration). +// 3. Within one deployment, if any profile sets interconnect_group, +// every profile with gpu.attributes.interconnect: true in that +// deployment must set interconnect_group. No +// implicit-default-plus-explicit mixing within one deployment. // -// The provider relies on these guarantees: rule 1 means an RDMA-required -// workload always reaches an RDMA-capable provider; rule 2 keeps peer-group -// labels meaningful; rule 3 keeps the per-group anti-affinity rule -// unambiguous. +// The provider relies on these guarantees: rule 1 means an +// interconnect-required workload always reaches an interconnect-capable +// provider; rule 2 keeps peer-group labels meaningful; rule 3 keeps the +// per-group anti-affinity rule unambiguous. // // Free function (not a method on v2) so v2_1's validate() can call it // against the same profile + deployment shape — v2.1 inherits the full -// RDMA SDL grammar from v2 and must enforce the identical rules. -func validateRDMA(profiles v2profiles, deployments v2Deployments) error { - // Per-profile rule 2: rdma_group ⇒ rdma=true. +// GPU interconnect SDL grammar from v2 and must enforce the identical +// rules. +func validateInterconnect(profiles v2profiles, deployments v2Deployments) error { + // Per-profile rule 2: interconnect_group ⇒ interconnect=true. // // The gpu.Units > 0 guard is defense-in-depth: v2ResourceGPU.UnmarshalYAML - // already rejects rdma / rdma_group with gpu.units == 0 at parse time, - // but if that parser path is ever bypassed we'd otherwise classify a - // zero-GPU profile as RDMA-enabled here and propagate RDMAGroup into - // downstream manifest builders. + // already rejects interconnect / interconnect_group with gpu.units == 0 + // at parse time, but if that parser path is ever bypassed we'd otherwise + // classify a zero-GPU profile as interconnect-enabled here and propagate + // InterconnectGroup into downstream manifest builders. for profileName, compute := range profiles.Compute { if compute.Resources == nil || compute.Resources.GPU == nil { continue @@ -576,12 +579,12 @@ func validateRDMA(profiles v2profiles, deployments v2Deployments) error { if gpu.Units == 0 { continue } - if gpu.RDMAGroup != "" && !gpuAttributesHaveRDMA(gpu.Attributes) { + if gpu.InterconnectGroup != "" && !gpuAttributesHaveInterconnect(gpu.Attributes) { return fmt.Errorf( - "%w: compute profile %q sets gpu.attributes.rdma_group=%q but does not set gpu.attributes.rdma: true", + "%w: compute profile %q sets gpu.attributes.interconnect_group=%q but does not set gpu.attributes.interconnect: true", errSDLInvalid, profileName, - gpu.RDMAGroup, + gpu.InterconnectGroup, ) } } @@ -592,12 +595,12 @@ func validateRDMA(profiles v2profiles, deployments v2Deployments) error { // // Walk every (service, placement) and remember per service-deployment: // - which profile it points at, - // - whether that profile has rdma=true, - // - whether that profile has rdma_group set. + // - whether that profile has interconnect=true, + // - whether that profile has interconnect_group set. type profUsage struct { - profileName string - hasRDMA bool - group string + profileName string + hasInterconnect bool + group string } type placementUsage struct { // indexed by service name @@ -619,12 +622,12 @@ func validateRDMA(profiles v2profiles, deployments v2Deployments) error { profileName: svcdepl.Profile, } // Same defense-in-depth as the rule-2 loop above: an - // rdma attribute or rdma_group on a zero-GPU profile would - // be parser-rejected upstream, but treat it as "not RDMA" - // here just in case the parser is bypassed. + // interconnect attribute or interconnect_group on a zero-GPU + // profile would be parser-rejected upstream, but treat it as + // "not interconnect" here just in case the parser is bypassed. if gpu != nil && gpu.Units > 0 { - usage.hasRDMA = gpuAttributesHaveRDMA(gpu.Attributes) - usage.group = gpu.RDMAGroup + usage.hasInterconnect = gpuAttributesHaveInterconnect(gpu.Attributes) + usage.group = gpu.InterconnectGroup } pu, ok := usagesByPlacement[placementName] @@ -634,16 +637,17 @@ func validateRDMA(profiles v2profiles, deployments v2Deployments) error { } pu.usages = append(pu.usages, usage) - // Rule 1: per-placement, if this profile has rdma=true, the - // placement's requirements must include capabilities/rdma=true. - if usage.hasRDMA { + // Rule 1: per-placement, if this profile has interconnect=true, + // the placement's requirements must include + // capabilities/gpu-interconnect=true. + if usage.hasInterconnect { infra, ok := profiles.Placement[placementName] if !ok { continue // covered by earlier validate() loop } - if !placementRequiresRDMA(infra.Attributes) { + if !placementRequiresInterconnect(infra.Attributes) { return fmt.Errorf( - "%w: service %q uses RDMA profile %q under placement %q but placement does not require capabilities/rdma=true", + "%w: service %q uses interconnect profile %q under placement %q but placement does not require capabilities/gpu-interconnect=true", errSDLInvalid, svcName, svcdepl.Profile, @@ -655,10 +659,11 @@ func validateRDMA(profiles v2profiles, deployments v2Deployments) error { } // Rule 3: within one deployment block (= one placementUsage), if any - // profile sets rdma_group, every profile with rdma=true must set - // rdma_group too. The spec's "deployment" scope is one sdl.Deployments, - // so we apply this rule per placement (each placement is what a tenant - // sees as one bid target / one set of leased pods). + // profile sets interconnect_group, every profile with interconnect=true + // must set interconnect_group too. The spec's "deployment" scope is + // one sdl.Deployments, so we apply this rule per placement (each + // placement is what a tenant sees as one bid target / one set of + // leased pods). for placementName, pu := range usagesByPlacement { anyGrouped := false for _, u := range pu.usages { @@ -671,9 +676,9 @@ func validateRDMA(profiles v2profiles, deployments v2Deployments) error { continue } for _, u := range pu.usages { - if u.hasRDMA && u.group == "" { + if u.hasInterconnect && u.group == "" { return fmt.Errorf( - "%w: placement %q mixes explicit and implicit rdma_group: profile %q has gpu.attributes.rdma: true but no rdma_group, while another profile under the same placement sets rdma_group", + "%w: placement %q mixes explicit and implicit interconnect_group: profile %q has gpu.attributes.interconnect: true but no interconnect_group, while another profile under the same placement sets interconnect_group", errSDLInvalid, placementName, u.profileName, @@ -685,18 +690,18 @@ func validateRDMA(profiles v2profiles, deployments v2Deployments) error { return nil } -func gpuAttributesHaveRDMA(attrs v2GPUAttributes) bool { +func gpuAttributesHaveInterconnect(attrs v2GPUAttributes) bool { for _, a := range attrs { - if a.Key == GPUAttributeRDMA && a.Value == valueTrue { + if a.Key == GPUAttributeInterconnect && a.Value == valueTrue { return true } } return false } -func placementRequiresRDMA(attrs v2PlacementAttributes) bool { +func placementRequiresInterconnect(attrs v2PlacementAttributes) bool { for _, a := range attrs { - if a.Key == "capabilities/rdma" && a.Value == valueTrue { + if a.Key == "capabilities/gpu-interconnect" && a.Value == valueTrue { return true } } diff --git a/go/sdl/v2_1.go b/go/sdl/v2_1.go index a0548a98..8efb8439 100644 --- a/go/sdl/v2_1.go +++ b/go/sdl/v2_1.go @@ -341,11 +341,12 @@ func (sdl *v2_1) validate() error { } } - // v2.1 inherits the full RDMA SDL grammar from v2 (gpu.attributes.rdma - // and gpu.attributes.rdma_group propagate to the manifest), so the - // cross-field validation rules must also apply. Without this, a v2.1 - // SDL could bypass the placement + grouping invariants v2 enforces. - if err := validateRDMA(sdl.Profiles, sdl.Deployments); err != nil { + // v2.1 inherits the full GPU interconnect SDL grammar from v2 + // (gpu.attributes.interconnect and gpu.attributes.interconnect_group + // propagate to the manifest), so the cross-field validation rules + // must also apply. Without this, a v2.1 SDL could bypass the + // placement + grouping invariants v2 enforces. + if err := validateInterconnect(sdl.Profiles, sdl.Deployments); err != nil { return err } diff --git a/proto/provider/akash/inventory/v1/node.proto b/proto/provider/akash/inventory/v1/node.proto index be238db7..4fe34783 100644 --- a/proto/provider/akash/inventory/v1/node.proto +++ b/proto/provider/akash/inventory/v1/node.proto @@ -14,27 +14,32 @@ message NodeCapabilities { (gogoproto.moretags) = "yaml:\"storage_classes\"" ]; - // RDMA: Kubernetes extended-resource name the cluster's device plugin publishes - // for RDMA-capable HCAs (e.g. rdma/rdma_shared_device_ib for InfiniBand, - // rdma/rdma_shared_device_eth for RoCE). Empty when the node has no RDMA + // Kubernetes extended-resource name the cluster's device plugin publishes + // for GPU interconnect HCAs (e.g. rdma/rdma_shared_device_ib for an + // InfiniBand fabric, rdma/rdma_shared_device_eth for RoCE). The + // `rdma/*` prefix is the device-plugin's own convention (Mellanox/NVIDIA) + // and stays unchanged here. Empty when the node has no GPU interconnect // capability. Discovered by the inventory operator from k8s allocatable. - string rdma_resource_name = 2 [ - (gogoproto.customname) = "RDMAResourceName", - (gogoproto.jsontag) = "rdma_resource_name,omitempty", - (gogoproto.moretags) = "yaml:\"rdma_resource_name,omitempty\"" + string interconnect_resource_name = 2 [ + (gogoproto.customname) = "InterconnectResourceName", + (gogoproto.jsontag) = "interconnect_resource_name,omitempty", + (gogoproto.moretags) = "yaml:\"interconnect_resource_name,omitempty\"" ]; - // RDMA fabric type. "infiniband" or "roce". Derived from + // GPU interconnect fabric type. "infiniband" or "roce". Internal / + // informational — the SDL surface is fabric-agnostic; tenants only + // declare `interconnect: true`. Derived from // /sys/class/infiniband//ports/1/link_layer on the host node. - string rdma_fabric = 3 [ - (gogoproto.customname) = "RDMAFabric", - (gogoproto.jsontag) = "rdma_fabric,omitempty", - (gogoproto.moretags) = "yaml:\"rdma_fabric,omitempty\"" + string interconnect_fabric = 3 [ + (gogoproto.customname) = "InterconnectFabric", + (gogoproto.jsontag) = "interconnect_fabric,omitempty", + (gogoproto.moretags) = "yaml:\"interconnect_fabric,omitempty\"" ]; // NCCL IB HCA prefix - the common device-name prefix under - // /sys/class/infiniband (e.g. "mlx5"). Injected by the provider as - // NCCL_IB_HCA when scheduling RDMA workloads. + // /sys/class/infiniband (e.g. "mlx5"). Same key for IB and RoCE since + // NCCL uses the IB verbs API for both. Injected by the provider as + // NCCL_IB_HCA when scheduling GPU interconnect workloads. string nccl_hca_prefix = 4 [ (gogoproto.customname) = "NCCLHCAPrefix", (gogoproto.jsontag) = "nccl_hca_prefix,omitempty", diff --git a/proto/provider/akash/inventory/v1/resources.proto b/proto/provider/akash/inventory/v1/resources.proto index d0fa9b37..fa2e35db 100644 --- a/proto/provider/akash/inventory/v1/resources.proto +++ b/proto/provider/akash/inventory/v1/resources.proto @@ -54,14 +54,16 @@ message NodeResources { (gogoproto.moretags) = "yaml:\"volumes_mounted\"" ]; - // RDMA reports node RDMA capacity. Capacity/Allocatable/Allocated are - // populated by the inventory operator from k8s allocatable for whichever - // rdma/rdma_shared_device_* extended resource the cluster's device plugin - // publishes (see NodeCapabilities.rdma_resource_name). - ResourcePair rdma = 7 [ + // GPUInterconnect reports node GPU-interconnect HCA capacity. + // Capacity/Allocatable/Allocated are populated by the inventory + // operator from k8s allocatable for whichever + // rdma/rdma_shared_device_* extended resource the cluster's device + // plugin publishes (the `rdma/*` prefix is the device plugin's + // naming convention; see NodeCapabilities.interconnect_resource_name). + ResourcePair gpu_interconnect = 7 [ (gogoproto.nullable) = false, - (gogoproto.customname) = "RDMA", - (gogoproto.jsontag) = "rdma", - (gogoproto.moretags) = "yaml:\"rdma\"" + (gogoproto.customname) = "GPUInterconnect", + (gogoproto.jsontag) = "gpu_interconnect", + (gogoproto.moretags) = "yaml:\"gpu_interconnect\"" ]; } diff --git a/proto/provider/akash/manifest/v2beta3/service.proto b/proto/provider/akash/manifest/v2beta3/service.proto index 5ea6847c..060fced3 100644 --- a/proto/provider/akash/manifest/v2beta3/service.proto +++ b/proto/provider/akash/manifest/v2beta3/service.proto @@ -125,21 +125,21 @@ message Service { (gogoproto.moretags) = "yaml:\"credentials\"" ]; - // RDMAGroup carries the SDL gpu.attributes.rdma_group peer-group label. - // Off-chain only — never reaches Resources.GPU.attributes. Services - // sharing the same value form one NCCL peer group; the provider applies - // pod anti-affinity within each group when scheduling the workload. - // Empty when the service is not part of any RDMA peer group. + // InterconnectGroup carries the SDL gpu.attributes.interconnect_group + // peer-group label. Lifted from Resources.GPU.Attributes by the + // manifest builder so the off-chain workload builder can label pods + // for per-group anti-affinity. Services sharing the same value form + // one NCCL peer group; the provider schedules them on distinct nodes. + // Empty when the service is not part of any GPU interconnect group. // // JSON / YAML tags carry `omitempty`: the on-chain manifest `version` - // is a SHA hash of the JSON-serialized off-chain manifest, so any field - // that always serializes (even at zero value) would shift the hash for - // every pre-RDMA SDL and break send-manifest validation on existing - // leases. With omitempty, non-RDMA services serialize identically to - // their pre-PR shape; only services that declare a group emit the key. - string rdma_group = 11 [ - (gogoproto.customname) = "RDMAGroup", - (gogoproto.jsontag) = "rdmaGroup,omitempty", - (gogoproto.moretags) = "yaml:\"rdmaGroup,omitempty\"" + // is a SHA hash of the JSON-serialized off-chain manifest, so any + // field that always serializes (even at zero value) would shift the + // hash for every non-interconnect SDL and break send-manifest + // validation on existing leases. + string interconnect_group = 11 [ + (gogoproto.customname) = "InterconnectGroup", + (gogoproto.jsontag) = "interconnectGroup,omitempty", + (gogoproto.moretags) = "yaml:\"interconnectGroup,omitempty\"" ]; } diff --git a/testdata/sdl/input/v2.0/gpu-rdma-group/input.yaml b/testdata/sdl/input/v2.0/gpu-interconnect-group/input.yaml similarity index 66% rename from testdata/sdl/input/v2.0/gpu-rdma-group/input.yaml rename to testdata/sdl/input/v2.0/gpu-interconnect-group/input.yaml index 3580ef5b..adc90160 100644 --- a/testdata/sdl/input/v2.0/gpu-rdma-group/input.yaml +++ b/testdata/sdl/input/v2.0/gpu-interconnect-group/input.yaml @@ -1,18 +1,18 @@ # yaml-language-server: $schema=../../../../go/sdl/sdl-input.schema.yaml --- -# Multi-service RDMA peer group fixture. inference-head and inference-worker -# share the same rdma_group label ("pair0"), which: -# - emits an `rdma_group=pair0` attribute into each service's on-chain +# Multi-service GPU interconnect peer group fixture. inference-head and inference-worker +# share the same interconnect_group label ("pair0"), which: +# - emits an `interconnect_group=pair0` attribute into each service's on-chain # Resources.GPU.Attributes (consumed by the provider's bid-engine # group-aware Adjust, AKT-443) -# - lifts to Service.RDMAGroup on the off-chain manifest (consumed by +# - lifts to Service.GPU interconnectGroup on the off-chain manifest (consumed by # the provider's workload builder for pod anti-affinity) # # Each service has its own compute profile because the SDL→manifest # resource-ID assignment treats per-profile groupings as one resource # unit (this is a separate parity concern; see Go vs TS resource-ID logic # in groupBuilder_v2.go and generateManifest.ts). Using distinct profiles -# keeps that orthogonal so this fixture isolates RDMA group behavior. +# keeps that orthogonal so this fixture isolates GPU interconnect group behavior. version: "2.0" services: inference-head: @@ -30,7 +30,7 @@ services: - service: inference-head profiles: compute: - rdma-head: + interconnect-head: resources: cpu: units: 1000m @@ -41,14 +41,14 @@ profiles: gpu: units: 1 attributes: - rdma: true - rdma_group: pair0 + interconnect: true + interconnect_group: pair0 vendor: nvidia: - model: a100 ram: 80Gi interface: sxm - rdma-worker: + interconnect-worker: resources: cpu: units: 1000m @@ -59,34 +59,34 @@ profiles: gpu: units: 1 attributes: - rdma: true - rdma_group: pair0 + interconnect: true + interconnect_group: pair0 vendor: nvidia: - model: a100 ram: 80Gi interface: sxm placement: - rdma-cluster: + interconnect-cluster: attributes: - capabilities/rdma: "true" - capabilities/rdma/fabric/infiniband: "true" + capabilities/gpu-interconnect: "true" + capabilities/gpu-interconnect/fabric/infiniband: "true" signedBy: anyOf: - akash1365yvmc4s7awdyj3n2sav7xfx76adc6dnmlx63 pricing: - rdma-head: + interconnect-head: denom: uakt amount: 1000 - rdma-worker: + interconnect-worker: denom: uakt amount: 1000 deployment: inference-head: - rdma-cluster: - profile: rdma-head + interconnect-cluster: + profile: interconnect-head count: 1 inference-worker: - rdma-cluster: - profile: rdma-worker + interconnect-cluster: + profile: interconnect-worker count: 1 diff --git a/testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/group-specs.json b/testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/group-specs.json similarity index 88% rename from testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/group-specs.json rename to testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/group-specs.json index 12a193b0..48ce6a19 100644 --- a/testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/group-specs.json +++ b/testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/group-specs.json @@ -1,6 +1,6 @@ [ { - "name": "rdma-cluster", + "name": "interconnect-cluster", "requirements": { "signed_by": { "all_of": null, @@ -10,11 +10,11 @@ }, "attributes": [ { - "key": "capabilities/rdma", + "key": "capabilities/gpu-interconnect", "value": "true" }, { - "key": "capabilities/rdma/fabric/infiniband", + "key": "capabilities/gpu-interconnect/fabric/infiniband", "value": "true" } ] @@ -47,11 +47,11 @@ }, "attributes": [ { - "key": "rdma", + "key": "interconnect", "value": "true" }, { - "key": "rdma_group", + "key": "interconnect_group", "value": "pair0" }, { @@ -99,11 +99,11 @@ }, "attributes": [ { - "key": "rdma", + "key": "interconnect", "value": "true" }, { - "key": "rdma_group", + "key": "interconnect_group", "value": "pair0" }, { diff --git a/testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/manifest.json b/testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/manifest.json similarity index 92% rename from testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/manifest.json rename to testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/manifest.json index 95f6e532..5692ce86 100644 --- a/testdata/sdl/output-fixtures/v2.0/gpu-rdma-group/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/manifest.json @@ -1,6 +1,6 @@ [ { - "name": "rdma-cluster", + "name": "interconnect-cluster", "services": [ { "name": "inference-head", @@ -34,11 +34,11 @@ }, "attributes": [ { - "key": "rdma", + "key": "interconnect", "value": "true" }, { - "key": "rdma_group", + "key": "interconnect_group", "value": "pair0" }, { @@ -78,7 +78,7 @@ } ], "credentials": null, - "rdmaGroup": "pair0" + "interconnectGroup": "pair0" }, { "name": "inference-worker", @@ -112,11 +112,11 @@ }, "attributes": [ { - "key": "rdma", + "key": "interconnect", "value": "true" }, { - "key": "rdma_group", + "key": "interconnect_group", "value": "pair0" }, { @@ -152,7 +152,7 @@ } ], "credentials": null, - "rdmaGroup": "pair0" + "interconnectGroup": "pair0" } ] } diff --git a/ts/src/generated/protos/akash/inventory/v1/node.ts b/ts/src/generated/protos/akash/inventory/v1/node.ts index cccd97e2..1bbf1f4c 100644 --- a/ts/src/generated/protos/akash/inventory/v1/node.ts +++ b/ts/src/generated/protos/akash/inventory/v1/node.ts @@ -15,21 +15,26 @@ import { NodeResources } from "./resources.ts"; export interface NodeCapabilities { storageClasses: string[]; /** - * RDMA: Kubernetes extended-resource name the cluster's device plugin publishes - * for RDMA-capable HCAs (e.g. rdma/rdma_shared_device_ib for InfiniBand, - * rdma/rdma_shared_device_eth for RoCE). Empty when the node has no RDMA + * Kubernetes extended-resource name the cluster's device plugin publishes + * for GPU interconnect HCAs (e.g. rdma/rdma_shared_device_ib for an + * InfiniBand fabric, rdma/rdma_shared_device_eth for RoCE). The + * `rdma/*` prefix is the device-plugin's own convention (Mellanox/NVIDIA) + * and stays unchanged here. Empty when the node has no GPU interconnect * capability. Discovered by the inventory operator from k8s allocatable. */ - rdmaResourceName: string; + interconnectResourceName: string; /** - * RDMA fabric type. "infiniband" or "roce". Derived from + * GPU interconnect fabric type. "infiniband" or "roce". Internal / + * informational — the SDL surface is fabric-agnostic; tenants only + * declare `interconnect: true`. Derived from * /sys/class/infiniband//ports/1/link_layer on the host node. */ - rdmaFabric: string; + interconnectFabric: string; /** * NCCL IB HCA prefix - the common device-name prefix under - * /sys/class/infiniband (e.g. "mlx5"). Injected by the provider as - * NCCL_IB_HCA when scheduling RDMA workloads. + * /sys/class/infiniband (e.g. "mlx5"). Same key for IB and RoCE since + * NCCL uses the IB verbs API for both. Injected by the provider as + * NCCL_IB_HCA when scheduling GPU interconnect workloads. */ ncclHcaPrefix: string; } @@ -42,7 +47,7 @@ export interface Node { } function createBaseNodeCapabilities(): NodeCapabilities { - return { storageClasses: [], rdmaResourceName: "", rdmaFabric: "", ncclHcaPrefix: "" }; + return { storageClasses: [], interconnectResourceName: "", interconnectFabric: "", ncclHcaPrefix: "" }; } export const NodeCapabilities: MessageFns = { @@ -52,11 +57,11 @@ export const NodeCapabilities: MessageFns globalThis.String(e)) : [], - rdmaResourceName: isSet(object.rdma_resource_name) ? globalThis.String(object.rdma_resource_name) : "", - rdmaFabric: isSet(object.rdma_fabric) ? globalThis.String(object.rdma_fabric) : "", + interconnectResourceName: isSet(object.interconnect_resource_name) + ? globalThis.String(object.interconnect_resource_name) + : "", + interconnectFabric: isSet(object.interconnect_fabric) ? globalThis.String(object.interconnect_fabric) : "", ncclHcaPrefix: isSet(object.nccl_hca_prefix) ? globalThis.String(object.nccl_hca_prefix) : "", }; }, @@ -128,11 +135,11 @@ export const NodeCapabilities: MessageFns): NodeCapabilities { const message = createBaseNodeCapabilities(); message.storageClasses = object.storageClasses?.map((e) => e) || []; - message.rdmaResourceName = object.rdmaResourceName ?? ""; - message.rdmaFabric = object.rdmaFabric ?? ""; + message.interconnectResourceName = object.interconnectResourceName ?? ""; + message.interconnectFabric = object.interconnectFabric ?? ""; message.ncclHcaPrefix = object.ncclHcaPrefix ?? ""; return message; }, diff --git a/ts/src/generated/protos/akash/inventory/v1/resources.ts b/ts/src/generated/protos/akash/inventory/v1/resources.ts index 7973b6d3..ce79d409 100644 --- a/ts/src/generated/protos/akash/inventory/v1/resources.ts +++ b/ts/src/generated/protos/akash/inventory/v1/resources.ts @@ -25,12 +25,14 @@ export interface NodeResources { | ResourcePair | undefined; /** - * RDMA reports node RDMA capacity. Capacity/Allocatable/Allocated are - * populated by the inventory operator from k8s allocatable for whichever - * rdma/rdma_shared_device_* extended resource the cluster's device plugin - * publishes (see NodeCapabilities.rdma_resource_name). + * GPUInterconnect reports node GPU-interconnect HCA capacity. + * Capacity/Allocatable/Allocated are populated by the inventory + * operator from k8s allocatable for whichever + * rdma/rdma_shared_device_* extended resource the cluster's device + * plugin publishes (the `rdma/*` prefix is the device plugin's + * naming convention; see NodeCapabilities.interconnect_resource_name). */ - rdma: ResourcePair | undefined; + gpuInterconnect: ResourcePair | undefined; } function createBaseNodeResources(): NodeResources { @@ -41,7 +43,7 @@ function createBaseNodeResources(): NodeResources { ephemeralStorage: undefined, volumesAttached: undefined, volumesMounted: undefined, - rdma: undefined, + gpuInterconnect: undefined, }; } @@ -67,8 +69,8 @@ export const NodeResources: MessageFns = { if (message.credentials !== undefined) { ImageCredentials.encode(message.credentials, writer.uint32(82).fork()).join(); } - if (message.rdmaGroup !== "") { - writer.uint32(90).string(message.rdmaGroup); + if (message.interconnectGroup !== "") { + writer.uint32(90).string(message.interconnectGroup); } return writer; }, @@ -570,7 +570,7 @@ export const Service: MessageFns = { break; } - message.rdmaGroup = reader.string(); + message.interconnectGroup = reader.string(); continue; } } @@ -594,7 +594,7 @@ export const Service: MessageFns = { expose: globalThis.Array.isArray(object?.expose) ? object.expose.map((e: any) => ServiceExpose.fromJSON(e)) : [], params: isSet(object.params) ? ServiceParams.fromJSON(object.params) : undefined, credentials: isSet(object.credentials) ? ImageCredentials.fromJSON(object.credentials) : undefined, - rdmaGroup: isSet(object.rdma_group) ? globalThis.String(object.rdma_group) : "", + interconnectGroup: isSet(object.interconnect_group) ? globalThis.String(object.interconnect_group) : "", }; }, @@ -630,8 +630,8 @@ export const Service: MessageFns = { if (message.credentials !== undefined) { obj.credentials = ImageCredentials.toJSON(message.credentials); } - if (message.rdmaGroup !== "") { - obj.rdma_group = message.rdmaGroup; + if (message.interconnectGroup !== "") { + obj.interconnect_group = message.interconnectGroup; } return obj; }, @@ -653,7 +653,7 @@ export const Service: MessageFns = { message.credentials = (object.credentials !== undefined && object.credentials !== null) ? ImageCredentials.fromPartial(object.credentials) : undefined; - message.rdmaGroup = object.rdmaGroup ?? ""; + message.interconnectGroup = object.interconnectGroup ?? ""; return message; }, }; diff --git a/ts/src/sdl/manifest/generateManifest.ts b/ts/src/sdl/manifest/generateManifest.ts index c8dec0a7..c9f3acd5 100644 --- a/ts/src/sdl/manifest/generateManifest.ts +++ b/ts/src/sdl/manifest/generateManifest.ts @@ -248,12 +248,12 @@ function buildManifestService( const params = buildParams(service); - // rdma_group lives under gpu.attributes in the SDL but propagates to the - // off-chain manifest's Service.rdmaGroup field so the provider's workload + // interconnect_group lives under gpu.attributes in the SDL but propagates to the + // off-chain manifest's Service.interconnectGroup field so the provider's workload // builder can label pods for per-group anti-affinity. The same value is // also emitted into Resources.GPU.Attributes by transformGpuAttributes; // both consumers (bid engine vs. workload builder) see it. - const rdmaGroup = compute.resources.gpu?.attributes?.rdma_group ?? ""; + const interconnectGroup = compute.resources.gpu?.attributes?.interconnect_group ?? ""; return Service.fromPartial({ name, @@ -266,7 +266,7 @@ function buildManifestService( expose: buildManifestExpose(service, endpointSequenceNumbers), params, credentials, - rdmaGroup, + interconnectGroup, }); } diff --git a/ts/src/sdl/manifest/generateManifestVersion.ts b/ts/src/sdl/manifest/generateManifestVersion.ts index 0cd4c605..433f24a6 100644 --- a/ts/src/sdl/manifest/generateManifestVersion.ts +++ b/ts/src/sdl/manifest/generateManifestVersion.ts @@ -12,7 +12,7 @@ const OMITTED_MANIFEST_KEYS = new Set(["kind", "attributes"]); // string, otherwise the manifest version hash (a SHA over this exact // serialization) diverges from the Go side and breaks send-manifest // validation on existing leases. -const OMITTED_WHEN_EMPTY_STRING_KEYS = new Set(["rdmaGroup"]); +const OMITTED_WHEN_EMPTY_STRING_KEYS = new Set(["interconnectGroup"]); export async function generateManifestVersion(manifest: Manifest): Promise { const jsonStr = manifestToSortedJSON(manifest); diff --git a/ts/src/sdl/manifest/manifestUtils.ts b/ts/src/sdl/manifest/manifestUtils.ts index d82f07ad..357912ca 100644 --- a/ts/src/sdl/manifest/manifestUtils.ts +++ b/ts/src/sdl/manifest/manifestUtils.ts @@ -75,15 +75,15 @@ export function transformGpuAttributes(attributes: SDLGpuAttributes): Attribute[ }); } - // rdma + rdma_group flow into on-chain Resources.GPU.Attributes so the + // interconnect + interconnect_group flow into on-chain Resources.GPU.Attributes so the // provider's bid engine can match capability and enforce per-group node // separation. Keep parity with the Go SDL parser in go/sdl/gpu.go — same // key names, same value encoding ("true" for the boolean opt-in). - if (attributes.rdma === true) { - result.push({ key: "rdma", value: "true" }); + if (attributes.interconnect === true) { + result.push({ key: "interconnect", value: "true" }); } - if (attributes.rdma_group && attributes.rdma_group.length > 0) { - result.push({ key: "rdma_group", value: attributes.rdma_group }); + if (attributes.interconnect_group && attributes.interconnect_group.length > 0) { + result.push({ key: "interconnect_group", value: attributes.interconnect_group }); } // Go SDL parser canonicalizes the slice via sort.Sort(res) before diff --git a/ts/src/sdl/validateSDL/validateSDL.spec.ts b/ts/src/sdl/validateSDL/validateSDL.spec.ts index 5244e7ee..e1df93d3 100644 --- a/ts/src/sdl/validateSDL/validateSDL.spec.ts +++ b/ts/src/sdl/validateSDL/validateSDL.spec.ts @@ -2226,24 +2226,24 @@ describe(validateSDL.name, () => { }); }); - // Mirrors the Go SDL parser's RDMA cross-field rules (go/sdl/v2.go - // validateRDMA + go/sdl/gpu.go parse-time guards). Without these TS + // Mirrors the Go SDL parser's interconnect cross-field rules (go/sdl/v2.go + // validateInterconnect + go/sdl/gpu.go parse-time guards). Without these TS // checks, tenants using @akashnetwork/chain-sdk could broadcast SDLs // that the Go CLI would have rejected outright. - describe("RDMA validation", () => { - function rdmaSetup(opts: { - rdma?: boolean; - rdmaGroup?: string; + describe("GPU interconnect validation", () => { + function interconnectSetup(opts: { + interconnect?: boolean; + interconnectGroup?: string; units?: number; - placementRequiresRDMA?: boolean; + placementRequiresInterconnect?: boolean; } = {}) { - const { rdma, rdmaGroup, units = 1, placementRequiresRDMA = true } = opts; + const { interconnect, interconnectGroup, units = 1, placementRequiresInterconnect = true } = opts; const placementAttrs: Record = {}; - if (placementRequiresRDMA) placementAttrs["capabilities/rdma"] = "true"; + if (placementRequiresInterconnect) placementAttrs["capabilities/gpu-interconnect"] = "true"; const gpuAttrs: Record = { vendor: { nvidia: [{ model: "a100" }] } }; - if (rdma !== undefined) gpuAttrs.rdma = rdma; - if (rdmaGroup !== undefined) gpuAttrs.rdma_group = rdmaGroup; + if (interconnect !== undefined) gpuAttrs.interconnect = interconnect; + if (interconnectGroup !== undefined) gpuAttrs.interconnect_group = interconnectGroup; return setup({ profiles: { @@ -2266,46 +2266,46 @@ describe(validateSDL.name, () => { }); } - it("accepts a valid RDMA profile under an RDMA-capable placement", () => { - const { validate } = rdmaSetup({ rdma: true }); + it("accepts a valid interconnect profile under an interconnect-capable placement", () => { + const { validate } = interconnectSetup({ interconnect: true }); expect(validate()).toBeUndefined(); }); - // units==0 + rdma / rdma_group is rejected by the schema-level + // units==0 + interconnect / interconnect_group is rejected by the schema-level // gpuAttributesRequireUnitsGt0 rule (any attribute present requires // units > 0), so the semantic validator never runs for that case. // Pinning the schema's behavior here so a future schema relaxation // doesn't silently open a hole. - it("rejects gpu.attributes.rdma=true when gpu.units is 0 (schema-level)", () => { - const { validate } = rdmaSetup({ rdma: true, units: 0 }); + it("rejects gpu.attributes.interconnect=true when gpu.units is 0 (schema-level)", () => { + const { validate } = interconnectSetup({ interconnect: true, units: 0 }); expect(validate()).toContainEqual(expect.objectContaining({ schemaPath: expect.stringContaining("gpuAttributesRequireUnitsGt0"), })); }); - it("rejects gpu.attributes.rdma_group when gpu.units is 0 (schema-level)", () => { - const { validate } = rdmaSetup({ rdmaGroup: "pair0", units: 0 }); + it("rejects gpu.attributes.interconnect_group when gpu.units is 0 (schema-level)", () => { + const { validate } = interconnectSetup({ interconnectGroup: "pair0", units: 0 }); expect(validate()).toContainEqual(expect.objectContaining({ schemaPath: expect.stringContaining("gpuAttributesRequireUnitsGt0"), })); }); - it("rejects rdma_group set without rdma=true", () => { - const { validate } = rdmaSetup({ rdmaGroup: "pair0" }); + it("rejects interconnect_group set without interconnect=true", () => { + const { validate } = interconnectSetup({ interconnectGroup: "pair0" }); expect(validate()).toContainEqual(expect.objectContaining({ - message: expect.stringContaining(`sets gpu.attributes.rdma_group="pair0" but does not set gpu.attributes.rdma: true`), + message: expect.stringContaining(`sets gpu.attributes.interconnect_group="pair0" but does not set gpu.attributes.interconnect: true`), })); }); - it("rejects rdma=true under a placement that does not require capabilities/rdma=true", () => { - const { validate } = rdmaSetup({ rdma: true, placementRequiresRDMA: false }); + it("rejects interconnect=true under a placement that does not require capabilities/gpu-interconnect=true", () => { + const { validate } = interconnectSetup({ interconnect: true, placementRequiresInterconnect: false }); expect(validate()).toContainEqual(expect.objectContaining({ - message: expect.stringContaining(`but placement does not require capabilities/rdma=true`), + message: expect.stringContaining(`but placement does not require capabilities/gpu-interconnect=true`), })); }); - it("rejects implicit + explicit rdma_group mixing within one placement", () => { - // Two profiles, both RDMA, but only one sets rdma_group. + it("rejects implicit + explicit interconnect_group mixing within one placement", () => { + // Two profiles, both interconnect, but only one sets interconnect_group. const { validate } = setup({ services: { worker: { @@ -2323,8 +2323,8 @@ describe(validateSDL.name, () => { units: 1, attributes: { vendor: { nvidia: [{ model: "a100" }] }, - rdma: true, - rdma_group: "pair0", + interconnect: true, + interconnect_group: "pair0", }, }, }, @@ -2338,8 +2338,8 @@ describe(validateSDL.name, () => { units: 1, attributes: { vendor: { nvidia: [{ model: "a100" }] }, - rdma: true, - // rdma_group intentionally omitted -> rule 3 violation + interconnect: true, + // interconnect_group intentionally omitted -> rule 3 violation }, }, }, @@ -2347,7 +2347,7 @@ describe(validateSDL.name, () => { }, placement: { dcloud: { - attributes: { "capabilities/rdma": "true" }, + attributes: { "capabilities/gpu-interconnect": "true" }, pricing: { worker: { amount: "1000", denom: AKT_DENOM }, }, @@ -2362,7 +2362,7 @@ describe(validateSDL.name, () => { }); expect(validate()).toContainEqual(expect.objectContaining({ - message: expect.stringContaining("mixes explicit and implicit rdma_group"), + message: expect.stringContaining("mixes explicit and implicit interconnect_group"), })); }); }); diff --git a/ts/src/sdl/validateSDL/validateSDL.ts b/ts/src/sdl/validateSDL/validateSDL.ts index c5b4ad5b..983fb1c9 100644 --- a/ts/src/sdl/validateSDL/validateSDL.ts +++ b/ts/src/sdl/validateSDL/validateSDL.ts @@ -51,7 +51,7 @@ class SDLValidator { }); } - this.#validateRDMA(); + this.#validateInterconnect(); this.#validateEndpoints(); return this.#errors; } @@ -259,57 +259,57 @@ class SDLValidator { }); } - // Note: the units==0 + rdma/rdma_group case is already rejected by + // Note: the units==0 + interconnect/interconnect_group case is already rejected by // the schema-level rule `gpuAttributesRequireUnitsGt0` — it requires - // units > 0 whenever any attribute (including rdma / rdma_group) is + // units > 0 whenever any attribute (including interconnect / interconnect_group) is // present. So we don't need a duplicate semantic check here. The // Go parser (go/sdl/gpu.go) carries its own parse-time check because // YAML decoding has no schema layer above it. } - // Mirror the Go-side validateRDMA in go/sdl/v2.go. Three cross-field + // Mirror the Go-side validateInterconnect in go/sdl/v2.go. Three cross-field // rules the chain SDK enforces; TS must enforce them too so tenants // using @akashnetwork/chain-sdk get the same fail-fast feedback as // the Go CLI users (the chain doesn't validate SDL semantics). // - // 1. A profile with gpu.attributes.rdma=true must be used by a + // 1. A profile with gpu.attributes.interconnect=true must be used by a // deployment whose placement requirements include - // capabilities/rdma=true. - // 2. A profile with gpu.attributes.rdma_group set must also have - // gpu.attributes.rdma=true on the same profile. + // capabilities/gpu-interconnect=true. + // 2. A profile with gpu.attributes.interconnect_group set must also have + // gpu.attributes.interconnect=true on the same profile. // 3. Within one deployment (placement), if any profile sets - // rdma_group, every rdma=true profile under that placement must - // also set rdma_group — no implicit-default-plus-explicit mixing. - #validateRDMA() { + // interconnect_group, every interconnect=true profile under that placement must + // also set interconnect_group — no implicit-default-plus-explicit mixing. + #validateInterconnect() { const profiles = this.#sdl.profiles?.compute; const placements = this.#sdl.profiles?.placement; if (!profiles) return; - // Rule 2: rdma_group ⇒ rdma=true. Per-profile, units > 0 guard so + // Rule 2: interconnect_group ⇒ interconnect=true. Per-profile, units > 0 guard so // the zero-GPU case is left to #validateGPU's error above (avoids // duplicate complaints on the same profile). for (const [profileName, compute] of Object.entries(profiles)) { const gpu = compute?.resources?.gpu; if (!gpu || gpu.units === 0 || gpu.units === undefined) continue; - if (gpu.attributes?.rdma_group && gpu.attributes.rdma !== true) { + if (gpu.attributes?.interconnect_group && gpu.attributes.interconnect !== true) { this.#errors.push({ - message: `Compute profile "${profileName}" sets gpu.attributes.rdma_group="${gpu.attributes.rdma_group}" but does not set gpu.attributes.rdma: true.`, - instancePath: `/profiles/compute/${profileName}/resources/gpu/attributes/rdma`, - schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/rdma", + message: `Compute profile "${profileName}" sets gpu.attributes.interconnect_group="${gpu.attributes.interconnect_group}" but does not set gpu.attributes.interconnect: true.`, + instancePath: `/profiles/compute/${profileName}/resources/gpu/attributes.interconnect`, + schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect", keyword: "required", - params: { missingProperty: "rdma" }, + params: { missingProperty: "interconnect" }, }); } } // Rules 1 + 3 are per-placement. Walk every (service, placement) and // capture which profile each service uses, whether that profile has - // rdma=true, and whether it sets rdma_group. + // interconnect=true, and whether it sets interconnect_group. interface profileUsage { profileName: string; serviceName: string; - hasRDMA: boolean; + hasInterconnect: boolean; group: string; } const usagesByPlacement = new Map(); @@ -322,53 +322,53 @@ class SDLValidator { const usage: profileUsage = { profileName: svcdepl.profile, serviceName, - hasRDMA: false, + hasInterconnect: false, group: "", }; if (gpu && gpu.units !== 0 && gpu.units !== undefined) { - usage.hasRDMA = gpu.attributes?.rdma === true; - usage.group = gpu.attributes?.rdma_group ?? ""; + usage.hasInterconnect = gpu.attributes?.interconnect === true; + usage.group = gpu.attributes?.interconnect_group ?? ""; } const bucket = usagesByPlacement.get(placementName) ?? []; bucket.push(usage); usagesByPlacement.set(placementName, bucket); - // Rule 1: a profile with rdma=true must be deployed under a - // placement whose attributes require capabilities/rdma=true. - if (usage.hasRDMA) { + // Rule 1: a profile with interconnect=true must be deployed under a + // placement whose attributes require capabilities/gpu-interconnect=true. + if (usage.hasInterconnect) { const placement = placements?.[placementName]; // The placement attributes shape is `Record` // in the schema; we look for the literal key/value pair. const attrs = (placement?.attributes ?? {}) as Record; - const capability = attrs["capabilities/rdma"]; - const requiresRDMA = capability === "true" || capability === true; - if (!requiresRDMA) { + const capability = attrs["capabilities/gpu-interconnect"]; + const requiresInterconnect = capability === "true" || capability === true; + if (!requiresInterconnect) { this.#errors.push({ - message: `Service "${serviceName}" uses RDMA profile "${svcdepl.profile}" under placement "${placementName}" but placement does not require capabilities/rdma=true.`, + message: `Service "${serviceName}" uses interconnect profile "${svcdepl.profile}" under placement "${placementName}" but placement does not require capabilities/gpu-interconnect=true.`, instancePath: `/profiles/placement/${placementName}/attributes`, schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/attributes", keyword: "required", - params: { missingProperty: "capabilities/rdma" }, + params: { missingProperty: "capabilities/gpu-interconnect" }, }); } } } } - // Rule 3: per placement, if any profile sets rdma_group then every - // rdma=true profile under that placement must also set rdma_group. + // Rule 3: per placement, if any profile sets interconnect_group then every + // interconnect=true profile under that placement must also set interconnect_group. for (const [placementName, usages] of usagesByPlacement.entries()) { const anyGrouped = usages.some((u) => u.group !== ""); if (!anyGrouped) continue; for (const u of usages) { - if (u.hasRDMA && u.group === "") { + if (u.hasInterconnect && u.group === "") { this.#errors.push({ - message: `Placement "${placementName}" mixes explicit and implicit rdma_group: profile "${u.profileName}" has gpu.attributes.rdma: true but no rdma_group, while another profile under the same placement sets rdma_group.`, - instancePath: `/profiles/compute/${u.profileName}/resources/gpu/attributes/rdma_group`, - schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/rdma_group", + message: `Placement "${placementName}" mixes explicit and implicit interconnect_group: profile "${u.profileName}" has gpu.attributes.interconnect: true but no interconnect_group, while another profile under the same placement sets interconnect_group.`, + instancePath: `/profiles/compute/${u.profileName}/resources/gpu/attributes.interconnect_group`, + schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect_group", keyword: "required", - params: { missingProperty: "rdma_group" }, + params: { missingProperty: "interconnect_group" }, }); } } diff --git a/ts/src/sdl/validateSDL/validateSDLInput.ts b/ts/src/sdl/validateSDL/validateSDLInput.ts index 59218c54..eabadc63 100644 --- a/ts/src/sdl/validateSDL/validateSDLInput.ts +++ b/ts/src/sdl/validateSDL/validateSDLInput.ts @@ -88,21 +88,25 @@ export interface SDLInput { | null; }; /** - * Opt this resource into RDMA. When true, the bid - * engine matches against providers advertising - * capabilities/rdma and the workload builder - * requests one RDMA HCA per GPU unit (1:1). + * Opt this resource into GPU interconnect. + * When true, the bid engine matches against + * providers advertising + * capabilities/gpu-interconnect and the + * workload builder requests one HCA per GPU + * unit (1:1). Fabric (InfiniBand vs RoCE) is + * chosen by the provider, not the SDL. * */ - rdma?: boolean; + interconnect?: boolean; /** - * Peer-group label for multi-service NCCL groups. - * All services sharing the same value form one - * anti-affinity group: the provider schedules them - * on distinct nodes. Implies rdma: true. + * Peer-group label for multi-service NCCL + * groups. All services sharing the same value + * form one anti-affinity group: the provider + * schedules them on distinct nodes. Implies + * interconnect: true. * */ - rdma_group?: string; + interconnect_group?: string; }; units?: string | number; }; @@ -255,7 +259,7 @@ var require_ucs2length = __commonJS({ // var validate = validate27; var stdin_default = validate27; -var schema28 = { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "description": "Schema for Akash Stack Definition Language (SDL) YAML input files.\n\nNote: This schema validates structure only. Semantic validations (cross-references,\nunused endpoints, profile references, etc.) are performed at runtime by the Go parser.\nSee README.md for details.\n", "definitions": { "stringArrayOrNull": { "description": "String array or null value (used for command args and env vars)", "oneOf": [{ "items": { "type": "string" }, "type": "array" }, { "type": "null" }] }, "portNumber": { "description": "Valid TCP/UDP port number (1-65535)", "type": "integer", "minimum": 1, "maximum": 65535 }, "httpErrorCode": { "description": "HTTP error codes for proxy retry logic", "enum": ["error", "timeout", "500", "502", "503", "504", "403", "404", "429", "off"], "type": "string" }, "priceCoin": { "description": "Price definition with amount and denomination", "additionalProperties": false, "properties": { "amount": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Positive number as string" }, { "type": "number", "minimum": 0, "description": "Positive number" }] }, "denom": { "enum": ["uakt", "uact"], "type": "string" } }, "required": ["denom", "amount"], "type": "object" }, "storageRamClassMustNotBePersistent": { "description": "RAM storage class must not have persistent=true", "not": { "properties": { "class": { "const": "ram" }, "persistent": { "oneOf": [{ "const": true }, { "const": "true" }] } }, "required": ["class", "persistent"] } }, "storageNonRamClassRequiresPersistent": { "description": "Non-RAM storage classes (beta1, beta2, beta3, default) require persistent=true", "if": { "properties": { "class": { "enum": ["beta1", "beta2", "beta3", "default"] } }, "required": ["class"] }, "then": { "properties": { "persistent": { "oneOf": [{ "const": true }, { "const": "true" }] } }, "required": ["persistent"] } }, "storageAttributesValidation": { "description": "Storage attributes validation:\n1. RAM class must not be persistent\n2. Non-RAM classes (beta1, beta2, beta3, default) require persistent=true\n", "additionalProperties": false, "properties": { "class": { "type": "string" }, "persistent": { "oneOf": [{ "type": "boolean" }, { "type": "string" }] } }, "allOf": [{ "$ref": "#/definitions/storageRamClassMustNotBePersistent" }, { "$ref": "#/definitions/storageNonRamClassRequiresPersistent" }], "required": ["class", "persistent"], "type": "object" }, "storageVolume": { "description": "Storage volume definition with size and optional attributes", "additionalProperties": false, "properties": { "attributes": { "$ref": "#/definitions/storageAttributesValidation" }, "name": { "type": "string" }, "size": { "type": "string" } }, "required": ["size"], "type": "object" }, "absolutePath": { "description": "Absolute filesystem path starting with /", "type": "string", "minLength": 1, "pattern": "^/" }, "gpuUnitsGt0RequiresAttributes": { "description": "GPU units > 0 requires attributes to be present", "if": { "properties": { "units": { "oneOf": [{ "type": "number", "exclusiveMinimum": 0 }, { "type": "string", "not": { "pattern": "^0+(\\.0+)?$" } }] } }, "required": ["units"] }, "then": { "required": ["attributes"] } }, "gpuAttributesRequireUnitsGt0": { "description": "GPU attributes present requires units > 0", "if": { "required": ["attributes"] }, "then": { "properties": { "units": { "oneOf": [{ "type": "number", "exclusiveMinimum": 0 }, { "type": "string", "not": { "pattern": "^0+(\\.0+)?$" } }] } }, "required": ["units"] } }, "exposeToWithIpEnforcesGlobal": { "description": "Expose to with IP enforces global", "if": { "properties": { "ip": { "type": "string", "minLength": 1 } }, "required": ["ip"] }, "then": { "properties": { "global": { "const": true } }, "required": ["global"] } } }, "properties": { "deployment": { "additionalProperties": { "additionalProperties": { "additionalProperties": false, "properties": { "count": { "minimum": 1, "type": "integer" }, "profile": { "type": "string" } }, "required": ["profile", "count"], "type": "object" }, "type": "object" }, "type": "object" }, "endpoints": { "additionalProperties": false, "patternProperties": { "^[a-z]+[-_0-9a-z]+$": { "additionalProperties": false, "properties": { "kind": { "enum": ["ip"], "type": "string" } }, "required": ["kind"], "type": "object" } }, "type": "object" }, "include": { "description": "Optional list of files to include", "items": { "type": "string" }, "type": "array" }, "profiles": { "additionalProperties": false, "properties": { "compute": { "additionalProperties": { "additionalProperties": false, "properties": { "resources": { "additionalProperties": false, "properties": { "cpu": { "additionalProperties": false, "properties": { "attributes": { "type": "object" }, "units": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?[a-zA-Z]*$", "not": { "pattern": "^0+(\\.0+)?m?$" } }, { "type": "number", "exclusiveMinimum": 0 }] } }, "required": ["units"], "type": "object" }, "gpu": { "description": "GPU resource specification.\n- units defaults to 0 if omitted\n- Bidirectional validation: units > 0 requires attributes, and attributes require units > 0\n", "additionalProperties": false, "properties": { "attributes": { "additionalProperties": false, "properties": { "vendor": { "additionalProperties": false, "minProperties": 1, "properties": { "nvidia": { "oneOf": [{ "type": "array", "items": { "additionalProperties": false, "properties": { "interface": { "enum": ["pcie", "sxm"], "type": "string" }, "model": { "type": "string" }, "ram": { "type": "string" } }, "type": "object" } }, { "type": "null" }] } }, "type": "object" }, "rdma": { "description": "Opt this resource into RDMA. When true, the bid\nengine matches against providers advertising\ncapabilities/rdma and the workload builder\nrequests one RDMA HCA per GPU unit (1:1).\n", "type": "boolean" }, "rdma_group": { "description": "Peer-group label for multi-service NCCL groups.\nAll services sharing the same value form one\nanti-affinity group: the provider schedules them\non distinct nodes. Implies rdma: true.\n", "type": "string" } }, "type": "object" }, "units": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "allOf": [{ "$ref": "#/definitions/gpuUnitsGt0RequiresAttributes" }, { "$ref": "#/definitions/gpuAttributesRequireUnitsGt0" }], "type": "object" }, "memory": { "additionalProperties": false, "properties": { "size": { "type": "string" } }, "required": ["size"], "type": "object" }, "storage": { "oneOf": [{ "$ref": "#/definitions/storageVolume" }, { "items": { "$ref": "#/definitions/storageVolume" }, "type": "array" }] } }, "required": ["cpu", "memory", "storage"], "type": "object" } }, "required": ["resources"], "type": "object" }, "type": "object" }, "placement": { "additionalProperties": { "additionalProperties": false, "properties": { "attributes": { "type": "object" }, "pricing": { "additionalProperties": { "$ref": "#/definitions/priceCoin" }, "type": "object" }, "signedBy": { "additionalProperties": false, "properties": { "allOf": { "items": { "type": "string" }, "type": "array" }, "anyOf": { "items": { "type": "string" }, "type": "array" } }, "type": "object" } }, "required": ["pricing"], "type": "object" }, "type": "object" } }, "required": ["compute", "placement"], "type": "object" }, "services": { "additionalProperties": { "properties": { "args": { "$ref": "#/definitions/stringArrayOrNull" }, "command": { "$ref": "#/definitions/stringArrayOrNull" }, "credentials": { "additionalProperties": false, "properties": { "email": { "type": "string", "minLength": 5 }, "host": { "type": "string", "minLength": 1 }, "password": { "type": "string", "minLength": 6 }, "username": { "type": "string", "minLength": 1 } }, "required": ["host", "username", "password"], "type": "object" }, "dependencies": { "items": { "additionalProperties": false, "properties": { "service": { "type": "string" } }, "type": "object" }, "type": "array" }, "env": { "$ref": "#/definitions/stringArrayOrNull" }, "expose": { "oneOf": [{ "type": "array", "items": { "additionalProperties": false, "properties": { "accept": { "items": { "type": "string" }, "type": "array" }, "as": { "$ref": "#/definitions/portNumber" }, "http_options": { "additionalProperties": false, "properties": { "max_body_size": { "type": "integer", "minimum": 0, "maximum": 104857600, "description": "Maximum body size in bytes (max 100 MB)" }, "next_cases": { "oneOf": [{ "type": "array", "items": { "$ref": "#/definitions/httpErrorCode" }, "contains": { "const": "off" }, "maxItems": 1, "minItems": 1 }, { "type": "array", "items": { "$ref": "#/definitions/httpErrorCode" }, "not": { "contains": { "const": "off" } } }] }, "next_timeout": { "type": "integer", "minimum": 0 }, "next_tries": { "type": "integer", "minimum": 0 }, "read_timeout": { "type": "integer", "minimum": 0, "maximum": 6e4, "description": "Read timeout in milliseconds (max 60 seconds)" }, "send_timeout": { "type": "integer", "minimum": 0, "maximum": 6e4, "description": "Send timeout in milliseconds (max 60 seconds)" } }, "type": "object" }, "port": { "$ref": "#/definitions/portNumber" }, "proto": { "enum": ["TCP", "UDP", "tcp", "udp"], "type": "string" }, "to": { "items": { "additionalProperties": false, "properties": { "global": { "type": "boolean" }, "ip": { "minLength": 1, "type": "string" }, "service": { "type": "string" } }, "allOf": [{ "$ref": "#/definitions/exposeToWithIpEnforcesGlobal" }], "type": "object" }, "type": "array" } }, "required": ["port"], "type": "object" } }, { "type": "null" }] }, "image": { "type": "string", "minLength": 1 }, "params": { "additionalProperties": false, "properties": { "storage": { "additionalProperties": { "additionalProperties": false, "properties": { "mount": { "$ref": "#/definitions/absolutePath" }, "readOnly": { "type": "boolean" } }, "type": "object" }, "type": "object" }, "permissions": { "additionalProperties": false, "properties": { "read": { "items": { "type": "string", "enum": ["deployment", "logs", "events"] }, "type": "array" } }, "type": "object" } }, "type": "object" } }, "required": ["image"], "type": "object", "additionalProperties": false }, "type": "object" }, "reclamation": { "description": "Deployment-level reclamation requirements (optional). When set, providers must offer a reclamation window meeting or exceeding the specified minimum to bid on this deployment.", "additionalProperties": false, "properties": { "min_window": { "type": "string", "pattern": "^[1-9][0-9]*(s|m|h)$", "description": 'Minimum reclamation window the tenant requires, as a whole number followed by a unit (s, m, or h). E.g. "1h", "24h", "720h".' } }, "required": ["min_window"], "type": "object" }, "version": { "description": "SDL version", "enum": ["2.0", "2.1"], "type": "string" } }, "required": ["version", "services", "profiles", "deployment"], "title": "Akash SDL Input Schema", "type": "object" }; +var schema28 = { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "description": "Schema for Akash Stack Definition Language (SDL) YAML input files.\n\nNote: This schema validates structure only. Semantic validations (cross-references,\nunused endpoints, profile references, etc.) are performed at runtime by the Go parser.\nSee README.md for details.\n", "definitions": { "stringArrayOrNull": { "description": "String array or null value (used for command args and env vars)", "oneOf": [{ "items": { "type": "string" }, "type": "array" }, { "type": "null" }] }, "portNumber": { "description": "Valid TCP/UDP port number (1-65535)", "type": "integer", "minimum": 1, "maximum": 65535 }, "httpErrorCode": { "description": "HTTP error codes for proxy retry logic", "enum": ["error", "timeout", "500", "502", "503", "504", "403", "404", "429", "off"], "type": "string" }, "priceCoin": { "description": "Price definition with amount and denomination", "additionalProperties": false, "properties": { "amount": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Positive number as string" }, { "type": "number", "minimum": 0, "description": "Positive number" }] }, "denom": { "enum": ["uakt", "uact"], "type": "string" } }, "required": ["denom", "amount"], "type": "object" }, "storageRamClassMustNotBePersistent": { "description": "RAM storage class must not have persistent=true", "not": { "properties": { "class": { "const": "ram" }, "persistent": { "oneOf": [{ "const": true }, { "const": "true" }] } }, "required": ["class", "persistent"] } }, "storageNonRamClassRequiresPersistent": { "description": "Non-RAM storage classes (beta1, beta2, beta3, default) require persistent=true", "if": { "properties": { "class": { "enum": ["beta1", "beta2", "beta3", "default"] } }, "required": ["class"] }, "then": { "properties": { "persistent": { "oneOf": [{ "const": true }, { "const": "true" }] } }, "required": ["persistent"] } }, "storageAttributesValidation": { "description": "Storage attributes validation:\n1. RAM class must not be persistent\n2. Non-RAM classes (beta1, beta2, beta3, default) require persistent=true\n", "additionalProperties": false, "properties": { "class": { "type": "string" }, "persistent": { "oneOf": [{ "type": "boolean" }, { "type": "string" }] } }, "allOf": [{ "$ref": "#/definitions/storageRamClassMustNotBePersistent" }, { "$ref": "#/definitions/storageNonRamClassRequiresPersistent" }], "required": ["class", "persistent"], "type": "object" }, "storageVolume": { "description": "Storage volume definition with size and optional attributes", "additionalProperties": false, "properties": { "attributes": { "$ref": "#/definitions/storageAttributesValidation" }, "name": { "type": "string" }, "size": { "type": "string" } }, "required": ["size"], "type": "object" }, "absolutePath": { "description": "Absolute filesystem path starting with /", "type": "string", "minLength": 1, "pattern": "^/" }, "gpuUnitsGt0RequiresAttributes": { "description": "GPU units > 0 requires attributes to be present", "if": { "properties": { "units": { "oneOf": [{ "type": "number", "exclusiveMinimum": 0 }, { "type": "string", "not": { "pattern": "^0+(\\.0+)?$" } }] } }, "required": ["units"] }, "then": { "required": ["attributes"] } }, "gpuAttributesRequireUnitsGt0": { "description": "GPU attributes present requires units > 0", "if": { "required": ["attributes"] }, "then": { "properties": { "units": { "oneOf": [{ "type": "number", "exclusiveMinimum": 0 }, { "type": "string", "not": { "pattern": "^0+(\\.0+)?$" } }] } }, "required": ["units"] } }, "exposeToWithIpEnforcesGlobal": { "description": "Expose to with IP enforces global", "if": { "properties": { "ip": { "type": "string", "minLength": 1 } }, "required": ["ip"] }, "then": { "properties": { "global": { "const": true } }, "required": ["global"] } } }, "properties": { "deployment": { "additionalProperties": { "additionalProperties": { "additionalProperties": false, "properties": { "count": { "minimum": 1, "type": "integer" }, "profile": { "type": "string" } }, "required": ["profile", "count"], "type": "object" }, "type": "object" }, "type": "object" }, "endpoints": { "additionalProperties": false, "patternProperties": { "^[a-z]+[-_0-9a-z]+$": { "additionalProperties": false, "properties": { "kind": { "enum": ["ip"], "type": "string" } }, "required": ["kind"], "type": "object" } }, "type": "object" }, "include": { "description": "Optional list of files to include", "items": { "type": "string" }, "type": "array" }, "profiles": { "additionalProperties": false, "properties": { "compute": { "additionalProperties": { "additionalProperties": false, "properties": { "resources": { "additionalProperties": false, "properties": { "cpu": { "additionalProperties": false, "properties": { "attributes": { "type": "object" }, "units": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?[a-zA-Z]*$", "not": { "pattern": "^0+(\\.0+)?m?$" } }, { "type": "number", "exclusiveMinimum": 0 }] } }, "required": ["units"], "type": "object" }, "gpu": { "description": "GPU resource specification.\n- units defaults to 0 if omitted\n- Bidirectional validation: units > 0 requires attributes, and attributes require units > 0\n", "additionalProperties": false, "properties": { "attributes": { "additionalProperties": false, "properties": { "vendor": { "additionalProperties": false, "minProperties": 1, "properties": { "nvidia": { "oneOf": [{ "type": "array", "items": { "additionalProperties": false, "properties": { "interface": { "enum": ["pcie", "sxm"], "type": "string" }, "model": { "type": "string" }, "ram": { "type": "string" } }, "type": "object" } }, { "type": "null" }] } }, "type": "object" }, "interconnect": { "description": "Opt this resource into GPU interconnect.\nWhen true, the bid engine matches against\nproviders advertising\ncapabilities/gpu-interconnect and the\nworkload builder requests one HCA per GPU\nunit (1:1). Fabric (InfiniBand vs RoCE) is\nchosen by the provider, not the SDL.\n", "type": "boolean" }, "interconnect_group": { "description": "Peer-group label for multi-service NCCL\ngroups. All services sharing the same value\nform one anti-affinity group: the provider\nschedules them on distinct nodes. Implies\ninterconnect: true.\n", "type": "string" } }, "type": "object" }, "units": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "allOf": [{ "$ref": "#/definitions/gpuUnitsGt0RequiresAttributes" }, { "$ref": "#/definitions/gpuAttributesRequireUnitsGt0" }], "type": "object" }, "memory": { "additionalProperties": false, "properties": { "size": { "type": "string" } }, "required": ["size"], "type": "object" }, "storage": { "oneOf": [{ "$ref": "#/definitions/storageVolume" }, { "items": { "$ref": "#/definitions/storageVolume" }, "type": "array" }] } }, "required": ["cpu", "memory", "storage"], "type": "object" } }, "required": ["resources"], "type": "object" }, "type": "object" }, "placement": { "additionalProperties": { "additionalProperties": false, "properties": { "attributes": { "type": "object" }, "pricing": { "additionalProperties": { "$ref": "#/definitions/priceCoin" }, "type": "object" }, "signedBy": { "additionalProperties": false, "properties": { "allOf": { "items": { "type": "string" }, "type": "array" }, "anyOf": { "items": { "type": "string" }, "type": "array" } }, "type": "object" } }, "required": ["pricing"], "type": "object" }, "type": "object" } }, "required": ["compute", "placement"], "type": "object" }, "services": { "additionalProperties": { "properties": { "args": { "$ref": "#/definitions/stringArrayOrNull" }, "command": { "$ref": "#/definitions/stringArrayOrNull" }, "credentials": { "additionalProperties": false, "properties": { "email": { "type": "string", "minLength": 5 }, "host": { "type": "string", "minLength": 1 }, "password": { "type": "string", "minLength": 6 }, "username": { "type": "string", "minLength": 1 } }, "required": ["host", "username", "password"], "type": "object" }, "dependencies": { "items": { "additionalProperties": false, "properties": { "service": { "type": "string" } }, "type": "object" }, "type": "array" }, "env": { "$ref": "#/definitions/stringArrayOrNull" }, "expose": { "oneOf": [{ "type": "array", "items": { "additionalProperties": false, "properties": { "accept": { "items": { "type": "string" }, "type": "array" }, "as": { "$ref": "#/definitions/portNumber" }, "http_options": { "additionalProperties": false, "properties": { "max_body_size": { "type": "integer", "minimum": 0, "maximum": 104857600, "description": "Maximum body size in bytes (max 100 MB)" }, "next_cases": { "oneOf": [{ "type": "array", "items": { "$ref": "#/definitions/httpErrorCode" }, "contains": { "const": "off" }, "maxItems": 1, "minItems": 1 }, { "type": "array", "items": { "$ref": "#/definitions/httpErrorCode" }, "not": { "contains": { "const": "off" } } }] }, "next_timeout": { "type": "integer", "minimum": 0 }, "next_tries": { "type": "integer", "minimum": 0 }, "read_timeout": { "type": "integer", "minimum": 0, "maximum": 6e4, "description": "Read timeout in milliseconds (max 60 seconds)" }, "send_timeout": { "type": "integer", "minimum": 0, "maximum": 6e4, "description": "Send timeout in milliseconds (max 60 seconds)" } }, "type": "object" }, "port": { "$ref": "#/definitions/portNumber" }, "proto": { "enum": ["TCP", "UDP", "tcp", "udp"], "type": "string" }, "to": { "items": { "additionalProperties": false, "properties": { "global": { "type": "boolean" }, "ip": { "minLength": 1, "type": "string" }, "service": { "type": "string" } }, "allOf": [{ "$ref": "#/definitions/exposeToWithIpEnforcesGlobal" }], "type": "object" }, "type": "array" } }, "required": ["port"], "type": "object" } }, { "type": "null" }] }, "image": { "type": "string", "minLength": 1 }, "params": { "additionalProperties": false, "properties": { "storage": { "additionalProperties": { "additionalProperties": false, "properties": { "mount": { "$ref": "#/definitions/absolutePath" }, "readOnly": { "type": "boolean" } }, "type": "object" }, "type": "object" }, "permissions": { "additionalProperties": false, "properties": { "read": { "items": { "type": "string", "enum": ["deployment", "logs", "events"] }, "type": "array" } }, "type": "object" } }, "type": "object" } }, "required": ["image"], "type": "object", "additionalProperties": false }, "type": "object" }, "reclamation": { "description": "Deployment-level reclamation requirements (optional). When set, providers must offer a reclamation window meeting or exceeding the specified minimum to bid on this deployment.", "additionalProperties": false, "properties": { "min_window": { "type": "string", "pattern": "^[1-9][0-9]*(s|m|h)$", "description": 'Minimum reclamation window the tenant requires, as a whole number followed by a unit (s, m, or h). E.g. "1h", "24h", "720h".' } }, "required": ["min_window"], "type": "object" }, "version": { "description": "SDL version", "enum": ["2.0", "2.1"], "type": "string" } }, "required": ["version", "services", "profiles", "deployment"], "title": "Akash SDL Input Schema", "type": "object" }; var schema35 = { "description": "Price definition with amount and denomination", "additionalProperties": false, "properties": { "amount": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Positive number as string" }, { "type": "number", "minimum": 0, "description": "Positive number" }] }, "denom": { "enum": ["uakt", "uact"], "type": "string" } }, "required": ["denom", "amount"], "type": "object" }; var schema40 = { "description": "HTTP error codes for proxy retry logic", "enum": ["error", "timeout", "500", "502", "503", "504", "403", "404", "429", "off"], "type": "string" }; var pattern4 = new RegExp("^[a-z]+[-_0-9a-z]+$", "u"); @@ -1514,7 +1518,7 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data20 = data17.attributes; if (data20 && typeof data20 == "object" && !Array.isArray(data20)) { for (const key13 in data20) { - if (!(key13 === "vendor" || key13 === "rdma" || key13 === "rdma_group")) { + if (!(key13 === "vendor" || key13 === "interconnect" || key13 === "interconnect_group")) { const err62 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key13 }, message: "must NOT have additional properties" }; if (vErrors === null) { vErrors = [err62]; @@ -1685,9 +1689,9 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r errors++; } } - if (data20.rdma !== void 0) { - if (typeof data20.rdma !== "boolean") { - const err75 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/rdma", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/rdma/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" }; + if (data20.interconnect !== void 0) { + if (typeof data20.interconnect !== "boolean") { + const err75 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/interconnect", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" }; if (vErrors === null) { vErrors = [err75]; } else { @@ -1696,9 +1700,9 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r errors++; } } - if (data20.rdma_group !== void 0) { - if (typeof data20.rdma_group !== "string") { - const err76 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/rdma_group", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/rdma_group/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (data20.interconnect_group !== void 0) { + if (typeof data20.interconnect_group !== "string") { + const err76 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/interconnect_group", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect_group/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { vErrors = [err76]; } else { From f0c50affa7b0d30ed6125ad8ad17342b05787289 Mon Sep 17 00:00:00 2001 From: zblocker64 Date: Mon, 15 Jun 2026 14:46:54 -0500 Subject: [PATCH 07/10] style(ts): clean up spacing in interconnect validation spec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CodeRabbit lint follow-up on the rename pass — sed left a double space after `{` in two interconnectSetup() calls and a stray leading space on two `interconnect: true` lines inside the rule-3 fixture. Cosmetic only; 89/89 unit tests + 34/34 SDL parity tests still pass. --- ts/src/sdl/validateSDL/validateSDL.spec.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ts/src/sdl/validateSDL/validateSDL.spec.ts b/ts/src/sdl/validateSDL/validateSDL.spec.ts index e1df93d3..007ba2b9 100644 --- a/ts/src/sdl/validateSDL/validateSDL.spec.ts +++ b/ts/src/sdl/validateSDL/validateSDL.spec.ts @@ -2267,7 +2267,7 @@ describe(validateSDL.name, () => { } it("accepts a valid interconnect profile under an interconnect-capable placement", () => { - const { validate } = interconnectSetup({ interconnect: true }); + const { validate } = interconnectSetup({ interconnect: true }); expect(validate()).toBeUndefined(); }); @@ -2277,7 +2277,7 @@ describe(validateSDL.name, () => { // Pinning the schema's behavior here so a future schema relaxation // doesn't silently open a hole. it("rejects gpu.attributes.interconnect=true when gpu.units is 0 (schema-level)", () => { - const { validate } = interconnectSetup({ interconnect: true, units: 0 }); + const { validate } = interconnectSetup({ interconnect: true, units: 0 }); expect(validate()).toContainEqual(expect.objectContaining({ schemaPath: expect.stringContaining("gpuAttributesRequireUnitsGt0"), })); @@ -2323,7 +2323,7 @@ describe(validateSDL.name, () => { units: 1, attributes: { vendor: { nvidia: [{ model: "a100" }] }, - interconnect: true, + interconnect: true, interconnect_group: "pair0", }, }, @@ -2338,7 +2338,7 @@ describe(validateSDL.name, () => { units: 1, attributes: { vendor: { nvidia: [{ model: "a100" }] }, - interconnect: true, + interconnect: true, // interconnect_group intentionally omitted -> rule 3 violation }, }, From 23967de8ed96ec19b825837344f7a88fc77f365d Mon Sep 17 00:00:00 2001 From: zblocker64 Date: Tue, 16 Jun 2026 11:01:55 -0500 Subject: [PATCH 08/10] feat(sdl): rework GPU interconnect surface to nested form (rc5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refactors the rc4 interconnect SDL surface from the flat `interconnect: true` + `interconnect_group: ` pair to a single nested key. Tenants write one of two forms under `gpu.attributes.interconnect`: interconnect: [] # implicit, parser assigns "auto" interconnect: { group: } # explicit named group Bare boolean `interconnect: true` is retired; every opt-in now carries a group label (a 1-member group is fine — anti-affinity becomes a no-op). The on-chain wire format collapses to a single key `interconnect/group = ` (slash-path matching the existing `capabilities/gpu-interconnect/...` convention); the standalone `interconnect = "true"` marker is dropped. Also generalizes `nccl_hca_prefix: string` to `nccl_hca_prefixes: repeated string` so mixed-vendor hosts (e.g. mlx5 + bnxt_re on one node) can publish every HCA family; the workload builder joins with commas for NCCL_IB_HCA which NCCL accepts natively. Validator rules (Go + TS): 1. Any opt-in requires placement attribute capabilities/gpu-interconnect=true. 2. The name "auto" is reserved (parser only). 3. Within one placement, no mixing of implicit and explicit forms. 4. gpu.units==0 with any opt-in rejected (schema-level). Spec: docs/sdl-interconnect-spec.md. Breaking change vs rc4 — acceptable, no production tenants yet. Cuts go/v0.2.13-rc5 + go/sdl/v0.2.2-rc5. Linear: AKT-492 --- docs/proto/provider.md | 7 + docs/swagger-ui/swagger.yaml | 79887 ++++++++-------- go/inventory/v1/node.go | 3 +- go/inventory/v1/node.pb.go | 112 +- go/inventory/v1/node_test.go | 8 +- go/sdl/gpu.go | 140 +- go/sdl/interconnect_gpu_test.go | 207 +- go/sdl/interconnect_validation_test.go | 89 +- go/sdl/sdl-input.schema.yaml | 35 +- go/sdl/v2.go | 145 +- go/sdl/v2_1.go | 6 +- proto/provider/akash/inventory/v1/node.proto | 23 +- .../v2.0/gpu-interconnect-group/input.yaml | 12 +- .../gpu-interconnect-group/group-specs.json | 12 +- .../v2.0/gpu-interconnect-group/manifest.json | 12 +- .../protos/akash/inventory/v1/node.ts | 30 +- ts/src/sdl/manifest/generateManifest.ts | 13 +- ts/src/sdl/manifest/manifestUtils.ts | 41 +- ts/src/sdl/validateSDL/validateSDL.spec.ts | 68 +- ts/src/sdl/validateSDL/validateSDL.ts | 97 +- ts/src/sdl/validateSDL/validateSDLInput.ts | 1530 +- 21 files changed, 39547 insertions(+), 42930 deletions(-) diff --git a/docs/proto/provider.md b/docs/proto/provider.md index 01c448bb..c381eda4 100644 --- a/docs/proto/provider.md +++ b/docs/proto/provider.md @@ -299,6 +299,7 @@ | `ephemeral_storage` | [ResourcePair](#akash.inventory.v1.ResourcePair) | | | | `volumes_attached` | [ResourcePair](#akash.inventory.v1.ResourcePair) | | | | `volumes_mounted` | [ResourcePair](#akash.inventory.v1.ResourcePair) | | | + | `gpu_interconnect` | [ResourcePair](#akash.inventory.v1.ResourcePair) | | GPUInterconnect reports node GPU-interconnect HCA capacity. Capacity/Allocatable/Allocated are populated by the inventory operator from k8s allocatable for whichever rdma/rdma_shared_device_* extended resource the cluster's device plugin publishes (the `rdma/*` prefix is the device plugin's naming convention; see NodeCapabilities.interconnect_resource_name). | @@ -347,6 +348,9 @@ | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `storage_classes` | [string](#string) | repeated | | + | `interconnect_resource_name` | [string](#string) | | Kubernetes extended-resource name the cluster's device plugin publishes for GPU interconnect HCAs (e.g. rdma/rdma_shared_device_ib for an InfiniBand fabric, rdma/rdma_shared_device_eth for RoCE). The `rdma/*` prefix is the device-plugin's own convention (Mellanox/NVIDIA) and stays unchanged here. Empty when the node has no GPU interconnect capability. Discovered by the inventory operator from k8s allocatable. | + | `interconnect_fabric` | [string](#string) | | GPU interconnect fabric type. "infiniband" or "roce". Internal / informational — the SDL surface is fabric-agnostic; tenants only declare `interconnect: []` or `interconnect: { group: }`. Derived from /sys/class/infiniband//ports/1/link_layer on the host node. | + | `nccl_hca_prefixes` | [string](#string) | repeated | NCCL HCA device-name prefixes present on this node, one per distinct family (e.g. ["mlx5"], or ["mlx5","bnxt_re"] on a mixed-vendor host). Same key for IB and RoCE since NCCL uses the IB verbs API for both. Joined with commas and injected as NCCL_IB_HCA when scheduling GPU interconnect workloads — NCCL accepts comma-separated device prefixes natively. Discovered from /sys/class/infiniband/ on the host. | @@ -598,6 +602,9 @@ | `expose` | [ServiceExpose](#akash.manifest.v2beta3.ServiceExpose) | repeated | | | `params` | [ServiceParams](#akash.manifest.v2beta3.ServiceParams) | | | | `credentials` | [ImageCredentials](#akash.manifest.v2beta3.ImageCredentials) | | | + | `interconnect_group` | [string](#string) | | InterconnectGroup carries the SDL gpu.attributes.interconnect_group peer-group label. Lifted from Resources.GPU.Attributes by the manifest builder so the off-chain workload builder can label pods for per-group anti-affinity. Services sharing the same value form one NCCL peer group; the provider schedules them on distinct nodes. Empty when the service is not part of any GPU interconnect group. + +JSON / YAML tags carry `omitempty`: the on-chain manifest `version` is a SHA hash of the JSON-serialized off-chain manifest, so any field that always serializes (even at zero value) would shift the hash for every non-interconnect SDL and break send-manifest validation on existing leases. | diff --git a/docs/swagger-ui/swagger.yaml b/docs/swagger-ui/swagger.yaml index ecea1b22..38a24693 100644 --- a/docs/swagger-ui/swagger.yaml +++ b/docs/swagger-ui/swagger.yaml @@ -6783,7 +6783,6 @@ paths: /cosmos/auth/v1beta1/account_info/{address}: get: summary: AccountInfo queries account info which is common to all account types. - description: 'Since: cosmos-sdk 0.47' operationId: AccountInfo responses: '200': @@ -6797,10 +6796,10 @@ paths: properties: address: type: string - pub_key: + pubKey: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -6851,19 +6850,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -6901,7 +6898,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -6911,7 +6908,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -6941,6 +6938,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -6977,23 +6975,18 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - account_number: + accountNumber: type: string format: uint64 sequence: type: string format: uint64 - description: |- - QueryAccountInfoResponse is the Query/AccountInfo response type. - - Since: cosmos-sdk 0.47 + description: QueryAccountInfoResponse is the Query/AccountInfo response type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -7004,7 +6997,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -7055,19 +7048,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -7105,7 +7096,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -7115,7 +7106,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -7145,6 +7136,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -7197,9 +7189,6 @@ paths: of gas if the pagination field is incorrectly set. - - - Since: cosmos-sdk 0.43 operationId: Accounts responses: '200': @@ -7212,7 +7201,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -7263,19 +7252,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -7313,7 +7300,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -7323,7 +7310,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -7353,6 +7340,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -7394,7 +7382,7 @@ paths: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -7412,16 +7400,11 @@ paths: description: >- QueryAccountsResponse is the response type for the Query/Accounts RPC method. - - - Since: cosmos-sdk 0.43 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -7432,7 +7415,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -7483,19 +7466,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -7533,7 +7514,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -7543,7 +7524,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -7573,6 +7554,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -7641,7 +7623,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -7660,9 +7642,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -7681,7 +7660,7 @@ paths: account: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -7731,19 +7710,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -7781,7 +7758,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -7791,7 +7768,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -7821,6 +7798,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -7862,8 +7840,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -7874,7 +7850,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -7925,238 +7901,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. + type.googleapis.com. As of May 2023, there are no widely + used type server - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: address defines the address to query for. - in: path - required: true - type: string - tags: - - Query - /cosmos/auth/v1beta1/address_by_id/{id}: - get: - summary: AccountAddressByID returns account address based on account number. - description: 'Since: cosmos-sdk 0.46.2' - operationId: AccountAddressByID - responses: - '200': - description: A successful response. - schema: - type: object - properties: - account_address: - type: string - description: 'Since: cosmos-sdk 0.46.2' - title: >- - QueryAccountAddressByIDResponse is the response type for - AccountAddressByID rpc method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -8194,7 +7949,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -8204,7 +7959,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -8234,6 +7989,221 @@ paths: JSON + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: address + description: address defines the address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/auth/v1beta1/address_by_id/{id}: + get: + summary: AccountAddressByID returns account address based on account number. + operationId: AccountAddressByID + responses: + '200': + description: A successful response. + schema: + type: object + properties: + accountAddress: + type: string + title: >- + QueryAccountAddressByIDResponse is the response type for + AccountAddressByID rpc method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== The JSON representation of an `Any` value uses the regular @@ -8282,11 +8252,8 @@ paths: required: true type: string format: int64 - - name: account_id - description: |- - account_id is the account number of the address to be queried. - - Since: cosmos-sdk 0.47 + - name: accountId + description: account_id is the account number of the address to be queried. in: query required: false type: string @@ -8296,7 +8263,6 @@ paths: /cosmos/auth/v1beta1/bech32: get: summary: Bech32Prefix queries bech32Prefix - description: 'Since: cosmos-sdk 0.46' operationId: Bech32Prefix responses: '200': @@ -8304,21 +8270,16 @@ paths: schema: type: object properties: - bech32_prefix: + bech32Prefix: type: string description: >- Bech32PrefixResponse is the response type for Bech32Prefix rpc method. - - - Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -8329,7 +8290,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -8380,19 +8341,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -8430,7 +8389,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -8440,7 +8399,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -8470,6 +8429,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -8508,10 +8468,9 @@ paths: } tags: - Query - /cosmos/auth/v1beta1/bech32/{address_bytes}: + /cosmos/auth/v1beta1/bech32/{addressBytes}: get: summary: AddressBytesToString converts Account Address bytes to string - description: 'Since: cosmos-sdk 0.46' operationId: AddressBytesToString responses: '200': @@ -8519,21 +8478,16 @@ paths: schema: type: object properties: - address_string: + addressString: type: string description: >- AddressBytesToStringResponse is the response type for AddressString rpc method. - - - Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -8544,7 +8498,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -8595,19 +8549,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -8645,7 +8597,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -8655,7 +8607,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -8685,6 +8637,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -8722,17 +8675,16 @@ paths: "value": "1.212s" } parameters: - - name: address_bytes + - name: addressBytes in: path required: true type: string format: byte tags: - Query - /cosmos/auth/v1beta1/bech32/{address_string}: + /cosmos/auth/v1beta1/bech32/{addressString}: get: summary: AddressStringToBytes converts Address string to bytes - description: 'Since: cosmos-sdk 0.46' operationId: AddressStringToBytes responses: '200': @@ -8740,22 +8692,17 @@ paths: schema: type: object properties: - address_bytes: + addressBytes: type: string format: byte description: >- AddressStringToBytesResponse is the response type for AddressBytes rpc method. - - - Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -8766,7 +8713,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -8817,19 +8764,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -8867,7 +8812,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -8877,7 +8822,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -8907,6 +8852,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -8944,7 +8890,7 @@ paths: "value": "1.212s" } parameters: - - name: address_string + - name: addressString in: path required: true type: string @@ -8953,7 +8899,6 @@ paths: /cosmos/auth/v1beta1/module_accounts: get: summary: ModuleAccounts returns all the existing module accounts. - description: 'Since: cosmos-sdk 0.46' operationId: ModuleAccounts responses: '200': @@ -8966,7 +8911,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -9017,19 +8962,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -9067,7 +9010,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -9077,7 +9020,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -9107,6 +9050,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -9146,16 +9090,11 @@ paths: description: >- QueryModuleAccountsResponse is the response type for the Query/ModuleAccounts RPC method. - - - Since: cosmos-sdk 0.46 default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -9166,7 +9105,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -9217,19 +9156,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -9267,7 +9204,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -9277,7 +9214,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -9307,6 +9244,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -9358,7 +9296,7 @@ paths: account: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -9408,19 +9346,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -9458,7 +9394,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -9468,7 +9404,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -9498,6 +9434,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -9539,8 +9476,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -9551,7 +9486,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -9602,19 +9537,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -9652,7 +9585,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -9662,7 +9595,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -9692,6 +9625,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -9749,19 +9683,19 @@ paths: description: params defines the parameters of the module. type: object properties: - max_memo_characters: + maxMemoCharacters: type: string format: uint64 - tx_sig_limit: + txSigLimit: type: string format: uint64 - tx_size_cost_per_byte: + txSizeCostPerByte: type: string format: uint64 - sig_verify_cost_ed25519: + sigVerifyCostEd25519: type: string format: uint64 - sig_verify_cost_secp256k1: + sigVerifyCostSecp256k1: type: string format: uint64 description: >- @@ -9772,8 +9706,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -9784,7 +9716,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -9835,19 +9767,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -9885,7 +9815,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -9895,7 +9825,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -9925,6 +9855,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -9963,44 +9894,224 @@ paths: } tags: - Query - /cosmos/bank/v1beta1/balances/{address}: + /cosmos/authz/v1beta1/grants: get: - summary: AllBalances queries the balance of all coins for a single account. - description: >- - When called from another module, this query might consume a high amount - of - - gas if the pagination field is incorrectly set. - operationId: AllBalances + summary: Returns list of `Authorization`, granted to the grantee by the granter. + operationId: Grants responses: '200': description: A successful response. schema: type: object properties: - balances: + grants: type: array items: type: object properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + one "/" character. The last segment of the URL's + path must represent - NOTE: The amount field is an Int which implements the custom - method + the fully qualified name of the type (as in - signatures required by gogoproto. - description: balances is the balances of all the coins. + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + time when the grant will expire and will be pruned. If + null, then the grant + + doesn't have a time expiration (other conditions in + `authorization` + + may apply to invalidate the grant) + description: |- + Grant gives permissions to execute + the provide method with expiration time. + description: >- + authorizations is a list of grants granted for grantee by + granter. pagination: - description: pagination defines the pagination in the response. + description: pagination defines an pagination for the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -10016,17 +10127,13 @@ paths: was set, its value is undefined otherwise description: >- - QueryAllBalancesResponse is the response type for the - Query/AllBalances RPC - - method. + QueryGrantsResponse is the response type for the + Query/Authorizations RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -10037,16 +10144,197 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } parameters: - - name: address - description: address is the address to query balances for. - in: path - required: true + - name: granter + in: query + required: false + type: string + - name: grantee + in: query + required: false + type: string + - name: msgTypeUrl + description: >- + Optional, msg_type_url, when set, will query only grants matching + given msg type. + in: query + required: false type: string - name: pagination.key description: |- @@ -10079,7 +10367,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -10098,150 +10386,225 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - - name: resolve_denom - description: >- - resolve_denom is the flag to resolve the denom into a human-readable - form from the metadata. - - - Since: cosmos-sdk 0.50 in: query required: false type: boolean tags: - Query - /cosmos/bank/v1beta1/balances/{address}/by_denom: + /cosmos/authz/v1beta1/grants/grantee/{grantee}: get: - summary: Balance queries the balance of a single coin for a single account. - operationId: Balance + summary: GranteeGrants returns a list of `GrantAuthorization` by grantee. + operationId: GranteeGrants responses: '200': description: A successful response. schema: type: object properties: - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - QueryBalanceResponse is the response type for the Query/Balance - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + grants: type: array items: type: object properties: - type_url: + granter: type: string - value: + grantee: type: string - format: byte - parameters: - - name: address - description: address is the address to query balances for. - in: path - required: true - type: string - - name: denom - description: denom is the coin denom to query balances for. - in: query - required: false - type: string - tags: - - Query - /cosmos/bank/v1beta1/denom_owners/{denom}: - get: - summary: >- - DenomOwners queries for all account addresses that own a particular - token + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - denomination. - description: >- - When called from another module, this query might consume a high amount - of + protocol buffer message. This string must contain at + least - gas if the pagination field is incorrectly set. + one "/" character. The last segment of the URL's + path must represent + the fully qualified name of the type (as in - Since: cosmos-sdk 0.46 - operationId: DenomOwners - responses: - '200': - description: A successful response. - schema: - type: object - properties: - denom_owners: - type: array - items: - type: object - properties: - address: - type: string - description: >- - address defines the address that owns a particular - denomination. - balance: - type: object - properties: - denom: - type: string - amount: - type: string + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} description: >- - Coin defines a token with a denomination and an amount. + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - NOTE: The amount field is an Int which implements the - custom method - signatures required by gogoproto. - description: >- - DenomOwner defines structure representing an account that - owns or holds a + Protobuf library provides support to pack/unpack Any + values in the form - particular denominated token. It contains the account - address and account + of utility functions or additional generated methods of + the Any type. - balance of the denominated token. + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses + of the grantee and granter. - Since: cosmos-sdk 0.46 + It is used in genesis.proto and query.proto + description: grants is a list of grants granted to the grantee. pagination: - description: pagination defines the pagination in the response. + description: pagination defines an pagination for the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -10257,18 +10620,13 @@ paths: was set, its value is undefined otherwise description: >- - QueryDenomOwnersResponse defines the RPC response of a DenomOwners - RPC query. - - - Since: cosmos-sdk 0.46 + QueryGranteeGrantsResponse is the response type for the + Query/GranteeGrants RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -10279,16 +10637,184 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } parameters: - - name: denom - description: >- - denom defines the coin denomination to query all account holders - for. + - name: grantee in: path required: true type: string @@ -10323,7 +10849,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -10342,141 +10868,459 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/bank/v1beta1/denom_owners_by_query: + /cosmos/authz/v1beta1/grants/granter/{granter}: get: - summary: >- - DenomOwnersByQuery queries for all account addresses that own a - particular token - - denomination. - description: 'Since: cosmos-sdk 0.50.3' - operationId: DenomOwnersByQuery + summary: GranterGrants returns list of `GrantAuthorization`, granted by granter. + operationId: GranterGrants responses: '200': description: A successful response. schema: type: object properties: - denom_owners: + grants: type: array items: type: object properties: - address: + granter: type: string - description: >- - address defines the address that owns a particular - denomination. - balance: + grantee: + type: string + authorization: type: object properties: - denom: - type: string - amount: + '@type': type: string - description: >- - Coin defines a token with a denomination and an amount. + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + protocol buffer message. This string must contain at + least - NOTE: The amount field is an Int which implements the - custom method + one "/" character. The last segment of the URL's + path must represent - signatures required by gogoproto. - description: >- - DenomOwner defines structure representing an account that - owns or holds a + the fully qualified name of the type (as in - particular denominated token. It contains the account - address and account + `path/google.protobuf.Duration`). The name should be + in a canonical form - balance of the denominated token. + (e.g., leading "." is not accepted). - Since: cosmos-sdk 0.46 - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + In practice, teams usually precompile into the + binary all types that they - was set, its value is undefined otherwise - description: >- - QueryDenomOwnersByQueryResponse defines the RPC response of a - DenomOwnersByQuery RPC query. + expect it to use in the context of Any. However, for + URLs which use the + scheme `http`, `https`, or no scheme, one can + optionally set up a type - Since: cosmos-sdk 0.50.3 - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: denom - description: >- - denom defines the coin denomination to query all account holders - for. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. + server that maps type URLs to message definitions as + follows: - It is less efficient than using key. Only one of offset or key - should - be set. - in: query - required: false - type: string - format: uint64 + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses + of the grantee and granter. + + It is used in genesis.proto and query.proto + description: grants is a list of grants granted by the granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGranterGrantsResponse is the response type for the + Query/GranterGrants RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: granter + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 - name: pagination.limit description: >- limit is the total number of results to be returned in the result @@ -10487,7 +11331,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -10506,125 +11350,49 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/bank/v1beta1/denoms_metadata: + /cosmos/bank/v1beta1/balances/{address}: get: - summary: |- - DenomsMetadata queries the client metadata for all registered coin - denominations. - operationId: DenomsMetadata + summary: AllBalances queries the balance of all coins for a single account. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: AllBalances responses: '200': description: A successful response. schema: type: object properties: - metadatas: + balances: type: array items: type: object properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given - denom unit (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one - must - - raise the base_denom to in order to equal the - given DenomUnit's denom - - 1 denom = 10^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a - DenomUnit of 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: >- - aliases is a list of string aliases for the given - denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: >- - denom_units represents the list of DenomUnit's for a - given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit - with exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges - (eg: ATOM). This can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - uri: + denom: type: string - description: >- - URI to a document (on or off-chain) that contains - additional information. Optional. - - - Since: cosmos-sdk 0.46 - uri_hash: + amount: type: string - description: >- - URIHash is a sha256 hash of a document pointed by URI. - It's used to verify that + description: >- + Coin defines a token with a denomination and an amount. - the document didn't change. Optional. + NOTE: The amount field is an Int which implements the custom + method - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - metadata provides the client information for all the - registered tokens. + signatures required by gogoproto. + description: balances is the balances of all the coins. pagination: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -10640,8 +11408,8 @@ paths: was set, its value is undefined otherwise description: >- - QueryDenomsMetadataResponse is the response type for the - Query/DenomsMetadata RPC + QueryAllBalancesResponse is the response type for the + Query/AllBalances RPC method. default: @@ -10649,8 +11417,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -10661,12 +11427,15 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: + - name: address + description: address is the address to query balances for. + in: path + required: true + type: string - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -10698,7 +11467,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -10717,125 +11486,44 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + - name: resolveDenom + description: >- + resolve_denom is the flag to resolve the denom into a human-readable + form from the metadata. in: query required: false type: boolean tags: - Query - /cosmos/bank/v1beta1/denoms_metadata/{denom}: + /cosmos/bank/v1beta1/balances/{address}/by_denom: get: - summary: DenomMetadata queries the client metadata of a given coin denomination. - operationId: DenomMetadata + summary: Balance queries the balance of a single coin for a single account. + operationId: Balance responses: '200': description: A successful response. schema: type: object properties: - metadata: + balance: + description: balance is the balance of the coin. type: object properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom - unit (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one - must - - raise the base_denom to in order to equal the given - DenomUnit's denom - - 1 denom = 10^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a - DenomUnit of 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: >- - aliases is a list of string aliases for the given - denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: >- - denom_units represents the list of DenomUnit's for a given - coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit - with exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: - ATOM). This can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - uri: + denom: type: string - description: >- - URI to a document (on or off-chain) that contains - additional information. Optional. - - - Since: cosmos-sdk 0.46 - uri_hash: + amount: type: string - description: >- - URIHash is a sha256 hash of a document pointed by URI. - It's used to verify that - - the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. description: >- - QueryDenomMetadataResponse is the response type for the - Query/DenomMetadata RPC - - method. + QueryBalanceResponse is the response type for the Query/Balance + RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -10846,269 +11534,74 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - - name: denom - description: denom is the coin denom to query the metadata for. + - name: address + description: address is the address to query balances for. in: path required: true type: string - tags: - - Query - /cosmos/bank/v1beta1/denoms_metadata_by_query_string: - get: - summary: >- - DenomMetadataByQueryString queries the client metadata of a given coin - denomination. - operationId: DenomMetadataByQueryString - responses: - '200': - description: A successful response. - schema: - type: object - properties: - metadata: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom - unit (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one - must - - raise the base_denom to in order to equal the given - DenomUnit's denom - - 1 denom = 10^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a - DenomUnit of 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: >- - aliases is a list of string aliases for the given - denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: >- - denom_units represents the list of DenomUnit's for a given - coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit - with exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: - ATOM). This can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - uri: - type: string - description: >- - URI to a document (on or off-chain) that contains - additional information. Optional. - - - Since: cosmos-sdk 0.46 - uri_hash: - type: string - description: >- - URIHash is a sha256 hash of a document pointed by URI. - It's used to verify that - - the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - QueryDenomMetadataByQueryStringResponse is the response type for - the Query/DenomMetadata RPC - - method. Identical with QueryDenomMetadataResponse but receives - denom as query string in request. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - name: denom - description: denom is the coin denom to query the metadata for. + description: denom is the coin denom to query balances for. in: query required: false type: string tags: - Query - /cosmos/bank/v1beta1/params: + /cosmos/bank/v1beta1/denom_owners/{denom}: get: - summary: Params queries the parameters of x/bank module. - operationId: BankParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params provides the parameters of the bank module. - type: object - properties: - send_enabled: - type: array - items: - type: object - properties: - denom: - type: string - enabled: - type: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status - (whether a denom is - - sendable). - description: >- - Deprecated: Use of SendEnabled in params is deprecated. - - For genesis, use the newly added send_enabled field in the - genesis object. - - Storage, lookup, and manipulation of this information is - now in the keeper. - + summary: >- + DenomOwners queries for all account addresses that own a particular + token - As of cosmos-sdk 0.47, this only exists for backwards - compatibility of genesis files. - default_send_enabled: - type: boolean - description: >- - QueryParamsResponse defines the response type for querying x/bank - parameters. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /cosmos/bank/v1beta1/send_enabled: - get: - summary: SendEnabled queries for SendEnabled entries. + denomination. description: >- - This query only returns denominations that have specific SendEnabled - settings. - - Any denomination that does not have a specific setting will use the - default - - params.default_send_enabled, and will not be returned by this query. - + When called from another module, this query might consume a high amount + of - Since: cosmos-sdk 0.47 - operationId: SendEnabled + gas if the pagination field is incorrectly set. + operationId: DenomOwners responses: '200': description: A successful response. schema: type: object properties: - send_enabled: + denomOwners: type: array items: type: object properties: - denom: + address: type: string - enabled: - type: boolean + description: >- + address defines the address that owns a particular + denomination. + balance: + description: >- + balance is the balance of the denominated coin for an + account. + type: object + properties: + denom: + type: string + amount: + type: string description: >- - SendEnabled maps coin denom to a send_enabled status - (whether a denom is + DenomOwner defines structure representing an account that + owns or holds a - sendable). - pagination: - description: >- - pagination defines the pagination in the response. This field - is only + particular denominated token. It contains the account + address and account - populated if the denoms field in the request is empty. + balance of the denominated token. + pagination: + description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -11124,18 +11617,13 @@ paths: was set, its value is undefined otherwise description: >- - QuerySendEnabledResponse defines the RPC response of a SendEnable - query. - - - Since: cosmos-sdk 0.47 + QueryDenomOwnersResponse defines the RPC response of a DenomOwners + RPC query. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -11146,22 +11634,18 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - - name: denoms + - name: denom description: >- - denoms is the specific denoms you want look up. Leave empty to get - all entries. - in: query - required: false - type: array - items: - type: string - collectionFormat: multi + denom defines the coin denomination to query all account holders + for. + in: path + required: true + type: string + pattern: .+ - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -11193,7 +11677,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -11212,59 +11696,58 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/bank/v1beta1/spendable_balances/{address}: + /cosmos/bank/v1beta1/denom_owners_by_query: get: summary: >- - SpendableBalances queries the spendable balance of all coins for a - single - - account. - description: >- - When called from another module, this query might consume a high amount - of - - gas if the pagination field is incorrectly set. - + DenomOwnersByQuery queries for all account addresses that own a + particular token - Since: cosmos-sdk 0.46 - operationId: SpendableBalances + denomination. + operationId: DenomOwnersByQuery responses: '200': description: A successful response. schema: type: object properties: - balances: + denomOwners: type: array items: type: object properties: - denom: - type: string - amount: + address: type: string + description: >- + address defines the address that owns a particular + denomination. + balance: + description: >- + balance is the balance of the denominated coin for an + account. + type: object + properties: + denom: + type: string + amount: + type: string description: >- - Coin defines a token with a denomination and an amount. - + DenomOwner defines structure representing an account that + owns or holds a - NOTE: The amount field is an Int which implements the custom - method + particular denominated token. It contains the account + address and account - signatures required by gogoproto. - description: balances is the spendable balances of all the coins. + balance of the denominated token. pagination: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -11280,20 +11763,13 @@ paths: was set, its value is undefined otherwise description: >- - QuerySpendableBalancesResponse defines the gRPC response structure - for querying - - an account's spendable balances. - - - Since: cosmos-sdk 0.46 + QueryDenomOwnersByQueryResponse defines the RPC response of a + DenomOwnersByQuery RPC query. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -11304,16 +11780,16 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - - name: address - description: address is the address to query spendable balances for. - in: path - required: true + - name: denom + description: >- + denom defines the coin denomination to query all account holders + for. + in: query + required: false type: string - name: pagination.key description: |- @@ -11346,7 +11822,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -11365,135 +11841,112 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/bank/v1beta1/spendable_balances/{address}/by_denom: + /cosmos/bank/v1beta1/denoms_metadata: get: - summary: >- - SpendableBalanceByDenom queries the spendable balance of a single denom - for - - a single account. - description: >- - When called from another module, this query might consume a high amount - of - - gas if the pagination field is incorrectly set. - - - Since: cosmos-sdk 0.47 - operationId: SpendableBalanceByDenom + summary: |- + DenomsMetadata queries the client metadata for all registered coin + denominations. + operationId: DenomsMetadata responses: '200': description: A successful response. schema: type: object properties: - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - QuerySpendableBalanceByDenomResponse defines the gRPC response - structure for - - querying an account's spendable balance for a specific denom. - - - Since: cosmos-sdk 0.47 - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + metadatas: type: array items: type: object properties: - type_url: - type: string - value: + description: type: string - format: byte - parameters: - - name: address - description: address is the address to query balances for. - in: path - required: true - type: string - - name: denom - description: denom is the coin denom to query balances for. - in: query - required: false - type: string - tags: - - Query - /cosmos/bank/v1beta1/supply: - get: - summary: TotalSupply queries the total supply of all coins. - description: >- - When called from another module, this query might consume a high amount - of + denomUnits: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given + denom unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one + must - gas if the pagination field is incorrectly set. - operationId: TotalSupply - responses: - '200': - description: A successful response. - schema: - type: object - properties: - supply: - type: array - items: - type: object - properties: - denom: + raise the base_denom to in order to equal the + given DenomUnit's denom + + 1 denom = 10^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: >- + aliases is a list of string aliases for the given + denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: >- + denom_units represents the list of DenomUnit's for a + given coin + base: type: string - amount: + description: >- + base represents the base denom (should be the DenomUnit + with exponent = 0). + display: type: string - description: >- - Coin defines a token with a denomination and an amount. - + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges + (eg: ATOM). This can - NOTE: The amount field is an Int which implements the custom - method + be the same as the display. + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains + additional information. Optional. + uriHash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. + It's used to verify that - signatures required by gogoproto. - title: supply is the supply of the coins + the document didn't change. Optional. + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + metadata provides the client information for all the + registered tokens. pagination: - description: |- - pagination defines the pagination in the response. - - Since: cosmos-sdk 0.43 + description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -11508,18 +11961,16 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - title: >- - QueryTotalSupplyResponse is the response type for the - Query/TotalSupply RPC + description: >- + QueryDenomsMetadataResponse is the response type for the + Query/DenomsMetadata RPC - method + method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -11530,11 +11981,9 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - name: pagination.key description: |- @@ -11567,7 +12016,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -11586,54 +12035,110 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/bank/v1beta1/supply/by_denom: + /cosmos/bank/v1beta1/denoms_metadata/{denom}: get: - summary: SupplyOf queries the supply of a single coin. - description: >- - When called from another module, this query might consume a high amount - of - - gas if the pagination field is incorrectly set. - operationId: SupplyOf + summary: DenomMetadata queries the client metadata of a given coin denomination. + operationId: DenomMetadata responses: '200': description: A successful response. schema: type: object properties: - amount: + metadata: + description: >- + metadata describes and provides all the client information for + the requested token. type: object properties: - denom: - type: string - amount: + description: type: string - description: >- - Coin defines a token with a denomination and an amount. + denomUnits: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom + unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one + must + raise the base_denom to in order to equal the given + DenomUnit's denom - NOTE: The amount field is an Int which implements the custom - method + 1 denom = 10^exponent base_denom - signatures required by gogoproto. + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: >- + aliases is a list of string aliases for the given + denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: >- + denom_units represents the list of DenomUnit's for a given + coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit + with exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: + ATOM). This can + + be the same as the display. + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains + additional information. Optional. + uriHash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. + It's used to verify that + + the document didn't change. Optional. description: >- - QuerySupplyOfResponse is the response type for the Query/SupplyOf - RPC method. + QueryDenomMetadataResponse is the response type for the + Query/DenomMetadata RPC + + method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -11644,108 +12149,120 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - name: denom - description: denom is the coin denom to query balances for. - in: query - required: false + description: denom is the coin denom to query the metadata for. + in: path + required: true type: string + pattern: .+ tags: - Query - /cosmos/base/tendermint/v1beta1/abci_query: + /cosmos/bank/v1beta1/denoms_metadata_by_query_string: get: summary: >- - ABCIQuery defines a query handler that supports ABCI queries directly to - the - - application, bypassing Tendermint completely. The ABCI query must - contain - - a valid and supported path, including app, custom, p2p, and store. - description: 'Since: cosmos-sdk 0.46' - operationId: ABCIQuery + DenomMetadataByQueryString queries the client metadata of a given coin + denomination. + operationId: DenomMetadataByQueryString responses: '200': description: A successful response. schema: type: object properties: - code: - type: integer - format: int64 - log: - type: string - info: - type: string - index: - type: string - format: int64 - key: - type: string - format: byte - value: - type: string - format: byte - proof_ops: + metadata: + description: >- + metadata describes and provides all the client information for + the requested token. type: object properties: - ops: + description: + type: string + denomUnits: type: array items: type: object properties: - type: - type: string - key: - type: string - format: byte - data: + denom: type: string - format: byte - description: >- - ProofOp defines an operation used for calculating Merkle - root. The data could + description: >- + denom represents the string name of the given denom + unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one + must - be arbitrary format, providing necessary data for - example neighbouring node + raise the base_denom to in order to equal the given + DenomUnit's denom - hash. + 1 denom = 10^exponent base_denom + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with - Note: This type is a duplicate of the ProofOp proto type - defined in Tendermint. - description: >- - ProofOps is Merkle proof defined by the list of ProofOps. + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: >- + aliases is a list of string aliases for the given + denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: >- + denom_units represents the list of DenomUnit's for a given + coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit + with exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: + ATOM). This can + be the same as the display. + uri: + type: string + description: >- + URI to a document (on or off-chain) that contains + additional information. Optional. + uriHash: + type: string + description: >- + URIHash is a sha256 hash of a document pointed by URI. + It's used to verify that - Note: This type is a duplicate of the ProofOps proto type - defined in Tendermint. - height: - type: string - format: int64 - codespace: - type: string + the document didn't change. Optional. description: >- - ABCIQueryResponse defines the response structure for the ABCIQuery - gRPC query. - - - Note: This type is a duplicate of the ResponseQuery proto type - defined in + QueryDenomMetadataByQueryStringResponse is the response type for + the Query/DenomMetadata RPC - Tendermint. + method. Identical with QueryDenomMetadataResponse but receives + denom as query string in request. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -11756,271 +12273,1067 @@ paths: items: type: object properties: - type_url: + '@type': type: string + additionalProperties: {} + parameters: + - name: denom + description: denom is the coin denom to query the metadata for. + in: query + required: false + type: string + tags: + - Query + /cosmos/bank/v1beta1/params: + get: + summary: Params queries the parameters of x/bank module. + operationId: BankParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params provides the parameters of the bank module. + type: object + properties: + sendEnabled: + type: array + items: + type: object + properties: + denom: + type: string + enabled: + type: boolean description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. + SendEnabled maps coin denom to a send_enabled status + (whether a denom is - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + sendable). + description: >- + Deprecated: Use of SendEnabled in params is deprecated. - Note: this functionality is not currently available in - the official + For genesis, use the newly added send_enabled field in the + genesis object. - protobuf release, and it is not used for type URLs - beginning with + Storage, lookup, and manipulation of this information is + now in the keeper. - type.googleapis.com. + As of cosmos-sdk 0.47, this only exists for backwards + compatibility of genesis files. + defaultSendEnabled: + type: boolean + description: >- + QueryParamsResponse defines the response type for querying x/bank + parameters. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + /cosmos/bank/v1beta1/send_enabled: + get: + summary: SendEnabled queries for SendEnabled entries. + description: >- + This query only returns denominations that have specific SendEnabled + settings. - Schemes other than `http`, `https` (or the empty scheme) - might be + Any denomination that does not have a specific setting will use the + default - used with implementation specific semantics. - value: + params.default_send_enabled, and will not be returned by this query. + operationId: SendEnabled + responses: + '200': + description: A successful response. + schema: + type: object + properties: + sendEnabled: + type: array + items: + type: object + properties: + denom: type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + enabled: + type: boolean description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form + SendEnabled maps coin denom to a send_enabled status + (whether a denom is - of utility functions or additional generated methods of the - Any type. + sendable). + pagination: + description: >- + pagination defines the pagination in the response. This field + is only + populated if the denoms field in the request is empty. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - Example 1: Pack and unpack a message in C++. + was set, its value is undefined otherwise + description: >- + QuerySendEnabledResponse defines the RPC response of a SendEnable + query. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + parameters: + - name: denoms + description: >- + denoms is the specific denoms you want look up. Leave empty to get + all entries. + in: query + required: false + type: array + items: + type: string + collectionFormat: multi + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + It is less efficient than using key. Only one of offset or key + should - Example 2: Pack and unpack a message in Java. + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include - Example 3: Pack and unpack a message in Python. + a count of the total number of items available for pagination in + UIs. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + count_total is only respected when offset is used. It is ignored + when key - Example 4: Pack and unpack a message in Go + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean + tags: + - Query + /cosmos/bank/v1beta1/spendable_balances/{address}: + get: + summary: >- + SpendableBalances queries the spendable balance of all coins for a + single - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + account. + description: >- + When called from another module, this query might consume a high amount + of - The pack methods provided by protobuf library will by - default use + gas if the pagination field is incorrectly set. + operationId: SpendableBalances + responses: + '200': + description: A successful response. + schema: + type: object + properties: + balances: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - methods only use the fully qualified type name after the - last '/' + NOTE: The amount field is an Int which implements the custom + method - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + signatures required by gogoproto. + description: balances is the spendable balances of all the coins. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - name "y.z". + was set, its value is undefined otherwise + description: >- + QuerySpendableBalancesResponse defines the gRPC response structure + for querying + an account's spendable balances. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + parameters: + - name: address + description: address is the address to query spendable balances for. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - JSON + It is less efficient than using key. Only one of offset or key + should + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - The JSON representation of an `Any` value uses the regular + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include - representation of the deserialized, embedded message, with - an + a count of the total number of items available for pagination in + UIs. - additional field `@type` which contains the type URL. - Example: + count_total is only respected when offset is used. It is ignored + when key - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean + tags: + - Query + /cosmos/bank/v1beta1/spendable_balances/{address}/by_denom: + get: + summary: >- + SpendableBalanceByDenom queries the spendable balance of a single denom + for - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + a single account. + description: >- + When called from another module, this query might consume a high amount + of - If the embedded message type is well-known and has a custom - JSON + gas if the pagination field is incorrectly set. + operationId: SpendableBalanceByDenom + responses: + '200': + description: A successful response. + schema: + type: object + properties: + balance: + description: balance is the balance of the coin. + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + QuerySpendableBalanceByDenomResponse defines the gRPC response + structure for - representation, that representation will be embedded adding - a field + querying an account's spendable balance for a specific denom. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + parameters: + - name: address + description: address is the address to query balances for. + in: path + required: true + type: string + - name: denom + description: denom is the coin denom to query balances for. + in: query + required: false + type: string + tags: + - Query + /cosmos/bank/v1beta1/supply: + get: + summary: TotalSupply queries the total supply of all coins. + description: >- + When called from another module, this query might consume a high amount + of - `value` which holds the custom JSON in addition to the - `@type` + gas if the pagination field is incorrectly set. + operationId: TotalSupply + responses: + '200': + description: A successful response. + schema: + type: object + properties: + supply: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: supply is the supply of the coins + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: >- + QueryTotalSupplyResponse is the response type for the + Query/TotalSupply RPC + + method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} parameters: - - name: data + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. in: query required: false type: string format: byte - - name: path + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. in: query required: false type: string - - name: height + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. in: query required: false type: string - format: int64 - - name: prove + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. in: query required: false type: boolean tags: - - Service - /cosmos/base/tendermint/v1beta1/blocks/latest: + - Query + /cosmos/bank/v1beta1/supply/by_denom: get: - summary: GetLatestBlock returns the latest block. - operationId: GetLatestBlock + summary: SupplyOf queries the supply of a single coin. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: SupplyOf responses: '200': description: A successful response. schema: type: object properties: - block_id: + amount: + description: amount is the supply of the coin. type: object properties: - hash: + denom: type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - title: 'Deprecated: please use `sdk_block` instead' - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, - - including all blockchain data structures and the rules - of the application's - - state transition machine. - chain_id: - type: string + amount: + type: string + description: >- + QuerySupplyOfResponse is the response type for the Query/SupplyOf + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + parameters: + - name: denom + description: denom is the coin denom to query balances for. + in: query + required: false + type: string + tags: + - Query + /cosmos/base/node/v1beta1/config: + get: + summary: Config queries for the operator configuration. + operationId: Config + responses: + '200': + description: A successful response. + schema: + type: object + properties: + minimumGasPrice: + type: string + pruningKeepRecent: + type: string + pruningInterval: + type: string + haltHeight: + type: string + format: uint64 + description: >- + ConfigResponse defines the response structure for the Config gRPC + query. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Service + /cosmos/base/node/v1beta1/status: + get: + summary: Status queries for the node status. + operationId: Status + responses: + '200': + description: A successful response. + schema: + type: object + properties: + earliestStoreHeight: + type: string + format: uint64 + title: earliest block height available in the store + height: + type: string + format: uint64 + title: current block height + timestamp: + type: string + format: date-time + title: block height timestamp + appHash: + type: string + format: byte + title: app hash of the current block + validatorHash: + type: string + format: byte + title: validator hash provided by the consensus header + description: >- + StateResponse defines the response structure for the status of a + node. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Service + /cosmos/base/tendermint/v1beta1/abci_query: + get: + summary: >- + ABCIQuery defines a query handler that supports ABCI queries directly to + the + + application, bypassing Tendermint completely. The ABCI query must + contain + + a valid and supported path, including app, custom, p2p, and store. + operationId: ABCIQuery + responses: + '200': + description: A successful response. + schema: + type: object + properties: + code: + type: integer + format: int64 + log: + type: string + title: nondeterministic + info: + type: string + title: nondeterministic + index: + type: string + format: int64 + key: + type: string + format: byte + value: + type: string + format: byte + proofOps: + type: object + properties: + ops: + type: array + items: + type: object + properties: + type: + type: string + key: + type: string + format: byte + data: + type: string + format: byte + description: >- + ProofOp defines an operation used for calculating Merkle + root. The data could + + be arbitrary format, providing necessary data for + example neighbouring node + + hash. + + + Note: This type is a duplicate of the ProofOp proto type + defined in Tendermint. + description: >- + ProofOps is Merkle proof defined by the list of ProofOps. + + + Note: This type is a duplicate of the ProofOps proto type + defined in Tendermint. + height: + type: string + format: int64 + codespace: + type: string + description: >- + ABCIQueryResponse defines the response structure for the ABCIQuery + gRPC query. + + + Note: This type is a duplicate of the ResponseQuery proto type + defined in + + Tendermint. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: data + in: query + required: false + type: string + format: byte + - name: path + in: query + required: false + type: string + - name: height + in: query + required: false + type: string + format: int64 + - name: prove + in: query + required: false + type: boolean + tags: + - Service + /cosmos/base/tendermint/v1beta1/blocks/latest: + get: + summary: GetLatestBlock returns the latest block. + operationId: GetLatestBlock + responses: + '200': + description: A successful response. + schema: + type: object + properties: + blockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + title: 'Deprecated: please use `sdk_block` instead' + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, + + including all blockchain data structures and the rules + of the application's + + state transition machine. + chainId: + type: string height: type: string format: int64 time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -12031,36 +13344,47 @@ paths: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs from the + previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. data: type: object @@ -12089,10 +13413,10 @@ paths: items: type: object properties: - duplicate_vote_evidence: + duplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -12115,13 +13439,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -12132,13 +13456,14 @@ paths: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -12157,7 +13482,7 @@ paths: application. Only valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -12172,7 +13497,7 @@ paths: from validators for consensus. - vote_b: + voteB: type: object properties: type: @@ -12195,13 +13520,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -12212,13 +13537,14 @@ paths: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -12237,7 +13563,7 @@ paths: application. Only valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -12252,10 +13578,10 @@ paths: from validators for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -12264,13 +13590,13 @@ paths: description: >- DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. - light_client_attack_evidence: + lightClientAttackEvidence: type: object properties: - conflicting_block: + conflictingBlock: type: object properties: - signed_header: + signedHeader: type: object properties: header: @@ -12295,7 +13621,7 @@ paths: and the rules of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -12303,13 +13629,13 @@ paths: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -12320,38 +13646,51 @@ paths: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs + from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -12364,13 +13703,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -12386,7 +13725,7 @@ paths: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -12394,10 +13733,16 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -12413,7 +13758,7 @@ paths: Commit contains the evidence that a block was committed by a set of validators. - validator_set: + validatorSet: type: object properties: validators: @@ -12424,7 +13769,7 @@ paths: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -12436,10 +13781,10 @@ paths: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 proposer: @@ -12448,7 +13793,7 @@ paths: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -12460,19 +13805,19 @@ paths: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 - common_height: + commonHeight: type: string format: int64 - byzantine_validators: + byzantineValidators: type: array items: type: object @@ -12480,7 +13825,7 @@ paths: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -12492,13 +13837,13 @@ paths: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 timestamp: @@ -12508,7 +13853,7 @@ paths: LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. - last_commit: + lastCommit: type: object properties: height: @@ -12517,13 +13862,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -12539,7 +13884,7 @@ paths: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -12547,10 +13892,16 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error + condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -12565,8 +13916,7 @@ paths: description: >- Commit contains the evidence that a block was committed by a set of validators. - sdk_block: - title: 'Since: cosmos-sdk 0.47' + sdkBlock: type: object properties: header: @@ -12590,7 +13940,7 @@ paths: of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -12598,13 +13948,13 @@ paths: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -12615,34 +13965,44 @@ paths: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs from the + previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string description: >- proposer_address is the original block proposer @@ -12652,6 +14012,9 @@ paths: we convert it to a Bech32 string for better UX. + + + original proposer of the block description: Header defines the structure of a Tendermint block header. data: type: object @@ -12680,10 +14043,10 @@ paths: items: type: object properties: - duplicate_vote_evidence: + duplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -12706,13 +14069,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -12723,13 +14086,14 @@ paths: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -12748,7 +14112,7 @@ paths: application. Only valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -12763,7 +14127,7 @@ paths: from validators for consensus. - vote_b: + voteB: type: object properties: type: @@ -12786,13 +14150,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -12803,13 +14167,14 @@ paths: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -12828,7 +14193,7 @@ paths: application. Only valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -12843,10 +14208,10 @@ paths: from validators for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -12855,13 +14220,13 @@ paths: description: >- DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. - light_client_attack_evidence: + lightClientAttackEvidence: type: object properties: - conflicting_block: + conflictingBlock: type: object properties: - signed_header: + signedHeader: type: object properties: header: @@ -12886,7 +14251,7 @@ paths: and the rules of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -12894,13 +14259,13 @@ paths: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -12911,38 +14276,51 @@ paths: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs + from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -12955,13 +14333,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -12977,7 +14355,7 @@ paths: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -12985,10 +14363,16 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -13004,7 +14388,7 @@ paths: Commit contains the evidence that a block was committed by a set of validators. - validator_set: + validatorSet: type: object properties: validators: @@ -13015,7 +14399,7 @@ paths: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -13027,10 +14411,10 @@ paths: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 proposer: @@ -13039,7 +14423,7 @@ paths: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -13051,19 +14435,19 @@ paths: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 - common_height: + commonHeight: type: string format: int64 - byzantine_validators: + byzantineValidators: type: array items: type: object @@ -13071,7 +14455,7 @@ paths: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -13083,13 +14467,13 @@ paths: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 timestamp: @@ -13099,7 +14483,7 @@ paths: LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. - last_commit: + lastCommit: type: object properties: height: @@ -13108,13 +14492,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -13130,7 +14514,7 @@ paths: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -13138,10 +14522,16 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error + condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -13169,8 +14559,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -13181,7 +14569,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -13232,19 +14620,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -13282,7 +14668,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -13292,7 +14678,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -13322,6 +14708,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -13370,13 +14757,13 @@ paths: schema: type: object properties: - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -13412,7 +14799,7 @@ paths: of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -13420,13 +14807,13 @@ paths: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -13437,36 +14824,47 @@ paths: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs from the + previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. data: type: object @@ -13495,10 +14893,10 @@ paths: items: type: object properties: - duplicate_vote_evidence: + duplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -13521,13 +14919,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -13538,13 +14936,14 @@ paths: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -13563,7 +14962,7 @@ paths: application. Only valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -13578,7 +14977,7 @@ paths: from validators for consensus. - vote_b: + voteB: type: object properties: type: @@ -13601,13 +15000,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -13618,13 +15017,14 @@ paths: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -13643,7 +15043,7 @@ paths: application. Only valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -13658,10 +15058,10 @@ paths: from validators for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -13670,13 +15070,13 @@ paths: description: >- DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. - light_client_attack_evidence: + lightClientAttackEvidence: type: object properties: - conflicting_block: + conflictingBlock: type: object properties: - signed_header: + signedHeader: type: object properties: header: @@ -13701,7 +15101,7 @@ paths: and the rules of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -13709,13 +15109,13 @@ paths: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -13726,38 +15126,51 @@ paths: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs + from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -13770,13 +15183,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -13792,7 +15205,7 @@ paths: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -13800,10 +15213,16 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -13819,7 +15238,7 @@ paths: Commit contains the evidence that a block was committed by a set of validators. - validator_set: + validatorSet: type: object properties: validators: @@ -13830,7 +15249,7 @@ paths: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -13842,10 +15261,10 @@ paths: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 proposer: @@ -13854,7 +15273,7 @@ paths: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -13866,19 +15285,19 @@ paths: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 - common_height: + commonHeight: type: string format: int64 - byzantine_validators: + byzantineValidators: type: array items: type: object @@ -13886,7 +15305,7 @@ paths: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -13898,13 +15317,13 @@ paths: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 timestamp: @@ -13914,7 +15333,7 @@ paths: LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. - last_commit: + lastCommit: type: object properties: height: @@ -13923,13 +15342,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -13945,7 +15364,7 @@ paths: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -13953,10 +15372,16 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error + condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -13971,8 +15396,7 @@ paths: description: >- Commit contains the evidence that a block was committed by a set of validators. - sdk_block: - title: 'Since: cosmos-sdk 0.47' + sdkBlock: type: object properties: header: @@ -13996,7 +15420,7 @@ paths: of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -14004,13 +15428,13 @@ paths: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -14021,34 +15445,44 @@ paths: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs from the + previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string description: >- proposer_address is the original block proposer @@ -14058,6 +15492,9 @@ paths: we convert it to a Bech32 string for better UX. + + + original proposer of the block description: Header defines the structure of a Tendermint block header. data: type: object @@ -14086,10 +15523,10 @@ paths: items: type: object properties: - duplicate_vote_evidence: + duplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -14112,13 +15549,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -14129,13 +15566,14 @@ paths: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -14154,7 +15592,7 @@ paths: application. Only valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -14169,7 +15607,7 @@ paths: from validators for consensus. - vote_b: + voteB: type: object properties: type: @@ -14192,13 +15630,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -14209,13 +15647,14 @@ paths: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -14234,7 +15673,7 @@ paths: application. Only valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -14249,10 +15688,10 @@ paths: from validators for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -14261,13 +15700,13 @@ paths: description: >- DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. - light_client_attack_evidence: + lightClientAttackEvidence: type: object properties: - conflicting_block: + conflictingBlock: type: object properties: - signed_header: + signedHeader: type: object properties: header: @@ -14292,7 +15731,7 @@ paths: and the rules of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -14300,13 +15739,13 @@ paths: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -14317,38 +15756,51 @@ paths: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs + from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -14361,13 +15813,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -14383,7 +15835,7 @@ paths: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -14391,10 +15843,16 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -14410,7 +15868,7 @@ paths: Commit contains the evidence that a block was committed by a set of validators. - validator_set: + validatorSet: type: object properties: validators: @@ -14421,7 +15879,7 @@ paths: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -14433,10 +15891,10 @@ paths: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 proposer: @@ -14445,7 +15903,7 @@ paths: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -14457,19 +15915,19 @@ paths: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 - common_height: + commonHeight: type: string format: int64 - byzantine_validators: + byzantineValidators: type: array items: type: object @@ -14477,7 +15935,7 @@ paths: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -14489,13 +15947,13 @@ paths: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 timestamp: @@ -14505,7 +15963,7 @@ paths: LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. - last_commit: + lastCommit: type: object properties: height: @@ -14514,13 +15972,13 @@ paths: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -14536,7 +15994,7 @@ paths: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -14544,10 +16002,16 @@ paths: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error + condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -14575,8 +16039,286 @@ paths: schema: type: object properties: - error: + code: + type: integer + format: int32 + message: type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: height + in: path + required: true + type: string + format: int64 + tags: + - Service + /cosmos/base/tendermint/v1beta1/node_info: + get: + summary: GetNodeInfo queries the current node info. + operationId: GetNodeInfo + responses: + '200': + description: A successful response. + schema: + type: object + properties: + defaultNodeInfo: + type: object + properties: + protocolVersion: + type: object + properties: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 + defaultNodeId: + type: string + listenAddr: + type: string + network: + type: string + version: + type: string + channels: + type: string + format: byte + moniker: + type: string + other: + type: object + properties: + txIndex: + type: string + rpcAddress: + type: string + applicationVersion: + type: object + properties: + name: + type: string + appName: + type: string + version: + type: string + gitCommit: + type: string + buildTags: + type: string + goVersion: + type: string + buildDeps: + type: array + items: + type: object + properties: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmosSdkVersion: + type: string + description: VersionInfo is the type for the GetNodeInfoResponse message. + description: >- + GetNodeInfoResponse is the response type for the Query/GetNodeInfo + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: code: type: integer format: int32 @@ -14587,7 +16329,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -14638,303 +16380,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: height - in: path - required: true - type: string - format: int64 - tags: - - Service - /cosmos/base/tendermint/v1beta1/node_info: - get: - summary: GetNodeInfo queries the current node info. - operationId: GetNodeInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - default_node_info: - type: object - properties: - protocol_version: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - application_version: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: - type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - description: >- - GetNodeInfoResponse is the response type for the Query/GetNodeInfo - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -14972,7 +16428,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -14982,7 +16438,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -15012,6 +16468,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -15070,8 +16527,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -15082,7 +16537,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -15133,19 +16588,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -15183,7 +16636,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -15193,7 +16646,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -15223,6 +16676,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -15271,7 +16725,7 @@ paths: schema: type: object properties: - block_height: + blockHeight: type: string format: int64 validators: @@ -15281,10 +16735,10 @@ paths: properties: address: type: string - pub_key: + pubKey: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -15335,19 +16789,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -15385,7 +16837,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -15395,7 +16847,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -15425,6 +16877,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -15463,10 +16916,10 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 description: Validator is the type for the validator-set. @@ -15474,7 +16927,7 @@ paths: description: pagination defines an pagination for the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -15497,8 +16950,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -15509,7 +16960,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -15560,19 +17011,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -15610,7 +17059,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -15620,7 +17069,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -15650,6 +17099,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -15718,7 +17168,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -15737,9 +17187,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -15755,7 +17202,7 @@ paths: schema: type: object properties: - block_height: + blockHeight: type: string format: int64 validators: @@ -15765,10 +17212,10 @@ paths: properties: address: type: string - pub_key: + pubKey: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -15819,19 +17266,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -15869,7 +17314,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -15879,7 +17324,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -15909,6 +17354,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -15947,10 +17393,10 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 description: Validator is the type for the validator-set. @@ -15958,7 +17404,7 @@ paths: description: pagination defines an pagination for the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -15981,8 +17427,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -15993,7 +17437,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -16044,19 +17488,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -16094,7 +17536,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -16104,7 +17546,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -16134,6 +17576,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -16207,7 +17650,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -16226,43 +17669,89 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Service - /cosmos/base/node/v1beta1/config: + /cosmos/circuit/v1/accounts: get: - summary: Config queries for the operator configuration. - operationId: Config + summary: Account returns account permissions. + operationId: CircuitAccounts responses: '200': description: A successful response. schema: type: object properties: - minimum_gas_price: - type: string - pruning_keep_recent: - type: string - pruning_interval: - type: string - halt_height: - type: string - format: uint64 + accounts: + type: array + items: + type: object + properties: + address: + type: string + permissions: + type: object + properties: + level: + description: >- + level is the level of permissions granted to this + account. + type: string + enum: + - LEVEL_NONE_UNSPECIFIED + - LEVEL_SOME_MSGS + - LEVEL_ALL_MSGS + - LEVEL_SUPER_ADMIN + default: LEVEL_NONE_UNSPECIFIED + limitTypeUrls: + type: array + items: + type: string + description: >- + limit_type_urls is used with LEVEL_SOME_MSGS to + limit the lists of Msg type + + URLs that the account can trip. It is an error to + use limit_type_urls with + + a level other than LEVEL_SOME_MSGS. + description: >- + Permissions are the permissions that an account has to + trip + + or reset the circuit breaker. + title: >- + GenesisAccountPermissions is the account permissions for the + circuit breaker in genesis + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise description: >- - ConfigResponse defines the response structure for the Config gRPC - query. + AccountsResponse is the response type for the Query/Accounts RPC + method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16273,48 +17762,152 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - - Service - /cosmos/base/node/v1beta1/status: + - Query + /cosmos/circuit/v1/accounts/{address}: get: - summary: Status queries for the node status. - operationId: Status + summary: Account returns account permissions. + operationId: CircuitAccount responses: '200': description: A successful response. schema: type: object properties: - earliest_store_height: - type: string - format: uint64 - height: - type: string - format: uint64 - timestamp: - type: string - format: date-time - app_hash: - type: string - format: byte - validator_hash: - type: string - format: byte + permission: + type: object + properties: + level: + description: level is the level of permissions granted to this account. + type: string + enum: + - LEVEL_NONE_UNSPECIFIED + - LEVEL_SOME_MSGS + - LEVEL_ALL_MSGS + - LEVEL_SUPER_ADMIN + default: LEVEL_NONE_UNSPECIFIED + limitTypeUrls: + type: array + items: + type: string + description: >- + limit_type_urls is used with LEVEL_SOME_MSGS to limit the + lists of Msg type + + URLs that the account can trip. It is an error to use + limit_type_urls with + + a level other than LEVEL_SOME_MSGS. + description: |- + Permissions are the permissions that an account has to trip + or reset the circuit breaker. description: >- - StateResponse defines the response structure for the status of a - node. + AccountResponse is the response type for the Query/Account RPC + method. default: description: An unexpected error response. schema: type: object properties: - error: + code: + type: integer + format: int32 + message: type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + parameters: + - name: address + in: path + required: true + type: string + tags: + - Query + /cosmos/circuit/v1/disable_list: + get: + summary: DisabledList returns a list of disabled message urls + operationId: DisabledList + responses: + '200': + description: A successful response. + schema: + type: object + properties: + disabledList: + type: array + items: + type: string + description: >- + DisabledListResponse is the response type for the + Query/DisabledList RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: code: type: integer format: int32 @@ -16325,16 +17918,166 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: + additionalProperties: {} + tags: + - Query + /cosmos/consensus/v1/params: + get: + summary: Params queries the parameters of x/consensus module. + operationId: ConsensusParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: >- + params are the tendermint consensus params stored in the + consensus module. + + Please note that `params.version` is not populated in this + response, it is + + tracked separately in the x/upgrade module. + type: object + properties: + block: + type: object + properties: + maxBytes: + type: string + format: int64 + title: |- + Max block size, in bytes. + Note: must be greater than 0 + maxGas: + type: string + format: int64 + title: |- + Max gas per block. + Note: must be greater or equal to -1 + description: BlockParams contains limits on the block size. + evidence: + type: object + properties: + maxAgeNumBlocks: + type: string + format: int64 + description: >- + Max age of evidence, in blocks. + + + The basic formula for calculating this is: + MaxAgeDuration / {average block + + time}. + maxAgeDuration: + type: string + description: >- + Max age of evidence, in time. + + + It should correspond with an app's "unbonding period" + or other similar + + mechanism for handling [Nothing-At-Stake + + attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). + maxBytes: + type: string + format: int64 + title: >- + This sets the maximum size of total evidence in bytes + that can be committed in a single block. + + and should fall comfortably under the max block bytes. + + Default is 1048576 or 1MB + description: >- + EvidenceParams determine how we handle evidence of + malfeasance. + validator: + type: object + properties: + pubKeyTypes: + type: array + items: + type: string + description: >- + ValidatorParams restrict the public key types validators + can use. + + NOTE: uses ABCI pubkey naming, not Amino names. + version: + type: object + properties: + app: + type: string + format: uint64 + description: VersionParams contains the ABCI application version. + abci: + type: object + properties: + voteExtensionsEnableHeight: + type: string + format: int64 + description: >- + vote_extensions_enable_height configures the first + height during which + + vote extensions will be enabled. During this specified + height, and for all + + subsequent heights, precommit messages that do not + contain valid extension data + + will be considered invalid. Prior to this height, vote + extensions will not + + be used or accepted by validators on the network. + + + Once enabled, vote extensions will be created by the + application in ExtendVote, + + passed to the application for validation in + VerifyVoteExtension and given + + to the application to use when proposing a block + during PrepareProposal. + description: >- + ABCIParams configure functionality specific to the + Application Blockchain Interface. + description: >- + QueryParamsResponse defines the response type for querying + x/consensus parameters. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': type: string - format: byte + additionalProperties: {} tags: - - Service + - Query /cosmos/distribution/v1beta1/community_pool: get: summary: CommunityPool queries the community pool coins. + description: 'WARNING: This query will fail if an external community pool is used.' operationId: CommunityPool responses: '200': @@ -16371,8 +18114,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16383,14 +18124,12 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} tags: - Query - /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards: + /cosmos/distribution/v1beta1/delegators/{delegatorAddress}/rewards: get: summary: |- DelegationTotalRewards queries the total rewards accrued by each @@ -16407,7 +18146,7 @@ paths: items: type: object properties: - validator_address: + validatorAddress: type: string reward: type: array @@ -16458,8 +18197,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16470,20 +18207,18 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - - name: delegator_address + - name: delegatorAddress description: delegator_address defines the delegator address to query for. in: path required: true type: string tags: - Query - /cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}: + /cosmos/distribution/v1beta1/delegators/{delegatorAddress}/rewards/{validatorAddress}: get: summary: DelegationRewards queries the total rewards accrued by a delegation. operationId: DelegationRewards @@ -16520,8 +18255,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16532,25 +18265,23 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - - name: delegator_address + - name: delegatorAddress description: delegator_address defines the delegator address to query for. in: path required: true type: string - - name: validator_address + - name: validatorAddress description: validator_address defines the validator address to query for. in: path required: true type: string tags: - Query - /cosmos/distribution/v1beta1/delegators/{delegator_address}/validators: + /cosmos/distribution/v1beta1/delegators/{delegatorAddress}/validators: get: summary: DelegatorValidators queries the validators of a delegator. operationId: DelegatorValidators @@ -16575,8 +18306,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16587,20 +18316,18 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - - name: delegator_address + - name: delegatorAddress description: delegator_address defines the delegator address to query for. in: path required: true type: string tags: - Query - /cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address: + /cosmos/distribution/v1beta1/delegators/{delegatorAddress}/withdraw_address: get: summary: DelegatorWithdrawAddress queries withdraw address of a delegator. operationId: DelegatorWithdrawAddress @@ -16610,7 +18337,7 @@ paths: schema: type: object properties: - withdraw_address: + withdrawAddress: type: string description: withdraw_address defines the delegator address to query for. description: |- @@ -16621,8 +18348,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16633,13 +18358,11 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - - name: delegator_address + - name: delegatorAddress description: delegator_address defines the delegator address to query for. in: path required: true @@ -16660,23 +18383,23 @@ paths: description: params defines the parameters of the module. type: object properties: - community_tax: + communityTax: type: string - base_proposer_reward: + baseProposerReward: type: string description: >- Deprecated: The base_proposer_reward field is deprecated and is no longer used in the x/distribution module's reward mechanism. - bonus_proposer_reward: + bonusProposerReward: type: string description: >- Deprecated: The bonus_proposer_reward field is deprecated and is no longer used in the x/distribution module's reward mechanism. - withdraw_addr_enabled: + withdrawAddrEnabled: type: boolean description: >- QueryParamsResponse is the response type for the Query/Params RPC @@ -16686,8 +18409,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16698,14 +18419,12 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} tags: - Query - /cosmos/distribution/v1beta1/validators/{validator_address}: + /cosmos/distribution/v1beta1/validators/{validatorAddress}: get: summary: >- ValidatorDistributionInfo queries validator commission and @@ -16717,10 +18436,10 @@ paths: schema: type: object properties: - operator_address: + operatorAddress: type: string description: operator_address defines the validator operator address. - self_bond_rewards: + selfBondRewards: type: array items: type: object @@ -16766,8 +18485,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16778,20 +18495,18 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - - name: validator_address + - name: validatorAddress description: validator_address defines the validator address to query for. in: path required: true type: string tags: - Query - /cosmos/distribution/v1beta1/validators/{validator_address}/commission: + /cosmos/distribution/v1beta1/validators/{validatorAddress}/commission: get: summary: ValidatorCommission queries accumulated commission for a validator. operationId: ValidatorCommission @@ -16831,8 +18546,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16843,20 +18556,18 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + additionalProperties: {} parameters: - - name: validator_address + - name: validatorAddress description: validator_address defines the validator address to query for. in: path required: true type: string tags: - Query - /cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards: + /cosmos/distribution/v1beta1/validators/{validatorAddress}/outstanding_rewards: get: summary: ValidatorOutstandingRewards queries rewards of a validator address. operationId: ValidatorOutstandingRewards @@ -16903,8 +18614,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16915,20 +18624,18 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - - name: validator_address + - name: validatorAddress description: validator_address defines the validator address to query for. in: path required: true type: string tags: - Query - /cosmos/distribution/v1beta1/validators/{validator_address}/slashes: + /cosmos/distribution/v1beta1/validators/{validatorAddress}/slashes: get: summary: ValidatorSlashes queries slash events of a validator. operationId: ValidatorSlashes @@ -16943,7 +18650,7 @@ paths: items: type: object properties: - validator_period: + validatorPeriod: type: string format: uint64 fraction: @@ -16963,7 +18670,7 @@ paths: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -16986,8 +18693,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -16998,18 +18703,16 @@ paths: items: type: object properties: - type_url: + '@type': type: string - value: - type: string - format: byte + additionalProperties: {} parameters: - - name: validator_address + - name: validatorAddress description: validator_address defines the validator address to query for. in: path required: true type: string - - name: starting_height + - name: startingHeight description: >- starting_height defines the optional starting height to query the slashes. @@ -17017,7 +18720,7 @@ paths: required: false type: string format: uint64 - - name: ending_height + - name: endingHeight description: >- starting_height defines the optional ending height to query the slashes. @@ -17056,7 +18759,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -17075,238 +18778,178 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/evidence/v1beta1/evidence: + /cosmos/epochs/v1beta1/current_epoch: get: - summary: AllEvidence queries all evidence. - operationId: AllEvidence + summary: CurrentEpoch provide current epoch of specified identifier + operationId: CurrentEpoch responses: '200': description: A successful response. schema: type: object properties: - evidence: + currentEpoch: + type: string + format: int64 + description: |- + QueryCurrentEpochResponse defines the gRPC response structure for + querying an epoch by its identifier. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - type_url: + '@type': + type: string + additionalProperties: {} + parameters: + - name: identifier + in: query + required: false + type: string + tags: + - Query + /cosmos/epochs/v1beta1/epochs: + get: + summary: EpochInfos provide running epochInfos + operationId: EpochInfos + responses: + '200': + description: A successful response. + schema: + type: object + properties: + epochs: + type: array + items: + type: object + properties: + identifier: type: string description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: + identifier is a unique reference to this particular + timer. + startTime: type: string - format: byte + format: date-time description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. + start_time is the time at which the timer first ever + ticks. + If start_time is in the future, the epoch will not begin + until the start - Protobuf library provides support to pack/unpack Any values - in the form + time. + duration: + type: string + description: >- + duration is the time in between epoch ticks. - of utility functions or additional generated methods of the - Any type. + In order for intended behavior to be met, duration + should + be greater than the chains expected block time. - Example 1: Pack and unpack a message in C++. + Duration must be non-zero. + currentEpoch: + type: string + format: int64 + description: >- + current_epoch is the current epoch number, or in other + words, - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + how many times has the timer 'ticked'. - Example 2: Pack and unpack a message in Java. + The first tick (current_epoch=1) is defined as - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + the first block whose blocktime is greater than the + EpochInfo start_time. + currentEpochStartTime: + type: string + format: date-time + description: >- + current_epoch_start_time describes the start time of the + current timer - Example 3: Pack and unpack a message in Python. + interval. The interval is (current_epoch_start_time, - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + current_epoch_start_time + duration] When the timer + ticks, this is set to - Example 4: Pack and unpack a message in Go + current_epoch_start_time = last_epoch_start_time + + duration only one timer - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + tick for a given identifier can occur per block. - The pack methods provided by protobuf library will by - default use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + NOTE! The current_epoch_start_time may diverge + significantly from the - methods only use the fully qualified type name after the - last '/' + wall-clock time the epoch began at. Wall-clock time of + epoch start may be - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + >> current_epoch_start_time. Suppose + current_epoch_start_time = 10, - name "y.z". + duration = 5. Suppose the chain goes offline at t=14, + and comes back online + at t=30, and produces blocks at every successive time. + (t=31, 32, etc.) - JSON + * The t=30 block will start the epoch for (10, 15] + * The t=31 block will start the epoch for (15, 20] - The JSON representation of an `Any` value uses the regular + * The t=32 block will start the epoch for (20, 25] - representation of the deserialized, embedded message, with - an + * The t=33 block will start the epoch for (25, 30] - additional field `@type` which contains the type URL. - Example: + * The t=34 block will start the epoch for (30, 35] - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: evidence returns all evidences. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + * The **t=36** block will start the epoch for (35, 40] + epochCountingStarted: + type: boolean + description: >- + epoch_counting_started is a boolean, that indicates + whether this - was set, its value is undefined otherwise - description: >- - QueryAllEvidenceResponse is the response type for the - Query/AllEvidence RPC + epoch timer has began yet. + currentEpochStartHeight: + type: string + format: int64 + title: >- + current_epoch_start_height is the block height at which + the current epoch - method. + started. (The block height at which the timer last + ticked) + description: |- + EpochInfo is a struct that describes the data going into + a timer defined by the x/epochs module. + description: |- + QueryEpochInfosRequest defines the gRPC response structure for + querying all epoch info. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -17317,7 +18960,27 @@ paths: items: type: object properties: - type_url: + '@type': + type: string + additionalProperties: {} + tags: + - Query + /cosmos/evidence/v1beta1/evidence: + get: + summary: AllEvidence queries all evidence. + operationId: AllEvidence + responses: + '200': + description: A successful response. + schema: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -17368,19 +19031,233 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: evidence returns all evidences. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllEvidenceResponse is the response type for the + Query/AllEvidence RPC + + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the above - specified type. + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -17418,7 +19295,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -17428,7 +19305,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -17458,6 +19335,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -17526,7 +19404,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -17545,9 +19423,6 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean @@ -17564,9 +19439,10 @@ paths: type: object properties: evidence: + description: evidence returns the requested evidence. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -17616,129 +19492,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + additionalProperties: {} description: >- QueryEvidenceResponse is the response type for the Query/Evidence RPC method. @@ -17747,8 +19511,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -17759,7 +19521,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -17810,19 +19572,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -17860,7 +19620,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -17870,7 +19630,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -17900,6 +19660,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -17938,14 +19699,11 @@ paths: } parameters: - name: hash - description: |- - hash defines the evidence hash of the requested evidence. - - Since: cosmos-sdk 0.47 + description: hash defines the evidence hash of the requested evidence. in: path required: true type: string - - name: evidence_hash + - name: evidenceHash description: |- evidence_hash defines the hash of the requested evidence. Deprecated: Use hash, a HEX encoded string, instead. @@ -17955,88 +19713,109 @@ paths: format: byte tags: - Query - /cosmos/gov/v1beta1/params/{params_type}: + /cosmos/feegrant/v1beta1/allowance/{granter}/{grantee}: get: - summary: Params queries all parameters of the gov module. - operationId: GovParams + summary: Allowance returns granted allwance to the grantee by the granter. + operationId: Allowance responses: '200': description: A successful response. schema: type: object properties: - voting_params: - description: voting_params defines the parameters related to voting. + allowance: + description: allowance is a allowance granted for grantee by granter. type: object properties: - voting_period: + granter: type: string - description: Duration of the voting period. - deposit_params: - description: deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + description: >- + granter is the address of the user granting an allowance + of their funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an + allowance of another user's funds. + allowance: + description: >- + allowance can be any of basic, periodic, allowed fee + allowance. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + protocol buffer message. This string must contain at + least - NOTE: The amount field is an Int which implements the - custom method + one "/" character. The last segment of the URL's path + must represent - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. - Initial value: 2 + the fully qualified name of the type (as in - months. - tally_params: - description: tally_params defines the parameters related to tally. - type: object - properties: - quorum: - type: string - format: byte - description: >- - Minimum percentage of total stake needed to vote for a - result to be + `path/google.protobuf.Duration`). The name should be + in a canonical form - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. - Default value: 0.5. - veto_threshold: - type: string - format: byte - description: >- - Minimum value of Veto votes to Total votes ratio for - proposal to be + (e.g., leading "." is not accepted). - vetoed. Default value: 1/3. + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + title: >- + Grant is stored in the KVStore to record a grant with full + context description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. + QueryAllowanceResponse is the response type for the + Query/Allowance RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -18047,7 +19826,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -18098,19 +19877,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -18148,7 +19925,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -18158,7 +19935,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -18188,6 +19965,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -18225,40 +20003,54 @@ paths: "value": "1.212s" } parameters: - - name: params_type + - name: granter description: >- - params_type defines which parameters to query for, can be one of - "voting", - - "tallying" or "deposit". + granter is the address of the user granting an allowance of their + funds. + in: path + required: true + type: string + - name: grantee + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. in: path required: true type: string tags: - Query - /cosmos/gov/v1beta1/proposals: + /cosmos/feegrant/v1beta1/allowances/{grantee}: get: - summary: Proposals queries all proposals based on given status. - operationId: Proposals + summary: Allowances returns all the grants for the given grantee address. + operationId: Allowances responses: '200': description: A successful response. schema: type: object properties: - proposals: + allowances: type: array items: type: object properties: - proposal_id: + granter: type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - content: + description: >- + granter is the address of the user granting an allowance + of their funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an + allowance of another user's funds. + allowance: + description: >- + allowance can be any of basic, periodic, allowed fee + allowance. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -18309,218 +20101,26 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - description: status defines the proposal status. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result is the final tally result of the - proposal. When - - querying a proposal via gRPC, this field is not - populated until the - - proposal's voting period has ended. - type: object - properties: - 'yes': - type: string - description: yes is the number of yes votes on a proposal. - abstain: - type: string - description: >- - abstain is the number of abstain votes on a - proposal. - 'no': - type: string - description: no is the number of no votes on a proposal. - no_with_veto: - type: string - description: >- - no_with_veto is the number of no with veto votes on - a proposal. - submit_time: - type: string - format: date-time - description: submit_time is the time of proposal submission. - deposit_end_time: - type: string - format: date-time - description: deposit_end_time is the end time for deposition. - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: total_deposit is the total deposit on the proposal. - voting_start_time: - type: string - format: date-time - description: >- - voting_start_time is the starting time to vote on a - proposal. - voting_end_time: - type: string - format: date-time - description: voting_end_time is the end time of voting on a proposal. - description: >- - Proposal defines the core field members of a governance - proposal. - description: proposals defines all the requested governance proposals. + additionalProperties: {} + title: >- + Grant is stored in the KVStore to record a grant with full + context + description: allowances are allowance's granted for grantee by granter. pagination: - description: pagination defines the pagination in the response. + description: pagination defines an pagination for the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -18536,17 +20136,13 @@ paths: was set, its value is undefined otherwise description: >- - QueryProposalsResponse is the response type for the - Query/Proposals RPC - - method. + QueryAllowancesResponse is the response type for the + Query/Allowances RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -18557,7 +20153,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -18608,19 +20204,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -18658,7 +20252,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -18668,7 +20262,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -18698,6 +20292,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -18735,41 +20330,9 @@ paths: "value": "1.212s" } parameters: - - name: proposal_status - description: |- - proposal_status defines the status of the proposals. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - in: query - required: false - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - - name: voter - description: voter defines the voter address for the proposals. - in: query - required: false - type: string - - name: depositor - description: depositor defines the deposit addresses from the proposals. - in: query - required: false + - name: grantee + in: path + required: true type: string - name: pagination.key description: |- @@ -18802,7 +20365,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -18821,296 +20384,401 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/gov/v1beta1/proposals/{proposal_id}: + /cosmos/feegrant/v1beta1/issued/{granter}: get: - summary: Proposal queries proposal details based on ProposalID. - operationId: Proposal + summary: AllowancesByGranter returns all the grants given by an address + operationId: AllowancesByGranter responses: '200': description: A successful response. schema: type: object properties: - proposal: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized + allowances: + type: array + items: + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance + of their funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an + allowance of another user's funds. + allowance: + description: >- + allowance can be any of basic, periodic, allowed fee + allowance. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's + path must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the + binary all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available + in the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no + widely used type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty - scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Schemes other than `http`, `https` (or the empty + scheme) might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + title: >- + Grant is stored in the KVStore to record a grant with full + context + description: allowances that have been issued by the granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + was set, its value is undefined otherwise + description: >- + QueryAllowancesByGranterResponse is the response type for the + Query/AllowancesByGranter RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - Protobuf library provides support to pack/unpack Any - values in the form + protocol buffer message. This string must contain at + least - of utility functions or additional generated methods of - the Any type. + one "/" character. The last segment of the URL's path + must represent + the fully qualified name of the type (as in - Example 1: Pack and unpack a message in C++. + `path/google.protobuf.Duration`). The name should be in + a canonical form - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + (e.g., leading "." is not accepted). - Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + In practice, teams usually precompile into the binary + all types that they - Example 3: Pack and unpack a message in Python. + expect it to use in the context of Any. However, for + URLs which use the - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + scheme `http`, `https`, or no scheme, one can optionally + set up a type - Example 4: Pack and unpack a message in Go + server that maps type URLs to message definitions as + follows: - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - The pack methods provided by protobuf library will by - default use + * If no scheme is provided, `https` is assumed. - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - methods only use the fully qualified type name after the - last '/' + Note: this functionality is not currently available in + the official - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + protobuf release, and it is not used for type URLs + beginning with - name "y.z". + type.googleapis.com. As of May 2023, there are no widely + used type server + implementations and no plans to implement one. - JSON + Schemes other than `http`, `https` (or the empty scheme) + might be - The JSON representation of an `Any` value uses the regular + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - representation of the deserialized, embedded message, with - an + URL that describes the type of the serialized message. - additional field `@type` which contains the type URL. - Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + Protobuf library provides support to pack/unpack Any values + in the form - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + of utility functions or additional generated methods of the + Any type. - If the embedded message type is well-known and has a - custom JSON - representation, that representation will be embedded - adding a field + Example 1: Pack and unpack a message in C++. - `value` which holds the custom JSON in addition to the - `@type` + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - field. Example (for message [google.protobuf.Duration][]): + Example 2: Pack and unpack a message in Java. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - description: status defines the proposal status. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result is the final tally result of the - proposal. When + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - querying a proposal via gRPC, this field is not populated - until the + Example 3: Pack and unpack a message in Python. - proposal's voting period has ended. - type: object - properties: - 'yes': - type: string - description: yes is the number of yes votes on a proposal. - abstain: - type: string - description: abstain is the number of abstain votes on a proposal. - 'no': - type: string - description: no is the number of no votes on a proposal. - no_with_veto: - type: string - description: >- - no_with_veto is the number of no with veto votes on a - proposal. - submit_time: - type: string - format: date-time - description: submit_time is the time of proposal submission. - deposit_end_time: - type: string - format: date-time - description: deposit_end_time is the end time for deposition. - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + Example 4: Pack and unpack a message in Go - NOTE: The amount field is an Int which implements the - custom method + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - signatures required by gogoproto. - description: total_deposit is the total deposit on the proposal. - voting_start_time: - type: string - format: date-time - description: >- - voting_start_time is the starting time to vote on a - proposal. - voting_end_time: - type: string - format: date-time - description: voting_end_time is the end time of voting on a proposal. - description: >- - Proposal defines the core field members of a governance - proposal. - description: >- - QueryProposalResponse is the response type for the Query/Proposal - RPC method. + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: granter + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean + tags: + - Query + /cosmos/gov/v1/constitution: + get: + summary: Constitution queries the chain's constitution. + operationId: Constitution + responses: + '200': + description: A successful response. + schema: + type: object + properties: + constitution: + type: string + title: >- + QueryConstitutionResponse is the response type for the + Query/Constitution RPC method default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -19121,7 +20789,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -19172,19 +20840,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -19222,7 +20888,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -19232,7 +20898,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -19262,6 +20928,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -19298,93 +20965,205 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 tags: - Query - /cosmos/gov/v1beta1/proposals/{proposal_id}/deposits: + /cosmos/gov/v1/params/{paramsType}: get: - summary: Deposits queries all deposits of a single proposal. - operationId: Deposits + summary: Params queries all parameters of the gov module. + operationId: GovV1Params responses: '200': description: A successful response. schema: type: object properties: - deposits: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - depositor: - type: string + votingParams: + description: |- + Deprecated: Prefer to use `params` instead. + voting_params defines the parameters related to voting. + type: object + properties: + votingPeriod: + type: string + description: Duration of the voting period. + depositParams: + description: |- + Deprecated: Prefer to use `params` instead. + deposit_params defines the parameters related to deposit. + type: object + properties: + minDeposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string description: >- - depositor defines the deposit addresses from the - proposals. - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. + Coin defines a token with a denomination and an amount. - NOTE: The amount field is an Int which implements the - custom method + NOTE: The amount field is an Int which implements the + custom method - signatures required by gogoproto. - description: amount to be deposited by depositor. - description: >- - Deposit defines an amount deposited by an account address to - an active + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + maxDepositPeriod: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. + Initial value: 2 - proposal. - description: deposits defines the requested deposits. - pagination: - description: pagination defines the pagination in the response. + months. + tallyParams: + description: |- + Deprecated: Prefer to use `params` instead. + tally_params defines the parameters related to tally. type: object properties: - next_key: + quorum: type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + description: >- + Minimum percentage of total stake needed to vote for a + result to be + + considered valid. + threshold: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + description: >- + Minimum proportion of Yes votes for proposal to pass. + Default value: 0.5. + vetoThreshold: + type: string + description: >- + Minimum value of Veto votes to Total votes ratio for + proposal to be - was set, its value is undefined otherwise + vetoed. Default value: 1/3. + params: + description: params defines all the paramaters of x/gov module. + type: object + properties: + minDeposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + maxDepositPeriod: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. + Initial value: 2 + + months. + votingPeriod: + type: string + description: Duration of the voting period. + quorum: + type: string + description: >- + Minimum percentage of total stake needed to vote for a + result to be + considered valid. + threshold: + type: string + description: >- + Minimum proportion of Yes votes for proposal to pass. + Default value: 0.5. + vetoThreshold: + type: string + description: >- + Minimum value of Veto votes to Total votes ratio for + proposal to be + vetoed. Default value: 1/3. + minInitialDepositRatio: + type: string + description: >- + The ratio representing the proportion of the deposit value + that must be paid at proposal submission. + proposalCancelRatio: + type: string + description: >- + The cancel ratio which will not be returned back to the + depositors when a proposal is cancelled. + proposalCancelDest: + type: string + description: >- + The address which will receive (proposal_cancel_ratio * + deposit) proposal deposits. + + If empty, the (proposal_cancel_ratio * deposit) proposal + deposits will be burned. + expeditedVotingPeriod: + type: string + description: Duration of the voting period of an expedited proposal. + expeditedThreshold: + type: string + description: >- + Minimum proportion of Yes votes for proposal to pass. + Default value: 0.67. + expeditedMinDeposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + Minimum expedited deposit for a proposal to enter voting + period. + burnVoteQuorum: + type: boolean + title: burn deposits if a proposal does not meet quorum + burnProposalDepositPrevote: + type: boolean + title: burn deposits if the proposal does not enter voting period + burnVoteVeto: + type: boolean + title: burn deposits if quorum with vote type no_veto is met + minDepositRatio: + type: string + description: >- + The ratio representing the proportion of the deposit value + minimum that must be met when making a deposit. + + Default value: 0.01. Meaning that for a chain with a + min_deposit of 100stake, a deposit of 1stake would be + + required. description: >- - QueryDepositsResponse is the response type for the Query/Deposits - RPC method. + QueryParamsResponse is the response type for the Query/Params RPC + method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -19395,7 +21174,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -19446,19 +21225,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -19496,7 +21273,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -19506,7 +21283,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -19536,6 +21313,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -19573,366 +21351,355 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. + - name: paramsType + description: >- + params_type defines which parameters to query for, can be one of + "voting", + + "tallying" or "deposit". in: path required: true type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. + tags: + - Query + /cosmos/gov/v1/proposals: + get: + summary: Proposals queries all proposals based on given status. + operationId: GovV1Proposal + responses: + '200': + description: A successful response. + schema: + type: object + properties: + proposals: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + description: id defines the unique id of the proposal. + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key + protocol buffer message. This string must contain + at least - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. + one "/" character. The last segment of the URL's + path must represent + the fully qualified name of the type (as in - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}: - get: - summary: >- - Deposit queries single deposit information based on proposalID, - depositor address. - operationId: Deposit - responses: - '200': - description: A successful response. - schema: - type: object - properties: - deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - depositor: - type: string - description: >- - depositor defines the deposit addresses from the - proposals. - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + `path/google.protobuf.Duration`). The name should + be in a canonical form + (e.g., leading "." is not accepted). - NOTE: The amount field is an Int which implements the - custom method - signatures required by gogoproto. - description: amount to be deposited by depositor. - description: >- - Deposit defines an amount deposited by an account address to - an active + In practice, teams usually precompile into the + binary all types that they - proposal. - description: >- - QueryDepositResponse is the response type for the Query/Deposit - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + expect it to use in the context of Any. However, + for URLs which use the - protocol buffer message. This string must contain at - least + scheme `http`, `https`, or no scheme, one can + optionally set up a type - one "/" character. The last segment of the URL's path - must represent + server that maps type URLs to message definitions + as follows: - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in - a canonical form + * If no scheme is provided, `https` is assumed. - (e.g., leading "." is not accepted). + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + Note: this functionality is not currently + available in the official - In practice, teams usually precompile into the binary - all types that they + protobuf release, and it is not used for type URLs + beginning with - expect it to use in the context of Any. However, for - URLs which use the + type.googleapis.com. As of May 2023, there are no + widely used type server - scheme `http`, `https`, or no scheme, one can optionally - set up a type + implementations and no plans to implement one. - server that maps type URLs to message definitions as - follows: + Schemes other than `http`, `https` (or the empty + scheme) might be - * If no scheme is provided, `https` is assumed. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + URL that describes the type of the serialized message. - Note: this functionality is not currently available in - the official - protobuf release, and it is not used for type URLs - beginning with + Protobuf library provides support to pack/unpack Any + values in the form - type.googleapis.com. + of utility functions or additional generated methods + of the Any type. - Schemes other than `http`, `https` (or the empty scheme) - might be + Example 1: Pack and unpack a message in C++. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - URL that describes the type of the serialized message. + Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - Protobuf library provides support to pack/unpack Any values - in the form + Example 3: Pack and unpack a message in Python. - of utility functions or additional generated methods of the - Any type. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + Example 4: Pack and unpack a message in Go - Example 1: Pack and unpack a message in C++. + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + The pack methods provided by protobuf library will by + default use - Example 2: Pack and unpack a message in Java. + 'type.googleapis.com/full.type.name' as the type URL + and the unpack - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + methods only use the fully qualified type name after + the last '/' - Example 3: Pack and unpack a message in Python. + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + name "y.z". - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + JSON - The pack methods provided by protobuf library will by - default use + ==== - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + The JSON representation of an `Any` value uses the + regular - methods only use the fully qualified type name after the - last '/' + representation of the deserialized, embedded message, + with an - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + additional field `@type` which contains the type URL. + Example: - name "y.z". + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - JSON + If the embedded message type is well-known and has a + custom JSON + representation, that representation will be embedded + adding a field - The JSON representation of an `Any` value uses the regular + `value` which holds the custom JSON in addition to the + `@type` - representation of the deserialized, embedded message, with - an + field. Example (for message + [google.protobuf.Duration][]): - additional field `@type` which contains the type URL. - Example: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages are the arbitrary messages to be executed if + the proposal passes. + status: + description: status defines the proposal status. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: + description: >- + final_tally_result is the final tally result of the + proposal. When - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + querying a proposal via gRPC, this field is not + populated until the - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + proposal's voting period has ended. + type: object + properties: + yesCount: + type: string + description: yes_count is the number of yes votes on a proposal. + abstainCount: + type: string + description: >- + abstain_count is the number of abstain votes on a + proposal. + noCount: + type: string + description: no_count is the number of no votes on a proposal. + noWithVetoCount: + type: string + description: >- + no_with_veto_count is the number of no with veto + votes on a proposal. + submitTime: + type: string + format: date-time + description: submit_time is the time of proposal submission. + depositEndTime: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + totalDeposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. - If the embedded message type is well-known and has a custom - JSON - representation, that representation will be embedded adding - a field + NOTE: The amount field is an Int which implements the + custom method - `value` which holds the custom JSON in addition to the - `@type` + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + votingStartTime: + type: string + format: date-time + description: >- + voting_start_time is the starting time to vote on a + proposal. + votingEndTime: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the + proposal. - field. Example (for message [google.protobuf.Duration][]): + the recommended format of the metadata is to be found + here: - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: depositor - description: depositor defines the deposit addresses from the proposals. - in: path - required: true - type: string - tags: - - Query - /cosmos/gov/v1beta1/proposals/{proposal_id}/tally: - get: - summary: TallyResult queries the tally of a proposal vote. - operationId: TallyResult - responses: - '200': - description: A successful response. - schema: - type: object - properties: - tally: - description: tally defines the requested tally. + https://docs.cosmos.network/v0.47/modules/gov#proposal-3 + title: + type: string + title: title is the title of the proposal + summary: + type: string + title: summary is a short summary of the proposal + proposer: + type: string + title: proposer is the address of the proposal sumbitter + expedited: + type: boolean + title: expedited defines if the proposal is expedited + failedReason: + type: string + title: failed_reason defines the reason why the proposal failed + description: >- + Proposal defines the core field members of a governance + proposal. + description: proposals defines all the requested governance proposals. + pagination: + description: pagination defines the pagination in the response. type: object properties: - 'yes': - type: string - description: yes is the number of yes votes on a proposal. - abstain: - type: string - description: abstain is the number of abstain votes on a proposal. - 'no': + nextKey: type: string - description: no is the number of no votes on a proposal. - no_with_veto: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - description: >- - no_with_veto is the number of no with veto votes on a - proposal. + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise description: >- - QueryTallyResultResponse is the response type for the Query/Tally - RPC method. + QueryProposalsResponse is the response type for the + Query/Proposals RPC + + method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -19943,7 +21710,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -19994,19 +21761,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -20044,7 +21809,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -20054,7 +21819,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -20084,6 +21849,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -20121,121 +21887,408 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true + - name: proposalStatus + description: |- + proposal_status defines the status of the proposals. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + in: query + required: false type: string - format: uint64 - tags: - - Query - /cosmos/gov/v1beta1/proposals/{proposal_id}/votes: - get: - summary: Votes queries votes of a given proposal. - operationId: Votes + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + - name: voter + description: voter defines the voter address for the proposals. + in: query + required: false + type: string + - name: depositor + description: depositor defines the deposit addresses from the proposals. + in: query + required: false + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean + tags: + - Query + /cosmos/gov/v1/proposals/{proposalId}: + get: + summary: Proposal queries proposal details based on ProposalID. + operationId: GovV1Proposal responses: '200': description: A successful response. schema: type: object properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - voter: - type: string - description: voter is the voter address of the proposal. - option: + proposal: + description: proposal is the requested governance proposal. + type: object + properties: + id: + type: string + format: uint64 + description: id defines the unique id of the proposal. + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} description: >- - Deprecated: Prefer to use `options` instead. This field - is set in queries + `Any` contains an arbitrary serialized protocol buffer + message along with a - if and only if `len(options) == 1` and that option has - weight 1. In all + URL that describes the type of the serialized message. - other cases, this field will default to - VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - description: >- - option defines the valid vote options, it must not - contain duplicate vote options. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - weight: - type: string - description: >- - weight is the vote weight associated with the vote - option. - description: >- - WeightedVoteOption defines a unit of vote for vote - split. + Protobuf library provides support to pack/unpack Any + values in the form - Since: cosmos-sdk 0.43 - description: |- - options is the weighted vote options. + of utility functions or additional generated methods of + the Any type. - Since: cosmos-sdk 0.43 - description: >- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote - option. - description: votes defines the queried votes. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages are the arbitrary messages to be executed if the + proposal passes. + status: + description: status defines the proposal status. type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: + description: >- + final_tally_result is the final tally result of the + proposal. When + + querying a proposal via gRPC, this field is not populated + until the + + proposal's voting period has ended. + type: object + properties: + yesCount: + type: string + description: yes_count is the number of yes votes on a proposal. + abstainCount: + type: string + description: >- + abstain_count is the number of abstain votes on a + proposal. + noCount: + type: string + description: no_count is the number of no votes on a proposal. + noWithVetoCount: + type: string + description: >- + no_with_veto_count is the number of no with veto votes + on a proposal. + submitTime: + type: string + format: date-time + description: submit_time is the time of proposal submission. + depositEndTime: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + totalDeposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + votingStartTime: + type: string + format: date-time + description: >- + voting_start_time is the starting time to vote on a + proposal. + votingEndTime: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + metadata: type: string - format: uint64 title: >- - total is total number of results available if - PageRequest.count_total + metadata is any arbitrary metadata attached to the + proposal. - was set, its value is undefined otherwise + the recommended format of the metadata is to be found + here: + + https://docs.cosmos.network/v0.47/modules/gov#proposal-3 + title: + type: string + title: title is the title of the proposal + summary: + type: string + title: summary is a short summary of the proposal + proposer: + type: string + title: proposer is the address of the proposal sumbitter + expedited: + type: boolean + title: expedited defines if the proposal is expedited + failedReason: + type: string + title: failed_reason defines the reason why the proposal failed description: >- - QueryVotesResponse is the response type for the Query/Votes RPC - method. + QueryProposalResponse is the response type for the Query/Proposal + RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -20246,7 +22299,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -20297,19 +22350,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -20347,7 +22398,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -20357,7 +22408,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -20387,6 +22438,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -20424,155 +22476,90 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id + - name: proposalId description: proposal_id defines the unique id of the proposal. in: path required: true type: string format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}: + /cosmos/gov/v1/proposals/{proposalId}/deposits: get: - summary: Vote queries voted information based on proposalID, voterAddr. - operationId: Vote + summary: Deposits queries all deposits of a single proposal. + operationId: GovV1Deposit responses: '200': description: A successful response. schema: type: object properties: - vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - voter: - type: string - description: voter is the voter address of the proposal. - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is - set in queries - - if and only if `len(options) == 1` and that option has - weight 1. In all - - other cases, this field will default to - VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - description: >- - option defines the valid vote options, it must not - contain duplicate vote options. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - weight: - type: string - description: >- - weight is the vote weight associated with the vote - option. + deposits: + type: array + items: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string description: >- - WeightedVoteOption defines a unit of vote for vote - split. + depositor defines the deposit addresses from the + proposals. + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. - Since: cosmos-sdk 0.43 - description: |- - options is the weighted vote options. + NOTE: The amount field is an Int which implements the + custom method - Since: cosmos-sdk 0.43 - description: >- - Vote defines a vote on a governance proposal. + signatures required by gogoproto. + description: amount to be deposited by depositor. + description: >- + Deposit defines an amount deposited by an account address to + an active + + proposal. + description: deposits defines the requested deposits. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - A Vote consists of a proposal ID, the voter, and the vote - option. + was set, its value is undefined otherwise description: >- - QueryVoteResponse is the response type for the Query/Vote RPC - method. + QueryDepositsResponse is the response type for the Query/Deposits + RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -20583,7 +22570,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -20634,19 +22621,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -20684,7 +22669,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -20694,7 +22679,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -20724,6 +22709,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -20761,41 +22747,118 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id + - name: proposalId description: proposal_id defines the unique id of the proposal. in: path required: true type: string format: uint64 - - name: voter - description: voter defines the voter address for the proposals. - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query - /cosmos/gov/v1/constitution: + /cosmos/gov/v1/proposals/{proposalId}/deposits/{depositor}: get: - summary: Constitution queries the chain's constitution. - operationId: Constitution + summary: >- + Deposit queries single deposit information based on proposalID, + depositAddr. + operationId: GovV1Deposit responses: '200': description: A successful response. schema: type: object properties: - constitution: - type: string - title: >- - QueryConstitutionResponse is the response type for the - Query/Constitution RPC method + deposit: + description: deposit defines the requested deposit. + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: >- + depositor defines the deposit addresses from the + proposals. + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: amount to be deposited by depositor. + description: >- + QueryDepositResponse is the response type for the Query/Deposit + RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -20806,7 +22869,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -20857,19 +22920,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -20907,7 +22968,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -20917,7 +22978,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -20947,6 +23008,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -20983,225 +23045,58 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } + parameters: + - name: proposalId + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + - name: depositor + description: depositor defines the deposit addresses from the proposals. + in: path + required: true + type: string tags: - Query - /cosmos/gov/v1/params/{params_type}: + /cosmos/gov/v1/proposals/{proposalId}/tally: get: - summary: Params queries all parameters of the gov module. - operationId: GovV1Params + summary: TallyResult queries the tally of a proposal vote. + operationId: GovV1TallyResult responses: '200': description: A successful response. schema: type: object properties: - voting_params: - description: |- - Deprecated: Prefer to use `params` instead. - voting_params defines the parameters related to voting. - type: object - properties: - voting_period: - type: string - description: Duration of the voting period. - deposit_params: - description: |- - Deprecated: Prefer to use `params` instead. - deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. - Initial value: 2 - - months. - tally_params: - description: |- - Deprecated: Prefer to use `params` instead. - tally_params defines the parameters related to tally. - type: object - properties: - quorum: - type: string - description: >- - Minimum percentage of total stake needed to vote for a - result to be - - considered valid. - threshold: - type: string - description: >- - Minimum proportion of Yes votes for proposal to pass. - Default value: 0.5. - veto_threshold: - type: string - description: >- - Minimum value of Veto votes to Total votes ratio for - proposal to be - - vetoed. Default value: 1/3. - params: - description: |- - params defines all the paramaters of x/gov module. - - Since: cosmos-sdk 0.47 + tally: + description: tally defines the requested tally. type: object properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. - Initial value: 2 - - months. - voting_period: - type: string - description: Duration of the voting period. - quorum: - type: string - description: >- - Minimum percentage of total stake needed to vote for a - result to be - considered valid. - threshold: - type: string - description: >- - Minimum proportion of Yes votes for proposal to pass. - Default value: 0.5. - veto_threshold: - type: string - description: >- - Minimum value of Veto votes to Total votes ratio for - proposal to be - vetoed. Default value: 1/3. - min_initial_deposit_ratio: - type: string - description: >- - The ratio representing the proportion of the deposit value - that must be paid at proposal submission. - proposal_cancel_ratio: + yesCount: type: string - description: >- - The cancel ratio which will not be returned back to the - depositors when a proposal is cancelled. - - - Since: cosmos-sdk 0.50 - proposal_cancel_dest: + description: yes_count is the number of yes votes on a proposal. + abstainCount: type: string description: >- - The address which will receive (proposal_cancel_ratio * - deposit) proposal deposits. - - If empty, the (proposal_cancel_ratio * deposit) proposal - deposits will be burned. - - - Since: cosmos-sdk 0.50 - expedited_voting_period: - type: string - description: |- - Duration of the voting period of an expedited proposal. - - Since: cosmos-sdk 0.50 - expedited_threshold: + abstain_count is the number of abstain votes on a + proposal. + noCount: type: string - description: >- - Minimum proportion of Yes votes for proposal to pass. - Default value: 0.67. - - - Since: cosmos-sdk 0.50 - expedited_min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - Minimum expedited deposit for a proposal to enter voting - period. - burn_vote_quorum: - type: boolean - title: burn deposits if a proposal does not meet quorum - burn_proposal_deposit_prevote: - type: boolean - title: burn deposits if the proposal does not enter voting period - burn_vote_veto: - type: boolean - title: burn deposits if quorum with vote type no_veto is met - min_deposit_ratio: + description: no_count is the number of no votes on a proposal. + noWithVetoCount: type: string description: >- - The ratio representing the proportion of the deposit value - minimum that must be met when making a deposit. - - Default value: 0.01. Meaning that for a chain with a - min_deposit of 100stake, a deposit of 1stake would be - - required. - - - Since: cosmos-sdk 0.50 + no_with_veto_count is the number of no with veto votes on + a proposal. description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. + QueryTallyResultResponse is the response type for the Query/Tally + RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -21212,7 +23107,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -21263,19 +23158,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -21313,7 +23206,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -21323,7 +23216,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -21353,6 +23246,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -21390,363 +23284,413 @@ paths: "value": "1.212s" } parameters: - - name: params_type - description: >- - params_type defines which parameters to query for, can be one of - "voting", - - "tallying" or "deposit". + - name: proposalId + description: proposal_id defines the unique id of the proposal. in: path required: true type: string + format: uint64 tags: - Query - /cosmos/gov/v1/proposals: + /cosmos/gov/v1/proposals/{proposalId}/votes: get: - summary: Proposals queries all proposals based on given status. - operationId: GovV1Proposal + summary: Votes queries votes of a given proposal. + operationId: GovV1Votes responses: '200': description: A successful response. schema: type: object properties: - proposals: + votes: type: array items: type: object properties: - id: + proposalId: type: string format: uint64 - description: id defines the unique id of the proposal. - messages: + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + options: type: array items: type: object properties: - type_url: + option: + description: >- + option defines the valid vote options, it must not + contain duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: type: string description: >- - A URL/resource name that uniquely identifies the - type of the serialized + weight is the vote weight associated with the vote + option. + description: >- + WeightedVoteOption defines a unit of vote for vote + split. + description: options is the weighted vote options. + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the vote. - protocol buffer message. This string must contain - at least + the recommended format of the metadata is to be found + here: + https://docs.cosmos.network/v0.47/modules/gov#vote-5 + description: >- + Vote defines a vote on a governance proposal. - one "/" character. The last segment of the URL's - path must represent + A Vote consists of a proposal ID, the voter, and the vote + option. + description: votes defines the queried votes. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - the fully qualified name of the type (as in + was set, its value is undefined otherwise + description: >- + QueryVotesResponse is the response type for the Query/Votes RPC + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - `path/google.protobuf.Duration`). The name should - be in a canonical form + protocol buffer message. This string must contain at + least - (e.g., leading "." is not accepted). + one "/" character. The last segment of the URL's path + must represent + the fully qualified name of the type (as in - In practice, teams usually precompile into the - binary all types that they + `path/google.protobuf.Duration`). The name should be in + a canonical form - expect it to use in the context of Any. However, - for URLs which use the + (e.g., leading "." is not accepted). - scheme `http`, `https`, or no scheme, one can - optionally set up a type - server that maps type URLs to message definitions - as follows: + In practice, teams usually precompile into the binary + all types that they + expect it to use in the context of Any. However, for + URLs which use the - * If no scheme is provided, `https` is assumed. + scheme `http`, `https`, or no scheme, one can optionally + set up a type - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + server that maps type URLs to message definitions as + follows: - Note: this functionality is not currently - available in the official - protobuf release, and it is not used for type URLs - beginning with + * If no scheme is provided, `https` is assumed. - type.googleapis.com. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + Note: this functionality is not currently available in + the official - Schemes other than `http`, `https` (or the empty - scheme) might be + protobuf release, and it is not used for type URLs + beginning with - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + type.googleapis.com. As of May 2023, there are no widely + used type server - URL that describes the type of the serialized message. + implementations and no plans to implement one. - Protobuf library provides support to pack/unpack Any - values in the form + Schemes other than `http`, `https` (or the empty scheme) + might be - of utility functions or additional generated methods - of the Any type. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Protobuf library provides support to pack/unpack Any values + in the form - Example 2: Pack and unpack a message in Java. + of utility functions or additional generated methods of the + Any type. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - Example 3: Pack and unpack a message in Python. + Example 1: Pack and unpack a message in C++. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 4: Pack and unpack a message in Go + Example 2: Pack and unpack a message in Java. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - The pack methods provided by protobuf library will by - default use + Example 3: Pack and unpack a message in Python. - 'type.googleapis.com/full.type.name' as the type URL - and the unpack + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - methods only use the fully qualified type name after - the last '/' + Example 4: Pack and unpack a message in Go - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - name "y.z". + The pack methods provided by protobuf library will by + default use + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - JSON + methods only use the fully qualified type name after the + last '/' + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - The JSON representation of an `Any` value uses the - regular + name "y.z". - representation of the deserialized, embedded message, - with an - additional field `@type` which contains the type URL. - Example: + JSON - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + ==== - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + The JSON representation of an `Any` value uses the regular - If the embedded message type is well-known and has a - custom JSON + representation of the deserialized, embedded message, with + an - representation, that representation will be embedded - adding a field + additional field `@type` which contains the type URL. + Example: - `value` which holds the custom JSON in addition to the - `@type` + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - field. Example (for message - [google.protobuf.Duration][]): + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages are the arbitrary messages to be executed if - the proposal passes. - status: - description: status defines the proposal status. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result is the final tally result of the - proposal. When + If the embedded message type is well-known and has a custom + JSON - querying a proposal via gRPC, this field is not - populated until the + representation, that representation will be embedded adding + a field - proposal's voting period has ended. - type: object - properties: - yes_count: - type: string - description: yes_count is the number of yes votes on a proposal. - abstain_count: - type: string - description: >- - abstain_count is the number of abstain votes on a - proposal. - no_count: - type: string - description: no_count is the number of no votes on a proposal. - no_with_veto_count: - type: string - description: >- - no_with_veto_count is the number of no with veto - votes on a proposal. - submit_time: - type: string - format: date-time - description: submit_time is the time of proposal submission. - deposit_end_time: - type: string - format: date-time - description: deposit_end_time is the end time for deposition. - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. + `value` which holds the custom JSON in addition to the + `@type` + field. Example (for message [google.protobuf.Duration][]): - NOTE: The amount field is an Int which implements the - custom method + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposalId + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - signatures required by gogoproto. - description: total_deposit is the total deposit on the proposal. - voting_start_time: - type: string - format: date-time - description: >- - voting_start_time is the starting time to vote on a - proposal. - voting_end_time: - type: string - format: date-time - description: voting_end_time is the end time of voting on a proposal. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the - proposal. + It is less efficient than using key. Only one of offset or key + should - the recommended format of the metadata is to be found - here: + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - https://docs.cosmos.network/v0.47/modules/gov#proposal-3 - title: - type: string - description: 'Since: cosmos-sdk 0.47' - title: title is the title of the proposal - summary: - type: string - description: 'Since: cosmos-sdk 0.47' - title: summary is a short summary of the proposal - proposer: - type: string - description: 'Since: cosmos-sdk 0.47' - title: proposer is the address of the proposal sumbitter - expedited: - type: boolean - description: 'Since: cosmos-sdk 0.50' - title: expedited defines if the proposal is expedited - failed_reason: - type: string - description: 'Since: cosmos-sdk 0.50' - title: failed_reason defines the reason why the proposal failed - description: >- - Proposal defines the core field members of a governance - proposal. - description: proposals defines all the requested governance proposals. - pagination: - description: pagination defines the pagination in the response. + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean + tags: + - Query + /cosmos/gov/v1/proposals/{proposalId}/votes/{voter}: + get: + summary: Vote queries voted information based on proposalID, voterAddr. + operationId: GovV1Vote + responses: + '200': + description: A successful response. + schema: + type: object + properties: + vote: + description: vote defines the queried vote. type: object properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + proposalId: type: string format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not + contain duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: >- + weight is the vote weight associated with the vote + option. + description: >- + WeightedVoteOption defines a unit of vote for vote + split. + description: options is the weighted vote options. + metadata: + type: string title: >- - total is total number of results available if - PageRequest.count_total + metadata is any arbitrary metadata attached to the vote. - was set, its value is undefined otherwise + the recommended format of the metadata is to be found + here: https://docs.cosmos.network/v0.47/modules/gov#vote-5 description: >- - QueryProposalsResponse is the response type for the - Query/Proposals RPC - + QueryVoteResponse is the response type for the Query/Vote RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -21757,7 +23701,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -21808,19 +23752,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -21858,7 +23800,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -21868,7 +23810,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -21898,6 +23840,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -21935,351 +23878,41 @@ paths: "value": "1.212s" } parameters: - - name: proposal_status - description: |- - proposal_status defines the status of the proposals. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - in: query - required: false + - name: proposalId + description: proposal_id defines the unique id of the proposal. + in: path + required: true type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED + format: uint64 - name: voter description: voter defines the voter address for the proposals. - in: query - required: false - type: string - - name: depositor - description: depositor defines the deposit addresses from the proposals. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmos/gov/v1/proposals/{proposal_id}: + /cosmos/gov/v1beta1/params/{paramsType}: get: - summary: Proposal queries proposal details based on ProposalID. - operationId: GovV1Proposal - responses: + summary: Params queries all parameters of the gov module. + operationId: GovParams + responses: '200': description: A successful response. schema: type: object properties: - proposal: + votingParams: + description: voting_params defines the parameters related to voting. type: object properties: - id: - type: string - format: uint64 - description: id defines the unique id of the proposal. - messages: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages are the arbitrary messages to be executed if the - proposal passes. - status: - description: status defines the proposal status. + votingPeriod: type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result is the final tally result of the - proposal. When - - querying a proposal via gRPC, this field is not populated - until the - - proposal's voting period has ended. - type: object - properties: - yes_count: - type: string - description: yes_count is the number of yes votes on a proposal. - abstain_count: - type: string - description: >- - abstain_count is the number of abstain votes on a - proposal. - no_count: - type: string - description: no_count is the number of no votes on a proposal. - no_with_veto_count: - type: string - description: >- - no_with_veto_count is the number of no with veto votes - on a proposal. - submit_time: - type: string - format: date-time - description: submit_time is the time of proposal submission. - deposit_end_time: - type: string - format: date-time - description: deposit_end_time is the end time for deposition. - total_deposit: + description: Duration of the voting period. + depositParams: + description: deposit_params defines the parameters related to deposit. + type: object + properties: + minDeposit: type: array items: type: object @@ -22296,60 +23929,48 @@ paths: custom method signatures required by gogoproto. - description: total_deposit is the total deposit on the proposal. - voting_start_time: + description: Minimum deposit for a proposal to enter voting period. + maxDepositPeriod: type: string - format: date-time description: >- - voting_start_time is the starting time to vote on a - proposal. - voting_end_time: - type: string - format: date-time - description: voting_end_time is the end time of voting on a proposal. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the - proposal. - - the recommended format of the metadata is to be found - here: + Maximum period for Atom holders to deposit on a proposal. + Initial value: 2 - https://docs.cosmos.network/v0.47/modules/gov#proposal-3 - title: - type: string - description: 'Since: cosmos-sdk 0.47' - title: title is the title of the proposal - summary: + months. + tallyParams: + description: tally_params defines the parameters related to tally. + type: object + properties: + quorum: type: string - description: 'Since: cosmos-sdk 0.47' - title: summary is a short summary of the proposal - proposer: + format: byte + description: >- + Minimum percentage of total stake needed to vote for a + result to be + + considered valid. + threshold: type: string - description: 'Since: cosmos-sdk 0.47' - title: proposer is the address of the proposal sumbitter - expedited: - type: boolean - description: 'Since: cosmos-sdk 0.50' - title: expedited defines if the proposal is expedited - failed_reason: + format: byte + description: >- + Minimum proportion of Yes votes for proposal to pass. + Default value: 0.5. + vetoThreshold: type: string - description: 'Since: cosmos-sdk 0.50' - title: failed_reason defines the reason why the proposal failed - description: >- - Proposal defines the core field members of a governance - proposal. + format: byte + description: >- + Minimum value of Veto votes to Total votes ratio for + proposal to be + + vetoed. Default value: 1/3. description: >- - QueryProposalResponse is the response type for the Query/Proposal - RPC method. + QueryParamsResponse is the response type for the Query/Params RPC + method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -22360,7 +23981,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -22411,19 +24032,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -22461,7 +24080,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -22471,7 +24090,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -22501,6 +24120,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -22538,39 +24158,149 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. + - name: paramsType + description: >- + params_type defines which parameters to query for, can be one of + "voting", + + "tallying" or "deposit". in: path required: true type: string - format: uint64 tags: - Query - /cosmos/gov/v1/proposals/{proposal_id}/deposits: + /cosmos/gov/v1beta1/proposals: get: - summary: Deposits queries all deposits of a single proposal. - operationId: GovV1Deposit + summary: Proposals queries all proposals based on given status. + operationId: Proposals responses: '200': description: A successful response. schema: type: object properties: - deposits: + proposals: type: array items: type: object properties: - proposal_id: + proposalId: type: string format: uint64 description: proposal_id defines the unique id of the proposal. - depositor: + content: + description: content is the proposal's content. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + status: + description: status defines the proposal status. type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: description: >- - depositor defines the deposit addresses from the - proposals. - amount: + final_tally_result is the final tally result of the + proposal. When + + querying a proposal via gRPC, this field is not + populated until the + + proposal's voting period has ended. + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: >- + abstain is the number of abstain votes on a + proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + noWithVeto: + type: string + description: >- + no_with_veto is the number of no with veto votes on + a proposal. + submitTime: + type: string + format: date-time + description: submit_time is the time of proposal submission. + depositEndTime: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + totalDeposit: type: array items: type: object @@ -22588,18 +24318,26 @@ paths: custom method signatures required by gogoproto. - description: amount to be deposited by depositor. + description: total_deposit is the total deposit on the proposal. + votingStartTime: + type: string + format: date-time + description: >- + voting_start_time is the starting time to vote on a + proposal. + votingEndTime: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. description: >- - Deposit defines an amount deposited by an account address to - an active - + Proposal defines the core field members of a governance proposal. - description: deposits defines the requested deposits. + description: proposals defines all the requested governance proposals. pagination: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -22615,15 +24353,15 @@ paths: was set, its value is undefined otherwise description: >- - QueryDepositsResponse is the response type for the Query/Deposits - RPC method. + QueryProposalsResponse is the response type for the + Query/Proposals RPC + + method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -22634,7 +24372,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -22685,19 +24423,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -22735,7 +24471,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -22745,7 +24481,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -22775,6 +24511,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -22812,12 +24549,42 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true + - name: proposalStatus + description: |- + proposal_status defines the status of the proposals. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + in: query + required: false + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + - name: voter + description: voter defines the voter address for the proposals. + in: query + required: false + type: string + - name: depositor + description: depositor defines the deposit addresses from the proposals. + in: query + required: false type: string - format: uint64 - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -22849,7 +24616,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -22868,48 +24635,148 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/gov/v1/proposals/{proposal_id}/deposits/{depositor}: + /cosmos/gov/v1beta1/proposals/{proposalId}: get: - summary: >- - Deposit queries single deposit information based on proposalID, - depositAddr. - operationId: GovV1Deposit + summary: Proposal queries proposal details based on ProposalID. + operationId: Proposal responses: '200': description: A successful response. schema: type: object properties: - deposit: + proposal: type: object properties: - proposal_id: + proposalId: type: string format: uint64 description: proposal_id defines the unique id of the proposal. - depositor: - type: string - description: >- - depositor defines the deposit addresses from the - proposals. - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- + content: + description: content is the proposal's content. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + status: + description: status defines the proposal status. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: + description: >- + final_tally_result is the final tally result of the + proposal. When + + querying a proposal via gRPC, this field is not populated + until the + + proposal's voting period has ended. + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: abstain is the number of abstain votes on a proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + noWithVeto: + type: string + description: >- + no_with_veto is the number of no with veto votes on a + proposal. + submitTime: + type: string + format: date-time + description: submit_time is the time of proposal submission. + depositEndTime: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + totalDeposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- Coin defines a token with a denomination and an amount. @@ -22917,22 +24784,28 @@ paths: custom method signatures required by gogoproto. - description: amount to be deposited by depositor. + description: total_deposit is the total deposit on the proposal. + votingStartTime: + type: string + format: date-time + description: >- + voting_start_time is the starting time to vote on a + proposal. + votingEndTime: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. description: >- - Deposit defines an amount deposited by an account address to - an active - + Proposal defines the core field members of a governance proposal. description: >- - QueryDepositResponse is the response type for the Query/Deposit + QueryProposalResponse is the response type for the Query/Proposal RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -22943,7 +24816,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -22994,19 +24867,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -23044,7 +24915,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -23054,7 +24925,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -23084,6 +24955,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -23121,59 +24993,90 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id + - name: proposalId description: proposal_id defines the unique id of the proposal. in: path required: true type: string format: uint64 - - name: depositor - description: depositor defines the deposit addresses from the proposals. - in: path - required: true - type: string tags: - Query - /cosmos/gov/v1/proposals/{proposal_id}/tally: + /cosmos/gov/v1beta1/proposals/{proposalId}/deposits: get: - summary: TallyResult queries the tally of a proposal vote. - operationId: GovV1TallyResult + summary: Deposits queries all deposits of a single proposal. + operationId: Deposits responses: '200': description: A successful response. schema: type: object properties: - tally: - description: tally defines the requested tally. + deposits: + type: array + items: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: >- + depositor defines the deposit addresses from the + proposals. + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: amount to be deposited by depositor. + description: >- + Deposit defines an amount deposited by an account address to + an active + + proposal. + description: deposits defines the requested deposits. + pagination: + description: pagination defines the pagination in the response. type: object properties: - yes_count: - type: string - description: yes_count is the number of yes votes on a proposal. - abstain_count: - type: string - description: >- - abstain_count is the number of abstain votes on a - proposal. - no_count: + nextKey: type: string - description: no_count is the number of no votes on a proposal. - no_with_veto_count: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - description: >- - no_with_veto_count is the number of no with veto votes on - a proposal. + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise description: >- - QueryTallyResultResponse is the response type for the Query/Tally + QueryDepositsResponse is the response type for the Query/Deposits RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -23184,7 +25087,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -23235,19 +25138,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -23285,7 +25186,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -23295,7 +25196,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -23325,6 +25226,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -23362,105 +25264,118 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id + - name: proposalId description: proposal_id defines the unique id of the proposal. in: path required: true type: string format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query - /cosmos/gov/v1/proposals/{proposal_id}/votes: + /cosmos/gov/v1beta1/proposals/{proposalId}/deposits/{depositor}: get: - summary: Votes queries votes of a given proposal. - operationId: GovV1Votes + summary: >- + Deposit queries single deposit information based on proposalID, + depositor address. + operationId: Deposit responses: '200': description: A successful response. schema: type: object properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - voter: - type: string - description: voter is the voter address of the proposal. - options: - type: array - items: - type: object - properties: - option: - description: >- - option defines the valid vote options, it must not - contain duplicate vote options. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - weight: - type: string - description: >- - weight is the vote weight associated with the vote - option. - description: >- - WeightedVoteOption defines a unit of vote for vote - split. - description: options is the weighted vote options. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the vote. - - the recommended format of the metadata is to be found - here: - https://docs.cosmos.network/v0.47/modules/gov#vote-5 - description: >- - Vote defines a vote on a governance proposal. - - A Vote consists of a proposal ID, the voter, and the vote - option. - description: votes defines the queried votes. - pagination: - description: pagination defines the pagination in the response. + deposit: + description: deposit defines the requested deposit. type: object properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + proposalId: type: string format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: >- + depositor defines the deposit addresses from the + proposals. + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - was set, its value is undefined otherwise + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: amount to be deposited by depositor. description: >- - QueryVotesResponse is the response type for the Query/Votes RPC - method. + QueryDepositResponse is the response type for the Query/Deposit + RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -23471,7 +25386,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -23522,19 +25437,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -23572,7 +25485,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -23582,7 +25495,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -23612,6 +25525,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -23649,138 +25563,55 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id + - name: proposalId description: proposal_id defines the unique id of the proposal. in: path required: true type: string format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + - name: depositor + description: depositor defines the deposit addresses from the proposals. + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmos/gov/v1/proposals/{proposal_id}/votes/{voter}: + /cosmos/gov/v1beta1/proposals/{proposalId}/tally: get: - summary: Vote queries voted information based on proposalID, voterAddr. - operationId: GovV1Vote + summary: TallyResult queries the tally of a proposal vote. + operationId: TallyResult responses: '200': description: A successful response. schema: type: object properties: - vote: + tally: + description: tally defines the requested tally. type: object properties: - proposal_id: + 'yes': type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - voter: + description: yes is the number of yes votes on a proposal. + abstain: type: string - description: voter is the voter address of the proposal. - options: - type: array - items: - type: object - properties: - option: - description: >- - option defines the valid vote options, it must not - contain duplicate vote options. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - weight: - type: string - description: >- - weight is the vote weight associated with the vote - option. - description: >- - WeightedVoteOption defines a unit of vote for vote - split. - description: options is the weighted vote options. - metadata: + description: abstain is the number of abstain votes on a proposal. + 'no': type: string - title: >- - metadata is any arbitrary metadata attached to the vote. - - the recommended format of the metadata is to be found - here: https://docs.cosmos.network/v0.47/modules/gov#vote-5 - description: >- - Vote defines a vote on a governance proposal. - - A Vote consists of a proposal ID, the voter, and the vote - option. + description: no is the number of no votes on a proposal. + noWithVeto: + type: string + description: >- + no_with_veto is the number of no with veto votes on a + proposal. description: >- - QueryVoteResponse is the response type for the Query/Vote RPC - method. + QueryTallyResultResponse is the response type for the Query/Tally + RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -23791,7 +25622,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -23842,19 +25673,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -23892,7 +25721,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -23902,7 +25731,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -23932,6 +25761,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -23969,148 +25799,113 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id + - name: proposalId description: proposal_id defines the unique id of the proposal. in: path required: true type: string format: uint64 - - name: voter - description: voter defines the voter address for the proposals. - in: path - required: true - type: string tags: - Query - /cosmos/mint/v1beta1/annual_provisions: + /cosmos/gov/v1beta1/proposals/{proposalId}/votes: get: - summary: AnnualProvisions current minting annual provisions value. - operationId: AnnualProvisions + summary: Votes queries votes of a given proposal. + operationId: Votes responses: '200': description: A successful response. schema: type: object properties: - annual_provisions: - type: string - format: byte - description: >- - annual_provisions is the current minting annual provisions - value. - description: |- - QueryAnnualProvisionsResponse is the response type for the - Query/AnnualProvisions RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + votes: type: array items: type: object properties: - type_url: + proposalId: type: string - value: + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: type: string - format: byte - tags: - - Query - /cosmos/mint/v1beta1/inflation: - get: - summary: Inflation returns the current minting inflation value. - operationId: Inflation - responses: - '200': - description: A successful response. - schema: - type: object - properties: - inflation: - type: string - format: byte - description: inflation is the current minting inflation value. - description: >- - QueryInflationResponse is the response type for the - Query/Inflation RPC + description: voter is the voter address of the proposal. + option: + description: >- + Deprecated: Prefer to use `options` instead. This field + is set in queries - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: + if and only if `len(options) == 1` and that option has + weight 1. In all + + other cases, this field will default to + VOTE_OPTION_UNSPECIFIED. type: string - format: byte - tags: - - Query - /cosmos/mint/v1beta1/params: - get: - summary: Params returns the total set of minting parameters. - operationId: MintParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not + contain duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: >- + weight is the vote weight associated with the vote + option. + description: >- + WeightedVoteOption defines a unit of vote for vote + split. + description: options is the weighted vote options. + description: >- + Vote defines a vote on a governance proposal. + + A Vote consists of a proposal ID, the voter, and the vote + option. + description: votes defines the queried votes. + pagination: + description: pagination defines the pagination in the response. type: object properties: - mint_denom: + nextKey: type: string - title: type of coin to mint - inflation_rate_change: - type: string - title: maximum annual change in inflation rate - inflation_max: - type: string - title: maximum inflation rate - inflation_min: - type: string - title: minimum inflation rate - goal_bonded: - type: string - title: goal of percent bonded atoms - blocks_per_year: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string format: uint64 - title: expected blocks per year + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise description: >- - QueryParamsResponse is the response type for the Query/Params RPC + QueryVotesResponse is the response type for the Query/Votes RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -24121,45 +25916,317 @@ paths: items: type: object properties: - type_url: - type: string - value: + '@type': type: string - format: byte + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposalId + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query - /cosmos/params/v1beta1/params: + /cosmos/gov/v1beta1/proposals/{proposalId}/votes/{voter}: get: - summary: |- - Params queries a specific parameter of a module, given its subspace and - key. - operationId: Params + summary: Vote queries voted information based on proposalID, voterAddr. + operationId: Vote responses: '200': description: A successful response. schema: type: object properties: - param: - description: param defines the queried parameter. + vote: + description: vote defines the queried vote. type: object properties: - subspace: + proposalId: type: string - key: + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: type: string - value: + description: voter is the voter address of the proposal. + option: + description: >- + Deprecated: Prefer to use `options` instead. This field is + set in queries + + if and only if `len(options) == 1` and that option has + weight 1. In all + + other cases, this field will default to + VOTE_OPTION_UNSPECIFIED. type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not + contain duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: >- + weight is the vote weight associated with the vote + option. + description: >- + WeightedVoteOption defines a unit of vote for vote + split. + description: options is the weighted vote options. description: >- - QueryParamsResponse is response type for the Query/Params RPC + QueryVoteResponse is the response type for the Query/Vote RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -24170,541 +26237,14 @@ paths: items: type: object properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: subspace - description: subspace defines the module to query the parameter for. - in: query - required: false - type: string - - name: key - description: key defines the key of the parameter in the subspace. - in: query - required: false - type: string - tags: - - Query - /cosmos/params/v1beta1/subspaces: - get: - summary: >- - Subspaces queries for all registered subspaces and all keys for a - subspace. - description: 'Since: cosmos-sdk 0.46' - operationId: Subspaces - responses: - '200': - description: A successful response. - schema: - type: object - properties: - subspaces: - type: array - items: - type: object - properties: - subspace: + '@type': type: string - keys: - type: array - items: - type: string - description: >- - Subspace defines a parameter subspace name and all the keys - that exist for - - the subspace. + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - - Since: cosmos-sdk 0.46 - description: >- - QuerySubspacesResponse defines the response types for querying for - all - - registered subspaces and all keys for a subspace. - - - Since: cosmos-sdk 0.46 - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /cosmos/slashing/v1beta1/params: - get: - summary: Params queries the parameters of slashing module - operationId: SlashingParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - type: object - properties: - signed_blocks_window: - type: string - format: int64 - min_signed_per_window: - type: string - format: byte - downtime_jail_duration: - type: string - slash_fraction_double_sign: - type: string - format: byte - slash_fraction_downtime: - type: string - format: byte - description: >- - Params represents the parameters used for by the slashing - module. - title: >- - QueryParamsResponse is the response type for the Query/Params RPC - method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /cosmos/slashing/v1beta1/signing_infos: - get: - summary: SigningInfos queries signing info of all validators - operationId: SigningInfos - responses: - '200': - description: A successful response. - schema: - type: object - properties: - info: - type: array - items: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: >- - Height at which validator was first a candidate OR was - un-jailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented every time a validator is - bonded in a block and - - _may_ have signed a pre-commit or not. This in - conjunction with the - - signed_blocks_window param determines the index in the - missed block bitmap. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to - liveness downtime. - tombstoned: - type: boolean - description: >- - Whether or not a validator has been tombstoned (killed - out of validator - - set). It is set once the validator commits an - equivocation or for any other - - configured misbehavior. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter of missed (unsigned) blocks. It is used to - avoid unnecessary - - reads in the missed block bitmap. - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their - - liveness activity. - title: info is the signing info of all validators - pagination: - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QuerySigningInfosResponse is the response type for the - Query/SigningInfos RPC - - method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/slashing/v1beta1/signing_infos/{cons_address}: - get: - summary: SigningInfo queries the signing info of given cons address - operationId: SigningInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - val_signing_info: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: >- - Height at which validator was first a candidate OR was - un-jailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented every time a validator is - bonded in a block and - - _may_ have signed a pre-commit or not. This in conjunction - with the - - signed_blocks_window param determines the index in the - missed block bitmap. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to - liveness downtime. - tombstoned: - type: boolean - description: >- - Whether or not a validator has been tombstoned (killed out - of validator - - set). It is set once the validator commits an equivocation - or for any other - - configured misbehavior. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter of missed (unsigned) blocks. It is used to avoid - unnecessary - - reads in the missed block bitmap. - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their - - liveness activity. - title: >- - val_signing_info is the signing info of requested val cons - address - title: >- - QuerySigningInfoResponse is the response type for the - Query/SigningInfo RPC - - method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: cons_address - description: cons_address is the address to query signing info of - in: path - required: true - type: string - tags: - - Query - /cosmos/staking/v1beta1/delegations/{delegator_addr}: - get: - summary: >- - DelegatorDelegations queries all delegations of a given delegator - address. - description: >- - When called from another module, this query might consume a high amount - of - - gas if the pagination field is incorrectly set. - operationId: DelegatorDelegations - responses: - '200': - description: A successful response. - schema: - type: object - properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the encoded address of the - validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the - voting power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that - it contains a - - balance in addition to shares which is more suitable for - client responses. - description: >- - delegation_responses defines all the delegations' info of a - delegator. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryDelegatorDelegationsResponse is response type for the - Query/DelegatorDelegations RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least one "/" character. The last segment of the URL's path must represent @@ -24748,19 +26288,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -24798,7 +26336,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -24808,7 +26346,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -24838,6 +26376,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -24875,252 +26414,79 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. + - name: proposalId + description: proposal_id defines the unique id of the proposal. in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + - name: voter + description: voter defines the voter address for the proposals. + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations: + /cosmos/group/v1/group_info/{groupId}: get: - summary: Redelegations queries redelegations of given address. - description: >- - When called from another module, this query might consume a high amount - of - - gas if the pagination field is incorrectly set. - operationId: Redelegations + summary: GroupInfo queries group info based on group id. + operationId: GroupInfo responses: '200': description: A successful response. schema: type: object properties: - redelegation_responses: - type: array - items: - type: object - properties: - redelegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of - the delegator. - validator_src_address: - type: string - description: >- - validator_src_address is the validator redelegation - source operator address. - validator_dst_address: - type: string - description: >- - validator_dst_address is the validator redelegation - destination operator address. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for - redelegation completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance - when redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of - destination-validator shares created by - redelegation. - unbonding_id: - type: string - format: uint64 - title: >- - Incrementing id that uniquely identifies this - entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding - has been stopped by external modules - description: >- - RedelegationEntry defines a redelegation object - with relevant metadata. - description: entries are the redelegation entries. - description: >- - Redelegation contains the list of a particular - delegator's redelegating bonds - - from a particular source validator to a particular - destination validator. - entries: - type: array - items: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for - redelegation completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance - when redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of - destination-validator shares created by - redelegation. - unbonding_id: - type: string - format: uint64 - title: >- - Incrementing id that uniquely identifies this - entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding - has been stopped by external modules - description: >- - RedelegationEntry defines a redelegation object - with relevant metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a - RedelegationEntry except that it - - contains a balance in addition to shares which is more - suitable for client - - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except - that its entries - - contain a balance in addition to shares which is more - suitable for client - - responses. - pagination: - description: pagination defines the pagination in the response. + info: + description: info is the GroupInfo of the group. type: object properties: - next_key: + id: type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata to attached to the + group. + + the recommended format of the metadata is to be found + here: + https://docs.cosmos.network/v0.47/modules/group#group-1 + version: type: string format: uint64 title: >- - total is total number of results available if - PageRequest.count_total + version is used to track changes to a group's membership + structure that - was set, its value is undefined otherwise - description: >- - QueryRedelegationsResponse is response type for the - Query/Redelegations RPC + would break existing proposals. Whenever any members + weight is changed, - method. + or any member is added or removed this version is + incremented and will + + cause proposals based on older versions of this group to + fail + totalWeight: + type: string + description: total_weight is the sum of the group members' weights. + createdAt: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group was + created. + description: QueryGroupInfoResponse is the Query/GroupInfo response type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -25131,7 +26497,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -25182,19 +26548,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -25232,7 +26596,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -25242,7 +26606,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -25272,6 +26636,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -25309,166 +26674,65 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. + - name: groupId + description: group_id is the unique ID of the group. in: path required: true type: string - - name: src_validator_addr - description: src_validator_addr defines the validator address to redelegate from. - in: query - required: false - type: string - - name: dst_validator_addr - description: dst_validator_addr defines the validator address to redelegate to. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations: + /cosmos/group/v1/group_members/{groupId}: get: - summary: >- - DelegatorUnbondingDelegations queries all unbonding delegations of a - given - - delegator address. - description: >- - When called from another module, this query might consume a high amount - of - - gas if the pagination field is incorrectly set. - operationId: DelegatorUnbondingDelegations + summary: GroupMembers queries members of a group by group id. + operationId: GroupMembers responses: '200': description: A successful response. schema: type: object properties: - unbonding_responses: + members: type: array items: type: object properties: - delegator_address: - type: string - description: >- - delegator_address is the encoded address of the - delegator. - validator_address: + groupId: type: string - description: >- - validator_address is the encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time is the unix time for unbonding - completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially - scheduled to receive at completion. - balance: - type: string - description: >- - balance defines the tokens to receive at - completion. - unbonding_id: - type: string - format: uint64 - title: >- - Incrementing id that uniquely identifies this - entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has - been stopped by external modules - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: entries are the unbonding delegation entries. + format: uint64 + description: group_id is the unique ID of the group. + member: + description: member is the member data. + type: object + properties: + address: + type: string + description: address is the member's account address. + weight: + type: string + description: >- + weight is the member's voting weight that should be + greater than 0. + metadata: + type: string + description: >- + metadata is any arbitrary metadata attached to the + member. + addedAt: + type: string + format: date-time + description: >- + added_at is a timestamp specifying when a member was + added. description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds - - for a single validator in an time-ordered list. + GroupMember represents the relationship between a group and + a member. + description: members are the members of the group with given group_id. pagination: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -25484,17 +26748,13 @@ paths: was set, its value is undefined otherwise description: >- - QueryUnbondingDelegatorDelegationsResponse is response type for - the - - Query/UnbondingDelegatorDelegations RPC method. + QueryGroupMembersResponse is the Query/GroupMembersResponse + response type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -25505,7 +26765,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -25556,19 +26816,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -25606,7 +26864,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -25616,7 +26874,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -25646,6 +26904,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -25683,11 +26942,12 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. + - name: groupId + description: group_id is the unique ID of the group. in: path required: true type: string + format: uint64 - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -25719,7 +26979,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -25738,45 +26998,61 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators: + /cosmos/group/v1/group_policies_by_admin/{admin}: get: - summary: |- - DelegatorValidators queries all validators info for given delegator - address. - description: >- - When called from another module, this query might consume a high amount - of - - gas if the pagination field is incorrectly set. - operationId: StakingDelegatorValidators + summary: GroupPoliciesByAdmin queries group policies by admin address. + operationId: GroupPoliciesByAdmin responses: '200': description: A successful response. schema: type: object properties: - validators: + groupPolicies: type: array items: type: object properties: - operator_address: + address: + type: string + description: address is the account address of group policy. + groupId: + type: string + format: uint64 + description: group_id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the group + policy. + + the recommended format of the metadata is to be found + here: + + https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 + version: type: string + format: uint64 description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: + version is used to track changes to a group's + GroupPolicyInfo structure that + + would create a different result on a running proposal. + decisionPolicy: + description: >- + decision_policy specifies the group policy's decision + policy. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -25827,282 +27103,431 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} + createdAt: + type: string + format: date-time description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + created_at is a timestamp specifying when a group policy + was created. + description: >- + GroupPolicyInfo represents the high-level on-chain + information for a group policy. + description: >- + group_policies are the group policies info with provided + admin. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - URL that describes the type of the serialized message. + was set, its value is undefined otherwise + description: >- + QueryGroupPoliciesByAdminResponse is the + Query/GroupPoliciesByAdmin response type. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + protocol buffer message. This string must contain at + least - Protobuf library provides support to pack/unpack Any - values in the form + one "/" character. The last segment of the URL's path + must represent - of utility functions or additional generated methods of - the Any type. + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in + a canonical form - Example 1: Pack and unpack a message in C++. + (e.g., leading "." is not accepted). - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - Example 2: Pack and unpack a message in Java. + In practice, teams usually precompile into the binary + all types that they - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + expect it to use in the context of Any. However, for + URLs which use the - Example 3: Pack and unpack a message in Python. + scheme `http`, `https`, or no scheme, one can optionally + set up a type - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + server that maps type URLs to message definitions as + follows: - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + * If no scheme is provided, `https` is assumed. - The pack methods provided by protobuf library will by - default use + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + Note: this functionality is not currently available in + the official - methods only use the fully qualified type name after the - last '/' + protobuf release, and it is not used for type URLs + beginning with - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + type.googleapis.com. As of May 2023, there are no widely + used type server - name "y.z". + implementations and no plans to implement one. - JSON + Schemes other than `http`, `https` (or the empty scheme) + might be + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - The JSON representation of an `Any` value uses the - regular + URL that describes the type of the serialized message. - representation of the deserialized, embedded message, - with an - additional field `@type` which contains the type URL. - Example: + Protobuf library provides support to pack/unpack Any values + in the form - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + of utility functions or additional generated methods of the + Any type. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a - custom JSON + Example 1: Pack and unpack a message in C++. - representation, that representation will be embedded - adding a field + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - `value` which holds the custom JSON in addition to the - `@type` + Example 2: Pack and unpack a message in Java. - field. Example (for message - [google.protobuf.Duration][]): + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed - from bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: admin + description: admin is the admin address of the group policy. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean + tags: + - Query + /cosmos/group/v1/group_policies_by_group/{groupId}: + get: + summary: GroupPoliciesByGroup queries group policies by group id. + operationId: GroupPoliciesByGroup + responses: + '200': + description: A successful response. + schema: + type: object + properties: + groupPolicies: + type: array + items: + type: object + properties: + address: type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: + description: address is the account address of group policy. + groupId: type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: + format: uint64 + description: group_id is the unique ID of the group. + admin: type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: + description: admin is the account address of the group admin. + metadata: type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: + title: >- + metadata is any arbitrary metadata attached to the group + policy. + + the recommended format of the metadata is to be found + here: + + https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 + version: type: string - format: date-time + format: uint64 description: >- - unbonding_time defines, if unbonding, the min time for - the validator to complete unbonding. - commission: - description: commission defines the commission parameters. + version is used to track changes to a group's + GroupPolicyInfo structure that + + would create a different result on a running proposal. + decisionPolicy: + description: >- + decision_policy specifies the group policy's decision + policy. type: object properties: - commission_rates: - description: >- - commission_rates defines the initial commission - rates to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to - delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate - which validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily - increase of the validator commission, as a - fraction. - update_time: + '@type': type: string - format: date-time description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. + A URL/resource name that uniquely identifies the + type of the serialized + protocol buffer message. This string must contain at + least - Since: cosmos-sdk 0.46 - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - strictly positive if this validator's unbonding has been - stopped by external modules - unbonding_ids: - type: array - items: - type: string - format: uint64 - title: >- - list of unbonding ids, each uniquely identifing an - unbonding of this validator - description: >- - Validator defines a validator, together with the total - amount of the + one "/" character. The last segment of the URL's + path must represent - Validator's bond shares and their exchange rate to coins. - Slashing results in + the fully qualified name of the type (as in - a decrease in the exchange rate, allowing correct - calculation of future + `path/google.protobuf.Duration`). The name should be + in a canonical form - undelegations without iterating over delegators. When coins - are delegated to + (e.g., leading "." is not accepted). - this validator, the validator is credited with a delegation - whose number of - bond shares is based on the amount of coins delegated - divided by the current + In practice, teams usually precompile into the + binary all types that they - exchange rate. Voting power can be calculated as total - bonded shares + expect it to use in the context of Any. However, for + URLs which use the - multiplied by exchange rate. - description: validators defines the validators' info of a delegator. + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + createdAt: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group policy + was created. + description: >- + GroupPolicyInfo represents the high-level on-chain + information for a group policy. + description: >- + group_policies are the group policies info associated with the + provided group. pagination: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -26117,16 +27542,14 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - description: |- - QueryDelegatorValidatorsResponse is response type for the - Query/DelegatorValidators RPC method. + description: >- + QueryGroupPoliciesByGroupResponse is the + Query/GroupPoliciesByGroup response type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -26137,7 +27560,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -26188,19 +27611,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -26238,7 +27659,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -26248,7 +27669,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -26278,6 +27699,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -26315,11 +27737,12 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. + - name: groupId + description: group_id is the unique ID of the group policy's group. in: path required: true type: string + format: uint64 - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -26351,7 +27774,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -26370,38 +27793,62 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}: + /cosmos/group/v1/group_policy_info/{address}: get: - summary: |- - DelegatorValidator queries validator info for given delegator validator - pair. - operationId: DelegatorValidator + summary: >- + GroupPolicyInfo queries group policy info based on account address of + group policy. + operationId: GroupPolicyInfo responses: '200': description: A successful response. schema: type: object properties: - validator: + info: + description: info is the GroupPolicyInfo of the group policy. type: object properties: - operator_address: + address: + type: string + description: address is the account address of group policy. + groupId: + type: string + format: uint64 + description: group_id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the group + policy. + + the recommended format of the metadata is to be found + here: + + https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 + version: type: string + format: uint64 description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: + version is used to track changes to a group's + GroupPolicyInfo structure that + + would create a different result on a running proposal. + decisionPolicy: + description: >- + decision_policy specifies the group policy's decision + policy. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type @@ -26452,283 +27899,309 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + additionalProperties: {} + createdAt: + type: string + format: date-time description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + created_at is a timestamp specifying when a group policy + was created. + description: >- + QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response + type. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - URL that describes the type of the serialized message. + protocol buffer message. This string must contain at + least + one "/" character. The last segment of the URL's path + must represent - Protobuf library provides support to pack/unpack Any - values in the form + the fully qualified name of the type (as in - of utility functions or additional generated methods of - the Any type. + `path/google.protobuf.Duration`). The name should be in + a canonical form + (e.g., leading "." is not accepted). - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + In practice, teams usually precompile into the binary + all types that they - Example 2: Pack and unpack a message in Java. + expect it to use in the context of Any. However, for + URLs which use the - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: - Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + } - Example 4: Pack and unpack a message in Go + Example 2: Pack and unpack a message in Java. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - The pack methods provided by protobuf library will by - default use + Example 3: Pack and unpack a message in Python. - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - methods only use the fully qualified type name after the - last '/' + Example 4: Pack and unpack a message in Go - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - name "y.z". + The pack methods provided by protobuf library will by + default use + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - JSON + methods only use the fully qualified type name after the + last '/' + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - The JSON representation of an `Any` value uses the regular + name "y.z". - representation of the deserialized, embedded message, with - an - additional field `@type` which contains the type URL. - Example: + JSON - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + ==== - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + The JSON representation of an `Any` value uses the regular - If the embedded message type is well-known and has a - custom JSON + representation of the deserialized, embedded message, with + an - representation, that representation will be embedded - adding a field + additional field `@type` which contains the type URL. + Example: - `value` which holds the custom JSON in addition to the - `@type` + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - field. Example (for message [google.protobuf.Duration][]): + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from - bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates - to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, - as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase - of the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. + If the embedded message type is well-known and has a custom + JSON + representation, that representation will be embedded adding + a field - Since: cosmos-sdk 0.46 - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - strictly positive if this validator's unbonding has been - stopped by external modules - unbonding_ids: - type: array - items: - type: string - format: uint64 - title: >- - list of unbonding ids, each uniquely identifing an - unbonding of this validator - description: >- - Validator defines a validator, together with the total amount - of the + `value` which holds the custom JSON in addition to the + `@type` - Validator's bond shares and their exchange rate to coins. - Slashing results in + field. Example (for message [google.protobuf.Duration][]): - a decrease in the exchange rate, allowing correct calculation - of future + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: address + description: address is the account address of the group policy. + in: path + required: true + type: string + tags: + - Query + /cosmos/group/v1/groups: + get: + summary: Groups queries all groups in state. + operationId: Groups + responses: + '200': + description: A successful response. + schema: + type: object + properties: + groups: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata to attached to the + group. - undelegations without iterating over delegators. When coins - are delegated to + the recommended format of the metadata is to be found + here: + https://docs.cosmos.network/v0.47/modules/group#group-1 + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership + structure that - this validator, the validator is credited with a delegation - whose number of + would break existing proposals. Whenever any members + weight is changed, - bond shares is based on the amount of coins delegated divided - by the current + or any member is added or removed this version is + incremented and will - exchange rate. Voting power can be calculated as total bonded - shares + cause proposals based on older versions of this group to + fail + totalWeight: + type: string + description: total_weight is the sum of the group members' weights. + createdAt: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group was + created. + description: >- + GroupInfo represents the high-level on-chain information for + a group. + description: '`groups` is all the groups present in state.' + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - multiplied by exchange rate. - description: |- - QueryDelegatorValidatorResponse response type for the - Query/DelegatorValidator RPC method. + was set, its value is undefined otherwise + description: QueryGroupsResponse is the Query/Groups response type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -26739,7 +28212,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -26790,19 +28263,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -26840,7 +28311,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -26850,7 +28321,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -26880,6 +28351,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -26917,457 +28389,147 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false type: string - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query - /cosmos/staking/v1beta1/historical_info/{height}: + /cosmos/group/v1/groups_by_admin/{admin}: get: - summary: HistoricalInfo queries the historical info for given height. - operationId: HistoricalInfo + summary: GroupsByAdmin queries groups by admin address. + operationId: GroupsByAdmin responses: '200': description: A successful response. schema: type: object properties: - hist: - description: hist defines the historical info at the given height. - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, - - including all blockchain data structures and the rules - of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a block header. - valset: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the - validator's operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must - contain at least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name - should be in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, - for URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message - definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup - results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently - available in the official - - protobuf release, and it is not used for type - URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of - the above specified type. - description: >- - `Any` contains an arbitrary serialized protocol - buffer message along with a - - URL that describes the type of the serialized - message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods - of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will - by default use - - 'type.googleapis.com/full.type.name' as the type URL - and the unpack - - methods only use the fully qualified type name after - the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" - will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded - message, with an - - additional field `@type` which contains the type - URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to - the `@type` + groups: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata to attached to the + group. - field. Example (for message - [google.protobuf.Duration][]): + the recommended format of the metadata is to be found + here: + https://docs.cosmos.network/v0.47/modules/group#group-1 + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership + structure that - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed - from bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature - (ex. UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height - at which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time - for the validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission - rates to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to - delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate - which validator can ever charge, as a - fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily - increase of the validator commission, as a - fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate - was changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. + would break existing proposals. Whenever any members + weight is changed, + or any member is added or removed this version is + incremented and will - Since: cosmos-sdk 0.46 - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - strictly positive if this validator's unbonding has - been stopped by external modules - unbonding_ids: - type: array - items: - type: string - format: uint64 - title: >- - list of unbonding ids, each uniquely identifing an - unbonding of this validator + cause proposals based on older versions of this group to + fail + totalWeight: + type: string + description: total_weight is the sum of the group members' weights. + createdAt: + type: string + format: date-time description: >- - Validator defines a validator, together with the total - amount of the - - Validator's bond shares and their exchange rate to - coins. Slashing results in - - a decrease in the exchange rate, allowing correct - calculation of future - - undelegations without iterating over delegators. When - coins are delegated to - - this validator, the validator is credited with a - delegation whose number of - - bond shares is based on the amount of coins delegated - divided by the current - - exchange rate. Voting power can be calculated as total - bonded shares + created_at is a timestamp specifying when a group was + created. + description: >- + GroupInfo represents the high-level on-chain information for + a group. + description: groups are the groups info with the provided admin. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - multiplied by exchange rate. + was set, its value is undefined otherwise description: >- - QueryHistoricalInfoResponse is response type for the - Query/HistoricalInfo RPC - - method. + QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse + response type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -27378,7 +28540,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -27429,19 +28591,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -27479,7 +28639,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -27489,7 +28649,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -27519,6 +28679,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -27556,65 +28717,152 @@ paths: "value": "1.212s" } parameters: - - name: height - description: height defines at which height to query the historical info. + - name: admin + description: admin is the account address of a group's admin. in: path required: true type: string - format: int64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query - /cosmos/staking/v1beta1/params: + /cosmos/group/v1/groups_by_member/{address}: get: - summary: Parameters queries the staking parameters. - operationId: StakingParams + summary: GroupsByMember queries groups by member address. + operationId: GroupsByMember responses: '200': description: A successful response. schema: type: object properties: - params: - description: params holds all the parameters of this module. + groups: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata to attached to the + group. + + the recommended format of the metadata is to be found + here: + https://docs.cosmos.network/v0.47/modules/group#group-1 + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership + structure that + + would break existing proposals. Whenever any members + weight is changed, + + or any member is added or removed this version is + incremented and will + + cause proposals based on older versions of this group to + fail + totalWeight: + type: string + description: total_weight is the sum of the group members' weights. + createdAt: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group was + created. + description: >- + GroupInfo represents the high-level on-chain information for + a group. + description: groups are the groups info with the provided group member. + pagination: + description: pagination defines the pagination in the response. type: object properties: - unbonding_time: - type: string - description: unbonding_time is the time duration of unbonding. - max_validators: - type: integer - format: int64 - description: max_validators is the maximum number of validators. - max_entries: - type: integer - format: int64 - description: >- - max_entries is the max entries for either unbonding - delegation or redelegation (per pair/trio). - historical_entries: - type: integer - format: int64 - description: >- - historical_entries is the number of historical entries to - persist. - bond_denom: + nextKey: type: string - description: bond_denom defines the bondable coin denomination. - min_commission_rate: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string + format: uint64 title: >- - min_commission_rate is the chain-wide minimum commission - rate that a validator can charge their delegators + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise description: >- - QueryParamsResponse is response type for the Query/Params RPC - method. + QueryGroupsByMemberResponse is the Query/GroupsByMember response + type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -27625,7 +28873,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -27676,19 +28924,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -27726,7 +28972,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -27736,7 +28982,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -27766,6 +29012,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -27802,34 +29049,397 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - tags: - - Query - /cosmos/staking/v1beta1/pool: - get: - summary: Pool queries the pool info. - operationId: Pool - responses: - '200': - description: A successful response. - schema: - type: object - properties: - pool: - description: pool defines the pool info. + parameters: + - name: address + description: address is the group member address. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean + tags: + - Query + /cosmos/group/v1/proposal/{proposalId}: + get: + summary: Proposal queries a proposal based on proposal id. + operationId: GroupProposal + responses: + '200': + description: A successful response. + schema: + type: object + properties: + proposal: + description: proposal is the proposal info. type: object properties: - not_bonded_tokens: + id: type: string - bonded_tokens: + format: uint64 + description: id is the unique id of the proposal. + groupPolicyAddress: type: string - description: QueryPoolResponse is response type for the Query/Pool RPC method. + description: >- + group_policy_address is the account address of group + policy. + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the + proposal. + + the recommended format of the metadata is to be found + here: + + https://docs.cosmos.network/v0.47/modules/group#proposal-4 + proposers: + type: array + items: + type: string + description: proposers are the account addresses of the proposers. + submitTime: + type: string + format: date-time + description: >- + submit_time is a timestamp specifying when a proposal was + submitted. + groupVersion: + type: string + format: uint64 + description: >- + group_version tracks the version of the group at proposal + submission. + + This field is here for informational purposes only. + groupPolicyVersion: + type: string + format: uint64 + description: >- + group_policy_version tracks the version of the group + policy at proposal submission. + + When a decision policy is changed, existing proposals from + previous policy + + versions will become invalid with the `ABORTED` status. + + This field is here for informational purposes only. + status: + description: >- + status represents the high level position in the life + cycle of the proposal. Initial value is Submitted. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: + description: >- + final_tally_result contains the sums of all weighted votes + for this + + proposal for each vote option. It is empty at submission, + and only + + populated after tallying, at voting period end or at + proposal execution, + + whichever happens first. + type: object + properties: + yesCount: + type: string + description: yes_count is the weighted sum of yes votes. + abstainCount: + type: string + description: abstain_count is the weighted sum of abstainers. + noCount: + type: string + description: no_count is the weighted sum of no votes. + noWithVetoCount: + type: string + description: no_with_veto_count is the weighted sum of veto. + votingPeriodEnd: + type: string + format: date-time + description: >- + voting_period_end is the timestamp before which voting + must be done. + + Unless a successful MsgExec is called before (to execute a + proposal whose + + tally is successful before the voting period ends), + tallying will be done + + at this point, and the `final_tally_result`and `status` + fields will be + + accordingly updated. + executorResult: + description: >- + executor_result is the final result of the proposal + execution. Initial value is NotRun. + type: string + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of `sdk.Msg`s that will be executed if + the proposal passes. + title: + type: string + title: title is the title of the proposal + summary: + type: string + title: summary is a short summary of the proposal + description: QueryProposalResponse is the Query/Proposal response type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -27840,7 +29450,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -27891,19 +29501,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -27941,7 +29549,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -27951,7 +29559,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -27981,6 +29589,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -28017,466 +29626,134 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } + parameters: + - name: proposalId + description: proposal_id is the unique ID of a proposal. + in: path + required: true + type: string + format: uint64 tags: - Query - /cosmos/staking/v1beta1/validators: + /cosmos/group/v1/proposals/{proposalId}/tally: get: - summary: Validators queries all validators that match the given status. - description: >- - When called from another module, this query might consume a high amount - of + summary: >- + TallyResult returns the tally result of a proposal. If the proposal is - gas if the pagination field is incorrectly set. - operationId: Validators + still in voting period, then this query computes the current tally + state, + + which might not be final. On the other hand, if the proposal is final, + + then it simply returns the `final_tally_result` state stored in the + + proposal itself. + operationId: GroupTallyResult responses: '200': description: A successful response. schema: type: object properties: - validators: + tally: + description: tally defines the requested tally. + type: object + properties: + yesCount: + type: string + description: yes_count is the weighted sum of yes votes. + abstainCount: + type: string + description: abstain_count is the weighted sum of abstainers. + noCount: + type: string + description: no_count is the weighted sum of no votes. + noWithVetoCount: + type: string + description: no_with_veto_count is the weighted sum of veto. + description: QueryTallyResultResponse is the Query/TallyResult response type. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - operator_address: + '@type': type: string description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized + A URL/resource name that uniquely identifies the type of + the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's - path must represent + one "/" character. The last segment of the URL's path + must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name should be in + a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the - binary all types that they + In practice, teams usually precompile into the binary + all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can optionally + set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available - in the official + Note: this functionality is not currently available in + the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty - scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Schemes other than `http`, `https` (or the empty scheme) + might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed - from bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for - the validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission - rates to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to - delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate - which validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily - increase of the validator commission, as a - fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - - - Since: cosmos-sdk 0.46 - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - strictly positive if this validator's unbonding has been - stopped by external modules - unbonding_ids: - type: array - items: - type: string - format: uint64 - title: >- - list of unbonding ids, each uniquely identifing an - unbonding of this validator - description: >- - Validator defines a validator, together with the total - amount of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct - calculation of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated - divided by the current - - exchange rate. Voting power can be calculated as total - bonded shares - - multiplied by exchange rate. - description: validators contains all the queried validators. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: >- - QueryValidatorsResponse is response type for the Query/Validators - RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. Protobuf library provides support to pack/unpack Any values @@ -28509,7 +29786,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -28519,7 +29796,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -28549,6 +29826,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -28586,418 +29864,380 @@ paths: "value": "1.212s" } parameters: - - name: status - description: status enables to query for validators matching a given status. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + - name: proposalId + description: proposal_id is the unique id of a proposal. + in: path + required: true type: string format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmos/staking/v1beta1/validators/{validator_addr}: + /cosmos/group/v1/proposals_by_group_policy/{address}: get: - summary: Validator queries validator info for given validator address. - operationId: Validator + summary: >- + ProposalsByGroupPolicy queries proposals based on account address of + group policy. + operationId: ProposalsByGroupPolicy responses: '200': description: A successful response. schema: type: object properties: - validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form + proposals: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique id of the proposal. + groupPolicyAddress: + type: string + description: >- + group_policy_address is the account address of group + policy. + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the + proposal. - (e.g., leading "." is not accepted). + the recommended format of the metadata is to be found + here: + https://docs.cosmos.network/v0.47/modules/group#proposal-4 + proposers: + type: array + items: + type: string + description: proposers are the account addresses of the proposers. + submitTime: + type: string + format: date-time + description: >- + submit_time is a timestamp specifying when a proposal + was submitted. + groupVersion: + type: string + format: uint64 + description: >- + group_version tracks the version of the group at + proposal submission. - In practice, teams usually precompile into the binary - all types that they + This field is here for informational purposes only. + groupPolicyVersion: + type: string + format: uint64 + description: >- + group_policy_version tracks the version of the group + policy at proposal submission. - expect it to use in the context of Any. However, for - URLs which use the + When a decision policy is changed, existing proposals + from previous policy - scheme `http`, `https`, or no scheme, one can - optionally set up a type + versions will become invalid with the `ABORTED` status. - server that maps type URLs to message definitions as - follows: + This field is here for informational purposes only. + status: + description: >- + status represents the high level position in the life + cycle of the proposal. Initial value is Submitted. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: + description: >- + final_tally_result contains the sums of all weighted + votes for this + proposal for each vote option. It is empty at + submission, and only - * If no scheme is provided, `https` is assumed. + populated after tallying, at voting period end or at + proposal execution, - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + whichever happens first. + type: object + properties: + yesCount: + type: string + description: yes_count is the weighted sum of yes votes. + abstainCount: + type: string + description: abstain_count is the weighted sum of abstainers. + noCount: + type: string + description: no_count is the weighted sum of no votes. + noWithVetoCount: + type: string + description: no_with_veto_count is the weighted sum of veto. + votingPeriodEnd: + type: string + format: date-time + description: >- + voting_period_end is the timestamp before which voting + must be done. - Note: this functionality is not currently available in - the official + Unless a successful MsgExec is called before (to execute + a proposal whose - protobuf release, and it is not used for type URLs - beginning with + tally is successful before the voting period ends), + tallying will be done - type.googleapis.com. + at this point, and the `final_tally_result`and `status` + fields will be + accordingly updated. + executorResult: + description: >- + executor_result is the final result of the proposal + execution. Initial value is NotRun. + type: string + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - Schemes other than `http`, `https` (or the empty - scheme) might be + protocol buffer message. This string must contain + at least - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + one "/" character. The last segment of the URL's + path must represent - URL that describes the type of the serialized message. + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should + be in a canonical form - Protobuf library provides support to pack/unpack Any - values in the form + (e.g., leading "." is not accepted). - of utility functions or additional generated methods of - the Any type. + In practice, teams usually precompile into the + binary all types that they - Example 1: Pack and unpack a message in C++. + expect it to use in the context of Any. However, + for URLs which use the - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + scheme `http`, `https`, or no scheme, one can + optionally set up a type - Example 2: Pack and unpack a message in Java. + server that maps type URLs to message definitions + as follows: - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - Example 3: Pack and unpack a message in Python. + * If no scheme is provided, `https` is assumed. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Example 4: Pack and unpack a message in Go + Note: this functionality is not currently + available in the official - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + protobuf release, and it is not used for type URLs + beginning with - The pack methods provided by protobuf library will by - default use + type.googleapis.com. As of May 2023, there are no + widely used type server - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + implementations and no plans to implement one. - methods only use the fully qualified type name after the - last '/' - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + Schemes other than `http`, `https` (or the empty + scheme) might be - name "y.z". + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - JSON + Protobuf library provides support to pack/unpack Any + values in the form - The JSON representation of an `Any` value uses the regular + of utility functions or additional generated methods + of the Any type. - representation of the deserialized, embedded message, with - an - additional field `@type` which contains the type URL. - Example: + Example 1: Pack and unpack a message in C++. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + Example 2: Pack and unpack a message in Java. - If the embedded message type is well-known and has a - custom JSON + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - representation, that representation will be embedded - adding a field + Example 3: Pack and unpack a message in Python. - `value` which holds the custom JSON in addition to the - `@type` + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - field. Example (for message [google.protobuf.Duration][]): + Example 4: Pack and unpack a message in Go - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from - bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates - to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, - as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase - of the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + The pack methods provided by protobuf library will by + default use - Since: cosmos-sdk 0.46 - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - strictly positive if this validator's unbonding has been - stopped by external modules - unbonding_ids: - type: array - items: - type: string - format: uint64 - title: >- - list of unbonding ids, each uniquely identifing an - unbonding of this validator - description: >- - Validator defines a validator, together with the total amount - of the + 'type.googleapis.com/full.type.name' as the type URL + and the unpack + + methods only use the fully qualified type name after + the last '/' - Validator's bond shares and their exchange rate to coins. - Slashing results in + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - a decrease in the exchange rate, allowing correct calculation - of future + name "y.z". - undelegations without iterating over delegators. When coins - are delegated to - this validator, the validator is credited with a delegation - whose number of + JSON - bond shares is based on the amount of coins delegated divided - by the current + ==== - exchange rate. Voting power can be calculated as total bonded - shares + The JSON representation of an `Any` value uses the + regular - multiplied by exchange rate. - title: >- - QueryValidatorResponse is response type for the Query/Validator - RPC method + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of `sdk.Msg`s that will be executed + if the proposal passes. + title: + type: string + title: title is the title of the proposal + summary: + type: string + title: summary is a short summary of the proposal + description: >- + Proposal defines a group proposal. Any member of a group can + submit a proposal + + for a group policy to decide upon. + + A proposal consists of a set of `sdk.Msg`s that will be + executed if the proposal + + passes as well as some optional metadata associated with the + proposal. + description: proposals are the proposals with given group policy. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryProposalsByGroupPolicyResponse is the + Query/ProposalByGroupPolicy response type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -29008,7 +30248,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -29059,19 +30299,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -29109,7 +30347,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -29119,7 +30357,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -29149,6 +30387,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -29186,107 +30425,120 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. + - name: address + description: >- + address is the account address of the group policy related to + proposals. in: path required: true type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query - /cosmos/staking/v1beta1/validators/{validator_addr}/delegations: + /cosmos/group/v1/vote_by_proposal_voter/{proposalId}/{voter}: get: - summary: ValidatorDelegations queries delegate info for given validator. - description: >- - When called from another module, this query might consume a high amount - of - - gas if the pagination field is incorrectly set. - operationId: ValidatorDelegations + summary: VoteByProposalVoter queries a vote by proposal id and voter. + operationId: VoteByProposalVoter responses: '200': description: A successful response. schema: type: object properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the encoded address of the - validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the - voting power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that - it contains a - - balance in addition to shares which is more suitable for - client responses. - pagination: - description: pagination defines the pagination in the response. + vote: + description: vote is the vote with given proposal_id and voter. type: object properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + proposalId: type: string format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string title: >- - total is total number of results available if - PageRequest.count_total + metadata is any arbitrary metadata attached to the vote. - was set, its value is undefined otherwise - title: |- - QueryValidatorDelegationsResponse is response type for the - Query/ValidatorDelegations RPC method + the recommended format of the metadata is to be found + here: + https://docs.cosmos.network/v0.47/modules/group#vote-2 + submitTime: + type: string + format: date-time + description: submit_time is the timestamp when the vote was submitted. + title: Vote represents a vote for a proposal.string metadata + description: >- + QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter + response type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -29297,7 +30549,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -29348,19 +30600,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -29398,7 +30648,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -29408,7 +30658,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -29438,6 +30688,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -29475,137 +30726,94 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. + - name: proposalId + description: proposal_id is the unique ID of a proposal. in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + - name: voter + description: voter is a proposal voter account address. + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}: + /cosmos/group/v1/votes_by_proposal/{proposalId}: get: - summary: Delegation queries delegate info for given validator delegator pair. - operationId: Delegation + summary: VotesByProposal queries a vote by proposal id. + operationId: VotesByProposal responses: '200': description: A successful response. schema: type: object properties: - delegation_response: + votes: + type: array + items: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the vote. + + the recommended format of the metadata is to be found + here: + https://docs.cosmos.network/v0.47/modules/group#vote-2 + submitTime: + type: string + format: date-time + description: >- + submit_time is the timestamp when the vote was + submitted. + title: Vote represents a vote for a proposal.string metadata + description: votes are the list of votes for given proposal_id. + pagination: + description: pagination defines the pagination in the response. type: object properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the encoded address of the - validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the voting - power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it - contains a + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - balance in addition to shares which is more suitable for - client responses. + was set, its value is undefined otherwise description: >- - QueryDelegationResponse is response type for the Query/Delegation - RPC method. + QueryVotesByProposalResponse is the Query/VotesByProposal response + type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -29616,7 +30824,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -29667,19 +30875,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -29717,7 +30923,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -29727,7 +30933,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -29757,6 +30963,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -29794,95 +31001,140 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. + - name: proposalId + description: proposal_id is the unique ID of a proposal. in: path required: true type: string - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true + format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query - /cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation: + /cosmos/group/v1/votes_by_voter/{voter}: get: - summary: |- - UnbondingDelegation queries unbonding info for given validator delegator - pair. - operationId: UnbondingDelegation + summary: VotesByVoter queries a vote by voter. + operationId: VotesByVoter responses: '200': description: A successful response. schema: type: object properties: - unbond: + votes: + type: array + items: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the vote. + + the recommended format of the metadata is to be found + here: + https://docs.cosmos.network/v0.47/modules/group#vote-2 + submitTime: + type: string + format: date-time + description: >- + submit_time is the timestamp when the vote was + submitted. + title: Vote represents a vote for a proposal.string metadata + description: votes are the list of votes by given voter. + pagination: + description: pagination defines the pagination in the response. type: object properties: - delegator_address: + nextKey: type: string - description: delegator_address is the encoded address of the delegator. - validator_address: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - description: validator_address is the encoded address of the validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time is the unix time for unbonding - completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially - scheduled to receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - unbonding_id: - type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been - stopped by external modules - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds - - for a single validator in an time-ordered list. - description: >- - QueryDelegationResponse is response type for the - Query/UnbondingDelegation + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - RPC method. + was set, its value is undefined otherwise + description: QueryVotesByVoterResponse is the Query/VotesByVoter response type. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -29893,7 +31145,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -29944,19 +31196,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -29994,7 +31244,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -30004,7 +31254,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -30034,6 +31284,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -30071,129 +31322,226 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. + - name: voter + description: voter is a proposal voter account address. in: path required: true type: string - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query - /cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations: + /cosmos/mint/v1beta1/annual_provisions: get: - summary: >- - ValidatorUnbondingDelegations queries unbonding delegations of a - validator. - description: >- - When called from another module, this query might consume a high amount - of - - gas if the pagination field is incorrectly set. - operationId: ValidatorUnbondingDelegations + summary: AnnualProvisions current minting annual provisions value. + operationId: AnnualProvisions responses: '200': description: A successful response. schema: type: object properties: - unbonding_responses: + annualProvisions: + type: string + format: byte + description: >- + annual_provisions is the current minting annual provisions + value. + description: |- + QueryAnnualProvisionsResponse is the response type for the + Query/AnnualProvisions RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - delegator_address: - type: string - description: >- - delegator_address is the encoded address of the - delegator. - validator_address: + '@type': type: string - description: >- - validator_address is the encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time is the unix time for unbonding - completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially - scheduled to receive at completion. - balance: - type: string - description: >- - balance defines the tokens to receive at - completion. - unbonding_id: - type: string - format: uint64 - title: >- - Incrementing id that uniquely identifies this - entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has - been stopped by external modules - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds + additionalProperties: {} + tags: + - Query + /cosmos/mint/v1beta1/inflation: + get: + summary: Inflation returns the current minting inflation value. + operationId: Inflation + responses: + '200': + description: A successful response. + schema: + type: object + properties: + inflation: + type: string + format: byte + description: inflation is the current minting inflation value. + description: >- + QueryInflationResponse is the response type for the + Query/Inflation RPC - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. + method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + /cosmos/mint/v1beta1/params: + get: + summary: Params returns the total set of minting parameters. + operationId: MintParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. type: object properties: - next_key: + mintDenom: type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + title: type of coin to mint + inflationRateChange: + type: string + title: maximum annual change in inflation rate + inflationMax: + type: string + title: maximum inflation rate + inflationMin: + type: string + title: minimum inflation rate + goalBonded: + type: string + title: goal of percent bonded atoms + blocksPerYear: type: string format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise + title: expected blocks per year description: >- - QueryValidatorUnbondingDelegationsResponse is response type for - the - - Query/ValidatorUnbondingDelegations RPC method. + QueryParamsResponse is the response type for the Query/Params RPC + method. default: description: An unexpected error response. schema: type: object properties: - error: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + /cosmos/nft/v1beta1/balance/{owner}/{classId}: + get: + summary: >- + Balance queries the number of NFTs of a given class owned by the owner, + same as balanceOf in ERC721 + operationId: NftBalance + responses: + '200': + description: A successful response. + schema: + type: object + properties: + amount: type: string + format: uint64 + title: >- + amount is the number of all NFTs of a given class owned by the + owner + title: >- + QueryBalanceResponse is the response type for the Query/Balance + RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: code: type: integer format: int32 @@ -30204,7 +31552,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -30255,19 +31603,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -30305,7 +31651,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -30315,7 +31661,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -30345,6 +31691,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -30382,86 +31729,278 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. + - name: owner + description: owner is the owner address of the nft in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false + - name: classId + description: class_id associated with the nft + in: path + required: true type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. + tags: + - Query + /cosmos/nft/v1beta1/classes: + get: + summary: Classes queries all NFT classes + operationId: Classes + responses: + '200': + description: A successful response. + schema: + type: object + properties: + classes: + type: array + items: + type: object + properties: + id: + type: string + title: >- + id defines the unique identifier of the NFT + classification, similar to the contract address of + ERC721 + name: + type: string + title: >- + name defines the human-readable name of the NFT + classification. Optional + symbol: + type: string + title: >- + symbol is an abbreviated name for nft classification. + Optional + description: + type: string + title: >- + description is a brief description of nft + classification. Optional + uri: + type: string + title: >- + uri for the class metadata stored off chain. It can + define schema for Class and NFT `Data` attributes. + Optional + uriHash: + type: string + title: >- + uri_hash is a hash of the document pointed by uri. + Optional + data: + title: >- + data is the app specific metadata of the NFT class. + Optional + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - It is less efficient than using key. Only one of offset or key - should + protocol buffer message. This string must contain at + least - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. + one "/" character. The last segment of the URL's + path must represent - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include + the fully qualified name of the type (as in - a count of the total number of items available for pagination in - UIs. + `path/google.protobuf.Duration`). The name should be + in a canonical form - count_total is only respected when offset is used. It is ignored - when key + (e.g., leading "." is not accepted). - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. + In practice, teams usually precompile into the + binary all types that they - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/tx/v1beta1/decode: - post: - summary: TxDecode decodes the transaction. - description: 'Since: cosmos-sdk 0.47' - operationId: TxDecode - responses: - '200': - description: A successful response. - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.TxDecodeResponse' + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: Class defines the class of the nft type. + description: class defines the class of the nft type. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: >- + QueryClassesResponse is the response type for the Query/Classes + RPC method default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -30472,7 +32011,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -30523,19 +32062,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -30573,7 +32110,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -30583,7 +32120,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -30613,6 +32150,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -30650,285 +32188,295 @@ paths: "value": "1.212s" } parameters: - - name: body - in: body - required: true - schema: - type: object - properties: - tx_bytes: - type: string - format: byte - description: tx_bytes is the raw transaction. - description: |- - TxDecodeRequest is the request type for the Service.TxDecode - RPC method. - - Since: cosmos-sdk 0.47 - tags: - - Service - /cosmos/tx/v1beta1/decode/amino: - post: - summary: TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON. - description: 'Since: cosmos-sdk 0.47' - operationId: TxDecodeAmino - responses: - '200': - description: A successful response. - schema: - type: object - properties: - amino_json: - type: string - description: >- - TxDecodeAminoResponse is the response type for the - Service.TxDecodeAmino + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - RPC method. + It is less efficient than using key. Only one of offset or key + should + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - Since: cosmos-sdk 0.47 - default: - description: An unexpected error response. + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean + tags: + - Query + /cosmos/nft/v1beta1/classes/{classId}: + get: + summary: Class queries an NFT class based on its id + operationId: Class + responses: + '200': + description: A successful response. schema: type: object properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + class: + description: class defines the class of the nft type. + type: object + properties: + id: + type: string + title: >- + id defines the unique identifier of the NFT + classification, similar to the contract address of ERC721 + name: + type: string + title: >- + name defines the human-readable name of the NFT + classification. Optional + symbol: + type: string + title: >- + symbol is an abbreviated name for nft classification. + Optional + description: + type: string + title: >- + description is a brief description of nft classification. + Optional + uri: + type: string + title: >- + uri for the class metadata stored off chain. It can define + schema for Class and NFT `Data` attributes. Optional + uriHash: + type: string + title: >- + uri_hash is a hash of the document pointed by uri. + Optional + data: + title: >- + data is the app specific metadata of the NFT class. + Optional + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's path + must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in - a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the binary + all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can optionally - set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available in + the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no + widely used type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) - might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Schemes other than `http`, `https` (or the empty + scheme) might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values - in the form - of utility functions or additional generated methods of the - Any type. + Protobuf library provides support to pack/unpack Any + values in the form + of utility functions or additional generated methods of + the Any type. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - name "y.z". + The pack methods provided by protobuf library will by + default use + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - JSON + methods only use the fully qualified type name after the + last '/' + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - The JSON representation of an `Any` value uses the regular + name "y.z". - representation of the deserialized, embedded message, with - an - additional field `@type` which contains the type URL. - Example: + JSON - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + ==== - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + The JSON representation of an `Any` value uses the regular - If the embedded message type is well-known and has a custom - JSON + representation of the deserialized, embedded message, with + an - representation, that representation will be embedded adding - a field + additional field `@type` which contains the type URL. + Example: - `value` which holds the custom JSON in addition to the - `@type` + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - field. Example (for message [google.protobuf.Duration][]): + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: body - in: body - required: true - schema: - type: object - properties: - amino_binary: - type: string - format: byte - description: >- - TxDecodeAminoRequest is the request type for the - Service.TxDecodeAmino + If the embedded message type is well-known and has a + custom JSON - RPC method. + representation, that representation will be embedded + adding a field + `value` which holds the custom JSON in addition to the + `@type` - Since: cosmos-sdk 0.47 - tags: - - Service - /cosmos/tx/v1beta1/encode: - post: - summary: TxEncode encodes the transaction. - description: 'Since: cosmos-sdk 0.47' - operationId: TxEncode - responses: - '200': - description: A successful response. - schema: - type: object - properties: - tx_bytes: - type: string - format: byte - description: tx_bytes is the encoded transaction bytes. - description: |- - TxEncodeResponse is the response type for the - Service.TxEncode method. + field. Example (for message [google.protobuf.Duration][]): - Since: cosmos-sdk 0.47 + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + QueryClassResponse is the response type for the Query/Class RPC + method default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -30939,7 +32487,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -30990,19 +32538,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -31040,7 +32586,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -31050,7 +32596,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -31080,6 +32626,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -31117,402 +32664,117 @@ paths: "value": "1.212s" } parameters: - - name: body - in: body + - name: classId + description: class_id associated with the nft + in: path required: true - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.TxEncodeRequest' + type: string tags: - - Service - /cosmos/tx/v1beta1/encode/amino: - post: - summary: TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes. - description: 'Since: cosmos-sdk 0.47' - operationId: TxEncodeAmino + - Query + /cosmos/nft/v1beta1/nfts: + get: + summary: >- + NFTs queries all NFTs of a given class or owner,choose at least one of + the two, similar to tokenByIndex in + + ERC721Enumerable + operationId: NFTs responses: '200': description: A successful response. schema: type: object properties: - amino_binary: - type: string - format: byte - description: >- - TxEncodeAminoResponse is the response type for the - Service.TxEncodeAmino - - RPC method. - - - Since: cosmos-sdk 0.47 - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + nfts: type: array items: type: object properties: - type_url: + classId: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + title: >- + class_id associated with the NFT, similar to the + contract address of ERC721 + id: + type: string + title: id is a unique identifier of the NFT + uri: + type: string + title: uri for the NFT metadata stored off chain + uriHash: + type: string + title: uri_hash is a hash of the document pointed by uri + data: + title: data is an app specific data of the NFT. Optional + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's + path must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in - a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the + binary all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can optionally - set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available + in the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no + widely used type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) - might be - used with implementation specific semantics. - value: - type: string - format: byte + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: body - in: body - required: true - schema: - type: object - properties: - amino_json: - type: string - description: >- - TxEncodeAminoRequest is the request type for the - Service.TxEncodeAmino - - RPC method. - - - Since: cosmos-sdk 0.47 - tags: - - Service - /cosmos/tx/v1beta1/simulate: - post: - summary: Simulate simulates executing a transaction for estimating gas usage. - operationId: Simulate - responses: - '200': - description: A successful response. - schema: - type: object - properties: - gas_info: - description: gas_info is the information about gas used in the simulation. - type: object - properties: - gas_wanted: - type: string - format: uint64 - description: >- - GasWanted is the maximum units of work we allow this tx to - perform. - gas_used: - type: string - format: uint64 - description: GasUsed is the amount of gas actually consumed. - result: - description: result is the result of the simulation. - type: object - properties: - data: - type: string - format: byte - description: >- - Data is any data returned from message or handler - execution. It MUST be - - length prefixed in order to separate data from multiple - message executions. - - Deprecated. This field is still populated, but prefer - msg_response instead - - because it also contains the Msg response typeURL. - log: - type: string - description: >- - Log contains the log information from message or handler - execution. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, - associated with an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseFinalizeBlock and ResponseCheckTx. - - Later, transactions may be queried using these events. - description: >- - Events contains a slice of Event objects that were emitted - during message - - or handler execution. - msg_responses: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. Protobuf library provides support to pack/unpack Any @@ -31545,7 +32807,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -31555,7 +32817,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -31585,6 +32847,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -31623,22 +32886,35 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - description: >- - msg_responses contains the Msg handler responses type - packed in Anys. - + description: NFT defines the NFT. + title: NFT defines the NFT + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - Since: cosmos-sdk 0.46 - description: |- - SimulateResponse is the response type for the - Service.SimulateRPC method. + was set, its value is undefined otherwise + title: >- + QueryNFTsResponse is the response type for the Query/NFTs RPC + methods default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -31649,7 +32925,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -31700,19 +32976,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -31750,7 +33024,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -31760,7 +33034,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -31790,6 +33064,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -31827,507 +33102,177 @@ paths: "value": "1.212s" } parameters: - - name: body - in: body - required: true - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.SimulateRequest' + - name: classId + description: class_id associated with the nft + in: query + required: false + type: string + - name: owner + description: owner is the owner address of the nft + in: query + required: false + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - - Service - /cosmos/tx/v1beta1/txs: + - Query + /cosmos/nft/v1beta1/nfts/{classId}/{id}: get: - summary: GetTxsEvent fetches txs by event. - operationId: GetTxsEvent + summary: NFT queries an NFT based on its class and id. + operationId: NFT responses: '200': description: A successful response. - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse' - default: - description: An unexpected error response. schema: type: object properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + nft: + title: owner is the owner address of the nft + type: object + properties: + classId: + type: string + title: >- + class_id associated with the NFT, similar to the contract + address of ERC721 + id: + type: string + title: id is a unique identifier of the NFT + uri: + type: string + title: uri for the NFT metadata stored off chain + uriHash: + type: string + title: uri_hash is a hash of the document pointed by uri + data: + title: data is an app specific data of the NFT. Optional + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's path + must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in - a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the binary + all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can optionally - set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available in + the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no + widely used type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) - might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Schemes other than `http`, `https` (or the empty + scheme) might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values - in the form - of utility functions or additional generated methods of the - Any type. + Protobuf library provides support to pack/unpack Any + values in the form - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: events - description: >- - events is the list of transaction event type. - - Deprecated post v0.47.x: use query instead, which should contain a - valid - - events query. - in: query - required: false - type: array - items: - type: string - collectionFormat: multi - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - - name: order_by - description: |2- - - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults - to ASC in this case. - - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order - - ORDER_BY_DESC: ORDER_BY_DESC defines descending order - in: query - required: false - type: string - enum: - - ORDER_BY_UNSPECIFIED - - ORDER_BY_ASC - - ORDER_BY_DESC - default: ORDER_BY_UNSPECIFIED - - name: page - description: |- - page is the page number to query, starts at 1. If not provided, will - default to first page. - in: query - required: false - type: string - format: uint64 - - name: limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: query - description: >- - query defines the transaction event query that is proxied to - Tendermint's - - TxSearch RPC method. The query must be valid. - - - Since cosmos-sdk 0.50 - in: query - required: false - type: string - tags: - - Service - post: - summary: BroadcastTx broadcast transaction. - operationId: BroadcastTx - responses: - '200': - description: A successful response. - schema: - type: object - properties: - tx_response: - type: object - properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: - type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: - type: string - description: Result bytes, if any. - raw_log: - type: string - description: >- - The output of the application's logger (raw string). May - be - - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where - the key and value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where - all the attributes - - contain key/value pairs that are strings instead - of raw bytes. - description: >- - Events contains a slice of Event objects that were - emitted during some - - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed - tx ABCI message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. + of utility functions or additional generated methods of + the Any type. Example 1: Pack and unpack a message in C++. @@ -32353,7 +33298,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -32363,7 +33308,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -32393,6 +33338,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -32429,74 +33375,13 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the - weighted median of - - the timestamps of the valid votes in the block.LastCommit. - For height == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, - associated with an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseFinalizeBlock and ResponseCheckTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a - transaction. Note, - - these events include those emitted by processing all the - messages and those - - emitted from the ante. Whereas Logs contains the events, - with - - additional metadata, emitted only by processing the - messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. - description: |- - BroadcastTxResponse is the response type for the - Service.BroadcastTx method. + description: NFT defines the NFT. + title: QueryNFTResponse is the response type for the Query/NFT RPC method default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -32507,7 +33392,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -32558,19 +33443,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -32608,7 +33491,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -32618,7 +33501,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -32648,6 +33531,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -32685,62 +33569,41 @@ paths: "value": "1.212s" } parameters: - - name: body - in: body + - name: classId + description: class_id associated with the nft + in: path required: true - schema: - type: object - properties: - tx_bytes: - type: string - format: byte - description: tx_bytes is the raw transaction. - mode: - type: string - enum: - - BROADCAST_MODE_UNSPECIFIED - - BROADCAST_MODE_BLOCK - - BROADCAST_MODE_SYNC - - BROADCAST_MODE_ASYNC - default: BROADCAST_MODE_UNSPECIFIED - description: >- - BroadcastMode specifies the broadcast mode for the - TxService.Broadcast RPC - - method. - - - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering - - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead, - BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x - onwards. - - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits - for a CheckTx execution response only. - - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client - returns immediately. - description: >- - BroadcastTxRequest is the request type for the - Service.BroadcastTxRequest - - RPC method. + type: string + - name: id + description: id is a unique identifier of the NFT + in: path + required: true + type: string tags: - - Service - /cosmos/tx/v1beta1/txs/block/{height}: + - Query + /cosmos/nft/v1beta1/owner/{classId}/{id}: get: - summary: GetBlockWithTxs fetches a block with decoded txs. - description: 'Since: cosmos-sdk 0.45.2' - operationId: GetBlockWithTxs + summary: >- + Owner queries the owner of the NFT based on its class and id, same as + ownerOf in ERC721 + operationId: Owner responses: '200': description: A successful response. schema: - $ref: '#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse' + type: object + properties: + owner: + type: string + title: owner is the owner address of the nft + title: >- + QueryOwnerResponse is the response type for the Query/Owner RPC + method default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -32751,7 +33614,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -32802,19 +33665,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -32852,7 +33713,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -32862,7 +33723,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -32892,6 +33753,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -32929,86 +33791,42 @@ paths: "value": "1.212s" } parameters: - - name: height - description: height is the height of the block to query. + - name: classId + description: class_id associated with the nft in: path required: true type: string - format: int64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + - name: id + description: id is a unique identifier of the NFT + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - - Service - /cosmos/tx/v1beta1/txs/{hash}: + - Query + /cosmos/nft/v1beta1/supply/{classId}: get: - summary: GetTx fetches a tx by hash. - operationId: GetTx + summary: >- + Supply queries the number of NFTs from the given class, same as + totalSupply of ERC721. + operationId: Supply responses: '200': description: A successful response. schema: - $ref: '#/definitions/cosmos.tx.v1beta1.GetTxResponse' + type: object + properties: + amount: + type: string + format: uint64 + title: amount is the number of all NFTs from the given class + title: >- + QuerySupplyResponse is the response type for the Query/Supply RPC + method default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -33019,7 +33837,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -33070,19 +33888,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -33120,7 +33936,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -33130,7 +33946,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -33160,6 +33976,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -33197,39 +34014,43 @@ paths: "value": "1.212s" } parameters: - - name: hash - description: hash is the tx hash to query, encoded as a hex string. + - name: classId + description: class_id associated with the nft in: path required: true type: string tags: - - Service - /cosmos/upgrade/v1beta1/applied_plan/{name}: + - Query + /cosmos/params/v1beta1/params: get: - summary: AppliedPlan queries a previously applied upgrade plan by its name. - operationId: AppliedPlan + summary: |- + Params queries a specific parameter of a module, given its subspace and + key. + operationId: Params responses: '200': description: A successful response. schema: type: object properties: - height: - type: string - format: int64 - description: height is the block height at which the plan was applied. + param: + description: param defines the queried parameter. + type: object + properties: + subspace: + type: string + key: + type: string + value: + type: string description: >- - QueryAppliedPlanResponse is the response type for the - Query/AppliedPlan RPC - + QueryParamsResponse is response type for the Query/Params RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -33240,213 +34061,295 @@ paths: items: type: object properties: - type_url: + '@type': type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + additionalProperties: {} + parameters: + - name: subspace + description: subspace defines the module to query the parameter for. + in: query + required: false + type: string + - name: key + description: key defines the key of the parameter in the subspace. + in: query + required: false + type: string + tags: + - Query + /cosmos/params/v1beta1/subspaces: + get: + summary: >- + Subspaces queries for all registered subspaces and all keys for a + subspace. + operationId: Subspaces + responses: + '200': + description: A successful response. + schema: + type: object + properties: + subspaces: + type: array + items: + type: object + properties: + subspace: + type: string + keys: + type: array + items: + type: string + description: >- + Subspace defines a parameter subspace name and all the keys + that exist for - Note: this functionality is not currently available in - the official + the subspace. + description: >- + QuerySubspacesResponse defines the response types for querying for + all - protobuf release, and it is not used for type URLs - beginning with + registered subspaces and all keys for a subspace. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + /cosmos/protocolpool/v1/community_pool: + get: + summary: CommunityPool queries the community pool coins. + operationId: ProtocolpoolCommunityPool + responses: + '200': + description: A successful response. + schema: + type: object + properties: + pool: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - type.googleapis.com. + NOTE: The amount field is an Int which implements the custom + method - Schemes other than `http`, `https` (or the empty scheme) - might be + signatures required by gogoproto. + description: pool defines community pool's coins. + description: >- + QueryCommunityPoolResponse is the response type for the + Query/CommunityPool - used with implementation specific semantics. - value: + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + /cosmos/protocolpool/v1/continuous_funds: + get: + summary: ContinuousFunds queries all continuous funds in the store. + operationId: ContinuousFunds + responses: + '200': + description: A successful response. + schema: + type: object + properties: + continuousFunds: + type: array + items: + type: object + properties: + recipient: + type: string + description: >- + Recipient is the address string of the account receiving + funds. + percentage: type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the above - specified type. + Percentage is the percentage of funds to be allocated + from Community pool. + expiry: + type: string + format: date-time + description: >- + Optional, if expiry is set, removes the state object + when expired. description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` + ContinuousFund defines the fields of continuous fund + proposal. + description: ContinuousFunds defines all continuous funds in state. + description: >- + QueryUnclaimedBudgetResponse is the response type for the + Query/ContinuousFunds - field. Example (for message [google.protobuf.Duration][]): + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + /cosmos/protocolpool/v1/continuous_funds/{recipient}: + get: + summary: >- + ContinuousFund queries a continuous fund by the recipient is is + associated with. + operationId: ContinuousFund + responses: + '200': + description: A successful response. + schema: + type: object + properties: + continuousFund: + description: >- + ContinuousFunds is the given continuous fund returned in the + query. + type: object + properties: + recipient: + type: string + description: >- + Recipient is the address string of the account receiving + funds. + percentage: + type: string + description: >- + Percentage is the percentage of funds to be allocated from + Community pool. + expiry: + type: string + format: date-time + description: >- + Optional, if expiry is set, removes the state object when + expired. + description: >- + QueryUnclaimedBudgetResponse is the response type for the + Query/ContinuousFund - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} parameters: - - name: name - description: name is the name of the applied plan to query for. + - name: recipient + description: >- + recipient is the recipient address to query unclaimed budget amount + for. in: path required: true type: string tags: - Query - /cosmos/upgrade/v1beta1/authority: + /cosmos/protocolpool/v1/params: get: - summary: Returns the account with authority to conduct upgrades - description: 'Since: cosmos-sdk 0.46' - operationId: Authority + summary: Params returns the total set of x/protocolpool parameters. + operationId: ProtocolpoolParams responses: '200': description: A successful response. schema: type: object properties: - address: - type: string - description: 'Since: cosmos-sdk 0.46' - title: QueryAuthorityResponse is the response type for Query/Authority + params: + type: object + properties: + enabledDistributionDenoms: + type: array + items: + type: string + description: >- + EnabledDistributionDenoms lists the denoms that are + allowed to be distributed. + + This is to avoid spending time distributing undesired + tokens to continuous funds and budgets. + distributionFrequency: + type: string + format: uint64 + description: >- + DistributionFrequency is the frequency (in terms of + blocks) that funds are distributed out from the + + x/protocolpool module. + description: Params defines the parameters for the protocolpool module. + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -33457,32 +34360,465 @@ paths: items: type: object properties: - type_url: + '@type': type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - + additionalProperties: {} + tags: + - Query + /cosmos/slashing/v1beta1/params: + get: + summary: Params queries the parameters of slashing module + operationId: SlashingParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + type: object + properties: + signedBlocksWindow: + type: string + format: int64 + minSignedPerWindow: + type: string + format: byte + downtimeJailDuration: + type: string + slashFractionDoubleSign: + type: string + format: byte + slashFractionDowntime: + type: string + format: byte + description: >- + Params represents the parameters used for by the slashing + module. + title: >- + QueryParamsResponse is the response type for the Query/Params RPC + method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + tags: + - Query + /cosmos/slashing/v1beta1/signing_infos: + get: + summary: SigningInfos queries signing info of all validators + operationId: SigningInfos + responses: + '200': + description: A successful response. + schema: + type: object + properties: + info: + type: array + items: + type: object + properties: + address: + type: string + startHeight: + type: string + format: int64 + title: >- + Height at which validator was first a candidate OR was + un-jailed + indexOffset: + type: string + format: int64 + description: >- + Index which is incremented every time a validator is + bonded in a block and + + _may_ have signed a pre-commit or not. This in + conjunction with the + + signed_blocks_window param determines the index in the + missed block bitmap. + jailedUntil: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to + liveness downtime. + tombstoned: + type: boolean + description: >- + Whether or not a validator has been tombstoned (killed + out of validator + + set). It is set once the validator commits an + equivocation or for any other + + configured misbehavior. + missedBlocksCounter: + type: string + format: int64 + description: >- + A counter of missed (unsigned) blocks. It is used to + avoid unnecessary + + reads in the missed block bitmap. + description: >- + ValidatorSigningInfo defines a validator's signing info for + monitoring their + + liveness activity. + title: info is the signing info of all validators + pagination: + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QuerySigningInfosResponse is the response type for the + Query/SigningInfos RPC + + method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean + tags: + - Query + /cosmos/slashing/v1beta1/signing_infos/{consAddress}: + get: + summary: SigningInfo queries the signing info of given cons address + operationId: SigningInfo + responses: + '200': + description: A successful response. + schema: + type: object + properties: + valSigningInfo: + title: >- + val_signing_info is the signing info of requested val cons + address + type: object + properties: + address: + type: string + startHeight: + type: string + format: int64 + title: >- + Height at which validator was first a candidate OR was + un-jailed + indexOffset: + type: string + format: int64 + description: >- + Index which is incremented every time a validator is + bonded in a block and + + _may_ have signed a pre-commit or not. This in conjunction + with the + + signed_blocks_window param determines the index in the + missed block bitmap. + jailedUntil: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to + liveness downtime. + tombstoned: + type: boolean + description: >- + Whether or not a validator has been tombstoned (killed out + of validator + + set). It is set once the validator commits an equivocation + or for any other + + configured misbehavior. + missedBlocksCounter: + type: string + format: int64 + description: >- + A counter of missed (unsigned) blocks. It is used to avoid + unnecessary + + reads in the missed block bitmap. + description: >- + ValidatorSigningInfo defines a validator's signing info for + monitoring their + + liveness activity. + title: >- + QuerySigningInfoResponse is the response type for the + Query/SigningInfo RPC + + method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + additionalProperties: {} + parameters: + - name: consAddress + description: cons_address is the address to query signing info of + in: path + required: true + type: string + tags: + - Query + /cosmos/staking/v1beta1/delegations/{delegatorAddr}: + get: + summary: >- + DelegatorDelegations queries all delegations of a given delegator + address. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: DelegatorDelegations + responses: + '200': + description: A successful response. + schema: + type: object + properties: + delegationResponses: + type: array + items: + type: object + properties: + delegation: + type: object + properties: + delegatorAddress: + type: string + description: >- + delegator_address is the encoded address of the + delegator. + validatorAddress: + type: string + description: >- + validator_address is the encoded address of the + validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an + account. It is + + owned by one delegator, and is associated with the + voting power of one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that + it contains a + + balance in addition to shares which is more suitable for + client responses. + description: >- + delegation_responses defines all the delegations' info of a + delegator. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryDelegatorDelegationsResponse is response type for the + Query/DelegatorDelegations RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + scheme `http`, `https`, or no scheme, one can optionally set up a type @@ -33508,19 +34844,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -33558,7 +34892,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -33568,7 +34902,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -33598,6 +34932,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -33634,249 +34969,244 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } + parameters: + - name: delegatorAddr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query - /cosmos/upgrade/v1beta1/current_plan: + /cosmos/staking/v1beta1/delegators/{delegatorAddr}/redelegations: get: - summary: CurrentPlan queries the current upgrade plan. - operationId: CurrentPlan + summary: Redelegations queries redelegations of given address. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: Redelegations responses: '200': description: A successful response. schema: type: object properties: - plan: - description: plan is the current upgrade plan. - type: object - properties: - name: - type: string - description: >- - Sets the name for the upgrade. This name will be used by - the upgraded - - version of the software to apply any special "on-upgrade" - commands during - - the first BeginBlock method after the upgrade is applied. - It is also used + redelegationResponses: + type: array + items: + type: object + properties: + redelegation: + type: object + properties: + delegatorAddress: + type: string + description: >- + delegator_address is the bech32-encoded address of + the delegator. + validatorSrcAddress: + type: string + description: >- + validator_src_address is the validator redelegation + source operator address. + validatorDstAddress: + type: string + description: >- + validator_dst_address is the validator redelegation + destination operator address. + entries: + type: array + items: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completionTime: + type: string + format: date-time + description: >- + completion_time defines the unix time for + redelegation completion. + initialBalance: + type: string + description: >- + initial_balance defines the initial balance + when redelegation started. + sharesDst: + type: string + description: >- + shares_dst is the amount of + destination-validator shares created by + redelegation. + unbondingId: + type: string + format: uint64 + title: >- + Incrementing id that uniquely identifies this + entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding + has been stopped by external modules + description: >- + RedelegationEntry defines a redelegation object + with relevant metadata. + description: |- + entries are the redelegation entries. - to detect whether a software version can handle a given - upgrade. If no + redelegation entries + description: >- + Redelegation contains the list of a particular + delegator's redelegating bonds - upgrade handler with this name has been set in the - software, it will be + from a particular source validator to a particular + destination validator. + entries: + type: array + items: + type: object + properties: + redelegationEntry: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completionTime: + type: string + format: date-time + description: >- + completion_time defines the unix time for + redelegation completion. + initialBalance: + type: string + description: >- + initial_balance defines the initial balance + when redelegation started. + sharesDst: + type: string + description: >- + shares_dst is the amount of + destination-validator shares created by + redelegation. + unbondingId: + type: string + format: uint64 + title: >- + Incrementing id that uniquely identifies this + entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding + has been stopped by external modules + description: >- + RedelegationEntry defines a redelegation object + with relevant metadata. + balance: + type: string + description: >- + RedelegationEntryResponse is equivalent to a + RedelegationEntry except that it - assumed that the software is out-of-date when the upgrade - Time or Height is + contains a balance in addition to shares which is more + suitable for client - reached and the software will exit. - time: - type: string - format: date-time - description: >- - Deprecated: Time based upgrades have been deprecated. Time - based upgrade logic + responses. + description: >- + RedelegationResponse is equivalent to a Redelegation except + that its entries - has been removed from the SDK. + contain a balance in addition to shares which is more + suitable for client - If this field is not empty, an error will be thrown. - height: + responses. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: type: string - format: int64 - description: The height at which the upgrade must be performed. - info: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string + format: uint64 title: >- - Any application specific upgrade info to be included - on-chain - - such as a git commit that validators could automatically - upgrade to - upgraded_client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): + total is total number of results available if + PageRequest.count_total - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + was set, its value is undefined otherwise description: >- - QueryCurrentPlanResponse is the response type for the - Query/CurrentPlan RPC + QueryRedelegationsResponse is response type for the + Query/Redelegations RPC method. default: @@ -33884,8 +35214,6 @@ paths: schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -33896,7 +35224,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -33947,19 +35275,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -33997,7 +35323,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -34007,7 +35333,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -34037,6 +35363,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -34073,53 +35400,191 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } + parameters: + - name: delegatorAddr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + - name: srcValidatorAddr + description: src_validator_addr defines the validator address to redelegate from. + in: query + required: false + type: string + - name: dstValidatorAddr + description: dst_validator_addr defines the validator address to redelegate to. + in: query + required: false + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query - /cosmos/upgrade/v1beta1/module_versions: + /cosmos/staking/v1beta1/delegators/{delegatorAddr}/unbonding_delegations: get: - summary: ModuleVersions queries the list of module versions from state. - description: 'Since: cosmos-sdk 0.43' - operationId: ModuleVersions + summary: >- + DelegatorUnbondingDelegations queries all unbonding delegations of a + given + + delegator address. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: DelegatorUnbondingDelegations responses: '200': description: A successful response. schema: type: object properties: - module_versions: + unbondingResponses: type: array items: type: object properties: - name: + delegatorAddress: type: string - title: name of the app module - version: + description: >- + delegator_address is the encoded address of the + delegator. + validatorAddress: type: string - format: uint64 - title: consensus version of the app module - description: |- - ModuleVersion specifies a module and its consensus version. + description: >- + validator_address is the encoded address of the + validator. + entries: + type: array + items: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding + took place. + completionTime: + type: string + format: date-time + description: >- + completion_time is the unix time for unbonding + completion. + initialBalance: + type: string + description: >- + initial_balance defines the tokens initially + scheduled to receive at completion. + balance: + type: string + description: >- + balance defines the tokens to receive at + completion. + unbondingId: + type: string + format: uint64 + title: >- + Incrementing id that uniquely identifies this + entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has + been stopped by external modules + description: >- + UnbondingDelegationEntry defines an unbonding object + with relevant metadata. + description: |- + entries are the unbonding delegation entries. - Since: cosmos-sdk 0.43 - description: >- - module_versions is a list of module names with their consensus - versions. - description: >- - QueryModuleVersionsResponse is the response type for the - Query/ModuleVersions + unbonding delegation entries + description: >- + UnbondingDelegation stores all of a single delegator's + unbonding bonds - RPC method. + for a single validator in an time-ordered list. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + was set, its value is undefined otherwise + description: >- + QueryUnbondingDelegatorDelegationsResponse is response type for + the - Since: cosmos-sdk 0.43 + Query/UnbondingDelegatorDelegations RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -34130,7 +35595,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -34181,19 +35646,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -34231,7 +35694,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -34241,7 +35704,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -34271,6 +35734,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -34308,53 +35772,328 @@ paths: "value": "1.212s" } parameters: - - name: module_name + - name: delegatorAddr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + - name: pagination.key description: |- - module_name is a field to query a specific module - consensus version from state. Leaving this empty will - fetch the full list of module versions from state. + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. in: query required: false type: string - tags: - - Query - /cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}: - get: - summary: >- - UpgradedConsensusState queries the consensus state that will serve + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - as a trusted kernel for the next version of this chain. It will only be + It is less efficient than using key. Only one of offset or key + should - stored at the last height of this chain. + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - UpgradedConsensusState RPC not supported with legacy querier + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include - This rpc is deprecated now that IBC has its own replacement + a count of the total number of items available for pagination in + UIs. - (https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54) - operationId: UpgradedConsensusState + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean + tags: + - Query + /cosmos/staking/v1beta1/delegators/{delegatorAddr}/validators: + get: + summary: |- + DelegatorValidators queries all validators info for given delegator + address. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: StakingDelegatorValidators responses: '200': description: A successful response. schema: type: object properties: - upgraded_consensus_state: - type: string - format: byte - title: 'Since: cosmos-sdk 0.43' - description: >- - QueryUpgradedConsensusStateResponse is the response type for the - Query/UpgradedConsensusState + validators: + type: array + items: + type: object + properties: + operatorAddress: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensusPubkey: + description: >- + consensus_pubkey is the consensus public key of the + validator, as a Protobuf Any. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - RPC method. + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed + from bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegatorShares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbondingHeight: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbondingTime: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for + the validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commissionRates: + description: >- + commission_rates defines the initial commission + rates to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to + delegators, as a fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate + which validator can ever charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily + increase of the validator commission, as a + fraction. + updateTime: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + minSelfDelegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been + stopped by external modules + unbondingIds: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an + unbonding of this validator + description: >- + Validator defines a validator, together with the total + amount of the + + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct + calculation of future + + undelegations without iterating over delegators. When coins + are delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated + divided by the current + + exchange rate. Voting power can be calculated as total + bonded shares + + multiplied by exchange rate. + description: validators defines the validators' info of a delegator. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryDelegatorValidatorsResponse is response type for the + Query/DelegatorValidators RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -34365,7 +36104,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -34416,19 +36155,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -34466,7 +36203,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -34476,7 +36213,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -34506,6 +36243,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -34543,259 +36281,278 @@ paths: "value": "1.212s" } parameters: - - name: last_height - description: |- - last height of the current chain must be sent in request - as this is the height under which next consensus state is stored + - name: delegatorAddr + description: delegator_addr defines the delegator address to query for. in: path required: true type: string - format: int64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.countTotal + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query - /cosmos/authz/v1beta1/grants: + /cosmos/staking/v1beta1/delegators/{delegatorAddr}/validators/{validatorAddr}: get: - summary: Returns list of `Authorization`, granted to the grantee by the granter. - operationId: Grants + summary: |- + DelegatorValidator queries validator info for given delegator validator + pair. + operationId: DelegatorValidator responses: '200': description: A successful response. schema: type: object properties: - grants: - type: array - items: - type: object - properties: - authorization: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. + validator: + description: validator defines the validator info. + type: object + properties: + operatorAddress: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensusPubkey: + description: >- + consensus_pubkey is the consensus public key of the + validator, as a Protobuf Any. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + protocol buffer message. This string must contain at + least - Note: this functionality is not currently available - in the official + one "/" character. The last segment of the URL's path + must represent - protobuf release, and it is not used for type URLs - beginning with + the fully qualified name of the type (as in - type.googleapis.com. + `path/google.protobuf.Duration`). The name should be + in a canonical form + (e.g., leading "." is not accepted). - Schemes other than `http`, `https` (or the empty - scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + In practice, teams usually precompile into the binary + all types that they - URL that describes the type of the serialized message. + expect it to use in the context of Any. However, for + URLs which use the + scheme `http`, `https`, or no scheme, one can + optionally set up a type - Protobuf library provides support to pack/unpack Any - values in the form + server that maps type URLs to message definitions as + follows: - of utility functions or additional generated methods of - the Any type. + * If no scheme is provided, `https` is assumed. - Example 1: Pack and unpack a message in C++. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Note: this functionality is not currently available in + the official - Example 2: Pack and unpack a message in Java. + protobuf release, and it is not used for type URLs + beginning with - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + type.googleapis.com. As of May 2023, there are no + widely used type server - Example 3: Pack and unpack a message in Python. + implementations and no plans to implement one. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - Example 4: Pack and unpack a message in Go + Schemes other than `http`, `https` (or the empty + scheme) might be - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - time when the grant will expire and will be pruned. If - null, then the grant - - doesn't have a time expiration (other conditions in - `authorization` - - may apply to invalidate the grant) - description: |- - Grant gives permissions to execute - the provide method with expiration time. - description: >- - authorizations is a list of grants granted for grantee by - granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: + used with implementation specific semantics. + additionalProperties: {} + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from + bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: type: string - format: uint64 + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegatorShares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbondingHeight: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbondingTime: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commissionRates: + description: >- + commission_rates defines the initial commission rates + to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, + as a fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily increase + of the validator commission, as a fraction. + updateTime: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + minSelfDelegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + unbondingOnHoldRefCount: + type: string + format: int64 title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGrantsResponse is the response type for the - Query/Authorizations RPC method. + strictly positive if this validator's unbonding has been + stopped by external modules + unbondingIds: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an + unbonding of this validator + description: |- + QueryDelegatorValidatorResponse response type for the + Query/DelegatorValidator RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -34806,7 +36563,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -34857,19 +36614,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -34907,7 +36662,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -34917,7 +36672,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -34947,6 +36702,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -34984,319 +36740,348 @@ paths: "value": "1.212s" } parameters: - - name: granter - in: query - required: false - type: string - - name: grantee - in: query - required: false - type: string - - name: msg_type_url - description: >- - Optional, msg_type_url, when set, will query only grants matching - given msg type. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false + - name: delegatorAddr + description: delegator_addr defines the delegator address to query for. + in: path + required: true type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + - name: validatorAddr + description: validator_addr defines the validator address to query for. + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmos/authz/v1beta1/grants/grantee/{grantee}: + /cosmos/staking/v1beta1/historical_info/{height}: get: - summary: GranteeGrants returns a list of `GrantAuthorization` by grantee. - description: 'Since: cosmos-sdk 0.46' - operationId: GranteeGrants + summary: HistoricalInfo queries the historical info for given height. + operationId: HistoricalInfo responses: '200': description: A successful response. schema: type: object properties: - grants: - type: array - items: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: + hist: + description: hist defines the historical info at the given height. + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, + + including all blockchain data structures and the rules + of the application's + + state transition machine. + chainId: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + lastBlockId: + title: prev block info + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + lastCommitHash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + dataHash: + type: string + format: byte + title: transactions + validatorsHash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + nextValidatorsHash: + type: string + format: byte + title: validators for the next block + consensusHash: + type: string + format: byte + title: consensus params for current block + appHash: + type: string + format: byte + title: state after txs from the previous block + lastResultsHash: + type: string + format: byte + title: >- + root hash of all results from the txs from the + previous block + evidenceHash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposerAddress: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + valset: + type: array + items: type: object properties: - type_url: + operatorAddress: type: string description: >- - A URL/resource name that uniquely identifies the - type of the serialized + operator_address defines the address of the + validator's operator; bech encoded in JSON. + consensusPubkey: + description: >- + consensus_pubkey is the consensus public key of the + validator, as a Protobuf Any. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must + contain at least - one "/" character. The last segment of the URL's - path must represent + one "/" character. The last segment of the URL's + path must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name + should be in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the - binary all types that they + In practice, teams usually precompile into the + binary all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, + for URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message + definitions as follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup + results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available - in the official + Note: this functionality is not currently + available in the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type + URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are + no widely used type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty - scheme) might be - used with implementation specific semantics. - value: + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed + from bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + tokens define the delegated tokens (incl. + self-delegation). + delegatorShares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature + (ex. UPort or Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbondingHeight: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height + at which this validator has begun unbonding. + unbondingTime: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time + for the validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commissionRates: + description: >- + commission_rates defines the initial commission + rates to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to + delegators, as a fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate + which validator can ever charge, as a + fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily + increase of the validator commission, as a + fraction. + updateTime: + type: string + format: date-time + description: >- + update_time is the last time the commission rate + was changed. + minSelfDelegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has + been stopped by external modules + unbondingIds: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an + unbonding of this validator + description: >- + Validator defines a validator, together with the total + amount of the - If the embedded message type is well-known and has a - custom JSON + Validator's bond shares and their exchange rate to + coins. Slashing results in - representation, that representation will be embedded - adding a field + a decrease in the exchange rate, allowing correct + calculation of future - `value` which holds the custom JSON in addition to the - `@type` + undelegations without iterating over delegators. When + coins are delegated to - field. Example (for message - [google.protobuf.Duration][]): + this validator, the validator is credited with a + delegation whose number of - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - GrantAuthorization extends a grant with both the addresses - of the grantee and granter. + bond shares is based on the amount of coins delegated + divided by the current - It is used in genesis.proto and query.proto - description: grants is a list of grants granted to the grantee. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + exchange rate. Voting power can be calculated as total + bonded shares - was set, its value is undefined otherwise + multiplied by exchange rate. description: >- - QueryGranteeGrantsResponse is the response type for the - Query/GranteeGrants RPC method. + QueryHistoricalInfoResponse is response type for the + Query/HistoricalInfo RPC + + method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -35307,7 +37092,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -35358,19 +37143,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -35408,7 +37191,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -35418,7 +37201,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -35448,6 +37231,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -35485,308 +37269,63 @@ paths: "value": "1.212s" } parameters: - - name: grantee + - name: height + description: height defines at which height to query the historical info. in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean + format: int64 tags: - Query - /cosmos/authz/v1beta1/grants/granter/{granter}: + /cosmos/staking/v1beta1/params: get: - summary: GranterGrants returns list of `GrantAuthorization`, granted by granter. - description: 'Since: cosmos-sdk 0.46' - operationId: GranterGrants + summary: Parameters queries the staking parameters. + operationId: StakingParams responses: '200': description: A successful response. schema: type: object properties: - grants: - type: array - items: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - GrantAuthorization extends a grant with both the addresses - of the grantee and granter. - - It is used in genesis.proto and query.proto - description: grants is a list of grants granted by the granter. - pagination: - description: pagination defines an pagination for the response. + params: + description: params holds all the parameters of this module. type: object properties: - next_key: + unbondingTime: type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + description: unbonding_time is the time duration of unbonding. + maxValidators: + type: integer + format: int64 + description: max_validators is the maximum number of validators. + maxEntries: + type: integer + format: int64 + description: >- + max_entries is the max entries for either unbonding + delegation or redelegation (per pair/trio). + historicalEntries: + type: integer + format: int64 + description: >- + historical_entries is the number of historical entries to + persist. + bondDenom: + type: string + description: bond_denom defines the bondable coin denomination. + minCommissionRate: type: string - format: uint64 title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise + min_commission_rate is the chain-wide minimum commission + rate that a validator can charge their delegators description: >- - QueryGranterGrantsResponse is the response type for the - Query/GranterGrants RPC method. + QueryParamsResponse is response type for the Query/Params RPC + method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -35797,7 +37336,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -35848,19 +37387,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -35898,7 +37435,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -35908,7 +37445,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -35938,6 +37475,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -35974,176 +37512,32 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: granter - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmos/feegrant/v1beta1/allowance/{granter}/{grantee}: + /cosmos/staking/v1beta1/pool: get: - summary: Allowance returns granted allwance to the grantee by the granter. - operationId: Allowance + summary: Pool queries the pool info. + operationId: Pool responses: '200': description: A successful response. schema: type: object properties: - allowance: - description: allowance is a allowance granted for grantee by granter. + pool: + description: pool defines the pool info. type: object properties: - granter: + notBondedTokens: type: string - description: >- - granter is the address of the user granting an allowance - of their funds. - grantee: + bondedTokens: type: string - description: >- - grantee is the address of the user being granted an - allowance of another user's funds. - allowance: - description: >- - allowance can be any of basic, periodic, allowed fee - allowance. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - title: >- - Grant is stored in the KVStore to record a grant with full - context - description: >- - QueryAllowanceResponse is the response type for the - Query/Allowance RPC method. + description: QueryPoolResponse is response type for the Query/Pool RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -36154,7 +37548,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -36205,19 +37599,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -36255,7 +37647,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -36265,7 +37657,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -36295,6 +37687,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -36331,55 +37724,40 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: granter - description: >- - granter is the address of the user granting an allowance of their - funds. - in: path - required: true - type: string - - name: grantee - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - in: path - required: true - type: string tags: - Query - /cosmos/feegrant/v1beta1/allowances/{grantee}: + /cosmos/staking/v1beta1/validators: get: - summary: Allowances returns all the grants for the given grantee address. - operationId: Allowances + summary: Validators queries all validators that match the given status. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: Validators responses: '200': description: A successful response. schema: type: object properties: - allowances: + validators: type: array items: type: object properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance - of their funds. - grantee: + operatorAddress: type: string description: >- - grantee is the address of the user being granted an - allowance of another user's funds. - allowance: + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensusPubkey: description: >- - allowance can be any of basic, periodic, allowed fee - allowance. + consensus_pubkey is the consensus public key of the + validator, as a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the @@ -36430,28 +37808,162 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: + additionalProperties: {} + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed + from bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegatorShares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the - above specified type. - title: >- - Grant is stored in the KVStore to record a grant with full - context - description: allowances are allowance's granted for grantee by granter. + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbondingHeight: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbondingTime: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for + the validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commissionRates: + description: >- + commission_rates defines the initial commission + rates to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to + delegators, as a fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate + which validator can ever charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily + increase of the validator commission, as a + fraction. + updateTime: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + minSelfDelegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been + stopped by external modules + unbondingIds: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an + unbonding of this validator + description: >- + Validator defines a validator, together with the total + amount of the + + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct + calculation of future + + undelegations without iterating over delegators. When coins + are delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated + divided by the current + + exchange rate. Voting power can be calculated as total + bonded shares + + multiplied by exchange rate. + description: validators contains all the queried validators. pagination: - description: pagination defines an pagination for the response. + description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -36466,16 +37978,14 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - description: >- - QueryAllowancesResponse is the response type for the - Query/Allowances RPC method. + title: >- + QueryValidatorsResponse is response type for the Query/Validators + RPC method default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -36486,7 +37996,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -36537,19 +38047,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -36587,7 +38095,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -36597,7 +38105,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -36627,6 +38135,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -36664,9 +38173,10 @@ paths: "value": "1.212s" } parameters: - - name: grantee - in: path - required: true + - name: status + description: status enables to query for validators matching a given status. + in: query + required: false type: string - name: pagination.key description: |- @@ -36699,7 +38209,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -36718,146 +38228,221 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/feegrant/v1beta1/issued/{granter}: + /cosmos/staking/v1beta1/validators/{validatorAddr}: get: - summary: AllowancesByGranter returns all the grants given by an address - description: 'Since: cosmos-sdk 0.46' - operationId: AllowancesByGranter + summary: Validator queries validator info for given validator address. + operationId: Validator responses: '200': description: A successful response. schema: type: object properties: - allowances: - type: array - items: - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance - of their funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an - allowance of another user's funds. - allowance: - description: >- - allowance can be any of basic, periodic, allowed fee - allowance. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized + validator: + description: validator defines the validator info. + type: object + properties: + operatorAddress: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensusPubkey: + description: >- + consensus_pubkey is the consensus public key of the + validator, as a Protobuf Any. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's - path must represent + one "/" character. The last segment of the URL's path + must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the - binary all types that they + In practice, teams usually precompile into the binary + all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available - in the official + Note: this functionality is not currently available in + the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no + widely used type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty - scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - title: >- - Grant is stored in the KVStore to record a grant with full - context - description: allowances that have been issued by the granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from + bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllowancesByGranterResponse is the response type for the - Query/AllowancesByGranter RPC method. - - - Since: cosmos-sdk 0.46 + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegatorShares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbondingHeight: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbondingTime: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commissionRates: + description: >- + commission_rates defines the initial commission rates + to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, + as a fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily increase + of the validator commission, as a fraction. + updateTime: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + minSelfDelegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been + stopped by external modules + unbondingIds: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an + unbonding of this validator + title: >- + QueryValidatorResponse is response type for the Query/Validator + RPC method default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -36868,7 +38453,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -36919,19 +38504,303 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: validatorAddr + description: validator_addr defines the validator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/staking/v1beta1/validators/{validatorAddr}/delegations: + get: + summary: ValidatorDelegations queries delegate info for given validator. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: ValidatorDelegations + responses: + '200': + description: A successful response. + schema: + type: object + properties: + delegationResponses: + type: array + items: + type: object + properties: + delegation: + type: object + properties: + delegatorAddress: + type: string + description: >- + delegator_address is the encoded address of the + delegator. + validatorAddress: + type: string + description: >- + validator_address is the encoded address of the + validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an + account. It is + + owned by one delegator, and is associated with the + voting power of one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that + it contains a + + balance in addition to shares which is more suitable for + client responses. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: |- + QueryValidatorDelegationsResponse is response type for the + Query/ValidatorDelegations RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the above - specified type. + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -36969,7 +38838,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -36979,7 +38848,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -37009,6 +38878,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -37046,7 +38916,8 @@ paths: "value": "1.212s" } parameters: - - name: granter + - name: validatorAddr + description: validator_addr defines the validator address to query for. in: path required: true type: string @@ -37081,7 +38952,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -37100,42 +38971,74 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/nft/v1beta1/balance/{owner}/{class_id}: + /cosmos/staking/v1beta1/validators/{validatorAddr}/delegations/{delegatorAddr}: get: - summary: >- - Balance queries the number of NFTs of a given class owned by the owner, - same as balanceOf in ERC721 - operationId: NftBalance + summary: Delegation queries delegate info for given validator delegator pair. + operationId: Delegation responses: '200': description: A successful response. schema: type: object properties: - amount: - type: string - format: uint64 - title: >- - amount is the number of all NFTs of a given class owned by the - owner - title: >- - QueryBalanceResponse is the response type for the Query/Balance - RPC method + delegationResponse: + description: >- + delegation_responses defines the delegation info of a + delegation. + type: object + properties: + delegation: + type: object + properties: + delegatorAddress: + type: string + description: >- + delegator_address is the encoded address of the + delegator. + validatorAddress: + type: string + description: >- + validator_address is the encoded address of the + validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an + account. It is + + owned by one delegator, and is associated with the voting + power of one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + QueryDelegationResponse is response type for the Query/Delegation + RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -37146,7 +39049,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -37197,19 +39100,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -37247,7 +39148,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -37257,7 +39158,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -37287,6 +39188,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -37324,257 +39226,379 @@ paths: "value": "1.212s" } parameters: - - name: owner - description: owner is the owner address of the nft + - name: validatorAddr + description: validator_addr defines the validator address to query for. in: path required: true type: string - - name: class_id - description: class_id associated with the nft + - name: delegatorAddr + description: delegator_addr defines the delegator address to query for. in: path required: true type: string tags: - Query - /cosmos/nft/v1beta1/classes: + /cosmos/staking/v1beta1/validators/{validatorAddr}/delegations/{delegatorAddr}/unbonding_delegation: get: - summary: Classes queries all NFT classes - operationId: Classes + summary: |- + UnbondingDelegation queries unbonding info for given validator delegator + pair. + operationId: UnbondingDelegation responses: '200': description: A successful response. schema: type: object properties: - classes: - type: array - items: - type: object - properties: - id: - type: string - title: >- - id defines the unique identifier of the NFT - classification, similar to the contract address of - ERC721 - name: - type: string - title: >- - name defines the human-readable name of the NFT - classification. Optional - symbol: - type: string - title: >- - symbol is an abbreviated name for nft classification. - Optional - description: - type: string - title: >- - description is a brief description of nft - classification. Optional - uri: - type: string - title: >- - uri for the class metadata stored off chain. It can - define schema for Class and NFT `Data` attributes. - Optional - uri_hash: - type: string - title: >- - uri_hash is a hash of the document pointed by uri. - Optional - data: + unbond: + description: unbond defines the unbonding information of a delegation. + type: object + properties: + delegatorAddress: + type: string + description: delegator_address is the encoded address of the delegator. + validatorAddress: + type: string + description: validator_address is the encoded address of the validator. + entries: + type: array + items: type: object properties: - type_url: + creationHeight: type: string + format: int64 description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form + creation_height is the height which the unbonding + took place. + completionTime: + type: string + format: date-time + description: >- + completion_time is the unix time for unbonding + completion. + initialBalance: + type: string + description: >- + initial_balance defines the tokens initially + scheduled to receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been + stopped by external modules + description: >- + UnbondingDelegationEntry defines an unbonding object + with relevant metadata. + description: |- + entries are the unbonding delegation entries. - (e.g., leading "." is not accepted). + unbonding delegation entries + description: >- + QueryDelegationResponse is response type for the + Query/UnbondingDelegation + RPC method. + default: + description: An unexpected error response. + schema: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - In practice, teams usually precompile into the - binary all types that they + protocol buffer message. This string must contain at + least - expect it to use in the context of Any. However, for - URLs which use the + one "/" character. The last segment of the URL's path + must represent - scheme `http`, `https`, or no scheme, one can - optionally set up a type + the fully qualified name of the type (as in - server that maps type URLs to message definitions as - follows: + `path/google.protobuf.Duration`). The name should be in + a canonical form + (e.g., leading "." is not accepted). - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + In practice, teams usually precompile into the binary + all types that they - Note: this functionality is not currently available - in the official + expect it to use in the context of Any. However, for + URLs which use the - protobuf release, and it is not used for type URLs - beginning with + scheme `http`, `https`, or no scheme, one can optionally + set up a type - type.googleapis.com. + server that maps type URLs to message definitions as + follows: - Schemes other than `http`, `https` (or the empty - scheme) might be + * If no scheme is provided, `https` is assumed. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - URL that describes the type of the serialized message. + Note: this functionality is not currently available in + the official + protobuf release, and it is not used for type URLs + beginning with - Protobuf library provides support to pack/unpack Any - values in the form + type.googleapis.com. As of May 2023, there are no widely + used type server - of utility functions or additional generated methods of - the Any type. + implementations and no plans to implement one. - Example 1: Pack and unpack a message in C++. + Schemes other than `http`, `https` (or the empty scheme) + might be - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - Example 2: Pack and unpack a message in Java. + URL that describes the type of the serialized message. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - Example 3: Pack and unpack a message in Python. + Protobuf library provides support to pack/unpack Any values + in the form - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + of utility functions or additional generated methods of the + Any type. - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Example 1: Pack and unpack a message in C++. - The pack methods provided by protobuf library will by - default use + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + Example 2: Pack and unpack a message in Java. - methods only use the fully qualified type name after the - last '/' + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + Example 3: Pack and unpack a message in Python. - name "y.z". + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + Example 4: Pack and unpack a message in Go - JSON + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + The pack methods provided by protobuf library will by + default use - The JSON representation of an `Any` value uses the - regular + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - representation of the deserialized, embedded message, - with an + methods only use the fully qualified type name after the + last '/' - additional field `@type` which contains the type URL. - Example: + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + name "y.z". - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a - custom JSON + JSON - representation, that representation will be embedded - adding a field + ==== - `value` which holds the custom JSON in addition to the - `@type` + The JSON representation of an `Any` value uses the regular - field. Example (for message - [google.protobuf.Duration][]): + representation of the deserialized, embedded message, with + an - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - data is the app specific metadata of the NFT class. - Optional - description: Class defines the class of the nft type. - description: class defines the class of the nft type. + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: validatorAddr + description: validator_addr defines the validator address to query for. + in: path + required: true + type: string + - name: delegatorAddr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/staking/v1beta1/validators/{validatorAddr}/unbonding_delegations: + get: + summary: >- + ValidatorUnbondingDelegations queries unbonding delegations of a + validator. + description: >- + When called from another module, this query might consume a high amount + of + + gas if the pagination field is incorrectly set. + operationId: ValidatorUnbondingDelegations + responses: + '200': + description: A successful response. + schema: + type: object + properties: + unbondingResponses: + type: array + items: + type: object + properties: + delegatorAddress: + type: string + description: >- + delegator_address is the encoded address of the + delegator. + validatorAddress: + type: string + description: >- + validator_address is the encoded address of the + validator. + entries: + type: array + items: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding + took place. + completionTime: + type: string + format: date-time + description: >- + completion_time is the unix time for unbonding + completion. + initialBalance: + type: string + description: >- + initial_balance defines the tokens initially + scheduled to receive at completion. + balance: + type: string + description: >- + balance defines the tokens to receive at + completion. + unbondingId: + type: string + format: uint64 + title: >- + Incrementing id that uniquely identifies this + entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has + been stopped by external modules + description: >- + UnbondingDelegationEntry defines an unbonding object + with relevant metadata. + description: |- + entries are the unbonding delegation entries. + + unbonding delegation entries + description: >- + UnbondingDelegation stores all of a single delegator's + unbonding bonds + + for a single validator in an time-ordered list. pagination: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -37589,16 +39613,16 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - title: >- - QueryClassesResponse is the response type for the Query/Classes - RPC method + description: >- + QueryValidatorUnbondingDelegationsResponse is response type for + the + + Query/ValidatorUnbondingDelegations RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -37609,7 +39633,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -37660,19 +39684,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -37710,7 +39732,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -37720,7 +39742,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -37750,6 +39772,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -37787,6 +39810,11 @@ paths: "value": "1.212s" } parameters: + - name: validatorAddr + description: validator_addr defines the validator address to query for. + in: path + required: true + type: string - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -37818,7 +39846,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -37837,251 +39865,252 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - Query - /cosmos/nft/v1beta1/classes/{class_id}: - get: - summary: Class queries an NFT class based on its id - operationId: Class + /cosmos/tx/v1beta1/decode: + post: + summary: TxDecode decodes the transaction. + operationId: TxDecode responses: '200': description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.TxDecodeResponse' + default: + description: An unexpected error response. schema: type: object properties: - class: - type: object - properties: - id: - type: string - title: >- - id defines the unique identifier of the NFT - classification, similar to the contract address of ERC721 - name: - type: string - title: >- - name defines the human-readable name of the NFT - classification. Optional - symbol: - type: string - title: >- - symbol is an abbreviated name for nft classification. - Optional - description: - type: string - title: >- - description is a brief description of nft classification. - Optional - uri: - type: string - title: >- - uri for the class metadata stored off chain. It can define - schema for Class and NFT `Data` attributes. Optional - uri_hash: - type: string - title: >- - uri_hash is a hash of the document pointed by uri. - Optional - data: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's path + must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name should be in + a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the binary + all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can optionally + set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available in + the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty - scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Schemes other than `http`, `https` (or the empty scheme) + might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any - values in the form - of utility functions or additional generated methods of - the Any type. + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { ... - if (any.UnpackTo(&foo)) { - ... - } + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by - default use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - methods only use the fully qualified type name after the - last '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - name "y.z". + name "y.z". - JSON + JSON + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with - an + representation of the deserialized, embedded message, with + an - additional field `@type` which contains the type URL. - Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a - custom JSON + If the embedded message type is well-known and has a custom + JSON - representation, that representation will be embedded - adding a field + representation, that representation will be embedded adding + a field - `value` which holds the custom JSON in addition to the - `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - data is the app specific metadata of the NFT class. - Optional - description: Class defines the class of the nft type. - title: >- - QueryClassResponse is the response type for the Query/Class RPC - method + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: body + description: |- + TxDecodeRequest is the request type for the Service.TxDecode + RPC method. + in: body + required: true + schema: + type: object + properties: + txBytes: + type: string + format: byte + description: tx_bytes is the raw transaction. + description: |- + TxDecodeRequest is the request type for the Service.TxDecode + RPC method. + tags: + - Service + /cosmos/tx/v1beta1/decode/amino: + post: + summary: TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON. + operationId: TxDecodeAmino + responses: + '200': + description: A successful response. + schema: + type: object + properties: + aminoJson: + type: string + description: >- + TxDecodeAminoResponse is the response type for the + Service.TxDecodeAmino + + RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -38092,7 +40121,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -38143,19 +40172,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -38193,7 +40220,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -38203,7 +40230,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -38233,6 +40260,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -38270,260 +40298,49 @@ paths: "value": "1.212s" } parameters: - - name: class_id - description: class_id associated with the nft - in: path + - name: body + description: >- + TxDecodeAminoRequest is the request type for the + Service.TxDecodeAmino + + RPC method. + in: body required: true - type: string - tags: - - Query - /cosmos/nft/v1beta1/nfts: - get: - summary: >- - NFTs queries all NFTs of a given class or owner,choose at least one of - the two, similar to tokenByIndex in + schema: + type: object + properties: + aminoBinary: + type: string + format: byte + description: >- + TxDecodeAminoRequest is the request type for the + Service.TxDecodeAmino - ERC721Enumerable - operationId: NFTs + RPC method. + tags: + - Service + /cosmos/tx/v1beta1/encode: + post: + summary: TxEncode encodes the transaction. + operationId: TxEncode responses: '200': description: A successful response. schema: type: object properties: - nfts: - type: array - items: - type: object - properties: - class_id: - type: string - title: >- - class_id associated with the NFT, similar to the - contract address of ERC721 - id: - type: string - title: id is a unique identifier of the NFT - uri: - type: string - title: uri for the NFT metadata stored off chain - uri_hash: - type: string - title: uri_hash is a hash of the document pointed by uri - data: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is an app specific data of the NFT. Optional - description: NFT defines the NFT. - title: NFT defines the NFT - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: >- - QueryNFTsResponse is the response type for the Query/NFTs RPC - methods + txBytes: + type: string + format: byte + description: tx_bytes is the encoded transaction bytes. + description: |- + TxEncodeResponse is the response type for the + Service.TxEncode method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -38534,7 +40351,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -38585,19 +40402,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -38635,7 +40450,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -38645,7 +40460,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -38675,6 +40490,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -38712,292 +40528,39 @@ paths: "value": "1.212s" } parameters: - - name: class_id - description: class_id associated with the nft. - in: query - required: false - type: string - - name: owner - description: owner is the owner address of the nft. - in: query - required: false - type: string - - name: pagination.key + - name: body description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean + TxEncodeRequest is the request type for the Service.TxEncode + RPC method. + in: body + required: true + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.TxEncodeRequest' tags: - - Query - /cosmos/nft/v1beta1/nfts/{class_id}/{id}: - get: - summary: NFT queries an NFT based on its class and id. - operationId: NFT + - Service + /cosmos/tx/v1beta1/encode/amino: + post: + summary: TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes. + operationId: TxEncodeAmino responses: '200': description: A successful response. schema: type: object properties: - nft: - type: object - properties: - class_id: - type: string - title: >- - class_id associated with the NFT, similar to the contract - address of ERC721 - id: - type: string - title: id is a unique identifier of the NFT - uri: - type: string - title: uri for the NFT metadata stored off chain - uri_hash: - type: string - title: uri_hash is a hash of the document pointed by uri - data: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): + aminoBinary: + type: string + format: byte + description: >- + TxEncodeAminoResponse is the response type for the + Service.TxEncodeAmino - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is an app specific data of the NFT. Optional - description: NFT defines the NFT. - title: owner is the owner address of the nft - title: QueryNFTResponse is the response type for the Query/NFT RPC method + RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -39008,7 +40571,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -39059,19 +40622,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -39109,7 +40670,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -39119,7 +40680,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -39149,6 +40710,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -39186,526 +40748,301 @@ paths: "value": "1.212s" } parameters: - - name: class_id - description: class_id associated with the nft - in: path - required: true - type: string - - name: id - description: id is a unique identifier of the NFT - in: path + - name: body + description: >- + TxEncodeAminoRequest is the request type for the + Service.TxEncodeAmino + + RPC method. + in: body required: true - type: string - tags: - - Query - /cosmos/nft/v1beta1/owner/{class_id}/{id}: - get: - summary: >- - Owner queries the owner of the NFT based on its class and id, same as - ownerOf in ERC721 - operationId: Owner - responses: - '200': - description: A successful response. schema: type: object properties: - owner: + aminoJson: type: string - title: owner is the owner address of the nft - title: >- - QueryOwnerResponse is the response type for the Query/Owner RPC - method - default: - description: An unexpected error response. + description: >- + TxEncodeAminoRequest is the request type for the + Service.TxEncodeAmino + + RPC method. + tags: + - Service + /cosmos/tx/v1beta1/simulate: + post: + summary: Simulate simulates executing a transaction for estimating gas usage. + operationId: Simulate + responses: + '200': + description: A successful response. schema: type: object properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + gasInfo: + description: gas_info is the information about gas used in the simulation. + type: object + properties: + gasWanted: + type: string + format: uint64 + description: >- + GasWanted is the maximum units of work we allow this tx to + perform. + gasUsed: + type: string + format: uint64 + description: GasUsed is the amount of gas actually consumed. + result: + description: result is the result of the simulation. + type: object + properties: + data: + type: string + format: byte + description: >- + Data is any data returned from message or handler + execution. It MUST be - protocol buffer message. This string must contain at - least + length prefixed in order to separate data from multiple + message executions. - one "/" character. The last segment of the URL's path - must represent + Deprecated. This field is still populated, but prefer + msg_response instead - the fully qualified name of the type (as in + because it also contains the Msg response typeURL. + log: + type: string + description: >- + Log contains the log information from message or handler + execution. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + title: nondeterministic + description: >- + EventAttribute is a single key-value pair, + associated with an event. + description: >- + Event allows application developers to attach additional + information to - `path/google.protobuf.Duration`). The name should be in - a canonical form + ResponseFinalizeBlock and ResponseCheckTx. - (e.g., leading "." is not accepted). + Later, transactions may be queried using these events. + description: >- + Events contains a slice of Event objects that were emitted + during message + or handler execution. + msgResponses: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - In practice, teams usually precompile into the binary - all types that they + protocol buffer message. This string must contain at + least - expect it to use in the context of Any. However, for - URLs which use the + one "/" character. The last segment of the URL's + path must represent - scheme `http`, `https`, or no scheme, one can optionally - set up a type + the fully qualified name of the type (as in - server that maps type URLs to message definitions as - follows: + `path/google.protobuf.Duration`). The name should be + in a canonical form + (e.g., leading "." is not accepted). - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + In practice, teams usually precompile into the + binary all types that they - Note: this functionality is not currently available in - the official + expect it to use in the context of Any. However, for + URLs which use the - protobuf release, and it is not used for type URLs - beginning with + scheme `http`, `https`, or no scheme, one can + optionally set up a type - type.googleapis.com. + server that maps type URLs to message definitions as + follows: - Schemes other than `http`, `https` (or the empty scheme) - might be + * If no scheme is provided, `https` is assumed. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - URL that describes the type of the serialized message. + Note: this functionality is not currently available + in the official + protobuf release, and it is not used for type URLs + beginning with - Protobuf library provides support to pack/unpack Any values - in the form + type.googleapis.com. As of May 2023, there are no + widely used type server - of utility functions or additional generated methods of the - Any type. + implementations and no plans to implement one. - Example 1: Pack and unpack a message in C++. + Schemes other than `http`, `https` (or the empty + scheme) might be - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - Example 2: Pack and unpack a message in Java. + URL that describes the type of the serialized message. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - Example 3: Pack and unpack a message in Python. + Protobuf library provides support to pack/unpack Any + values in the form - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + of utility functions or additional generated methods of + the Any type. - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Example 1: Pack and unpack a message in C++. - The pack methods provided by protobuf library will by - default use + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: class_id - description: class_id associated with the nft - in: path - required: true - type: string - - name: id - description: id is a unique identifier of the NFT - in: path - required: true - type: string - tags: - - Query - /cosmos/nft/v1beta1/supply/{class_id}: - get: - summary: >- - Supply queries the number of NFTs from the given class, same as - totalSupply of ERC721. - operationId: Supply - responses: - '200': - description: A successful response. - schema: - type: object - properties: - amount: - type: string - format: uint64 - title: amount is the number of all NFTs from the given class - title: >- - QuerySupplyResponse is the response type for the Query/Supply RPC - method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go + Example 2: Pack and unpack a message in Java. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - The pack methods provided by protobuf library will by - default use + Example 3: Pack and unpack a message in Python. - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - methods only use the fully qualified type name after the - last '/' + Example 4: Pack and unpack a message in Go - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - name "y.z". + The pack methods provided by protobuf library will by + default use + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - JSON + methods only use the fully qualified type name after the + last '/' + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - The JSON representation of an `Any` value uses the regular + name "y.z". - representation of the deserialized, embedded message, with - an - additional field `@type` which contains the type URL. - Example: + JSON - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + ==== - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + The JSON representation of an `Any` value uses the + regular - If the embedded message type is well-known and has a custom - JSON + representation of the deserialized, embedded message, + with an - representation, that representation will be embedded adding - a field + additional field `@type` which contains the type URL. + Example: - `value` which holds the custom JSON in addition to the - `@type` + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - field. Example (for message [google.protobuf.Duration][]): + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: class_id - description: class_id associated with the nft - in: path - required: true - type: string - tags: - - Query - /cosmos/group/v1/group_info/{group_id}: - get: - summary: GroupInfo queries group info based on group id. - operationId: GroupInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - info: - description: info is the GroupInfo of the group. - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata to attached to the - group. + If the embedded message type is well-known and has a + custom JSON - the recommended format of the metadata is to be found - here: - https://docs.cosmos.network/v0.47/modules/group#group-1 - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership - structure that + representation, that representation will be embedded + adding a field - would break existing proposals. Whenever any members - weight is changed, + `value` which holds the custom JSON in addition to the + `@type` - or any member is added or removed this version is - incremented and will + field. Example (for message + [google.protobuf.Duration][]): - cause proposals based on older versions of this group to - fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } description: >- - created_at is a timestamp specifying when a group was - created. - description: QueryGroupInfoResponse is the Query/GroupInfo response type. + msg_responses contains the Msg handler responses type + packed in Anys. + description: |- + SimulateResponse is the response type for the + Service.SimulateRPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -39716,7 +41053,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -39767,19 +41104,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -39817,7 +41152,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -39827,7 +41162,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -39857,6 +41192,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -39894,89 +41230,30 @@ paths: "value": "1.212s" } parameters: - - name: group_id - description: group_id is the unique ID of the group. - in: path + - name: body + description: |- + SimulateRequest is the request type for the Service.Simulate + RPC method. + in: body required: true - type: string - format: uint64 + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.SimulateRequest' tags: - - Query - /cosmos/group/v1/group_members/{group_id}: + - Service + /cosmos/tx/v1beta1/txs: get: - summary: GroupMembers queries members of a group by group id. - operationId: GroupMembers + summary: GetTxsEvent fetches txs by event. + operationId: GetTxsEvent responses: '200': description: A successful response. schema: - type: object - properties: - members: - type: array - items: - type: object - properties: - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - member: - description: member is the member data. - type: object - properties: - address: - type: string - description: address is the member's account address. - weight: - type: string - description: >- - weight is the member's voting weight that should be - greater than 0. - metadata: - type: string - description: >- - metadata is any arbitrary metadata attached to the - member. - added_at: - type: string - format: date-time - description: >- - added_at is a timestamp specifying when a member was - added. - description: >- - GroupMember represents the relationship between a group and - a member. - description: members are the members of the group with given group_id. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupMembersResponse is the Query/GroupMembersResponse - response type. + $ref: '#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse' default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -39987,7 +41264,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -40038,19 +41315,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -40088,7 +41363,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -40098,7 +41373,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -40128,6 +41403,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -40165,12 +41441,20 @@ paths: "value": "1.212s" } parameters: - - name: group_id - description: group_id is the unique ID of the group. - in: path - required: true - type: string - format: uint64 + - name: events + description: >- + events is the list of transaction event type. + + Deprecated post v0.47.x: use query instead, which should contain a + valid + + events query. + in: query + required: false + type: array + items: + type: string + collectionFormat: multi - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -40202,7 +41486,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -40221,280 +41505,273 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean - tags: - - Query - /cosmos/group/v1/group_policies_by_admin/{admin}: - get: - summary: GroupPoliciesByAdmin queries group policies by admin address. - operationId: GroupPoliciesByAdmin - responses: - '200': - description: A successful response. - schema: - type: object - properties: - group_policies: - type: array - items: - type: object - properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the group - policy. + - name: orderBy + description: |2- + - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults + to ASC in this case. + - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order + - ORDER_BY_DESC: ORDER_BY_DESC defines descending order + in: query + required: false + type: string + enum: + - ORDER_BY_UNSPECIFIED + - ORDER_BY_ASC + - ORDER_BY_DESC + default: ORDER_BY_UNSPECIFIED + - name: page + description: |- + page is the page number to query, starts at 1. If not provided, will + default to first page. + in: query + required: false + type: string + format: uint64 + - name: limit + description: >- + limit is the total number of results to be returned in the result + page. - the recommended format of the metadata is to be found - here: + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: query + description: >- + query defines the transaction event query that is proxied to + Tendermint's - https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's - GroupPolicyInfo structure that + TxSearch RPC method. The query must be valid. + in: query + required: false + type: string + tags: + - Service + post: + summary: BroadcastTx broadcast transaction. + operationId: BroadcastTx + responses: + '200': + description: A successful response. + schema: + type: object + properties: + txResponse: + description: tx_response is the queried TxResponses. + type: object + properties: + height: + type: string + format: int64 + title: The block height + txhash: + type: string + description: The transaction hash. + codespace: + type: string + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: + type: string + description: Result bytes, if any. + rawLog: + type: string + description: >- + The output of the application's logger (raw string). May + be - would create a different result on a running proposal. - decision_policy: + non-deterministic. + logs: + type: array + items: type: object properties: - type_url: + msgIndex: + type: integer + format: int64 + log: type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where + the key and value are - Schemes other than `http`, `https` (or the empty - scheme) might be + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where + all the attributes - used with implementation specific semantics. - value: - type: string - format: byte + contain key/value pairs that are strings instead + of raw bytes. description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. + Events contains a slice of Event objects that were + emitted during some + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed + tx ABCI message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gasWanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gasUsed: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + description: The request transaction bytes. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized - Example 1: Pack and unpack a message in C++. + protocol buffer message. This string must contain at + least - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + one "/" character. The last segment of the URL's path + must represent - Example 2: Pack and unpack a message in Java. + the fully qualified name of the type (as in - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + `path/google.protobuf.Duration`). The name should be + in a canonical form - Example 3: Pack and unpack a message in Python. + (e.g., leading "." is not accepted). - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - Example 4: Pack and unpack a message in Go + In practice, teams usually precompile into the binary + all types that they - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + expect it to use in the context of Any. However, for + URLs which use the - The pack methods provided by protobuf library will by - default use + scheme `http`, `https`, or no scheme, one can + optionally set up a type - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + server that maps type URLs to message definitions as + follows: - methods only use the fully qualified type name after the - last '/' - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + * If no scheme is provided, `https` is assumed. - name "y.z". + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + Note: this functionality is not currently available in + the official - JSON + protobuf release, and it is not used for type URLs + beginning with + type.googleapis.com. As of May 2023, there are no + widely used type server - The JSON representation of an `Any` value uses the - regular + implementations and no plans to implement one. - representation of the deserialized, embedded message, - with an - additional field `@type` which contains the type URL. - Example: + Schemes other than `http`, `https` (or the empty + scheme) might be - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + used with implementation specific semantics. + additionalProperties: {} + timestamp: + type: string + description: >- + Time of the previous block. For heights > 1, it's the + weighted median of - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + the timestamps of the valid votes in the block.LastCommit. + For height == 1, - If the embedded message type is well-known and has a - custom JSON + it's genesis time. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + title: nondeterministic + description: >- + EventAttribute is a single key-value pair, + associated with an event. + description: >- + Event allows application developers to attach additional + information to - representation, that representation will be embedded - adding a field + ResponseFinalizeBlock and ResponseCheckTx. - `value` which holds the custom JSON in addition to the - `@type` + Later, transactions may be queried using these events. + description: >- + Events defines all the events emitted by processing a + transaction. Note, - field. Example (for message - [google.protobuf.Duration][]): + these events include those emitted by processing all the + messages and those - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy - was created. - description: >- - GroupPolicyInfo represents the high-level on-chain - information for a group policy. - description: >- - group_policies are the group policies info with provided - admin. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + emitted from the ante. Whereas Logs contains the events, + with - was set, its value is undefined otherwise - description: >- - QueryGroupPoliciesByAdminResponse is the - Query/GroupPoliciesByAdmin response type. + additional metadata, emitted only by processing the + messages. + description: |- + BroadcastTxResponse is the response type for the + Service.BroadcastTx method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -40505,7 +41782,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -40556,19 +41833,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -40606,7 +41881,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -40616,7 +41891,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -40646,6 +41921,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -40683,346 +41959,75 @@ paths: "value": "1.212s" } parameters: - - name: admin - description: admin is the admin address of the group policy. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total + - name: body description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. + BroadcastTxRequest is the request type for the + Service.BroadcastTxRequest - count_total is only respected when offset is used. It is ignored - when key + RPC method. + in: body + required: true + schema: + type: object + properties: + txBytes: + type: string + format: byte + description: tx_bytes is the raw transaction. + mode: + type: string + enum: + - BROADCAST_MODE_UNSPECIFIED + - BROADCAST_MODE_BLOCK + - BROADCAST_MODE_SYNC + - BROADCAST_MODE_ASYNC + default: BROADCAST_MODE_UNSPECIFIED + description: >- + BroadcastMode specifies the broadcast mode for the + TxService.Broadcast RPC - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. + method. + - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering + - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead, + BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x + onwards. + - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits + for a CheckTx execution response only. + - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client + returns immediately. + description: >- + BroadcastTxRequest is the request type for the + Service.BroadcastTxRequest - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean + RPC method. tags: - - Query - /cosmos/group/v1/group_policies_by_group/{group_id}: + - Service + /cosmos/tx/v1beta1/txs/block/{height}: get: - summary: GroupPoliciesByGroup queries group policies by group id. - operationId: GroupPoliciesByGroup + summary: GetBlockWithTxs fetches a block with decoded txs. + operationId: GetBlockWithTxs responses: '200': description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse' + default: + description: An unexpected error response. schema: type: object properties: - group_policies: + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the group - policy. - - the recommended format of the metadata is to be found - here: - - https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's - GroupPolicyInfo structure that - - would create a different result on a running proposal. - decision_policy: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy - was created. - description: >- - GroupPolicyInfo represents the high-level on-chain - information for a group policy. - description: >- - group_policies are the group policies info associated with the - provided group. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupPoliciesByGroupResponse is the - Query/GroupPoliciesByGroup response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -41073,19 +42078,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -41123,7 +42126,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -41133,7 +42136,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -41163,6 +42166,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -41200,12 +42204,12 @@ paths: "value": "1.212s" } parameters: - - name: group_id - description: group_id is the unique ID of the group policy's group. + - name: height + description: height is the height of the block to query. in: path required: true type: string - format: uint64 + format: int64 - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -41237,7 +42241,7 @@ paths: required: false type: string format: uint64 - - name: pagination.count_total + - name: pagination.countTotal description: >- count_total is set to true to indicate that the result set should include @@ -41256,256 +42260,25 @@ paths: description: >- reverse is set to true if results are to be returned in the descending order. - - - Since: cosmos-sdk 0.43 in: query required: false type: boolean tags: - - Query - /cosmos/group/v1/group_policy_info/{address}: + - Service + /cosmos/tx/v1beta1/txs/{hash}: get: - summary: >- - GroupPolicyInfo queries group policy info based on account address of - group policy. - operationId: GroupPolicyInfo + summary: GetTx fetches a tx by hash. + operationId: GetTx responses: '200': description: A successful response. schema: - type: object - properties: - info: - type: object - properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the group - policy. - - the recommended format of the metadata is to be found - here: - - https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's - GroupPolicyInfo structure that - - would create a different result on a running proposal. - decision_policy: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy - was created. - description: >- - GroupPolicyInfo represents the high-level on-chain information - for a group policy. - description: >- - QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response - type. + $ref: '#/definitions/cosmos.tx.v1beta1.GetTxResponse' default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -41516,7 +42289,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -41567,19 +42340,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -41617,7 +42388,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -41627,7 +42398,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -41657,6 +42428,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -41694,103 +42466,37 @@ paths: "value": "1.212s" } parameters: - - name: address - description: address is the account address of the group policy. + - name: hash + description: hash is the tx hash to query, encoded as a hex string. in: path required: true type: string tags: - - Query - /cosmos/group/v1/groups: + - Service + /cosmos/upgrade/v1beta1/applied_plan/{name}: get: - summary: Groups queries all groups in state. - description: 'Since: cosmos-sdk 0.47.1' - operationId: Groups - responses: + summary: AppliedPlan queries a previously applied upgrade plan by its name. + operationId: AppliedPlan + responses: '200': description: A successful response. schema: type: object properties: - groups: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata to attached to the - group. - - the recommended format of the metadata is to be found - here: - https://docs.cosmos.network/v0.47/modules/group#group-1 - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership - structure that - - would break existing proposals. Whenever any members - weight is changed, - - or any member is added or removed this version is - incremented and will - - cause proposals based on older versions of this group to - fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group was - created. - description: >- - GroupInfo represents the high-level on-chain information for - a group. - description: '`groups` is all the groups present in state.' - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryGroupsResponse is the Query/Groups response type. + height: + type: string + format: int64 + description: height is the block height at which the plan was applied. + description: >- + QueryAppliedPlanResponse is the response type for the + Query/AppliedPlan RPC - Since: cosmos-sdk 0.47.1 + method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -41801,7 +42507,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -41852,19 +42558,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -41902,7 +42606,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -41912,7 +42616,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -41942,6 +42646,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -41979,152 +42684,31 @@ paths: "value": "1.212s" } parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + - name: name + description: name is the name of the applied plan to query for. + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmos/group/v1/groups_by_admin/{admin}: + /cosmos/upgrade/v1beta1/authority: get: - summary: GroupsByAdmin queries groups by admin address. - operationId: GroupsByAdmin + summary: Returns the account with authority to conduct upgrades + operationId: Authority responses: '200': description: A successful response. schema: type: object properties: - groups: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata to attached to the - group. - - the recommended format of the metadata is to be found - here: - https://docs.cosmos.network/v0.47/modules/group#group-1 - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership - structure that - - would break existing proposals. Whenever any members - weight is changed, - - or any member is added or removed this version is - incremented and will - - cause proposals based on older versions of this group to - fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group was - created. - description: >- - GroupInfo represents the high-level on-chain information for - a group. - description: groups are the groups info with the provided admin. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse - response type. + address: + type: string + title: QueryAuthorityResponse is the response type for Query/Authority default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -42135,7 +42719,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -42186,19 +42770,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -42236,7 +42818,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -42246,7 +42828,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -42276,6 +42858,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -42312,158 +42895,148 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: admin - description: admin is the account address of a group's admin. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmos/group/v1/groups_by_member/{address}: + /cosmos/upgrade/v1beta1/current_plan: get: - summary: GroupsByMember queries groups by member address. - operationId: GroupsByMember + summary: CurrentPlan queries the current upgrade plan. + operationId: CurrentPlan responses: '200': description: A successful response. schema: type: object properties: - groups: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata to attached to the - group. + plan: + description: plan is the current upgrade plan. + type: object + properties: + name: + type: string + description: >- + Sets the name for the upgrade. This name will be used by + the upgraded - the recommended format of the metadata is to be found - here: - https://docs.cosmos.network/v0.47/modules/group#group-1 - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership - structure that + version of the software to apply any special "on-upgrade" + commands during - would break existing proposals. Whenever any members - weight is changed, + the first BeginBlock method after the upgrade is applied. + It is also used - or any member is added or removed this version is - incremented and will + to detect whether a software version can handle a given + upgrade. If no - cause proposals based on older versions of this group to - fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group was - created. - description: >- - GroupInfo represents the high-level on-chain information for - a group. - description: groups are the groups info with the provided group member. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: + upgrade handler with this name has been set in the + software, it will be + + assumed that the software is out-of-date when the upgrade + Time or Height is + + reached and the software will exit. + time: type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + format: date-time + description: >- + Deprecated: Time based upgrades have been deprecated. Time + based upgrade logic + + has been removed from the SDK. + + If this field is not empty, an error will be thrown. + height: + type: string + format: int64 + description: The height at which the upgrade must be performed. + info: type: string - format: uint64 title: >- - total is total number of results available if - PageRequest.count_total + Any application specific upgrade info to be included + on-chain - was set, its value is undefined otherwise + such as a git commit that validators could automatically + upgrade to + upgradedClientState: + description: >- + Deprecated: UpgradedClientState field has been deprecated. + IBC upgrade logic has been + + moved to the IBC module in the sub module 02-client. + + If this field is not empty, an error will be thrown. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. As of May 2023, there are no + widely used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + additionalProperties: {} description: >- - QueryGroupsByMemberResponse is the Query/GroupsByMember response - type. + QueryCurrentPlanResponse is the response type for the + Query/CurrentPlan RPC + + method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -42474,7 +43047,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -42525,19 +43098,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -42575,7 +43146,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -42585,7 +43156,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -42615,6 +43186,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -42651,405 +43223,44 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: address - description: address is the group member address. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean tags: - Query - /cosmos/group/v1/proposal/{proposal_id}: + /cosmos/upgrade/v1beta1/module_versions: get: - summary: Proposal queries a proposal based on proposal id. - operationId: GroupProposal + summary: ModuleVersions queries the list of module versions from state. + operationId: ModuleVersions responses: '200': description: A successful response. schema: type: object properties: - proposal: - description: proposal is the proposal info. - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique id of the proposal. - group_policy_address: - type: string - description: >- - group_policy_address is the account address of group - policy. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the - proposal. - - the recommended format of the metadata is to be found - here: - - https://docs.cosmos.network/v0.47/modules/group#proposal-4 - proposers: - type: array - items: + moduleVersions: + type: array + items: + type: object + properties: + name: type: string - description: proposers are the account addresses of the proposers. - submit_time: - type: string - format: date-time - description: >- - submit_time is a timestamp specifying when a proposal was - submitted. - group_version: - type: string - format: uint64 - description: >- - group_version tracks the version of the group at proposal - submission. - - This field is here for informational purposes only. - group_policy_version: - type: string - format: uint64 - description: >- - group_policy_version tracks the version of the group - policy at proposal submission. - - When a decision policy is changed, existing proposals from - previous policy - - versions will become invalid with the `ABORTED` status. - - This field is here for informational purposes only. - status: - description: >- - status represents the high level position in the life - cycle of the proposal. Initial value is Submitted. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_SUBMITTED - - PROPOSAL_STATUS_ACCEPTED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_ABORTED - - PROPOSAL_STATUS_WITHDRAWN - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result contains the sums of all weighted votes - for this - - proposal for each vote option. It is empty at submission, - and only - - populated after tallying, at voting period end or at - proposal execution, - - whichever happens first. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - voting_period_end: - type: string - format: date-time - description: >- - voting_period_end is the timestamp before which voting - must be done. - - Unless a successful MsgExec is called before (to execute a - proposal whose - - tally is successful before the voting period ends), - tallying will be done - - at this point, and the `final_tally_result`and `status` - fields will be - - accordingly updated. - executor_result: - description: >- - executor_result is the final result of the proposal - execution. Initial value is NotRun. - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - messages: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): + title: name of the app module + version: + type: string + format: uint64 + title: consensus version of the app module + description: ModuleVersion specifies a module and its consensus version. + description: >- + module_versions is a list of module names with their consensus + versions. + description: >- + QueryModuleVersionsResponse is the response type for the + Query/ModuleVersions - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of `sdk.Msg`s that will be executed if - the proposal passes. - title: - type: string - description: 'Since: cosmos-sdk 0.47' - title: title is the title of the proposal - summary: - type: string - description: 'Since: cosmos-sdk 0.47' - title: summary is a short summary of the proposal - description: QueryProposalResponse is the Query/Proposal response type. + RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -43060,7 +43271,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -43111,19 +43322,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -43161,7 +43370,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -43171,7 +43380,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -43201,6 +43410,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -43238,58 +43448,50 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id - description: proposal_id is the unique ID of a proposal. - in: path - required: true + - name: moduleName + description: |- + module_name is a field to query a specific module + consensus version from state. Leaving this empty will + fetch the full list of module versions from state + in: query + required: false type: string - format: uint64 tags: - Query - /cosmos/group/v1/proposals/{proposal_id}/tally: + /cosmos/upgrade/v1beta1/upgraded_consensus_state/{lastHeight}: get: summary: >- - TallyResult returns the tally result of a proposal. If the proposal is + UpgradedConsensusState queries the consensus state that will serve - still in voting period, then this query computes the current tally - state, + as a trusted kernel for the next version of this chain. It will only be - which might not be final. On the other hand, if the proposal is final, + stored at the last height of this chain. - then it simply returns the `final_tally_result` state stored in the + UpgradedConsensusState RPC not supported with legacy querier - proposal itself. - operationId: GroupTallyResult + This rpc is deprecated now that IBC has its own replacement + + (https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54) + operationId: UpgradedConsensusState responses: '200': description: A successful response. schema: type: object properties: - tally: - description: tally defines the requested tally. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - description: QueryTallyResultResponse is the Query/TallyResult response type. + upgradedConsensusState: + type: string + format: byte + description: >- + QueryUpgradedConsensusStateResponse is the response type for the + Query/UpgradedConsensusState + + RPC method. default: description: An unexpected error response. schema: type: object properties: - error: - type: string code: type: integer format: int32 @@ -43300,7 +43502,7 @@ paths: items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of @@ -43351,19 +43553,17 @@ paths: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -43401,7 +43601,7 @@ paths: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -43411,7 +43611,7 @@ paths: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -43441,6 +43641,7 @@ paths: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -43478,2950 +43679,5431 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id - description: proposal_id is the unique id of a proposal. + - name: lastHeight + description: |- + last height of the current chain must be sent in request + as this is the height under which next consensus state is stored in: path required: true type: string - format: uint64 + format: int64 tags: - Query - /cosmos/group/v1/proposals_by_group_policy/{address}: - get: - summary: >- - ProposalsByGroupPolicy queries proposals based on account address of - group policy. - operationId: ProposalsByGroupPolicy - responses: - '200': - description: A successful response. - schema: - type: object - properties: - proposals: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique id of the proposal. - group_policy_address: - type: string - description: >- - group_policy_address is the account address of group - policy. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the - proposal. - - the recommended format of the metadata is to be found - here: +definitions: + akash.audit.v1.AuditedProvider: + type: object + properties: + owner: + type: string + description: |- + Owner is the account bech32 address of the provider. + It is a string representing a valid account address. - https://docs.cosmos.network/v0.47/modules/group#proposal-4 - proposers: - type: array - items: - type: string - description: proposers are the account addresses of the proposers. - submit_time: - type: string - format: date-time - description: >- - submit_time is a timestamp specifying when a proposal - was submitted. - group_version: - type: string - format: uint64 - description: >- - group_version tracks the version of the group at - proposal submission. + Example: + "akash1..." + auditor: + type: string + description: |- + Auditor is the account bech32 address of the auditor. + It is a string representing a valid account address. - This field is here for informational purposes only. - group_policy_version: - type: string - format: uint64 - description: >- - group_policy_version tracks the version of the group - policy at proposal submission. + Example: + "akash1..." + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: |- + Attributes holds a list of key-value pairs of provider attributes. + Attributes are arbitrary values that a provider exposes. + description: >- + AuditedProvider stores owner, auditor and attributes details. - When a decision policy is changed, existing proposals - from previous policy + An AuditedProvider is a provider that has undergone a verification or + auditing process to ensure that it meets certain standards or requirements + by an auditor. - versions will become invalid with the `ABORTED` status. + An auditor can be any valid account on-chain. - This field is here for informational purposes only. - status: - description: >- - status represents the high level position in the life - cycle of the proposal. Initial value is Submitted. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_SUBMITTED - - PROPOSAL_STATUS_ACCEPTED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_ABORTED - - PROPOSAL_STATUS_WITHDRAWN - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result contains the sums of all weighted - votes for this - - proposal for each vote option. It is empty at - submission, and only + NOTE: There are certain teams providing auditing services, which should be + accounted for when deploying. + akash.audit.v1.QueryProvidersResponse: + type: object + properties: + providers: + type: array + items: + type: object + properties: + owner: + type: string + description: |- + Owner is the account bech32 address of the provider. + It is a string representing a valid account address. - populated after tallying, at voting period end or at - proposal execution, + Example: + "akash1..." + auditor: + type: string + description: |- + Auditor is the account bech32 address of the auditor. + It is a string representing a valid account address. - whichever happens first. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - voting_period_end: - type: string - format: date-time - description: >- - voting_period_end is the timestamp before which voting - must be done. + Example: + "akash1..." + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", "cpu_architecture", + etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: >- + Attributes holds a list of key-value pairs of provider + attributes. - Unless a successful MsgExec is called before (to execute - a proposal whose + Attributes are arbitrary values that a provider exposes. + description: >- + AuditedProvider stores owner, auditor and attributes details. - tally is successful before the voting period ends), - tallying will be done + An AuditedProvider is a provider that has undergone a verification + or auditing process to ensure that it meets certain standards or + requirements by an auditor. - at this point, and the `final_tally_result`and `status` - fields will be + An auditor can be any valid account on-chain. - accordingly updated. - executor_result: - description: >- - executor_result is the final result of the proposal - execution. Initial value is NotRun. - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - messages: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized + NOTE: There are certain teams providing auditing services, which + should be accounted for when deploying. + description: Providers contains a list of audited providers account addresses. + pagination: + description: Pagination is used to paginate results. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - protocol buffer message. This string must contain - at least + was set, its value is undefined otherwise + description: >- + QueryProvidersResponse is response type for the Query/Providers RPC + method. + akash.base.attributes.v1.Attribute: + type: object + properties: + key: + type: string + description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + cosmos.base.query.v1beta1.PageRequest: + type: object + properties: + key: + type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + offset: + type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + limit: + type: string + format: uint64 + description: >- + limit is the total number of results to be returned in the result + page. - one "/" character. The last segment of the URL's - path must represent + If left empty it will default to a value to be set by each app. + count_total: + type: boolean + description: >- + count_total is set to true to indicate that the result set should + include - the fully qualified name of the type (as in + a count of the total number of items available for pagination in UIs. - `path/google.protobuf.Duration`). The name should - be in a canonical form + count_total is only respected when offset is used. It is ignored when + key - (e.g., leading "." is not accepted). + is set. + reverse: + type: boolean + description: >- + reverse is set to true if results are to be returned in the descending + order. + countTotal: + type: boolean + description: >- + count_total is set to true to indicate that the result set should + include + a count of the total number of items available for pagination in UIs. - In practice, teams usually precompile into the - binary all types that they + count_total is only respected when offset is used. It is ignored when + key - expect it to use in the context of Any. However, - for URLs which use the + is set. + description: |- + message SomeRequest { + Foo some_parameter = 1; + PageRequest pagination = 2; + } + title: |- + PageRequest is to be embedded in gRPC request messages for efficient + pagination. Ex: + cosmos.base.query.v1beta1.PageResponse: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: |- + total is total number of results available if PageRequest.count_total + was set, its value is undefined otherwise + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. - scheme `http`, `https`, or no scheme, one can - optionally set up a type + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + google.protobuf.Any: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - server that maps type URLs to message definitions - as follows: + protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must represent - * If no scheme is provided, `https` is assumed. + the fully qualified name of the type (as in - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + `path/google.protobuf.Duration`). The name should be in a canonical + form - Note: this functionality is not currently - available in the official + (e.g., leading "." is not accepted). - protobuf release, and it is not used for type URLs - beginning with - type.googleapis.com. + In practice, teams usually precompile into the binary all types that + they + expect it to use in the context of Any. However, for URLs which use + the - Schemes other than `http`, `https` (or the empty - scheme) might be + scheme `http`, `https`, or no scheme, one can optionally set up a type - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + server that maps type URLs to message definitions as follows: - URL that describes the type of the serialized message. + * If no scheme is provided, `https` is assumed. - Protobuf library provides support to pack/unpack Any - values in the form + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - of utility functions or additional generated methods - of the Any type. + Note: this functionality is not currently available in the official + protobuf release, and it is not used for type URLs beginning with - Example 1: Pack and unpack a message in C++. + type.googleapis.com. As of May 2023, there are no widely used type + server - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + implementations and no plans to implement one. - Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Schemes other than `http`, `https` (or the empty scheme) might be - Example 3: Pack and unpack a message in Python. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along with + a - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + URL that describes the type of the serialized message. - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Protobuf library provides support to pack/unpack Any values in the form - The pack methods provided by protobuf library will by - default use + of utility functions or additional generated methods of the Any type. - 'type.googleapis.com/full.type.name' as the type URL - and the unpack - methods only use the fully qualified type name after - the last '/' + Example 1: Pack and unpack a message in C++. - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - name "y.z". + Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - JSON + Example 3: Pack and unpack a message in Python. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - The JSON representation of an `Any` value uses the - regular + Example 4: Pack and unpack a message in Go - representation of the deserialized, embedded message, - with an + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - additional field `@type` which contains the type URL. - Example: + The pack methods provided by protobuf library will by default use - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + 'type.googleapis.com/full.type.name' as the type URL and the unpack - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + methods only use the fully qualified type name after the last '/' - If the embedded message type is well-known and has a - custom JSON + in the type URL, for example "foo.bar.com/x/y.z" will yield type - representation, that representation will be embedded - adding a field + name "y.z". - `value` which holds the custom JSON in addition to the - `@type` - field. Example (for message - [google.protobuf.Duration][]): + JSON - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of `sdk.Msg`s that will be executed - if the proposal passes. - title: - type: string - description: 'Since: cosmos-sdk 0.47' - title: title is the title of the proposal - summary: - type: string - description: 'Since: cosmos-sdk 0.47' - title: summary is a short summary of the proposal - description: >- - Proposal defines a group proposal. Any member of a group can - submit a proposal + ==== - for a group policy to decide upon. + The JSON representation of an `Any` value uses the regular - A proposal consists of a set of `sdk.Msg`s that will be - executed if the proposal + representation of the deserialized, embedded message, with an - passes as well as some optional metadata associated with the - proposal. - description: proposals are the proposals with given group policy. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + additional field `@type` which contains the type URL. Example: - was set, its value is undefined otherwise - description: >- - QueryProposalsByGroupPolicyResponse is the - Query/ProposalByGroupPolicy response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - protocol buffer message. This string must contain at - least + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - one "/" character. The last segment of the URL's path - must represent + If the embedded message type is well-known and has a custom JSON - the fully qualified name of the type (as in + representation, that representation will be embedded adding a field - `path/google.protobuf.Duration`). The name should be in - a canonical form + `value` which holds the custom JSON in addition to the `@type` - (e.g., leading "." is not accepted). + field. Example (for message [google.protobuf.Duration][]): + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + grpc.gateway.runtime.Error: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + akash.cert.v1.Certificate: + type: object + properties: + state: + description: |- + State is the state of the certificate. + CertificateValid denotes state for deployment active. + CertificateRevoked denotes state for deployment closed. + type: string + enum: + - invalid + - valid + - revoked + default: invalid + cert: + type: string + format: byte + description: Cert holds the bytes of the certificate. + pubkey: + type: string + format: byte + description: PubKey holds the public key of the certificate. + description: >- + Certificate stores state, certificate and it's public key. - In practice, teams usually precompile into the binary - all types that they + The certificate is required for several transactions including deployment + of a workload to verify the identity of the tenant and secure the + deployment. + akash.cert.v1.CertificateFilter: + type: object + properties: + owner: + type: string + description: |- + Owner is the account address of the user who owns the certificate. + It is a string representing a valid account address. - expect it to use in the context of Any. However, for - URLs which use the + Example: + "akash1..." + serial: + type: string + description: Serial is a sequence number for the certificate. + state: + type: string + description: |- + State is the state of the certificate. + CertificateValid denotes state for deployment active. + CertificateRevoked denotes state for deployment closed. + description: CertificateFilter defines filters used to filter certificates. + akash.cert.v1.CertificateResponse: + type: object + properties: + certificate: + description: Certificate holds the certificate. + type: object + properties: + state: + description: |- + State is the state of the certificate. + CertificateValid denotes state for deployment active. + CertificateRevoked denotes state for deployment closed. + type: string + enum: + - invalid + - valid + - revoked + default: invalid + cert: + type: string + format: byte + description: Cert holds the bytes of the certificate. + pubkey: + type: string + format: byte + description: PubKey holds the public key of the certificate. + serial: + type: string + description: Serial is a sequence number for the certificate. + description: >- + CertificateResponse contains a single X509 certificate and its serial + number. + akash.cert.v1.QueryCertificatesResponse: + type: object + properties: + certificates: + type: array + items: + type: object + properties: + certificate: + description: Certificate holds the certificate. + type: object + properties: + state: + description: |- + State is the state of the certificate. + CertificateValid denotes state for deployment active. + CertificateRevoked denotes state for deployment closed. + type: string + enum: + - invalid + - valid + - revoked + default: invalid + cert: + type: string + format: byte + description: Cert holds the bytes of the certificate. + pubkey: + type: string + format: byte + description: PubKey holds the public key of the certificate. + serial: + type: string + description: Serial is a sequence number for the certificate. + description: >- + CertificateResponse contains a single X509 certificate and its + serial number. + description: Certificates is a list of certificate. + pagination: + description: Pagination contains the information about response pagination. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - scheme `http`, `https`, or no scheme, one can optionally - set up a type + was set, its value is undefined otherwise + description: >- + QueryCertificatesResponse is response type for the Query/Certificates RPC + method. + akash.cert.v1.State: + type: string + enum: + - invalid + - valid + - revoked + default: invalid + description: |- + State is an enum which refers to state of the certificate. - server that maps type URLs to message definitions as - follows: + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - valid: CertificateValid denotes state for deployment active. + - revoked: CertificateRevoked denotes state for deployment closed. + akash.base.attributes.v1.PlacementRequirements: + type: object + properties: + signed_by: + description: >- + SignedBy holds the list of keys that tenants expect to have signatures + from. + type: object + properties: + all_of: + type: array + items: + type: string + description: AllOf indicates all keys in this list must have signed attributes. + any_of: + type: array + items: + type: string + description: >- + AnyOf means that at least one of the keys from the list must have + signed attributes. + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: >- + Attribute holds the list of attributes tenant expects from the + provider. + description: >- + PlacementRequirements represents the requirements for a provider placement + on the network. + It is used to specify the characteristics and constraints of a provider + that can be used to satisfy a deployment request. + akash.base.attributes.v1.SignedBy: + type: object + properties: + all_of: + type: array + items: + type: string + description: AllOf indicates all keys in this list must have signed attributes. + any_of: + type: array + items: + type: string + description: >- + AnyOf means that at least one of the keys from the list must have + signed attributes. + description: >- + SignedBy represents validation accounts that tenant expects signatures for + provider attributes. - * If no scheme is provided, `https` is assumed. + AllOf has precedence i.e. if there is at least one entry AnyOf is ignored + regardless to how many - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + entries there. + akash.base.deposit.v1.Source: + type: string + enum: + - invalid + - balance + - grant + default: invalid + description: |- + Source is an enum which lists source of funds for deployment deposit. - Note: this functionality is not currently available in - the official + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - balance: SourceBalance denotes account balance as source of funds + - grant: SourceGrant denotes authz grants as source of funds + akash.base.resources.v1beta4.CPU: + type: object + properties: + units: + description: |- + Units of the CPU, which represents the number of CPUs available. + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: >- + Attributes holds a list of key-value attributes that describe the GPU, + such as its model, memory and interface. - protobuf release, and it is not used for type URLs - beginning with + This field is required and must be a list of `Attribute` messages. + description: CPU stores resource units and cpu config attributes. + akash.base.resources.v1beta4.Endpoint: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is implemented when the lease is + deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: SequenceNumber represents a sequence number for the Endpoint. + description: Endpoint describes a publicly accessible IP service. + akash.base.resources.v1beta4.Endpoint.Kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + description: |- + Kind describes how the endpoint is implemented when the lease is deployed. - type.googleapis.com. + - SHARED_HTTP: Describes an endpoint that becomes a Kubernetes Ingress. + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort. + - LEASED_IP: Describes an endpoint that becomes a leased IP. + akash.base.resources.v1beta4.GPU: + type: object + properties: + units: + description: >- + The resource value of the GPU, which represents the number of GPUs + available. + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: GPU stores resource units and gpu configuration attributes. + akash.base.resources.v1beta4.Memory: + type: object + properties: + quantity: + description: >- + Quantity of memory available, which represents the amount of memory in + bytes. - Schemes other than `http`, `https` (or the empty scheme) - might be + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: |- + Attributes that describe the memory, such as its type and speed. + This field is required and must be a list of Attribute key-values. + description: Memory stores resource quantity and memory attributes. + akash.base.resources.v1beta4.ResourceValue: + type: object + properties: + val: + type: string + format: byte + description: Unit stores cpu, memory and storage metrics. + akash.base.resources.v1beta4.Resources: + type: object + properties: + id: + type: integer + format: int64 + description: Id is a unique identifier for the resources. + cpu: + description: >- + CPU resources available, including the architecture, number of cores + and other details. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + This field is optional and can be empty if no CPU resources are + available. + type: object + properties: + units: + description: |- + Units of the CPU, which represents the number of CPUs available. + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - + Key of the attribute (e.g., "region", "cpu_architecture", + etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: >- + Attributes holds a list of key-value attributes that describe the + GPU, such as its model, memory and interface. - Example 1: Pack and unpack a message in C++. + This field is required and must be a list of `Attribute` messages. + memory: + description: >- + Memory resources available, including the quantity and attributes. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + This field is optional and can be empty if no memory resources are + available. + type: object + properties: + quantity: + description: >- + Quantity of memory available, which represents the amount of + memory in bytes. - Example 2: Pack and unpack a message in Java. + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", "cpu_architecture", + etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: |- + Attributes that describe the memory, such as its type and speed. + This field is required and must be a list of Attribute key-values. + storage: + type: array + items: + type: object + properties: + name: + type: string + description: Name holds an arbitrary name for the storage resource. + quantity: + description: >- + Quantity of storage available, which represents the amount of + memory in bytes. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", "cpu_architecture", + etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: >- + Attributes that describe the storage. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + This field is required and must be a list of Attribute + key-values. + description: Storage stores resource quantity and storage attributes. + description: >- + Storage resources available, including the quantity and attributes. - Example 4: Pack and unpack a message in Go + This field is optional and can be empty if no storage resources are + available. + gpu: + description: >- + GPU resources available, including the type, architecture and other + details. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + This field is optional and can be empty if no GPU resources are + available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which represents the number of GPUs + available. - The pack methods provided by protobuf library will by - default use + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", "cpu_architecture", + etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is implemented when the lease is + deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: SequenceNumber represents a sequence number for the Endpoint. + description: Endpoint describes a publicly accessible IP service. + title: Endpoint resources available + title: |- + Resources describes all available resources types for deployment/node etc + if field is nil resource is not present in the given data-structure + akash.base.resources.v1beta4.Storage: + type: object + properties: + name: + type: string + description: Name holds an arbitrary name for the storage resource. + quantity: + description: >- + Quantity of storage available, which represents the amount of memory + in bytes. - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: |- + Attributes that describe the storage. + This field is required and must be a list of Attribute key-values. + description: Storage stores resource quantity and storage attributes. + akash.deployment.v1.Deployment: + type: object + properties: + id: + description: ID is the unique identifier of the deployment. + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - methods only use the fully qualified type name after the - last '/' + It is a string representing a valid bech32 account address. - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - name "y.z". + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier + for the deployment. + It is used to differentiate deployments created by the same owner. + state: + description: |- + State defines the sate of the deployment. + A deployment can be either active or inactive. + type: string + enum: + - invalid + - active + - closed + default: invalid + hash: + type: string + format: byte + description: Hash is an hashed representation of the deployment. + created_at: + type: string + format: int64 + description: >- + CreatedAt indicates when the deployment was created as a block height + value. + reclamation: + description: >- + reclamation stores the deployment's reclamation requirements for + persistence. - JSON + Needed so that StartGroup can propagate reclamation to newly created + orders. + type: object + properties: + min_window: + type: string + description: min_window is the minimum reclamation window the tenant requires. + description: Deployment stores deploymentID, state and checksum details. + akash.deployment.v1.Deployment.State: + type: string + enum: + - invalid + - active + - closed + default: invalid + description: |- + State is an enum which refers to state of deployment. + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - active: DeploymentActive denotes state for deployment active. + - closed: DeploymentClosed denotes state for deployment closed. + akash.deployment.v1.DeploymentID: + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - The JSON representation of an `Any` value uses the regular + It is a string representing a valid bech32 account address. - representation of the deserialized, embedded message, with - an - additional field `@type` which contains the type URL. - Example: + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier for + the deployment. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + It is used to differentiate deployments created by the same owner. + description: >- + DeploymentID represents a unique identifier for a specific deployment on + the network. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + It is composed of two fields: an owner address and a sequence number + (dseq). + akash.deployment.v1.DeploymentReclamation: + type: object + properties: + min_window: + type: string + description: min_window is the minimum reclamation window the tenant requires. + description: |- + DeploymentReclamation defines the tenant's reclamation requirements. + Stored on the Deployment and propagated to Orders. + akash.deployment.v1.GroupID: + type: object + properties: + owner: + type: string + description: |- + Owner is the account address of the user who owns the group. + It is a string representing a valid account address. - If the embedded message type is well-known and has a custom - JSON + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier for + the deployment. - representation, that representation will be embedded adding - a field + It is used to differentiate deployments created by the same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier for the + group. - `value` which holds the custom JSON in addition to the - `@type` + It is used to differentiate groups created by the same owner in a + deployment. + description: >- + GroupID uniquely identifies a group within a deployment on the network. - field. Example (for message [google.protobuf.Duration][]): + A group represents a specific collection of resources or configurations - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: >- - address is the account address of the group policy related to - proposals. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. + within a deployment. - It is less efficient than using key. Only one of offset or key - should + It stores owner, deployment sequence number (dseq) and group sequence + number (gseq). + akash.deployment.v1beta4.DeploymentFilters: + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. + It is a string representing a valid bech32 account address. - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - a count of the total number of items available for pagination in - UIs. + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier for + the deployment. - count_total is only respected when offset is used. It is ignored - when key + It is used to differentiate deployments created by the same owner. + state: + type: string + description: >- + State defines the sate of the deployment. A deployment can be either + active or inactive. + description: DeploymentFilters defines filters used to filter deployments. + akash.deployment.v1beta4.Group: + type: object + properties: + id: + description: Id is the unique identifier for the group. + type: object + properties: + owner: + type: string + description: |- + Owner is the account address of the user who owns the group. + It is a string representing a valid account address. - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier + for the deployment. + It is used to differentiate deployments created by the same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier for + the group. - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/group/v1/vote_by_proposal_voter/{proposal_id}/{voter}: - get: - summary: VoteByProposalVoter queries a vote by proposal id and voter. - operationId: VoteByProposalVoter - responses: - '200': - description: A successful response. - schema: + It is used to differentiate groups created by the same owner in a + deployment. + state: + description: State represents the state of the group. + type: string + enum: + - invalid + - open + - paused + - insufficient_funds + - closed + default: invalid + group_spec: + description: GroupSpec holds the specification of a the Group. + type: object + properties: + name: + type: string + description: Name is the name of the group. + requirements: + description: |- + Requirements specifies the placement requirements for the group. + This determines where the resources in the group can be deployed. type: object properties: - vote: - description: vote is the vote with given proposal_id and voter. + signed_by: + description: >- + SignedBy holds the list of keys that tenants expect to have + signatures from. type: object properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the vote. - - the recommended format of the metadata is to be found - here: - https://docs.cosmos.network/v0.47/modules/group#vote-2 - submit_time: - type: string - format: date-time - description: submit_time is the timestamp when the vote was submitted. - title: Vote represents a vote for a proposal.string metadata - description: >- - QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter - response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + all_of: + type: array + items: + type: string + description: >- + AllOf indicates all keys in this list must have signed + attributes. + any_of: + type: array + items: + type: string + description: >- + AnyOf means that at least one of the keys from the list + must have signed attributes. + attributes: type: array items: type: object properties: - type_url: + key: type: string description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). value: type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: >- + Attribute holds the list of attributes tenant expects from the + provider. + resources: + type: array + items: + type: object + properties: + resource: + description: Resource holds the amount of resources. + type: object + properties: + id: + type: integer + format: int64 + description: Id is a unique identifier for the resources. + cpu: + description: >- + CPU resources available, including the architecture, + number of cores and other details. - JSON + This field is optional and can be empty if no CPU + resources are available. + type: object + properties: + units: + description: >- + Units of the CPU, which represents the number of + CPUs available. + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes holds a list of key-value attributes that + describe the GPU, such as its model, memory and + interface. - The JSON representation of an `Any` value uses the regular + This field is required and must be a list of + `Attribute` messages. + memory: + description: >- + Memory resources available, including the quantity and + attributes. - representation of the deserialized, embedded message, with - an + This field is optional and can be empty if no memory + resources are available. + type: object + properties: + quantity: + description: >- + Quantity of memory available, which represents the + amount of memory in bytes. - additional field `@type` which contains the type URL. - Example: + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes that describe the memory, such as its + type and speed. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + This field is required and must be a list of + Attribute key-values. + storage: + type: array + items: + type: object + properties: + name: + type: string + description: >- + Name holds an arbitrary name for the storage + resource. + quantity: + description: >- + Quantity of storage available, which represents + the amount of memory in bytes. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes that describe the storage. - If the embedded message type is well-known and has a custom - JSON + This field is required and must be a list of + Attribute key-values. + description: >- + Storage stores resource quantity and storage + attributes. + description: >- + Storage resources available, including the quantity and + attributes. - representation, that representation will be embedded adding - a field + This field is optional and can be empty if no storage + resources are available. + gpu: + description: >- + GPU resources available, including the type, + architecture and other details. - `value` which holds the custom JSON in addition to the - `@type` + This field is optional and can be empty if no GPU + resources are available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which represents the + number of GPUs available. - field. Example (for message [google.protobuf.Duration][]): + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is implemented + when the lease is deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: >- + SequenceNumber represents a sequence number for + the Endpoint. + description: Endpoint describes a publicly accessible IP service. + title: Endpoint resources available + title: >- + Resources describes all available resources types for + deployment/node etc - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id is the unique ID of a proposal. - in: path - required: true - type: string - format: uint64 - - name: voter - description: voter is a proposal voter account address. - in: path - required: true - type: string - tags: - - Query - /cosmos/group/v1/votes_by_proposal/{proposal_id}: - get: - summary: VotesByProposal queries a vote by proposal id. - operationId: VotesByProposal - responses: - '200': - description: A successful response. - schema: - type: object - properties: - votes: - type: array - items: + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + description: >- + Count corresponds to the amount of replicas to run of the + resources. + price: + description: Price holds the pricing for the resource units. type: object properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. + denom: type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: + amount: type: string - title: >- - metadata is any arbitrary metadata attached to the vote. + description: >- + ResourceUnit extends Resources and adds Count along with the + Price. + description: >- + Resources is a list containing the resource units allocated to the + group. - the recommended format of the metadata is to be found - here: - https://docs.cosmos.network/v0.47/modules/group#vote-2 - submit_time: - type: string - format: date-time - description: >- - submit_time is the timestamp when the vote was - submitted. - title: Vote represents a vote for a proposal.string metadata - description: votes are the list of votes for given proposal_id. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + Each ResourceUnit defines the specific resources (e.g., CPU, + memory) assigned. + created_at: + type: string + format: int64 + description: CreatedAt is the block height at which the deployment was created. + description: Group stores group id, state and specifications of a group. + akash.deployment.v1beta4.Group.State: + type: string + enum: + - invalid + - open + - paused + - insufficient_funds + - closed + default: invalid + description: |- + State is an enum which refers to state of group. - was set, its value is undefined otherwise + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - open: GroupOpen denotes state for group open. + - paused: GroupOrdered denotes state for group ordered. + - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds. + - closed: GroupClosed denotes state for group closed. + akash.deployment.v1beta4.GroupSpec: + type: object + properties: + name: + type: string + description: Name is the name of the group. + requirements: + description: |- + Requirements specifies the placement requirements for the group. + This determines where the resources in the group can be deployed. + type: object + properties: + signed_by: description: >- - QueryVotesByProposalResponse is the Query/VotesByProposal response - type. - default: - description: An unexpected error response. - schema: + SignedBy holds the list of keys that tenants expect to have + signatures from. type: object properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + all_of: type: array items: + type: string + description: >- + AllOf indicates all keys in this list must have signed + attributes. + any_of: + type: array + items: + type: string + description: >- + AnyOf means that at least one of the keys from the list must + have signed attributes. + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", "cpu_architecture", + etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: >- + Attribute holds the list of attributes tenant expects from the + provider. + resources: + type: array + items: + type: object + properties: + resource: + description: Resource holds the amount of resources. + type: object + properties: + id: + type: integer + format: int64 + description: Id is a unique identifier for the resources. + cpu: + description: >- + CPU resources available, including the architecture, number + of cores and other details. + + This field is optional and can be empty if no CPU resources + are available. type: object properties: - type_url: - type: string + units: description: >- - A URL/resource name that uniquely identifies the type of - the serialized + Units of the CPU, which represents the number of CPUs + available. - protocol buffer message. This string must contain at - least + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: >- + Attribute represents an arbitrary attribute key-value + pair. + description: >- + Attributes holds a list of key-value attributes that + describe the GPU, such as its model, memory and + interface. - one "/" character. The last segment of the URL's path - must represent + This field is required and must be a list of `Attribute` + messages. + memory: + description: >- + Memory resources available, including the quantity and + attributes. - the fully qualified name of the type (as in + This field is optional and can be empty if no memory + resources are available. + type: object + properties: + quantity: + description: >- + Quantity of memory available, which represents the + amount of memory in bytes. - `path/google.protobuf.Duration`). The name should be in - a canonical form + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: >- + Attribute represents an arbitrary attribute key-value + pair. + description: >- + Attributes that describe the memory, such as its type + and speed. - (e.g., leading "." is not accepted). + This field is required and must be a list of Attribute + key-values. + storage: + type: array + items: + type: object + properties: + name: + type: string + description: Name holds an arbitrary name for the storage resource. + quantity: + description: >- + Quantity of storage available, which represents the + amount of memory in bytes. + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes that describe the storage. - In practice, teams usually precompile into the binary - all types that they + This field is required and must be a list of Attribute + key-values. + description: Storage stores resource quantity and storage attributes. + description: >- + Storage resources available, including the quantity and + attributes. - expect it to use in the context of Any. However, for - URLs which use the + This field is optional and can be empty if no storage + resources are available. + gpu: + description: >- + GPU resources available, including the type, architecture + and other details. - scheme `http`, `https`, or no scheme, one can optionally - set up a type + This field is optional and can be empty if no GPU resources + are available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which represents the + number of GPUs available. - server that maps type URLs to message definitions as - follows: + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: >- + Attribute represents an arbitrary attribute key-value + pair. + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is implemented when + the lease is deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: >- + SequenceNumber represents a sequence number for the + Endpoint. + description: Endpoint describes a publicly accessible IP service. + title: Endpoint resources available + title: >- + Resources describes all available resources types for + deployment/node etc + + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + description: >- + Count corresponds to the amount of replicas to run of the + resources. + price: + description: Price holds the pricing for the resource units. + type: object + properties: + denom: + type: string + amount: + type: string + description: ResourceUnit extends Resources and adds Count along with the Price. + description: >- + Resources is a list containing the resource units allocated to the + group. + Each ResourceUnit defines the specific resources (e.g., CPU, memory) + assigned. + description: >- + GroupSpec defines a specification for a group in a deployment on the + network. - * If no scheme is provided, `https` is assumed. + This includes attributes like the group name, placement requirements, and + resource units. + akash.deployment.v1beta4.Params: + type: object + properties: + min_deposits: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: >- + MinDeposits holds a list of the minimum amount of deposits for each a + coin. + description: Params defines the parameters for the x/deployment module. + akash.deployment.v1beta4.QueryDeploymentResponse: + type: object + properties: + deployment: + description: Deployment represents a deployment on the network. + type: object + properties: + id: + description: ID is the unique identifier of the deployment. + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - Note: this functionality is not currently available in - the official + It is a string representing a valid bech32 account address. - protobuf release, and it is not used for type URLs - beginning with - type.googleapis.com. + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric + identifier for the deployment. + It is used to differentiate deployments created by the same + owner. + state: + description: |- + State defines the sate of the deployment. + A deployment can be either active or inactive. + type: string + enum: + - invalid + - active + - closed + default: invalid + hash: + type: string + format: byte + description: Hash is an hashed representation of the deployment. + created_at: + type: string + format: int64 + description: >- + CreatedAt indicates when the deployment was created as a block + height value. + reclamation: + description: >- + reclamation stores the deployment's reclamation requirements for + persistence. - Schemes other than `http`, `https` (or the empty scheme) - might be + Needed so that StartGroup can propagate reclamation to newly + created orders. + type: object + properties: + min_window: + type: string + description: >- + min_window is the minimum reclamation window the tenant + requires. + groups: + type: array + items: + type: object + properties: + id: + description: Id is the unique identifier for the group. + type: object + properties: + owner: + type: string + description: |- + Owner is the account address of the user who owns the group. + It is a string representing a valid account address. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + Example: + "akash1..." + dseq: + type: string + format: uint64 description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Dseq (deployment sequence number) is a unique numeric + identifier for the deployment. - URL that describes the type of the serialized message. + It is used to differentiate deployments created by the same + owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier + for the group. + It is used to differentiate groups created by the same owner + in a deployment. + state: + description: State represents the state of the group. + type: string + enum: + - invalid + - open + - paused + - insufficient_funds + - closed + default: invalid + group_spec: + description: GroupSpec holds the specification of a the Group. + type: object + properties: + name: + type: string + description: Name is the name of the group. + requirements: + description: >- + Requirements specifies the placement requirements for the + group. - Protobuf library provides support to pack/unpack Any values - in the form + This determines where the resources in the group can be + deployed. + type: object + properties: + signed_by: + description: >- + SignedBy holds the list of keys that tenants expect to + have signatures from. + type: object + properties: + all_of: + type: array + items: + type: string + description: >- + AllOf indicates all keys in this list must have + signed attributes. + any_of: + type: array + items: + type: string + description: >- + AnyOf means that at least one of the keys from the + list must have signed attributes. + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: >- + Attribute represents an arbitrary attribute key-value + pair. + description: >- + Attribute holds the list of attributes tenant expects + from the provider. + resources: + type: array + items: + type: object + properties: + resource: + description: Resource holds the amount of resources. + type: object + properties: + id: + type: integer + format: int64 + description: Id is a unique identifier for the resources. + cpu: + description: >- + CPU resources available, including the + architecture, number of cores and other details. - of utility functions or additional generated methods of the - Any type. + This field is optional and can be empty if no CPU + resources are available. + type: object + properties: + units: + description: >- + Units of the CPU, which represents the number + of CPUs available. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes holds a list of key-value + attributes that describe the GPU, such as its + model, memory and interface. - Example 1: Pack and unpack a message in C++. + This field is required and must be a list of + `Attribute` messages. + memory: + description: >- + Memory resources available, including the quantity + and attributes. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + This field is optional and can be empty if no + memory resources are available. + type: object + properties: + quantity: + description: >- + Quantity of memory available, which represents + the amount of memory in bytes. - Example 2: Pack and unpack a message in Java. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes that describe the memory, such as + its type and speed. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + This field is required and must be a list of + Attribute key-values. + storage: + type: array + items: + type: object + properties: + name: + type: string + description: >- + Name holds an arbitrary name for the storage + resource. + quantity: + description: >- + Quantity of storage available, which + represents the amount of memory in bytes. - Example 3: Pack and unpack a message in Python. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary + attribute key-value pair. + description: >- + Attributes that describe the storage. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + This field is required and must be a list of + Attribute key-values. + description: >- + Storage stores resource quantity and storage + attributes. + description: >- + Storage resources available, including the + quantity and attributes. - Example 4: Pack and unpack a message in Go + This field is optional and can be empty if no + storage resources are available. + gpu: + description: >- + GPU resources available, including the type, + architecture and other details. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + This field is optional and can be empty if no GPU + resources are available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which + represents the number of GPUs available. - The pack methods provided by protobuf library will by - default use + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is + implemented when the lease is deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: >- + SequenceNumber represents a sequence number + for the Endpoint. + description: >- + Endpoint describes a publicly accessible IP + service. + title: Endpoint resources available + title: >- + Resources describes all available resources types for + deployment/node etc - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + description: >- + Count corresponds to the amount of replicas to run of + the resources. + price: + description: Price holds the pricing for the resource units. + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + ResourceUnit extends Resources and adds Count along with + the Price. + description: >- + Resources is a list containing the resource units allocated + to the group. - methods only use the fully qualified type name after the - last '/' + Each ResourceUnit defines the specific resources (e.g., CPU, + memory) assigned. + created_at: + type: string + format: int64 + description: >- + CreatedAt is the block height at which the deployment was + created. + description: Group stores group id, state and specifications of a group. + description: Groups is a list of deployment groups. + escrow_account: + description: >- + EscrowAccount represents an escrow mechanism where funds are held. - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + This ensures that obligations of both tenants and providers involved + in the - name "y.z". + transaction are met without direct access to each other's accounts. + type: object + properties: + id: + type: object + properties: + scope: + type: string + enum: + - invalid + - deployment + - bid + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring + dummy state. + - deployment: DeploymentActive denotes state for deployment active. + - bid: DeploymentClosed denotes state for deployment closed. + title: Scope is an enum which refers to the account scope + xid: + type: string + description: Account is the account identifier. + state: + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. + It is a string representing a valid bech32 account address. - JSON + Example: + "akash1..." + state: + description: State represents the current state of an Account. + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + transferred: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with - an + NOTE: The amount field is an Dec which implements the custom + method - additional field `@type` which contains the type URL. - Example: + signatures required by gogoproto. + description: Transferred total coins spent by this account. + settled_at: + type: string + format: int64 + description: >- + SettledAt represents the block height at which this account + was last settled. + funds: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Balance holds the unspent coin received from all deposits + with same denom - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + DecCoin is not being used here as it does not support + negative values, - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + and balance may go negative if account is overdrawn. + title: Funds holds the unspent coins received from all deposits + deposits: + type: array + items: + type: object + properties: + owner: + type: string + description: >- + Owner is the bech32 address of the depositor. - If the embedded message type is well-known and has a custom - JSON + It is a string representing a valid account address. - representation, that representation will be embedded adding - a field - `value` which holds the custom JSON in addition to the - `@type` + Example: + "akash1..." + If depositor is same as the owner, then any incoming + coins are added to the Balance. - field. Example (for message [google.protobuf.Duration][]): + If depositor isn't same as the owner, then any incoming + coins are added to the Funds. + height: + type: string + format: int64 + title: Height blockchain height at which deposit was created + source: + title: Source indicated origination of the funds + type: string + enum: + - invalid + - balance + - grant + default: invalid + description: >- + Source is an enum which lists source of funds for + deployment deposit. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id is the unique ID of a proposal. - in: path - required: true - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - balance: SourceBalance denotes account balance as source of funds + - grant: SourceGrant denotes authz grants as source of funds + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. - It is less efficient than using key. Only one of offset or key - should - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. + NOTE: The amount field is an Dec which implements the + custom method - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include + signatures required by gogoproto. + description: Depositor stores state of a deposit. + description: Account stores state for an escrow account. + title: Account + title: >- + QueryDeploymentResponse is response type for the Query/Deployment RPC + method + akash.deployment.v1beta4.QueryDeploymentsResponse: + type: object + properties: + deployments: + type: array + items: + type: object + properties: + deployment: + description: Deployment represents a deployment on the network. + type: object + properties: + id: + description: ID is the unique identifier of the deployment. + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns + the deployment. - a count of the total number of items available for pagination in - UIs. + It is a string representing a valid bech32 account + address. - count_total is only respected when offset is used. It is ignored - when key - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric + identifier for the deployment. + It is used to differentiate deployments created by the + same owner. + state: + description: |- + State defines the sate of the deployment. + A deployment can be either active or inactive. + type: string + enum: + - invalid + - active + - closed + default: invalid + hash: + type: string + format: byte + description: Hash is an hashed representation of the deployment. + created_at: + type: string + format: int64 + description: >- + CreatedAt indicates when the deployment was created as a + block height value. + reclamation: + description: >- + reclamation stores the deployment's reclamation requirements + for persistence. - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/group/v1/votes_by_voter/{voter}: - get: - summary: VotesByVoter queries a vote by voter. - operationId: VotesByVoter - responses: - '200': - description: A successful response. - schema: - type: object - properties: - votes: - type: array - items: + Needed so that StartGroup can propagate reclamation to newly + created orders. type: object properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the vote. - - the recommended format of the metadata is to be found - here: - https://docs.cosmos.network/v0.47/modules/group#vote-2 - submit_time: + min_window: type: string - format: date-time description: >- - submit_time is the timestamp when the vote was - submitted. - title: Vote represents a vote for a proposal.string metadata - description: votes are the list of votes by given voter. - pagination: - description: pagination defines the pagination in the response. + min_window is the minimum reclamation window the tenant + requires. + groups: + type: array + items: type: object properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryVotesByVoterResponse is the Query/VotesByVoter response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least + id: + description: Id is the unique identifier for the group. + type: object + properties: + owner: + type: string + description: >- + Owner is the account address of the user who owns the + group. - one "/" character. The last segment of the URL's path - must represent + It is a string representing a valid account address. - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in - a canonical form + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric + identifier for the deployment. - (e.g., leading "." is not accepted). + It is used to differentiate deployments created by the + same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric + identifier for the group. + It is used to differentiate groups created by the same + owner in a deployment. + state: + description: State represents the state of the group. + type: string + enum: + - invalid + - open + - paused + - insufficient_funds + - closed + default: invalid + group_spec: + description: GroupSpec holds the specification of a the Group. + type: object + properties: + name: + type: string + description: Name is the name of the group. + requirements: + description: >- + Requirements specifies the placement requirements for + the group. - In practice, teams usually precompile into the binary - all types that they + This determines where the resources in the group can + be deployed. + type: object + properties: + signed_by: + description: >- + SignedBy holds the list of keys that tenants + expect to have signatures from. + type: object + properties: + all_of: + type: array + items: + type: string + description: >- + AllOf indicates all keys in this list must + have signed attributes. + any_of: + type: array + items: + type: string + description: >- + AnyOf means that at least one of the keys from + the list must have signed attributes. + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attribute holds the list of attributes tenant + expects from the provider. + resources: + type: array + items: + type: object + properties: + resource: + description: Resource holds the amount of resources. + type: object + properties: + id: + type: integer + format: int64 + description: Id is a unique identifier for the resources. + cpu: + description: >- + CPU resources available, including the + architecture, number of cores and other + details. - expect it to use in the context of Any. However, for - URLs which use the + This field is optional and can be empty if + no CPU resources are available. + type: object + properties: + units: + description: >- + Units of the CPU, which represents the + number of CPUs available. - scheme `http`, `https`, or no scheme, one can optionally - set up a type + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary + attribute key-value pair. + description: >- + Attributes holds a list of key-value + attributes that describe the GPU, such + as its model, memory and interface. - server that maps type URLs to message definitions as - follows: + This field is required and must be a + list of `Attribute` messages. + memory: + description: >- + Memory resources available, including the + quantity and attributes. + This field is optional and can be empty if + no memory resources are available. + type: object + properties: + quantity: + description: >- + Quantity of memory available, which + represents the amount of memory in + bytes. - * If no scheme is provided, `https` is assumed. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary + attribute key-value pair. + description: >- + Attributes that describe the memory, + such as its type and speed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + This field is required and must be a + list of Attribute key-values. + storage: + type: array + items: + type: object + properties: + name: + type: string + description: >- + Name holds an arbitrary name for the + storage resource. + quantity: + description: >- + Quantity of storage available, which + represents the amount of memory in + bytes. - Note: this functionality is not currently available in - the official + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary + attribute key-value pair. + description: >- + Attributes that describe the storage. - protobuf release, and it is not used for type URLs - beginning with + This field is required and must be a + list of Attribute key-values. + description: >- + Storage stores resource quantity and + storage attributes. + description: >- + Storage resources available, including the + quantity and attributes. - type.googleapis.com. + This field is optional and can be empty if + no storage resources are available. + gpu: + description: >- + GPU resources available, including the type, + architecture and other details. + This field is optional and can be empty if + no GPU resources are available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which + represents the number of GPUs available. - Schemes other than `http`, `https` (or the empty scheme) - might be + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary + attribute key-value pair. + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is + implemented when the lease is deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: >- + SequenceNumber represents a sequence + number for the Endpoint. + description: >- + Endpoint describes a publicly accessible + IP service. + title: Endpoint resources available + title: >- + Resources describes all available resources + types for deployment/node etc - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + if field is nil resource is not present in the + given data-structure + count: + type: integer + format: int64 + description: >- + Count corresponds to the amount of replicas to + run of the resources. + price: + description: Price holds the pricing for the resource units. + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + ResourceUnit extends Resources and adds Count along + with the Price. + description: >- + Resources is a list containing the resource units + allocated to the group. - URL that describes the type of the serialized message. + Each ResourceUnit defines the specific resources + (e.g., CPU, memory) assigned. + created_at: + type: string + format: int64 + description: >- + CreatedAt is the block height at which the deployment was + created. + description: Group stores group id, state and specifications of a group. + description: Groups is a list of deployment groups. + escrow_account: + description: >- + EscrowAccount represents an escrow mechanism where funds are + held. + This ensures that obligations of both tenants and providers + involved in the - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - + transaction are met without direct access to each other's + accounts. + type: object + properties: + id: + type: object + properties: + scope: + type: string + enum: + - invalid + - deployment + - bid + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So + declaring dummy state. + - deployment: DeploymentActive denotes state for deployment active. + - bid: DeploymentClosed denotes state for deployment closed. + title: Scope is an enum which refers to the account scope + xid: + type: string + description: Account is the account identifier. + state: + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns + the deployment. - JSON + It is a string representing a valid bech32 account + address. - The JSON representation of an `Any` value uses the regular + Example: + "akash1..." + state: + description: State represents the current state of an Account. + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + transferred: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. - representation of the deserialized, embedded message, with - an - additional field `@type` which contains the type URL. - Example: + NOTE: The amount field is an Dec which implements the + custom method - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + signatures required by gogoproto. + description: Transferred total coins spent by this account. + settled_at: + type: string + format: int64 + description: >- + SettledAt represents the block height at which this + account was last settled. + funds: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Balance holds the unspent coin received from all + deposits with same denom - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + DecCoin is not being used here as it does not support + negative values, - If the embedded message type is well-known and has a custom - JSON + and balance may go negative if account is overdrawn. + title: Funds holds the unspent coins received from all deposits + deposits: + type: array + items: + type: object + properties: + owner: + type: string + description: >- + Owner is the bech32 address of the depositor. - representation, that representation will be embedded adding - a field + It is a string representing a valid account + address. - `value` which holds the custom JSON in addition to the - `@type` - field. Example (for message [google.protobuf.Duration][]): + Example: + "akash1..." + If depositor is same as the owner, then any + incoming coins are added to the Balance. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: voter - description: voter is a proposal voter account address. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. + If depositor isn't same as the owner, then any + incoming coins are added to the Funds. + height: + type: string + format: int64 + title: >- + Height blockchain height at which deposit was + created + source: + title: Source indicated origination of the funds + type: string + enum: + - invalid + - balance + - grant + default: invalid + description: >- + Source is an enum which lists source of funds for + deployment deposit. - It is less efficient than using key. Only one of offset or key - should + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - balance: SourceBalance denotes account balance as source of funds + - grant: SourceGrant denotes authz grants as source of funds + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include + NOTE: The amount field is an Dec which implements + the custom method - a count of the total number of items available for pagination in - UIs. + signatures required by gogoproto. + description: Depositor stores state of a deposit. + description: Account stores state for an escrow account. + title: Account + title: >- + QueryDeploymentResponse is response type for the Query/Deployment + RPC method + description: Deployments is a list of Deployments. + pagination: + description: Pagination contains the information about response pagination. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - count_total is only respected when offset is used. It is ignored - when key + was set, its value is undefined otherwise + title: >- + QueryDeploymentsResponse is response type for the Query/Deployments RPC + method + akash.deployment.v1beta4.QueryGroupResponse: + type: object + properties: + group: + type: object + properties: + id: + description: Id is the unique identifier for the group. + type: object + properties: + owner: + type: string + description: |- + Owner is the account address of the user who owns the group. + It is a string representing a valid account address. - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric + identifier for the deployment. + It is used to differentiate deployments created by the same + owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier + for the group. - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/circuit/v1/accounts: - get: - summary: Account returns account permissions. - operationId: CircuitAccounts - responses: - '200': - description: A successful response. - schema: + It is used to differentiate groups created by the same owner + in a deployment. + state: + description: State represents the state of the group. + type: string + enum: + - invalid + - open + - paused + - insufficient_funds + - closed + default: invalid + group_spec: + description: GroupSpec holds the specification of a the Group. type: object properties: - accounts: - type: array - items: - type: object - properties: - address: - type: string - permissions: + name: + type: string + description: Name is the name of the group. + requirements: + description: >- + Requirements specifies the placement requirements for the + group. + + This determines where the resources in the group can be + deployed. + type: object + properties: + signed_by: + description: >- + SignedBy holds the list of keys that tenants expect to + have signatures from. + type: object + properties: + all_of: + type: array + items: + type: string + description: >- + AllOf indicates all keys in this list must have signed + attributes. + any_of: + type: array + items: + type: string + description: >- + AnyOf means that at least one of the keys from the + list must have signed attributes. + attributes: + type: array + items: type: object properties: - level: + key: + type: string description: >- - level is the level of permissions granted to this - account. + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: type: string - enum: - - LEVEL_NONE_UNSPECIFIED - - LEVEL_SOME_MSGS - - LEVEL_ALL_MSGS - - LEVEL_SUPER_ADMIN - default: LEVEL_NONE_UNSPECIFIED - limit_type_urls: - type: array - items: - type: string description: >- - limit_type_urls is used with LEVEL_SOME_MSGS to - limit the lists of Msg type - - URLs that the account can trip. It is an error to - use limit_type_urls with - - a level other than LEVEL_SOME_MSGS. + Value of the attribute (e.g., "us-west", "x86_64", + etc.). description: >- - Permissions are the permissions that an account has to - trip - - or reset the circuit breaker. - title: >- - GenesisAccountPermissions is the account permissions for the - circuit breaker in genesis - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - AccountsResponse is the response type for the Query/Accounts RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + Attribute represents an arbitrary attribute key-value + pair. + description: >- + Attribute holds the list of attributes tenant expects from + the provider. + resources: type: array items: type: object properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should + resource: + description: Resource holds the amount of resources. + type: object + properties: + id: + type: integer + format: int64 + description: Id is a unique identifier for the resources. + cpu: + description: >- + CPU resources available, including the architecture, + number of cores and other details. - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. + This field is optional and can be empty if no CPU + resources are available. + type: object + properties: + units: + description: >- + Units of the CPU, which represents the number of + CPUs available. - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes holds a list of key-value attributes + that describe the GPU, such as its model, memory + and interface. - a count of the total number of items available for pagination in - UIs. + This field is required and must be a list of + `Attribute` messages. + memory: + description: >- + Memory resources available, including the quantity + and attributes. - count_total is only respected when offset is used. It is ignored - when key + This field is optional and can be empty if no memory + resources are available. + type: object + properties: + quantity: + description: >- + Quantity of memory available, which represents + the amount of memory in bytes. - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes that describe the memory, such as its + type and speed. + This field is required and must be a list of + Attribute key-values. + storage: + type: array + items: + type: object + properties: + name: + type: string + description: >- + Name holds an arbitrary name for the storage + resource. + quantity: + description: >- + Quantity of storage available, which + represents the amount of memory in bytes. - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/circuit/v1/accounts/{address}: - get: - summary: Account returns account permissions. - operationId: CircuitAccount - responses: - '200': - description: A successful response. - schema: - type: object - properties: - permission: - type: object - properties: - level: - description: level is the level of permissions granted to this account. - type: string - enum: - - LEVEL_NONE_UNSPECIFIED - - LEVEL_SOME_MSGS - - LEVEL_ALL_MSGS - - LEVEL_SUPER_ADMIN - default: LEVEL_NONE_UNSPECIFIED - limit_type_urls: - type: array - items: - type: string - description: >- - limit_type_urls is used with LEVEL_SOME_MSGS to limit the - lists of Msg type + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes that describe the storage. - URLs that the account can trip. It is an error to use - limit_type_urls with + This field is required and must be a list of + Attribute key-values. + description: >- + Storage stores resource quantity and storage + attributes. + description: >- + Storage resources available, including the quantity + and attributes. - a level other than LEVEL_SOME_MSGS. - description: |- - Permissions are the permissions that an account has to trip - or reset the circuit breaker. + This field is optional and can be empty if no + storage resources are available. + gpu: + description: >- + GPU resources available, including the type, + architecture and other details. + + This field is optional and can be empty if no GPU + resources are available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which represents + the number of GPUs available. + + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is implemented + when the lease is deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: >- + SequenceNumber represents a sequence number + for the Endpoint. + description: >- + Endpoint describes a publicly accessible IP + service. + title: Endpoint resources available + title: >- + Resources describes all available resources types for + deployment/node etc + + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + description: >- + Count corresponds to the amount of replicas to run of + the resources. + price: + description: Price holds the pricing for the resource units. + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + ResourceUnit extends Resources and adds Count along with the + Price. + description: >- + Resources is a list containing the resource units allocated to + the group. + + Each ResourceUnit defines the specific resources (e.g., CPU, + memory) assigned. + created_at: + type: string + format: int64 + description: CreatedAt is the block height at which the deployment was created. + description: Group stores group id, state and specifications of a group. + description: QueryGroupResponse is response type for the Query/Group RPC method. + akash.deployment.v1beta4.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + min_deposits: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. description: >- - AccountResponse is the response type for the Query/Account RPC - method. - default: - description: An unexpected error response. - schema: + MinDeposits holds a list of the minimum amount of deposits for + each a coin. + description: QueryParamsResponse is the response type for the Query/Params RPC method. + akash.deployment.v1beta4.ResourceUnit: + type: object + properties: + resource: + description: Resource holds the amount of resources. + type: object + properties: + id: + type: integer + format: int64 + description: Id is a unique identifier for the resources. + cpu: + description: >- + CPU resources available, including the architecture, number of + cores and other details. + + This field is optional and can be empty if no CPU resources are + available. type: object properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + units: + description: >- + Units of the CPU, which represents the number of CPUs + available. + + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: type: array items: type: object properties: - type_url: + key: type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). value: type: string - format: byte - parameters: - - name: address - in: path - required: true - type: string - tags: - - Query - /cosmos/circuit/v1/disable_list: - get: - summary: DisabledList returns a list of disabled message urls - operationId: DisabledList - responses: - '200': - description: A successful response. - schema: - type: object - properties: - disabled_list: - type: array - items: - type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: >- + Attributes holds a list of key-value attributes that describe + the GPU, such as its model, memory and interface. + + This field is required and must be a list of `Attribute` + messages. + memory: description: >- - DisabledListResponse is the response type for the - Query/DisabledList RPC method. - default: - description: An unexpected error response. - schema: + Memory resources available, including the quantity and attributes. + + This field is optional and can be empty if no memory resources are + available. type: object properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + quantity: + description: >- + Quantity of memory available, which represents the amount of + memory in bytes. + + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: type: array items: type: object properties: - type_url: + key: type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). value: type: string - format: byte - tags: - - Query - /cosmos/consensus/v1/params: - get: - summary: Params queries the parameters of x/consensus module. - operationId: ConsensusParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: Attribute represents an arbitrary attribute key-value pair. description: >- - params are the tendermint consensus params stored in the - consensus module. + Attributes that describe the memory, such as its type and + speed. - Please note that `params.version` is not populated in this - response, it is + This field is required and must be a list of Attribute + key-values. + storage: + type: array + items: + type: object + properties: + name: + type: string + description: Name holds an arbitrary name for the storage resource. + quantity: + description: >- + Quantity of storage available, which represents the amount + of memory in bytes. - tracked separately in the x/upgrade module. - type: object - properties: - block: + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: type: object properties: - max_bytes: - type: string - format: int64 - title: |- - Max block size, in bytes. - Note: must be greater than 0 - max_gas: + key: type: string - format: int64 - title: |- - Max gas per block. - Note: must be greater or equal to -1 - description: BlockParams contains limits on the block size. - evidence: - type: object - properties: - max_age_num_blocks: + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: type: string - format: int64 description: >- - Max age of evidence, in blocks. - - - The basic formula for calculating this is: - MaxAgeDuration / {average block + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: >- + Attribute represents an arbitrary attribute key-value + pair. + description: >- + Attributes that describe the storage. - time}. - max_age_duration: - type: string - description: >- - Max age of evidence, in time. + This field is required and must be a list of Attribute + key-values. + description: Storage stores resource quantity and storage attributes. + description: >- + Storage resources available, including the quantity and + attributes. + This field is optional and can be empty if no storage resources + are available. + gpu: + description: >- + GPU resources available, including the type, architecture and + other details. - It should correspond with an app's "unbonding period" - or other similar + This field is optional and can be empty if no GPU resources are + available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which represents the number of + GPUs available. - mechanism for handling [Nothing-At-Stake + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: Attribute represents an arbitrary attribute key-value pair. + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is implemented when the + lease is deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: >- + SequenceNumber represents a sequence number for the + Endpoint. + description: Endpoint describes a publicly accessible IP service. + title: Endpoint resources available + title: >- + Resources describes all available resources types for deployment/node + etc - attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). - max_bytes: - type: string - format: int64 - title: >- - This sets the maximum size of total evidence in bytes - that can be committed in a single block. + if field is nil resource is not present in the given data-structure + count: + type: integer + format: int64 + description: Count corresponds to the amount of replicas to run of the resources. + price: + description: Price holds the pricing for the resource units. + type: object + properties: + denom: + type: string + amount: + type: string + description: ResourceUnit extends Resources and adds Count along with the Price. + akash.escrow.id.v1.Account: + type: object + properties: + scope: + type: string + enum: + - invalid + - deployment + - bid + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state. + - deployment: DeploymentActive denotes state for deployment active. + - bid: DeploymentClosed denotes state for deployment closed. + title: Scope is an enum which refers to the account scope + xid: + type: string + description: Account is the account identifier. + akash.escrow.id.v1.Scope: + type: string + enum: + - invalid + - deployment + - bid + default: invalid + description: |- + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - deployment: DeploymentActive denotes state for deployment active. + - bid: DeploymentClosed denotes state for deployment closed. + title: Scope is an enum which refers to the account scope + akash.escrow.types.v1.Account: + type: object + properties: + id: + type: object + properties: + scope: + type: string + enum: + - invalid + - deployment + - bid + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state. + - deployment: DeploymentActive denotes state for deployment active. + - bid: DeploymentClosed denotes state for deployment closed. + title: Scope is an enum which refers to the account scope + xid: + type: string + description: Account is the account identifier. + state: + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - and should fall comfortably under the max block bytes. + It is a string representing a valid bech32 account address. - Default is 1048576 or 1MB - description: >- - EvidenceParams determine how we handle evidence of - malfeasance. - validator: - type: object - properties: - pub_key_types: - type: array - items: - type: string - description: >- - ValidatorParams restrict the public key types validators - can use. - NOTE: uses ABCI pubkey naming, not Amino names. - version: - type: object - properties: - app: - type: string - format: uint64 - description: VersionParams contains the ABCI application version. - abci: - type: object - properties: - vote_extensions_enable_height: - type: string - format: int64 - description: >- - vote_extensions_enable_height configures the first - height during which + Example: + "akash1..." + state: + description: State represents the current state of an Account. + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + transferred: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. - vote extensions will be enabled. During this specified - height, and for all - subsequent heights, precommit messages that do not - contain valid extension data + NOTE: The amount field is an Dec which implements the custom + method - will be considered invalid. Prior to this height, vote - extensions will not + signatures required by gogoproto. + description: Transferred total coins spent by this account. + settled_at: + type: string + format: int64 + description: >- + SettledAt represents the block height at which this account was + last settled. + funds: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Balance holds the unspent coin received from all deposits with + same denom - be used or accepted by validators on the network. + DecCoin is not being used here as it does not support negative + values, + + and balance may go negative if account is overdrawn. + title: Funds holds the unspent coins received from all deposits + deposits: + type: array + items: + type: object + properties: + owner: + type: string + description: >- + Owner is the bech32 address of the depositor. + It is a string representing a valid account address. - Once enabled, vote extensions will be created by the - application in ExtendVote, - passed to the application for validation in - VerifyVoteExtension and given + Example: + "akash1..." + If depositor is same as the owner, then any incoming coins + are added to the Balance. - to the application to use when proposing a block - during PrepareProposal. - description: >- - ABCIParams configure functionality specific to the - Application Blockchain Interface. - description: >- - QueryParamsResponse defines the response type for querying - x/consensus parameters. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: + If depositor isn't same as the owner, then any incoming + coins are added to the Funds. + height: + type: string + format: int64 + title: Height blockchain height at which deposit was created + source: + title: Source indicated origination of the funds + type: string + enum: + - invalid + - balance + - grant + default: invalid + description: >- + Source is an enum which lists source of funds for deployment + deposit. + + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - balance: SourceBalance denotes account balance as source of funds + - grant: SourceGrant denotes authz grants as source of funds + balance: type: object properties: - type_url: + denom: type: string - value: + amount: type: string - format: byte - tags: - - Query -definitions: - akash.audit.v1.AuditedProvider: + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: Depositor stores state of a deposit. + description: Account stores state for an escrow account. + title: Account + akash.escrow.types.v1.AccountState: type: object properties: owner: type: string - description: |- - Owner is the account bech32 address of the provider. - It is a string representing a valid account address. + description: >- + Owner is the account bech32 address of the user who owns the + deployment. + + It is a string representing a valid bech32 account address. - Example: - "akash1..." - auditor: - type: string - description: |- - Auditor is the account bech32 address of the auditor. - It is a string representing a valid account address. Example: "akash1..." - attributes: + state: + description: State represents the current state of an Account. + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + transferred: type: array items: type: object properties: - key: + denom: type: string - description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). - value: + amount: type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: |- - Attributes holds a list of key-value pairs of provider attributes. - Attributes are arbitrary values that a provider exposes. - description: >- - AuditedProvider stores owner, auditor and attributes details. + description: |- + DecCoin defines a token with a denomination and a decimal amount. - An AuditedProvider is a provider that has undergone a verification or - auditing process to ensure that it meets certain standards or requirements - by an auditor. + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: Transferred total coins spent by this account. + settled_at: + type: string + format: int64 + description: >- + SettledAt represents the block height at which this account was last + settled. + funds: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Balance holds the unspent coin received from all deposits with same + denom - An auditor can be any valid account on-chain. + DecCoin is not being used here as it does not support negative + values, - NOTE: There are certain teams providing auditing services, which should be - accounted for when deploying. - akash.audit.v1.QueryProvidersResponse: - type: object - properties: - providers: + and balance may go negative if account is overdrawn. + title: Funds holds the unspent coins received from all deposits + deposits: type: array items: type: object properties: owner: type: string - description: |- - Owner is the account bech32 address of the provider. + description: >- + Owner is the bech32 address of the depositor. + It is a string representing a valid account address. + Example: "akash1..." - auditor: + If depositor is same as the owner, then any incoming coins are + added to the Balance. + + If depositor isn't same as the owner, then any incoming coins + are added to the Funds. + height: type: string - description: |- - Auditor is the account bech32 address of the auditor. - It is a string representing a valid account address. + format: int64 + title: Height blockchain height at which deposit was created + source: + title: Source indicated origination of the funds + type: string + enum: + - invalid + - balance + - grant + default: invalid + description: >- + Source is an enum which lists source of funds for deployment + deposit. - Example: - "akash1..." - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", "cpu_architecture", - etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - balance: SourceBalance denotes account balance as source of funds + - grant: SourceGrant denotes authz grants as source of funds + balance: + type: object + properties: + denom: + type: string + amount: + type: string description: >- - Attributes holds a list of key-value pairs of provider - attributes. + DecCoin defines a token with a denomination and a decimal + amount. - Attributes are arbitrary values that a provider exposes. - description: >- - AuditedProvider stores owner, auditor and attributes details. - An AuditedProvider is a provider that has undergone a verification - or auditing process to ensure that it meets certain standards or - requirements by an auditor. + NOTE: The amount field is an Dec which implements the custom + method - An auditor can be any valid account on-chain. + signatures required by gogoproto. + description: Depositor stores state of a deposit. + description: Account stores state for an escrow account. + akash.escrow.types.v1.Balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Balance holds the unspent coin received from all deposits with same denom + DecCoin is not being used here as it does not support negative values, + and balance may go negative if account is overdrawn. + akash.escrow.types.v1.Depositor: + type: object + properties: + owner: + type: string + description: >- + Owner is the bech32 address of the depositor. - NOTE: There are certain teams providing auditing services, which - should be accounted for when deploying. - description: Providers contains a list of audited providers account addresses. - pagination: - description: Pagination is used to paginate results. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + It is a string representing a valid account address. + + + Example: + "akash1..." + If depositor is same as the owner, then any incoming coins are added + to the Balance. + + If depositor isn't same as the owner, then any incoming coins are + added to the Funds. + height: + type: string + format: int64 + title: Height blockchain height at which deposit was created + source: + title: Source indicated origination of the funds + type: string + enum: + - invalid + - balance + - grant + default: invalid + description: |- + Source is an enum which lists source of funds for deployment deposit. + + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - balance: SourceBalance denotes account balance as source of funds + - grant: SourceGrant denotes authz grants as source of funds + balance: + type: object + properties: + denom: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - was set, its value is undefined otherwise - description: >- - QueryProvidersResponse is response type for the Query/Providers RPC - method. - akash.base.attributes.v1.Attribute: + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: Depositor stores state of a deposit. + akash.escrow.types.v1.State: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: |- + State stores state for an escrow account. + + - invalid: AccountStateInvalid is an invalid state. + - open: StateOpen is the state when an object is open. + - closed: StateClosed is the state when an object is closed. + - overdrawn: StateOverdrawn is the state when an object are overdrawn. + cosmos.base.v1beta1.Coin: type: object properties: - key: + denom: type: string - description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). - value: + amount: type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - cosmos.base.query.v1beta1.PageRequest: + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + cosmos.base.v1beta1.DecCoin: type: object properties: - key: - type: string - format: byte - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - offset: + denom: type: string - format: uint64 - description: |- - offset is a numeric offset that can be used when key is unavailable. - It is less efficient than using key. Only one of offset or key should - be set. - limit: + amount: type: string - format: uint64 - description: >- - limit is the total number of results to be returned in the result - page. + description: |- + DecCoin defines a token with a denomination and a decimal amount. - If left empty it will default to a value to be set by each app. - count_total: - type: boolean + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + akash.base.deposit.v1.Deposit: + type: object + properties: + amount: description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in UIs. - - count_total is only respected when offset is used. It is ignored when - key + amount specifies the amount of coins to include in the deployment's + first deposit. + type: object + properties: + denom: + type: string + amount: + type: string + sources: + type: array + items: + type: string + enum: + - invalid + - balance + - grant + default: invalid + description: >- + Source is an enum which lists source of funds for deployment + deposit. - is set. - reverse: - type: boolean - description: >- - reverse is set to true if results are to be returned in the descending - order. - description: |- - message SomeRequest { - Foo some_parameter = 1; - PageRequest pagination = 2; - } - title: |- - PageRequest is to be embedded in gRPC request messages for efficient - pagination. Ex: - cosmos.base.query.v1beta1.PageResponse: + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - balance: SourceBalance denotes account balance as source of funds + - grant: SourceGrant denotes authz grants as source of funds + description: Sources is the set of deposit sources, each entry must be unique. + description: >- + Deposit is a data type used by MsgCreateDeployment, MsgDepositDeployment + and MsgCreateBid to indicate source of the deposit. + akash.deployment.v1beta4.MsgCloseDeploymentResponse: + type: object + description: MsgCloseDeploymentResponse defines the Msg/CloseDeployment response type. + akash.deployment.v1beta4.MsgCloseGroupResponse: + type: object + description: MsgCloseGroupResponse defines the Msg/CloseGroup response type. + akash.deployment.v1beta4.MsgCreateDeploymentResponse: + type: object + description: >- + MsgCreateDeploymentResponse defines the Msg/CreateDeployment response + type. + akash.deployment.v1beta4.MsgPauseGroupResponse: + type: object + description: MsgPauseGroupResponse defines the Msg/PauseGroup response type. + akash.deployment.v1beta4.MsgStartGroupResponse: + type: object + description: MsgStartGroupResponse defines the Msg/StartGroup response type. + akash.deployment.v1beta4.MsgUpdateDeploymentResponse: + type: object + description: >- + MsgUpdateDeploymentResponse defines the Msg/UpdateDeployment response + type. + akash.deployment.v1beta4.MsgUpdateParamsResponse: type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: |- - total is total number of results available if PageRequest.count_total - was set, its value is undefined otherwise description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - google.protobuf.Any: + Since: akash v1.0.0 + akash.escrow.id.v1.Payment: type: object properties: - type_url: + aid: + type: object + properties: + scope: + type: string + enum: + - invalid + - deployment + - bid + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state. + - deployment: DeploymentActive denotes state for deployment active. + - bid: DeploymentClosed denotes state for deployment closed. + title: Scope is an enum which refers to the account scope + xid: + type: string + description: Account is the account identifier. + xid: type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least + description: Payment is the payment identifier. + akash.escrow.types.v1.Payment: + type: object + properties: + id: + type: object + properties: + aid: + type: object + properties: + scope: + type: string + enum: + - invalid + - deployment + - bid + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring + dummy state. + - deployment: DeploymentActive denotes state for deployment active. + - bid: DeploymentClosed denotes state for deployment closed. + title: Scope is an enum which refers to the account scope + xid: + type: string + description: Account is the account identifier. + xid: + type: string + description: Payment is the payment identifier. + state: + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - one "/" character. The last segment of the URL's path must represent + It is a string representing a valid bech32 account address. - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a canonical - form + Example: + "akash1..." + state: + description: State represents the state of the Payment. + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + rate: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal amount. - (e.g., leading "." is not accepted). + NOTE: The amount field is an Dec which implements the custom + method - In practice, teams usually precompile into the binary all types that - they + signatures required by gogoproto. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal amount. - expect it to use in the context of Any. However, for URLs which use - the - scheme `http`, `https`, or no scheme, one can optionally set up a type + NOTE: The amount field is an Dec which implements the custom + method - server that maps type URLs to message definitions as follows: + signatures required by gogoproto. + unsettled: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal amount. - * If no scheme is provided, `https` is assumed. + NOTE: The amount field is an Dec which implements the custom + method - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + signatures required by gogoproto. + title: >- + Unsettled is the amount needed to settle payment if account is + overdrawn + withdrawn: + description: >- + Withdrawn corresponds to the amount of coins withdrawn by the + Payment. + type: object + properties: + denom: + type: string + amount: + type: string + description: Payment stores state for a payment. + title: Payment + akash.escrow.types.v1.PaymentState: + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - Note: this functionality is not currently available in the official + It is a string representing a valid bech32 account address. - protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + Example: + "akash1..." + state: + description: State represents the state of the Payment. + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + rate: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - Schemes other than `http`, `https` (or the empty scheme) might be + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + unsettled: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - used with implementation specific semantics. - value: + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + title: >- + Unsettled is the amount needed to settle payment if account is + overdrawn + withdrawn: + description: Withdrawn corresponds to the amount of coins withdrawn by the Payment. + type: object + properties: + denom: + type: string + amount: + type: string + description: Payment stores state for a payment. + akash.market.v1.BidID: + type: object + properties: + owner: type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along with - a + Owner is the account bech32 address of the user who owns the + deployment. - URL that describes the type of the serialized message. + It is a string representing a valid bech32 account address. - Protobuf library provides support to pack/unpack Any values in the form + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier for + the deployment. - of utility functions or additional generated methods of the Any type. + It is used to differentiate deployments created by the same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier for the + group. + It is used to differentiate groups created by the same owner in a + deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders associated with a + single deployment. - Example 1: Pack and unpack a message in C++. + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. + provider: + type: string + description: |- + Provider is the account bech32 address of the provider making the bid. + It is a string representing a valid account bech32 address. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Example: + "akash1..." + bseq: + type: integer + format: int64 + description: >- + BSeq (bid sequence) distinguishes multiple bids associated with a + single deployment from same provider. + description: |- + BidID stores owner and all other seq numbers. + A successful bid becomes a Lease(ID). + akash.market.v1.Lease: + type: object + properties: + id: + description: Id is the unique identifier of the Lease. + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - Example 2: Pack and unpack a message in Java. + It is a string representing a valid bech32 account address. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier + for the deployment. - The pack methods provided by protobuf library will by default use + It is used to differentiate deployments created by the same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier for + the group. - 'type.googleapis.com/full.type.name' as the type URL and the unpack + It is used to differentiate groups created by the same owner in a + deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders associated + with a single deployment. - methods only use the fully qualified type name after the last '/' + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. + provider: + type: string + description: >- + Provider is the account bech32 address of the provider making the + bid. - in the type URL, for example "foo.bar.com/x/y.z" will yield type + It is a string representing a valid account bech32 address. - name "y.z". + Example: + "akash1..." + bseq: + type: integer + format: int64 + description: >- + BSeq (bid sequence) distinguishes multiple bids associated with a + single deployment from same provider. + state: + description: State represents the state of the Lease. + type: string + enum: + - invalid + - active + - insufficient_funds + - closed + - reclaiming + default: invalid + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - JSON + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + created_at: + type: string + format: int64 + description: CreatedAt is the block height at which the Lease was created. + closed_on: + type: string + format: int64 + description: ClosedOn is the block height at which the Lease was closed. + reason: + type: string + enum: + - lease_closed_invalid + - lease_closed_owner + - lease_closed_reason_unstable + - lease_closed_reason_decommission + - lease_closed_reason_unspecified + - lease_closed_reason_manifest_timeout + - lease_closed_reason_insufficient_funds + default: lease_closed_invalid + description: >- + - lease_closed_invalid: LeaseClosedReasonInvalid represents the + default zero value for LeaseClosedReason. + This value indicates an uninitialized or invalid lease closure reason + and should not - The JSON representation of an `Any` value uses the regular + be used + - lease_closed_owner: values between 1..9999 indicate owner‑initiated close + - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close + lease_closed_reason_unstable lease workloads have been unstable + - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned + - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason + - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received + - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close + title: LeaseClosedReason indicates reason bid was closed + reclamation: + description: |- + Reclamation holds reclamation configuration and state, if applicable. + Nil if reclamation is not configured for this lease. + type: object + properties: + window: + type: string + description: >- + window is the negotiated reclamation window duration (from the + winning bid). + started_at: + type: string + format: int64 + description: |- + started_at is the block height at which reclamation was initiated. + Zero means reclamation has not been started yet. + deadline: + type: string + format: int64 + description: >- + deadline is the unix timestamp at which the reclamation window + expires. - representation of the deserialized, embedded message, with an + Zero means reclamation has not been started yet. + reason: + type: string + enum: + - lease_closed_invalid + - lease_closed_owner + - lease_closed_reason_unstable + - lease_closed_reason_decommission + - lease_closed_reason_unspecified + - lease_closed_reason_manifest_timeout + - lease_closed_reason_insufficient_funds + default: lease_closed_invalid + description: >- + - lease_closed_invalid: LeaseClosedReasonInvalid represents the + default zero value for LeaseClosedReason. - additional field `@type` which contains the type URL. Example: + This value indicates an uninitialized or invalid lease closure + reason and should not - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + be used + - lease_closed_owner: values between 1..9999 indicate owner‑initiated close + - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close + lease_closed_reason_unstable lease workloads have been unstable + - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned + - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason + - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received + - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close + title: LeaseClosedReason indicates reason bid was closed + description: >- + Lease stores LeaseID, state of lease and price. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + The Lease defines the terms under which the provider allocates resources + to fulfill - If the embedded message type is well-known and has a custom JSON + the tenant's deployment requirements. - representation, that representation will be embedded adding a field + Leases are paid from the tenant to the provider through a deposit and + withdraw mechanism and are priced in blocks. + akash.market.v1.Lease.State: + type: string + enum: + - invalid + - active + - insufficient_funds + - closed + - reclaiming + default: invalid + description: |- + State is an enum which refers to state of lease. - `value` which holds the custom JSON in addition to the `@type` + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - active: LeaseActive denotes state for lease active. + - insufficient_funds: LeaseInsufficientFunds denotes state for lease insufficient_funds. + - closed: LeaseClosed denotes state for lease closed. + - reclaiming: LeaseReclaiming denotes a lease in reclamation (grace period before closure). + akash.market.v1.LeaseClosedReason: + type: string + enum: + - lease_closed_invalid + - lease_closed_owner + - lease_closed_reason_unstable + - lease_closed_reason_decommission + - lease_closed_reason_unspecified + - lease_closed_reason_manifest_timeout + - lease_closed_reason_insufficient_funds + default: lease_closed_invalid + description: >- + - lease_closed_invalid: LeaseClosedReasonInvalid represents the default + zero value for LeaseClosedReason. - field. Example (for message [google.protobuf.Duration][]): + This value indicates an uninitialized or invalid lease closure reason and + should not - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - grpc.gateway.runtime.Error: + be used + - lease_closed_owner: values between 1..9999 indicate owner‑initiated close + - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close + lease_closed_reason_unstable lease workloads have been unstable + - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned + - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason + - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received + - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close + title: LeaseClosedReason indicates reason bid was closed + akash.market.v1.LeaseFilters: type: object properties: - error: - type: string - code: - type: integer - format: int32 - message: + owner: type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - one "/" character. The last segment of the URL's path must - represent + It is a string representing a valid bech32 account address. - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier for + the deployment. - (e.g., leading "." is not accepted). + It is used to differentiate deployments created by the same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier for the + group. + It is used to differentiate groups created by the same owner in a + deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders associated with a + single deployment. - In practice, teams usually precompile into the binary all types - that they + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. + provider: + type: string + description: |- + Provider is the account bech32 address of the provider making the bid. + It is a string representing a valid account bech32 address. - expect it to use in the context of Any. However, for URLs which - use the + Example: + "akash1..." + state: + type: string + description: State represents the state of the lease. + bseq: + type: integer + format: int64 + description: >- + BSeq (bid sequence) distinguishes multiple bids associated with a + single deployment from same provider. + description: LeaseFilters defines flags for lease list filtering. + akash.market.v1.LeaseID: + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - scheme `http`, `https`, or no scheme, one can optionally set up - a type + It is a string representing a valid bech32 account address. - server that maps type URLs to message definitions as follows: + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier for + the deployment. - * If no scheme is provided, `https` is assumed. + It is used to differentiate deployments created by the same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier for the + group. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + It is used to differentiate groups created by the same owner in a + deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders associated with a + single deployment. - Note: this functionality is not currently available in the - official + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. + provider: + type: string + description: |- + Provider is the account bech32 address of the provider making the bid. + It is a string representing a valid account bech32 address. - protobuf release, and it is not used for type URLs beginning - with + Example: + "akash1..." + bseq: + type: integer + format: int64 + description: >- + BSeq (bid sequence) distinguishes multiple bids associated with a + single deployment from same provider. + description: LeaseID stores bid details of lease. + akash.market.v1.OrderID: + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - type.googleapis.com. + It is a string representing a valid bech32 account address. - Schemes other than `http`, `https` (or the empty scheme) might - be + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier for + the deployment. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + It is used to differentiate deployments created by the same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier for the + group. - URL that describes the type of the serialized message. + It is used to differentiate groups created by the same owner in a + deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders associated with a + single deployment. + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. + description: OrderId stores owner and all other seq numbers. + akash.market.v1.Reclamation: + type: object + properties: + window: + type: string + description: >- + window is the negotiated reclamation window duration (from the winning + bid). + started_at: + type: string + format: int64 + description: |- + started_at is the block height at which reclamation was initiated. + Zero means reclamation has not been started yet. + deadline: + type: string + format: int64 + description: >- + deadline is the unix timestamp at which the reclamation window + expires. - Protobuf library provides support to pack/unpack Any values in the - form + Zero means reclamation has not been started yet. + reason: + type: string + enum: + - lease_closed_invalid + - lease_closed_owner + - lease_closed_reason_unstable + - lease_closed_reason_decommission + - lease_closed_reason_unspecified + - lease_closed_reason_manifest_timeout + - lease_closed_reason_insufficient_funds + default: lease_closed_invalid + description: >- + - lease_closed_invalid: LeaseClosedReasonInvalid represents the + default zero value for LeaseClosedReason. - of utility functions or additional generated methods of the Any - type. + This value indicates an uninitialized or invalid lease closure reason + and should not + be used + - lease_closed_owner: values between 1..9999 indicate owner‑initiated close + - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close + lease_closed_reason_unstable lease workloads have been unstable + - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned + - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason + - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received + - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close + title: LeaseClosedReason indicates reason bid was closed + description: Reclamation defines the runtime reclamation state stored on a Lease. + akash.market.v1beta5.Bid: + type: object + properties: + id: + description: |- + BidID stores owner and all other seq numbers. + A successful bid becomes a Lease(ID). + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - Example 1: Pack and unpack a message in C++. + It is a string representing a valid bech32 account address. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - Example 2: Pack and unpack a message in Java. + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier + for the deployment. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + It is used to differentiate deployments created by the same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier for + the group. - If the embedded message type is well-known and has a custom JSON + It is used to differentiate groups created by the same owner in a + deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders associated + with a single deployment. - representation, that representation will be embedded adding a field + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. + provider: + type: string + description: >- + Provider is the account bech32 address of the provider making the + bid. - `value` which holds the custom JSON in addition to the `@type` + It is a string representing a valid account bech32 address. - field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - akash.cert.v1.Certificate: - type: object - properties: + Example: + "akash1..." + bseq: + type: integer + format: int64 + description: >- + BSeq (bid sequence) distinguishes multiple bids associated with a + single deployment from same provider. state: - description: |- - State is the state of the certificate. - CertificateValid denotes state for deployment active. - CertificateRevoked denotes state for deployment closed. + description: State represents the state of the Bid. type: string enum: - invalid - - valid - - revoked + - open + - active + - lost + - closed default: invalid - cert: - type: string - format: byte - description: Cert holds the bytes of the certificate. - pubkey: - type: string - format: byte - description: PubKey holds the public key of the certificate. - description: >- - Certificate stores state, certificate and it's public key. - - The certificate is required for several transactions including deployment - of a workload to verify the identity of the tenant and secure the - deployment. - akash.cert.v1.CertificateFilter: - type: object - properties: - owner: - type: string - description: |- - Owner is the account address of the user who owns the certificate. - It is a string representing a valid account address. - - Example: - "akash1..." - serial: - type: string - description: Serial is a sequence number for the certificate. - state: - type: string - description: |- - State is the state of the certificate. - CertificateValid denotes state for deployment active. - CertificateRevoked denotes state for deployment closed. - description: CertificateFilter defines filters used to filter certificates. - akash.cert.v1.CertificateResponse: - type: object - properties: - certificate: - description: Certificate holds the certificate. + price: + description: Price holds the pricing stated on the Bid. type: object properties: - state: - description: |- - State is the state of the certificate. - CertificateValid denotes state for deployment active. - CertificateRevoked denotes state for deployment closed. - type: string - enum: - - invalid - - valid - - revoked - default: invalid - cert: + denom: type: string - format: byte - description: Cert holds the bytes of the certificate. - pubkey: + amount: type: string - format: byte - description: PubKey holds the public key of the certificate. - serial: + created_at: type: string - description: Serial is a sequence number for the certificate. - description: >- - CertificateResponse contains a single X509 certificate and its serial - number. - akash.cert.v1.QueryCertificatesResponse: - type: object - properties: - certificates: + format: int64 + description: CreatedAt is the block height at which the Bid was created. + resources_offer: type: array items: type: object properties: - certificate: - description: Certificate holds the certificate. + resources: + description: Resources holds information about bid resources. type: object properties: - state: - description: |- - State is the state of the certificate. - CertificateValid denotes state for deployment active. - CertificateRevoked denotes state for deployment closed. - type: string - enum: - - invalid - - valid - - revoked - default: invalid - cert: - type: string - format: byte - description: Cert holds the bytes of the certificate. - pubkey: - type: string - format: byte - description: PubKey holds the public key of the certificate. - serial: - type: string - description: Serial is a sequence number for the certificate. - description: >- - CertificateResponse contains a single X509 certificate and its - serial number. - description: Certificates is a list of certificate. - pagination: - description: Pagination contains the information about response pagination. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + id: + type: integer + format: int64 + description: Id is a unique identifier for the resources. + cpu: + description: >- + CPU resources available, including the architecture, number + of cores and other details. - was set, its value is undefined otherwise - description: >- - QueryCertificatesResponse is response type for the Query/Certificates RPC - method. - akash.cert.v1.State: - type: string - enum: - - invalid - - valid - - revoked - default: invalid - description: |- - State is an enum which refers to state of the certificate. + This field is optional and can be empty if no CPU resources + are available. + type: object + properties: + units: + description: >- + Units of the CPU, which represents the number of CPUs + available. - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - valid: CertificateValid denotes state for deployment active. - - revoked: CertificateRevoked denotes state for deployment closed. - akash.base.attributes.v1.PlacementRequirements: - type: object - properties: - signed_by: - description: >- - SignedBy holds the list of keys that tenants expect to have signatures - from. - type: object - properties: - all_of: - type: array - items: - type: string - description: AllOf indicates all keys in this list must have signed attributes. - any_of: - type: array - items: - type: string - description: >- - AnyOf means that at least one of the keys from the list must have - signed attributes. - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: >- - Attribute holds the list of attributes tenant expects from the - provider. - description: >- - PlacementRequirements represents the requirements for a provider placement - on the network. + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: >- + Attribute represents an arbitrary attribute key-value + pair. + description: >- + Attributes holds a list of key-value attributes that + describe the GPU, such as its model, memory and + interface. - It is used to specify the characteristics and constraints of a provider - that can be used to satisfy a deployment request. - akash.base.attributes.v1.SignedBy: - type: object - properties: - all_of: - type: array - items: - type: string - description: AllOf indicates all keys in this list must have signed attributes. - any_of: - type: array - items: - type: string - description: >- - AnyOf means that at least one of the keys from the list must have - signed attributes. - description: >- - SignedBy represents validation accounts that tenant expects signatures for - provider attributes. + This field is required and must be a list of `Attribute` + messages. + memory: + description: >- + Memory resources available, including the quantity and + attributes. - AllOf has precedence i.e. if there is at least one entry AnyOf is ignored - regardless to how many + This field is optional and can be empty if no memory + resources are available. + type: object + properties: + quantity: + description: >- + Quantity of memory available, which represents the + amount of memory in bytes. - entries there. - akash.base.deposit.v1.Source: - type: string - enum: - - invalid - - balance - - grant - default: invalid - description: |- - Source is an enum which lists source of funds for deployment deposit. + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: >- + Attribute represents an arbitrary attribute key-value + pair. + description: >- + Attributes that describe the memory, such as its type + and speed. - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - balance: SourceBalance denotes account balance as source of funds - - grant: SourceGrant denotes authz grants as source of funds - akash.base.resources.v1beta4.CPU: - type: object - properties: - units: - description: |- - Units of the CPU, which represents the number of CPUs available. - This field is required and must be a non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: >- - Attributes holds a list of key-value attributes that describe the GPU, - such as its model, memory and interface. + This field is required and must be a list of Attribute + key-values. + storage: + type: array + items: + type: object + properties: + name: + type: string + description: Name holds an arbitrary name for the storage resource. + quantity: + description: >- + Quantity of storage available, which represents the + amount of memory in bytes. - This field is required and must be a list of `Attribute` messages. - description: CPU stores resource units and cpu config attributes. - akash.base.resources.v1beta4.Endpoint: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is implemented when the lease is - deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: SequenceNumber represents a sequence number for the Endpoint. - description: Endpoint describes a publicly accessible IP service. - akash.base.resources.v1beta4.Endpoint.Kind: - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - description: |- - Kind describes how the endpoint is implemented when the lease is deployed. + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes that describe the storage. - - SHARED_HTTP: Describes an endpoint that becomes a Kubernetes Ingress. - - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort. - - LEASED_IP: Describes an endpoint that becomes a leased IP. - akash.base.resources.v1beta4.GPU: - type: object + This field is required and must be a list of Attribute + key-values. + description: Storage stores resource quantity and storage attributes. + description: >- + Storage resources available, including the quantity and + attributes. + + This field is optional and can be empty if no storage + resources are available. + gpu: + description: >- + GPU resources available, including the type, architecture + and other details. + + This field is optional and can be empty if no GPU resources + are available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which represents the + number of GPUs available. + + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: >- + Attribute represents an arbitrary attribute key-value + pair. + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is implemented when + the lease is deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: >- + SequenceNumber represents a sequence number for the + Endpoint. + description: Endpoint describes a publicly accessible IP service. + title: Endpoint resources available + title: >- + Resources describes all available resources types for + deployment/node etc + + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + description: Count is the number of resources. + prices: + description: >- + Prices contains per-resource pricing details (CPU, memory, + storage, GPU, endpoints) for this offer. + type: object + properties: + cpu: + description: >- + Cpu is the offered price for CPU resources. When nil, no + explicit + + CPU price is set. + type: object + properties: + denom: + type: string + amount: + type: string + memory: + description: >- + Memory is the offered price for memory resources. When nil, + no explicit + + memory price is set. + type: object + properties: + denom: + type: string + amount: + type: string + storage: + type: array + items: + type: object + properties: + name: + type: string + description: >- + Name holds an arbitrary name for the storage class + (e.g., "default", "ssd", "hdd"). + + This must match a storage class name from the + corresponding resource specification. + price: + description: >- + Price is the offered price per unit of this storage + class, expressed as a + + DecCoin (decimal coin) to allow fractional pricing. + When nil, no explicit + + price is set for this storage class. + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + StorageOfferPrice represents the price a provider is + offering for a specific + + class of persistent storage. Providers may offer multiple + storage classes + + (e.g., SSD, HDD, NVMe), each identified by name and priced + independently. + + This type is used as a repeated field within OfferPrices + to express + + per-class storage pricing in a bid. + description: >- + Storage is a list of per-class storage prices. Each entry + corresponds to a + + named storage class (e.g., "default", "ssd") and its + associated price. + + Multiple entries allow providers to price different storage + tiers independently. + gpu: + description: >- + Gpu is the offered price for GPU resources. When nil, no + explicit + + GPU price is set. + type: object + properties: + denom: + type: string + amount: + type: string + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind specifies the type of network endpoint being + priced. Possible values: + - SHARED_HTTP (0): A Kubernetes Ingress endpoint. + - RANDOM_PORT (1): A Kubernetes NodePort endpoint. + - LEASED_IP (2): A dedicated leased IP endpoint. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + price: + description: >- + Price is the offered price per unit of this endpoint + kind, expressed as a + + DecCoin (decimal coin) to allow fractional pricing. + When nil, no explicit + + price is set for this endpoint kind. + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + EndpointOfferPrice represents the price a provider is + offering for a specific + + kind of network endpoint. Providers may price each + endpoint kind differently + + (e.g., a leased IP may cost more than a shared HTTP + ingress). This type is + + used as a repeated field within OfferPrices to express + per-kind endpoint + + pricing in a bid. + description: >- + Endpoints is a list of per-kind endpoint prices. Each entry + corresponds to + + a network endpoint kind (SHARED_HTTP, RANDOM_PORT, or + LEASED_IP) and its + + associated price. Multiple entries allow providers to price + different + + endpoint types independently. + description: |- + ResourceOffer describes resources that provider is offering + for deployment. + description: ResourceOffer is a list of offers. + reclamation_window: + type: string + description: reclamation_window is the reclamation window offered by this provider. + description: Bid stores BidID, state of bid and price. + akash.market.v1beta5.Bid.State: + type: string + enum: + - invalid + - open + - active + - lost + - closed + default: invalid + description: |- + BidState is an enum which refers to state of bid. + + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - open: BidOpen denotes state for bid open. + - active: BidMatched denotes state for bid open. + - lost: BidLost denotes state for bid lost. + - closed: BidClosed denotes state for bid closed. + akash.market.v1beta5.BidFilters: + type: object properties: - units: + owner: + type: string description: >- - The resource value of the GPU, which represents the number of GPUs - available. + Owner is the account bech32 address of the user who owns the + deployment. - This field is required and must be a non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: GPU stores resource units and gpu configuration attributes. - akash.base.resources.v1beta4.Memory: + It is a string representing a valid bech32 account address. + + + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier for + the deployment. + + It is used to differentiate deployments created by the same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier for the + group. + + It is used to differentiate groups created by the same owner in a + deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders associated with a + single deployment. + + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. + provider: + type: string + description: |- + Provider is the account bech32 address of the provider making the bid. + It is a string representing a valid account bech32 address. + + Example: + "akash1..." + state: + type: string + description: State represents the state of the lease. + bseq: + type: integer + format: int64 + description: >- + BSeq (bid sequence) distinguishes multiple bids associated with a + single deployment from same provider. + description: BidFilters defines flags for bid list filter. + akash.market.v1beta5.EndpointOfferPrice: type: object properties: - quantity: + kind: description: >- - Quantity of memory available, which represents the amount of memory in - bytes. + Kind specifies the type of network endpoint being priced. Possible + values: + - SHARED_HTTP (0): A Kubernetes Ingress endpoint. + - RANDOM_PORT (1): A Kubernetes NodePort endpoint. + - LEASED_IP (2): A dedicated leased IP endpoint. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + price: + description: >- + Price is the offered price per unit of this endpoint kind, expressed + as a - This field is required and must be a non-negative integer. + DecCoin (decimal coin) to allow fractional pricing. When nil, no + explicit + + price is set for this endpoint kind. type: object properties: - val: + denom: type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: |- - Attributes that describe the memory, such as its type and speed. - This field is required and must be a list of Attribute key-values. - description: Memory stores resource quantity and memory attributes. - akash.base.resources.v1beta4.ResourceValue: - type: object - properties: - val: - type: string - format: byte - description: Unit stores cpu, memory and storage metrics. - akash.base.resources.v1beta4.Resources: + amount: + type: string + description: >- + EndpointOfferPrice represents the price a provider is offering for a + specific + + kind of network endpoint. Providers may price each endpoint kind + differently + + (e.g., a leased IP may cost more than a shared HTTP ingress). This type is + + used as a repeated field within OfferPrices to express per-kind endpoint + + pricing in a bid. + akash.market.v1beta5.OfferPrices: type: object properties: - id: - type: integer - format: int64 - description: Id is a unique identifier for the resources. cpu: - description: >- - CPU resources available, including the architecture, number of cores - and other details. - - This field is optional and can be empty if no CPU resources are - available. + description: |- + Cpu is the offered price for CPU resources. When nil, no explicit + CPU price is set. type: object properties: - units: - description: |- - Units of the CPU, which represents the number of CPUs available. - This field is required and must be a non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", "cpu_architecture", - etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: >- - Attributes holds a list of key-value attributes that describe the - GPU, such as its model, memory and interface. - - This field is required and must be a list of `Attribute` messages. + denom: + type: string + amount: + type: string memory: description: >- - Memory resources available, including the quantity and attributes. + Memory is the offered price for memory resources. When nil, no + explicit - This field is optional and can be empty if no memory resources are - available. + memory price is set. type: object properties: - quantity: - description: >- - Quantity of memory available, which represents the amount of - memory in bytes. - - This field is required and must be a non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", "cpu_architecture", - etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: |- - Attributes that describe the memory, such as its type and speed. - This field is required and must be a list of Attribute key-values. + denom: + type: string + amount: + type: string storage: type: array items: @@ -46429,77 +49111,58 @@ definitions: properties: name: type: string - description: Name holds an arbitrary name for the storage resource. - quantity: description: >- - Quantity of storage available, which represents the amount of - memory in bytes. + Name holds an arbitrary name for the storage class (e.g., + "default", "ssd", "hdd"). - This field is required and must be a non-negative integer. + This must match a storage class name from the corresponding + resource specification. + price: + description: >- + Price is the offered price per unit of this storage class, + expressed as a + + DecCoin (decimal coin) to allow fractional pricing. When nil, no + explicit + + price is set for this storage class. type: object properties: - val: + denom: type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", "cpu_architecture", - etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: >- - Attributes that describe the storage. + amount: + type: string + description: >- + StorageOfferPrice represents the price a provider is offering for a + specific - This field is required and must be a list of Attribute - key-values. - description: Storage stores resource quantity and storage attributes. - description: >- - Storage resources available, including the quantity and attributes. + class of persistent storage. Providers may offer multiple storage + classes - This field is optional and can be empty if no storage resources are - available. - gpu: + (e.g., SSD, HDD, NVMe), each identified by name and priced + independently. + + This type is used as a repeated field within OfferPrices to express + + per-class storage pricing in a bid. description: >- - GPU resources available, including the type, architecture and other - details. + Storage is a list of per-class storage prices. Each entry corresponds + to a - This field is optional and can be empty if no GPU resources are - available. + named storage class (e.g., "default", "ssd") and its associated price. + + Multiple entries allow providers to price different storage tiers + independently. + gpu: + description: |- + Gpu is the offered price for GPU resources. When nil, no explicit + GPU price is set. type: object properties: - units: - description: >- - The resource value of the GPU, which represents the number of GPUs - available. - - This field is required and must be a non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", "cpu_architecture", - etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. + denom: + type: string + amount: + type: string endpoints: type: array items: @@ -46507,242 +49170,94 @@ definitions: properties: kind: description: >- - Kind describes how the endpoint is implemented when the lease is - deployed. + Kind specifies the type of network endpoint being priced. + Possible values: + - SHARED_HTTP (0): A Kubernetes Ingress endpoint. + - RANDOM_PORT (1): A Kubernetes NodePort endpoint. + - LEASED_IP (2): A dedicated leased IP endpoint. type: string enum: - SHARED_HTTP - RANDOM_PORT - LEASED_IP default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: SequenceNumber represents a sequence number for the Endpoint. - description: Endpoint describes a publicly accessible IP service. - title: Endpoint resources available - title: |- - Resources describes all available resources types for deployment/node etc - if field is nil resource is not present in the given data-structure - akash.base.resources.v1beta4.Storage: - type: object - properties: - name: - type: string - description: Name holds an arbitrary name for the storage resource. - quantity: - description: >- - Quantity of storage available, which represents the amount of memory - in bytes. - - This field is required and must be a non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: |- - Attributes that describe the storage. - This field is required and must be a list of Attribute key-values. - description: Storage stores resource quantity and storage attributes. - akash.deployment.v1.Deployment: - type: object - properties: - id: - description: ID is the unique identifier of the deployment. - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + price: + description: >- + Price is the offered price per unit of this endpoint kind, + expressed as a - It is a string representing a valid bech32 account address. + DecCoin (decimal coin) to allow fractional pricing. When nil, no + explicit + price is set for this endpoint kind. + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + EndpointOfferPrice represents the price a provider is offering for a + specific - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier - for the deployment. + kind of network endpoint. Providers may price each endpoint kind + differently - It is used to differentiate deployments created by the same owner. - state: - description: |- - State defines the sate of the deployment. - A deployment can be either active or inactive. - type: string - enum: - - invalid - - active - - closed - default: invalid - hash: - type: string - format: byte - description: Hash is an hashed representation of the deployment. - created_at: - type: string - format: int64 - description: >- - CreatedAt indicates when the deployment was created as a block height - value. - reclamation: - description: >- - reclamation stores the deployment's reclamation requirements for - persistence. + (e.g., a leased IP may cost more than a shared HTTP ingress). This + type is - Needed so that StartGroup can propagate reclamation to newly created - orders. - type: object - properties: - min_window: - type: string - description: min_window is the minimum reclamation window the tenant requires. - description: Deployment stores deploymentID, state and checksum details. - akash.deployment.v1.Deployment.State: - type: string - enum: - - invalid - - active - - closed - default: invalid - description: |- - State is an enum which refers to state of deployment. + used as a repeated field within OfferPrices to express per-kind + endpoint - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - active: DeploymentActive denotes state for deployment active. - - closed: DeploymentClosed denotes state for deployment closed. - akash.deployment.v1.DeploymentID: - type: object - properties: - owner: - type: string + pricing in a bid. description: >- - Owner is the account bech32 address of the user who owns the - deployment. - - It is a string representing a valid bech32 account address. + Endpoints is a list of per-kind endpoint prices. Each entry + corresponds to + a network endpoint kind (SHARED_HTTP, RANDOM_PORT, or LEASED_IP) and + its - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier for - the deployment. + associated price. Multiple entries allow providers to price different - It is used to differentiate deployments created by the same owner. + endpoint types independently. description: >- - DeploymentID represents a unique identifier for a specific deployment on - the network. - - It is composed of two fields: an owner address and a sequence number - (dseq). - akash.deployment.v1.DeploymentReclamation: - type: object - properties: - min_window: - type: string - description: min_window is the minimum reclamation window the tenant requires. - description: |- - DeploymentReclamation defines the tenant's reclamation requirements. - Stored on the Deployment and propagated to Orders. - akash.deployment.v1.GroupID: - type: object - properties: - owner: - type: string - description: |- - Owner is the account address of the user who owns the group. - It is a string representing a valid account address. - - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier for - the deployment. + OfferPrices contains the complete pricing breakdown that a provider + includes - It is used to differentiate deployments created by the same owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier for the - group. + in a bid for a deployment resource group. Each field represents the price + for - It is used to differentiate groups created by the same owner in a - deployment. - description: >- - GroupID uniquely identifies a group within a deployment on the network. + a specific compute resource type. All price fields use DecCoin (decimal + coin) - A group represents a specific collection of resources or configurations + to support fractional pricing denominated in any supported token. - within a deployment. - It stores owner, deployment sequence number (dseq) and group sequence - number (gseq). - akash.deployment.v1beta4.DeploymentFilters: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + This message is embedded as a nullable field on ResourceOffer, which in + turn - It is a string representing a valid bech32 account address. + is carried by Bid and MsgCreateBid messages. A nil OfferPrices on a + ResourceOffer indicates that no per-resource pricing was specified. - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier for - the deployment. - It is used to differentiate deployments created by the same owner. - state: - type: string - description: >- - State defines the sate of the deployment. A deployment can be either - active or inactive. - description: DeploymentFilters defines filters used to filter deployments. - akash.deployment.v1beta4.Group: + Field 1 is reserved for backward compatibility with a previously removed + field. + akash.market.v1beta5.Order: type: object properties: id: - description: Id is the unique identifier for the group. + description: Id is the unique identifier of the order. type: object properties: owner: type: string - description: |- - Owner is the account address of the user who owns the group. - It is a string representing a valid account address. + description: >- + Owner is the account bech32 address of the user who owns the + deployment. + + It is a string representing a valid bech32 account address. + Example: "akash1..." @@ -46763,18 +49278,31 @@ definitions: It is used to differentiate groups created by the same owner in a deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders associated + with a single deployment. + + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. state: - description: State represents the state of the group. type: string enum: - invalid - open - - paused - - insufficient_funds + - active - closed default: invalid - group_spec: - description: GroupSpec holds the specification of a the Group. + description: |- + State is an enum which refers to state of order. + + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - open: OrderOpen denotes state for order open. + - active: OrderMatched denotes state for order matched. + - closed: OrderClosed denotes state for order lost. + spec: type: object properties: name: @@ -47058,13 +49586,21 @@ definitions: Count corresponds to the amount of replicas to run of the resources. price: - description: Price holds the pricing for the resource units. type: object properties: denom: type: string amount: type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. description: >- ResourceUnit extends Resources and adds Count along with the Price. @@ -47074,330 +49610,111 @@ definitions: Each ResourceUnit defines the specific resources (e.g., CPU, memory) assigned. + description: >- + GroupSpec defines a specification for a group in a deployment on the + network. + + This includes attributes like the group name, placement requirements, + and resource units. created_at: type: string format: int64 - description: CreatedAt is the block height at which the deployment was created. - description: Group stores group id, state and specifications of a group. - akash.deployment.v1beta4.Group.State: + reclamation: + description: >- + reclamation is the deployment-level reclamation requirement, + propagated to the order. + + Nil means the deployment does not require reclamation. + type: object + properties: + min_window: + type: string + description: min_window is the minimum reclamation window the tenant requires. + description: Order stores orderID, state of order and other details. + akash.market.v1beta5.Order.State: type: string enum: - invalid - open - - paused - - insufficient_funds + - active - closed default: invalid description: |- - State is an enum which refers to state of group. + State is an enum which refers to state of order. - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - open: GroupOpen denotes state for group open. - - paused: GroupOrdered denotes state for group ordered. - - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds. - - closed: GroupClosed denotes state for group closed. - akash.deployment.v1beta4.GroupSpec: + - open: OrderOpen denotes state for order open. + - active: OrderMatched denotes state for order matched. + - closed: OrderClosed denotes state for order lost. + akash.market.v1beta5.OrderFilters: type: object properties: - name: + owner: type: string - description: Name is the name of the group. - requirements: - description: |- - Requirements specifies the placement requirements for the group. - This determines where the resources in the group can be deployed. + description: >- + Owner is the account bech32 address of the user who owns the + deployment. + + It is a string representing a valid bech32 account address. + + + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric identifier for + the deployment. + + It is used to differentiate deployments created by the same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier for the + group. + + It is used to differentiate groups created by the same owner in a + deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders associated with a + single deployment. + + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. + state: + type: string + description: State represents the state of the lease. + title: OrderFilters defines flags for order list filter + akash.market.v1beta5.Params: + type: object + properties: + bid_min_deposit: + title: |- + BidMinDeposit is a parameter for the minimum deposit on a Bid. + Deprecated: use BidMinDeposits type: object properties: - signed_by: - description: >- - SignedBy holds the list of keys that tenants expect to have - signatures from. - type: object - properties: - all_of: - type: array - items: - type: string - description: >- - AllOf indicates all keys in this list must have signed - attributes. - any_of: - type: array - items: - type: string - description: >- - AnyOf means that at least one of the keys from the list must - have signed attributes. - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", "cpu_architecture", - etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: >- - Attribute holds the list of attributes tenant expects from the - provider. - resources: - type: array - items: - type: object - properties: - resource: - description: Resource holds the amount of resources. - type: object - properties: - id: - type: integer - format: int64 - description: Id is a unique identifier for the resources. - cpu: - description: >- - CPU resources available, including the architecture, number - of cores and other details. - - This field is optional and can be empty if no CPU resources - are available. - type: object - properties: - units: - description: >- - Units of the CPU, which represents the number of CPUs - available. - - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: >- - Attribute represents an arbitrary attribute key-value - pair. - description: >- - Attributes holds a list of key-value attributes that - describe the GPU, such as its model, memory and - interface. - - This field is required and must be a list of `Attribute` - messages. - memory: - description: >- - Memory resources available, including the quantity and - attributes. - - This field is optional and can be empty if no memory - resources are available. - type: object - properties: - quantity: - description: >- - Quantity of memory available, which represents the - amount of memory in bytes. - - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: >- - Attribute represents an arbitrary attribute key-value - pair. - description: >- - Attributes that describe the memory, such as its type - and speed. - - This field is required and must be a list of Attribute - key-values. - storage: - type: array - items: - type: object - properties: - name: - type: string - description: Name holds an arbitrary name for the storage resource. - quantity: - description: >- - Quantity of storage available, which represents the - amount of memory in bytes. - - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the storage. - - This field is required and must be a list of Attribute - key-values. - description: Storage stores resource quantity and storage attributes. - description: >- - Storage resources available, including the quantity and - attributes. - - This field is optional and can be empty if no storage - resources are available. - gpu: - description: >- - GPU resources available, including the type, architecture - and other details. - - This field is optional and can be empty if no GPU resources - are available. - type: object - properties: - units: - description: >- - The resource value of the GPU, which represents the - number of GPUs available. - - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: >- - Attribute represents an arbitrary attribute key-value - pair. - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is implemented when - the lease is deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: >- - SequenceNumber represents a sequence number for the - Endpoint. - description: Endpoint describes a publicly accessible IP service. - title: Endpoint resources available - title: >- - Resources describes all available resources types for - deployment/node etc - - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - description: >- - Count corresponds to the amount of replicas to run of the - resources. - price: - description: Price holds the pricing for the resource units. - type: object - properties: - denom: - type: string - amount: - type: string - description: ResourceUnit extends Resources and adds Count along with the Price. - description: >- - Resources is a list containing the resource units allocated to the - group. - - Each ResourceUnit defines the specific resources (e.g., CPU, memory) - assigned. - description: >- - GroupSpec defines a specification for a group in a deployment on the - network. - - This includes attributes like the group name, placement requirements, and - resource units. - akash.deployment.v1beta4.Params: - type: object - properties: - min_deposits: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + order_max_bids: + type: integer + format: int64 + description: >- + OrderMaxBids is a parameter for the maximum number of bids in an + order. + bid_min_deposits: type: array items: type: object @@ -47412,18 +49729,30 @@ definitions: NOTE: The amount field is an Int which implements the custom method signatures required by gogoproto. description: >- - MinDeposits holds a list of the minimum amount of deposits for each a - coin. - description: Params defines the parameters for the x/deployment module. - akash.deployment.v1beta4.QueryDeploymentResponse: + BidMinDeposits is a parameter for the minimum deposits per denom on a + Bid. + min_reclamation_window: + type: string + description: >- + min_reclamation_window is the minimum reclamation window duration + allowed. + max_reclamation_window: + type: string + description: >- + max_reclamation_window is the maximum reclamation window duration + allowed. + description: Params is the params for the x/market module. + akash.market.v1beta5.QueryBidResponse: type: object properties: - deployment: - description: Deployment represents a deployment on the network. + bid: + description: Bid represents a deployment bid. type: object properties: id: - description: ID is the unique identifier of the deployment. + description: |- + BidID stores owner and all other seq numbers. + A successful bid becomes a Lease(ID). type: object properties: owner: @@ -47446,409 +49775,455 @@ definitions: It is used to differentiate deployments created by the same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier + for the group. + + It is used to differentiate groups created by the same owner + in a deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders associated + with a single deployment. + + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. + provider: + type: string + description: >- + Provider is the account bech32 address of the provider making + the bid. + + It is a string representing a valid account bech32 address. + + + Example: + "akash1..." + bseq: + type: integer + format: int64 + description: >- + BSeq (bid sequence) distinguishes multiple bids associated + with a single deployment from same provider. state: - description: |- - State defines the sate of the deployment. - A deployment can be either active or inactive. + description: State represents the state of the Bid. type: string enum: - invalid + - open - active + - lost - closed default: invalid - hash: - type: string - format: byte - description: Hash is an hashed representation of the deployment. - created_at: - type: string - format: int64 - description: >- - CreatedAt indicates when the deployment was created as a block - height value. - reclamation: - description: >- - reclamation stores the deployment's reclamation requirements for - persistence. - - Needed so that StartGroup can propagate reclamation to newly - created orders. + price: + description: Price holds the pricing stated on the Bid. type: object properties: - min_window: + denom: type: string - description: >- - min_window is the minimum reclamation window the tenant - requires. - groups: - type: array - items: - type: object - properties: - id: - description: Id is the unique identifier for the group. - type: object - properties: - owner: - type: string - description: |- - Owner is the account address of the user who owns the group. - It is a string representing a valid account address. - - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric - identifier for the deployment. - - It is used to differentiate deployments created by the same - owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier - for the group. - - It is used to differentiate groups created by the same owner - in a deployment. - state: - description: State represents the state of the group. - type: string - enum: - - invalid - - open - - paused - - insufficient_funds - - closed - default: invalid - group_spec: - description: GroupSpec holds the specification of a the Group. + amount: + type: string + created_at: + type: string + format: int64 + description: CreatedAt is the block height at which the Bid was created. + resources_offer: + type: array + items: type: object properties: - name: - type: string - description: Name is the name of the group. - requirements: - description: >- - Requirements specifies the placement requirements for the - group. - - This determines where the resources in the group can be - deployed. + resources: + description: Resources holds information about bid resources. type: object properties: - signed_by: + id: + type: integer + format: int64 + description: Id is a unique identifier for the resources. + cpu: description: >- - SignedBy holds the list of keys that tenants expect to - have signatures from. + CPU resources available, including the architecture, + number of cores and other details. + + This field is optional and can be empty if no CPU + resources are available. type: object properties: - all_of: + units: + description: >- + Units of the CPU, which represents the number of + CPUs available. + + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: type: array items: - type: string + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. description: >- - AllOf indicates all keys in this list must have - signed attributes. - any_of: + Attributes holds a list of key-value attributes that + describe the GPU, such as its model, memory and + interface. + + This field is required and must be a list of + `Attribute` messages. + memory: + description: >- + Memory resources available, including the quantity and + attributes. + + This field is optional and can be empty if no memory + resources are available. + type: object + properties: + quantity: + description: >- + Quantity of memory available, which represents the + amount of memory in bytes. + + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: type: array items: - type: string + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. description: >- - AnyOf means that at least one of the keys from the - list must have signed attributes. - attributes: + Attributes that describe the memory, such as its + type and speed. + + This field is required and must be a list of + Attribute key-values. + storage: type: array items: type: object properties: - key: + name: type: string description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string + Name holds an arbitrary name for the storage + resource. + quantity: description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). + Quantity of storage available, which represents + the amount of memory in bytes. + + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes that describe the storage. + + This field is required and must be a list of + Attribute key-values. description: >- - Attribute represents an arbitrary attribute key-value - pair. + Storage stores resource quantity and storage + attributes. description: >- - Attribute holds the list of attributes tenant expects - from the provider. - resources: - type: array - items: - type: object - properties: - resource: - description: Resource holds the amount of resources. + Storage resources available, including the quantity and + attributes. + + This field is optional and can be empty if no storage + resources are available. + gpu: + description: >- + GPU resources available, including the type, + architecture and other details. + + This field is optional and can be empty if no GPU + resources are available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which represents the + number of GPUs available. + + This field is required and must be a non-negative + integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + endpoints: + type: array + items: type: object properties: - id: + kind: + description: >- + Kind describes how the endpoint is implemented + when the lease is deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: type: integer format: int64 - description: Id is a unique identifier for the resources. - cpu: description: >- - CPU resources available, including the - architecture, number of cores and other details. + SequenceNumber represents a sequence number for + the Endpoint. + description: Endpoint describes a publicly accessible IP service. + title: Endpoint resources available + title: >- + Resources describes all available resources types for + deployment/node etc - This field is optional and can be empty if no CPU - resources are available. - type: object - properties: - units: - description: >- - Units of the CPU, which represents the number - of CPUs available. + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + description: Count is the number of resources. + prices: + description: >- + Prices contains per-resource pricing details (CPU, memory, + storage, GPU, endpoints) for this offer. + type: object + properties: + cpu: + description: >- + Cpu is the offered price for CPU resources. When nil, no + explicit - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes holds a list of key-value - attributes that describe the GPU, such as its - model, memory and interface. + CPU price is set. + type: object + properties: + denom: + type: string + amount: + type: string + memory: + description: >- + Memory is the offered price for memory resources. When + nil, no explicit - This field is required and must be a list of - `Attribute` messages. - memory: + memory price is set. + type: object + properties: + denom: + type: string + amount: + type: string + storage: + type: array + items: + type: object + properties: + name: + type: string description: >- - Memory resources available, including the quantity - and attributes. + Name holds an arbitrary name for the storage class + (e.g., "default", "ssd", "hdd"). - This field is optional and can be empty if no - memory resources are available. + This must match a storage class name from the + corresponding resource specification. + price: + description: >- + Price is the offered price per unit of this + storage class, expressed as a + + DecCoin (decimal coin) to allow fractional + pricing. When nil, no explicit + + price is set for this storage class. type: object properties: - quantity: - description: >- - Quantity of memory available, which represents - the amount of memory in bytes. + denom: + type: string + amount: + type: string + description: >- + StorageOfferPrice represents the price a provider is + offering for a specific - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the memory, such as - its type and speed. + class of persistent storage. Providers may offer + multiple storage classes - This field is required and must be a list of - Attribute key-values. - storage: - type: array - items: - type: object - properties: - name: - type: string - description: >- - Name holds an arbitrary name for the storage - resource. - quantity: - description: >- - Quantity of storage available, which - represents the amount of memory in bytes. + (e.g., SSD, HDD, NVMe), each identified by name and + priced independently. - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary - attribute key-value pair. - description: >- - Attributes that describe the storage. + This type is used as a repeated field within + OfferPrices to express - This field is required and must be a list of - Attribute key-values. - description: >- - Storage stores resource quantity and storage - attributes. - description: >- - Storage resources available, including the - quantity and attributes. + per-class storage pricing in a bid. + description: >- + Storage is a list of per-class storage prices. Each + entry corresponds to a - This field is optional and can be empty if no - storage resources are available. - gpu: + named storage class (e.g., "default", "ssd") and its + associated price. + + Multiple entries allow providers to price different + storage tiers independently. + gpu: + description: >- + Gpu is the offered price for GPU resources. When nil, no + explicit + + GPU price is set. + type: object + properties: + denom: + type: string + amount: + type: string + endpoints: + type: array + items: + type: object + properties: + kind: description: >- - GPU resources available, including the type, - architecture and other details. + Kind specifies the type of network endpoint being + priced. Possible values: + - SHARED_HTTP (0): A Kubernetes Ingress endpoint. + - RANDOM_PORT (1): A Kubernetes NodePort endpoint. + - LEASED_IP (2): A dedicated leased IP endpoint. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + price: + description: >- + Price is the offered price per unit of this + endpoint kind, expressed as a - This field is optional and can be empty if no GPU - resources are available. + DecCoin (decimal coin) to allow fractional + pricing. When nil, no explicit + + price is set for this endpoint kind. type: object properties: - units: - description: >- - The resource value of the GPU, which - represents the number of GPUs available. + denom: + type: string + amount: + type: string + description: >- + EndpointOfferPrice represents the price a provider is + offering for a specific - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is - implemented when the lease is deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: >- - SequenceNumber represents a sequence number - for the Endpoint. - description: >- - Endpoint describes a publicly accessible IP - service. - title: Endpoint resources available - title: >- - Resources describes all available resources types for - deployment/node etc + kind of network endpoint. Providers may price each + endpoint kind differently - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - description: >- - Count corresponds to the amount of replicas to run of - the resources. - price: - description: Price holds the pricing for the resource units. - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - ResourceUnit extends Resources and adds Count along with - the Price. - description: >- - Resources is a list containing the resource units allocated - to the group. + (e.g., a leased IP may cost more than a shared HTTP + ingress). This type is - Each ResourceUnit defines the specific resources (e.g., CPU, - memory) assigned. - created_at: - type: string - format: int64 - description: >- - CreatedAt is the block height at which the deployment was - created. - description: Group stores group id, state and specifications of a group. - description: Groups is a list of deployment groups. - escrow_account: - description: >- - EscrowAccount represents an escrow mechanism where funds are held. + used as a repeated field within OfferPrices to express + per-kind endpoint - This ensures that obligations of both tenants and providers involved - in the + pricing in a bid. + description: >- + Endpoints is a list of per-kind endpoint prices. Each + entry corresponds to - transaction are met without direct access to each other's accounts. + a network endpoint kind (SHARED_HTTP, RANDOM_PORT, or + LEASED_IP) and its + + associated price. Multiple entries allow providers to + price different + + endpoint types independently. + description: |- + ResourceOffer describes resources that provider is offering + for deployment. + description: ResourceOffer is a list of offers. + reclamation_window: + type: string + description: >- + reclamation_window is the reclamation window offered by this + provider. + escrow_account: + description: EscrowAccount represents the escrow account created for the Bid. type: object properties: id: @@ -47994,24 +50369,24 @@ definitions: description: Depositor stores state of a deposit. description: Account stores state for an escrow account. title: Account - title: >- - QueryDeploymentResponse is response type for the Query/Deployment RPC - method - akash.deployment.v1beta4.QueryDeploymentsResponse: + description: QueryBidResponse is response type for the Query/Bid RPC method. + akash.market.v1beta5.QueryBidsResponse: type: object properties: - deployments: + bids: type: array items: type: object properties: - deployment: - description: Deployment represents a deployment on the network. + bid: + description: Bid represents a deployment bid. type: object properties: id: - description: ID is the unique identifier of the deployment. - type: object + description: |- + BidID stores owner and all other seq numbers. + A successful bid becomes a Lease(ID). + type: object properties: owner: type: string @@ -48034,417 +50409,461 @@ definitions: It is used to differentiate deployments created by the same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric + identifier for the group. + + It is used to differentiate groups created by the same + owner in a deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders + associated with a single deployment. + + Oseq is incremented when a lease associated with an + existing deployment is closed, and a new order is + generated. + provider: + type: string + description: >- + Provider is the account bech32 address of the provider + making the bid. + + It is a string representing a valid account bech32 + address. + + + Example: + "akash1..." + bseq: + type: integer + format: int64 + description: >- + BSeq (bid sequence) distinguishes multiple bids + associated with a single deployment from same provider. state: - description: |- - State defines the sate of the deployment. - A deployment can be either active or inactive. + description: State represents the state of the Bid. type: string enum: - invalid + - open - active + - lost - closed default: invalid - hash: - type: string - format: byte - description: Hash is an hashed representation of the deployment. - created_at: - type: string - format: int64 - description: >- - CreatedAt indicates when the deployment was created as a - block height value. - reclamation: - description: >- - reclamation stores the deployment's reclamation requirements - for persistence. - - Needed so that StartGroup can propagate reclamation to newly - created orders. + price: + description: Price holds the pricing stated on the Bid. type: object properties: - min_window: + denom: type: string - description: >- - min_window is the minimum reclamation window the tenant - requires. - groups: - type: array - items: - type: object - properties: - id: - description: Id is the unique identifier for the group. - type: object - properties: - owner: - type: string - description: >- - Owner is the account address of the user who owns the - group. - - It is a string representing a valid account address. - - - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric - identifier for the deployment. - - It is used to differentiate deployments created by the - same owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric - identifier for the group. - - It is used to differentiate groups created by the same - owner in a deployment. - state: - description: State represents the state of the group. - type: string - enum: - - invalid - - open - - paused - - insufficient_funds - - closed - default: invalid - group_spec: - description: GroupSpec holds the specification of a the Group. + amount: + type: string + created_at: + type: string + format: int64 + description: CreatedAt is the block height at which the Bid was created. + resources_offer: + type: array + items: type: object properties: - name: - type: string - description: Name is the name of the group. - requirements: - description: >- - Requirements specifies the placement requirements for - the group. - - This determines where the resources in the group can - be deployed. + resources: + description: Resources holds information about bid resources. type: object properties: - signed_by: + id: + type: integer + format: int64 + description: Id is a unique identifier for the resources. + cpu: description: >- - SignedBy holds the list of keys that tenants - expect to have signatures from. + CPU resources available, including the + architecture, number of cores and other details. + + This field is optional and can be empty if no CPU + resources are available. type: object properties: - all_of: + units: + description: >- + Units of the CPU, which represents the number + of CPUs available. + + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: type: array items: - type: string + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. description: >- - AllOf indicates all keys in this list must - have signed attributes. - any_of: + Attributes holds a list of key-value + attributes that describe the GPU, such as its + model, memory and interface. + + This field is required and must be a list of + `Attribute` messages. + memory: + description: >- + Memory resources available, including the quantity + and attributes. + + This field is optional and can be empty if no + memory resources are available. + type: object + properties: + quantity: + description: >- + Quantity of memory available, which represents + the amount of memory in bytes. + + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: type: array items: - type: string + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. description: >- - AnyOf means that at least one of the keys from - the list must have signed attributes. - attributes: + Attributes that describe the memory, such as + its type and speed. + + This field is required and must be a list of + Attribute key-values. + storage: type: array items: type: object properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: + name: type: string description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attribute holds the list of attributes tenant - expects from the provider. - resources: - type: array - items: - type: object - properties: - resource: - description: Resource holds the amount of resources. - type: object - properties: - id: - type: integer - format: int64 - description: Id is a unique identifier for the resources. - cpu: - description: >- - CPU resources available, including the - architecture, number of cores and other - details. - - This field is optional and can be empty if - no CPU resources are available. - type: object - properties: - units: - description: >- - Units of the CPU, which represents the - number of CPUs available. - - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary - attribute key-value pair. - description: >- - Attributes holds a list of key-value - attributes that describe the GPU, such - as its model, memory and interface. - - This field is required and must be a - list of `Attribute` messages. - memory: + Name holds an arbitrary name for the storage + resource. + quantity: description: >- - Memory resources available, including the - quantity and attributes. + Quantity of storage available, which + represents the amount of memory in bytes. - This field is optional and can be empty if - no memory resources are available. + This field is required and must be a + non-negative integer. type: object properties: - quantity: - description: >- - Quantity of memory available, which - represents the amount of memory in - bytes. - - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary - attribute key-value pair. - description: >- - Attributes that describe the memory, - such as its type and speed. - - This field is required and must be a - list of Attribute key-values. - storage: + val: + type: string + format: byte + attributes: type: array items: type: object properties: - name: + key: type: string description: >- - Name holds an arbitrary name for the - storage resource. - quantity: - description: >- - Quantity of storage available, which - represents the amount of memory in - bytes. - - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary - attribute key-value pair. + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string description: >- - Attributes that describe the storage. - - This field is required and must be a - list of Attribute key-values. + Value of the attribute (e.g., "us-west", + "x86_64", etc.). description: >- - Storage stores resource quantity and - storage attributes. + Attribute represents an arbitrary + attribute key-value pair. description: >- - Storage resources available, including the - quantity and attributes. + Attributes that describe the storage. - This field is optional and can be empty if - no storage resources are available. - gpu: - description: >- - GPU resources available, including the type, - architecture and other details. + This field is required and must be a list of + Attribute key-values. + description: >- + Storage stores resource quantity and storage + attributes. + description: >- + Storage resources available, including the + quantity and attributes. - This field is optional and can be empty if - no GPU resources are available. + This field is optional and can be empty if no + storage resources are available. + gpu: + description: >- + GPU resources available, including the type, + architecture and other details. + + This field is optional and can be empty if no GPU + resources are available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which + represents the number of GPUs available. + + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: type: object properties: - units: + key: + type: string description: >- - The resource value of the GPU, which - represents the number of GPUs available. + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is + implemented when the lease is deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: >- + SequenceNumber represents a sequence number + for the Endpoint. + description: >- + Endpoint describes a publicly accessible IP + service. + title: Endpoint resources available + title: >- + Resources describes all available resources types for + deployment/node etc - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary - attribute key-value pair. - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is - implemented when the lease is deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: >- - SequenceNumber represents a sequence - number for the Endpoint. - description: >- - Endpoint describes a publicly accessible - IP service. - title: Endpoint resources available - title: >- - Resources describes all available resources - types for deployment/node etc + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + description: Count is the number of resources. + prices: + description: >- + Prices contains per-resource pricing details (CPU, + memory, storage, GPU, endpoints) for this offer. + type: object + properties: + cpu: + description: >- + Cpu is the offered price for CPU resources. When + nil, no explicit - if field is nil resource is not present in the - given data-structure - count: - type: integer - format: int64 - description: >- - Count corresponds to the amount of replicas to - run of the resources. - price: - description: Price holds the pricing for the resource units. + CPU price is set. + type: object + properties: + denom: + type: string + amount: + type: string + memory: + description: >- + Memory is the offered price for memory resources. + When nil, no explicit + + memory price is set. + type: object + properties: + denom: + type: string + amount: + type: string + storage: + type: array + items: type: object properties: - denom: + name: type: string - amount: + description: >- + Name holds an arbitrary name for the storage + class (e.g., "default", "ssd", "hdd"). + + This must match a storage class name from + the corresponding resource specification. + price: + description: >- + Price is the offered price per unit of this + storage class, expressed as a + + DecCoin (decimal coin) to allow fractional + pricing. When nil, no explicit + + price is set for this storage class. + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + StorageOfferPrice represents the price a + provider is offering for a specific + + class of persistent storage. Providers may offer + multiple storage classes + + (e.g., SSD, HDD, NVMe), each identified by name + and priced independently. + + This type is used as a repeated field within + OfferPrices to express + + per-class storage pricing in a bid. + description: >- + Storage is a list of per-class storage prices. + Each entry corresponds to a + + named storage class (e.g., "default", "ssd") and + its associated price. + + Multiple entries allow providers to price + different storage tiers independently. + gpu: + description: >- + Gpu is the offered price for GPU resources. When + nil, no explicit + + GPU price is set. + type: object + properties: + denom: + type: string + amount: + type: string + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind specifies the type of network endpoint + being priced. Possible values: + - SHARED_HTTP (0): A Kubernetes Ingress endpoint. + - RANDOM_PORT (1): A Kubernetes NodePort endpoint. + - LEASED_IP (2): A dedicated leased IP endpoint. type: string - description: >- - ResourceUnit extends Resources and adds Count along - with the Price. - description: >- - Resources is a list containing the resource units - allocated to the group. + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + price: + description: >- + Price is the offered price per unit of this + endpoint kind, expressed as a - Each ResourceUnit defines the specific resources - (e.g., CPU, memory) assigned. - created_at: - type: string - format: int64 - description: >- - CreatedAt is the block height at which the deployment was - created. - description: Group stores group id, state and specifications of a group. - description: Groups is a list of deployment groups. - escrow_account: - description: >- - EscrowAccount represents an escrow mechanism where funds are - held. + DecCoin (decimal coin) to allow fractional + pricing. When nil, no explicit - This ensures that obligations of both tenants and providers - involved in the + price is set for this endpoint kind. + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + EndpointOfferPrice represents the price a + provider is offering for a specific - transaction are met without direct access to each other's - accounts. + kind of network endpoint. Providers may price + each endpoint kind differently + + (e.g., a leased IP may cost more than a shared + HTTP ingress). This type is + + used as a repeated field within OfferPrices to + express per-kind endpoint + + pricing in a bid. + description: >- + Endpoints is a list of per-kind endpoint prices. + Each entry corresponds to + + a network endpoint kind (SHARED_HTTP, RANDOM_PORT, + or LEASED_IP) and its + + associated price. Multiple entries allow providers + to price different + + endpoint types independently. + description: >- + ResourceOffer describes resources that provider is + offering + + for deployment. + description: ResourceOffer is a list of offers. + reclamation_window: + type: string + description: >- + reclamation_window is the reclamation window offered by this + provider. + escrow_account: + description: EscrowAccount represents the escrow account created for the Bid. type: object properties: id: @@ -48594,10 +51013,8 @@ definitions: description: Depositor stores state of a deposit. description: Account stores state for an escrow account. title: Account - title: >- - QueryDeploymentResponse is response type for the Query/Deployment - RPC method - description: Deployments is a list of Deployments. + description: QueryBidResponse is response type for the Query/Bid RPC method. + description: Bids is a list of deployment bids. pagination: description: Pagination contains the information about response pagination. type: object @@ -48617,24 +51034,26 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - title: >- - QueryDeploymentsResponse is response type for the Query/Deployments RPC - method - akash.deployment.v1beta4.QueryGroupResponse: + title: QueryBidsResponse is response type for the Query/Bids RPC method + akash.market.v1beta5.QueryLeaseResponse: type: object properties: - group: + lease: + description: Lease holds the lease for a deployment. type: object properties: id: - description: Id is the unique identifier for the group. + description: Id is the unique identifier of the Lease. type: object properties: owner: type: string - description: |- - Owner is the account address of the user who owns the group. - It is a string representing a valid account address. + description: >- + Owner is the account bech32 address of the user who owns the + deployment. + + It is a string representing a valid bech32 account address. + Example: "akash1..." @@ -48656,737 +51075,350 @@ definitions: It is used to differentiate groups created by the same owner in a deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders associated + with a single deployment. + + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. + provider: + type: string + description: >- + Provider is the account bech32 address of the provider making + the bid. + + It is a string representing a valid account bech32 address. + + + Example: + "akash1..." + bseq: + type: integer + format: int64 + description: >- + BSeq (bid sequence) distinguishes multiple bids associated + with a single deployment from same provider. state: - description: State represents the state of the group. + description: State represents the state of the Lease. type: string enum: - invalid - - open - - paused + - active - insufficient_funds - closed + - reclaiming default: invalid - group_spec: - description: GroupSpec holds the specification of a the Group. + price: type: object properties: - name: + denom: type: string - description: Name is the name of the group. - requirements: - description: >- - Requirements specifies the placement requirements for the - group. - - This determines where the resources in the group can be - deployed. - type: object - properties: - signed_by: - description: >- - SignedBy holds the list of keys that tenants expect to - have signatures from. - type: object - properties: - all_of: - type: array - items: - type: string - description: >- - AllOf indicates all keys in this list must have signed - attributes. - any_of: - type: array - items: - type: string - description: >- - AnyOf means that at least one of the keys from the - list must have signed attributes. - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: >- - Attribute represents an arbitrary attribute key-value - pair. - description: >- - Attribute holds the list of attributes tenant expects from - the provider. - resources: - type: array - items: - type: object - properties: - resource: - description: Resource holds the amount of resources. - type: object - properties: - id: - type: integer - format: int64 - description: Id is a unique identifier for the resources. - cpu: - description: >- - CPU resources available, including the architecture, - number of cores and other details. + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal amount. - This field is optional and can be empty if no CPU - resources are available. - type: object - properties: - units: - description: >- - Units of the CPU, which represents the number of - CPUs available. - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes holds a list of key-value attributes - that describe the GPU, such as its model, memory - and interface. + NOTE: The amount field is an Dec which implements the custom + method - This field is required and must be a list of - `Attribute` messages. - memory: - description: >- - Memory resources available, including the quantity - and attributes. + signatures required by gogoproto. + created_at: + type: string + format: int64 + description: CreatedAt is the block height at which the Lease was created. + closed_on: + type: string + format: int64 + description: ClosedOn is the block height at which the Lease was closed. + reason: + type: string + enum: + - lease_closed_invalid + - lease_closed_owner + - lease_closed_reason_unstable + - lease_closed_reason_decommission + - lease_closed_reason_unspecified + - lease_closed_reason_manifest_timeout + - lease_closed_reason_insufficient_funds + default: lease_closed_invalid + description: >- + - lease_closed_invalid: LeaseClosedReasonInvalid represents the + default zero value for LeaseClosedReason. - This field is optional and can be empty if no memory - resources are available. - type: object - properties: - quantity: - description: >- - Quantity of memory available, which represents - the amount of memory in bytes. + This value indicates an uninitialized or invalid lease closure + reason and should not - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the memory, such as its - type and speed. + be used + - lease_closed_owner: values between 1..9999 indicate owner‑initiated close + - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close + lease_closed_reason_unstable lease workloads have been unstable + - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned + - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason + - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received + - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close + title: LeaseClosedReason indicates reason bid was closed + reclamation: + description: >- + Reclamation holds reclamation configuration and state, if + applicable. - This field is required and must be a list of - Attribute key-values. - storage: - type: array - items: - type: object - properties: - name: - type: string - description: >- - Name holds an arbitrary name for the storage - resource. - quantity: - description: >- - Quantity of storage available, which - represents the amount of memory in bytes. - - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the storage. - - This field is required and must be a list of - Attribute key-values. - description: >- - Storage stores resource quantity and storage - attributes. - description: >- - Storage resources available, including the quantity - and attributes. - - This field is optional and can be empty if no - storage resources are available. - gpu: - description: >- - GPU resources available, including the type, - architecture and other details. - - This field is optional and can be empty if no GPU - resources are available. - type: object - properties: - units: - description: >- - The resource value of the GPU, which represents - the number of GPUs available. - - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is implemented - when the lease is deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: >- - SequenceNumber represents a sequence number - for the Endpoint. - description: >- - Endpoint describes a publicly accessible IP - service. - title: Endpoint resources available - title: >- - Resources describes all available resources types for - deployment/node etc - - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - description: >- - Count corresponds to the amount of replicas to run of - the resources. - price: - description: Price holds the pricing for the resource units. - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - ResourceUnit extends Resources and adds Count along with the - Price. + Nil if reclamation is not configured for this lease. + type: object + properties: + window: + type: string description: >- - Resources is a list containing the resource units allocated to - the group. + window is the negotiated reclamation window duration (from the + winning bid). + started_at: + type: string + format: int64 + description: >- + started_at is the block height at which reclamation was + initiated. - Each ResourceUnit defines the specific resources (e.g., CPU, - memory) assigned. - created_at: - type: string - format: int64 - description: CreatedAt is the block height at which the deployment was created. - description: Group stores group id, state and specifications of a group. - description: QueryGroupResponse is response type for the Query/Group RPC method. - akash.deployment.v1beta4.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - min_deposits: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + Zero means reclamation has not been started yet. + deadline: + type: string + format: int64 + description: >- + deadline is the unix timestamp at which the reclamation window + expires. + Zero means reclamation has not been started yet. + reason: + type: string + enum: + - lease_closed_invalid + - lease_closed_owner + - lease_closed_reason_unstable + - lease_closed_reason_decommission + - lease_closed_reason_unspecified + - lease_closed_reason_manifest_timeout + - lease_closed_reason_insufficient_funds + default: lease_closed_invalid + description: >- + - lease_closed_invalid: LeaseClosedReasonInvalid represents + the default zero value for LeaseClosedReason. - NOTE: The amount field is an Int which implements the custom - method + This value indicates an uninitialized or invalid lease closure + reason and should not - signatures required by gogoproto. - description: >- - MinDeposits holds a list of the minimum amount of deposits for - each a coin. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - akash.deployment.v1beta4.ResourceUnit: - type: object - properties: - resource: - description: Resource holds the amount of resources. + be used + - lease_closed_owner: values between 1..9999 indicate owner‑initiated close + - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close + lease_closed_reason_unstable lease workloads have been + unstable + - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned + - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason + - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received + - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close + title: LeaseClosedReason indicates reason bid was closed + escrow_payment: + description: EscrowPayment holds information about the Lease's fractional payment. type: object properties: id: - type: integer - format: int64 - description: Id is a unique identifier for the resources. - cpu: - description: >- - CPU resources available, including the architecture, number of - cores and other details. - - This field is optional and can be empty if no CPU resources are - available. type: object properties: - units: + aid: + type: object + properties: + scope: + type: string + enum: + - invalid + - deployment + - bid + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So + declaring dummy state. + - deployment: DeploymentActive denotes state for deployment active. + - bid: DeploymentClosed denotes state for deployment closed. + title: Scope is an enum which refers to the account scope + xid: + type: string + description: Account is the account identifier. + xid: + type: string + description: Payment is the payment identifier. + state: + type: object + properties: + owner: + type: string description: >- - Units of the CPU, which represents the number of CPUs - available. + Owner is the account bech32 address of the user who owns the + deployment. - This field is required and must be a non-negative integer. + It is a string representing a valid bech32 account address. + + + Example: + "akash1..." + state: + description: State represents the state of the Payment. + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + rate: type: object properties: - val: + denom: + type: string + amount: type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: Attribute represents an arbitrary attribute key-value pair. description: >- - Attributes holds a list of key-value attributes that describe - the GPU, such as its model, memory and interface. + DecCoin defines a token with a denomination and a decimal + amount. - This field is required and must be a list of `Attribute` - messages. - memory: - description: >- - Memory resources available, including the quantity and attributes. - This field is optional and can be empty if no memory resources are - available. - type: object - properties: - quantity: - description: >- - Quantity of memory available, which represents the amount of - memory in bytes. + NOTE: The amount field is an Dec which implements the custom + method - This field is required and must be a non-negative integer. + signatures required by gogoproto. + balance: type: object properties: - val: + denom: + type: string + amount: type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: Attribute represents an arbitrary attribute key-value pair. description: >- - Attributes that describe the memory, such as its type and - speed. + DecCoin defines a token with a denomination and a decimal + amount. - This field is required and must be a list of Attribute - key-values. - storage: - type: array - items: - type: object - properties: - name: - type: string - description: Name holds an arbitrary name for the storage resource. - quantity: - description: >- - Quantity of storage available, which represents the amount - of memory in bytes. - This field is required and must be a non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: >- - Attribute represents an arbitrary attribute key-value - pair. - description: >- - Attributes that describe the storage. + NOTE: The amount field is an Dec which implements the custom + method - This field is required and must be a list of Attribute - key-values. - description: Storage stores resource quantity and storage attributes. - description: >- - Storage resources available, including the quantity and - attributes. + signatures required by gogoproto. + unsettled: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. - This field is optional and can be empty if no storage resources - are available. - gpu: - description: >- - GPU resources available, including the type, architecture and - other details. - This field is optional and can be empty if no GPU resources are - available. - type: object - properties: - units: - description: >- - The resource value of the GPU, which represents the number of - GPUs available. + NOTE: The amount field is an Dec which implements the custom + method - This field is required and must be a non-negative integer. + signatures required by gogoproto. + title: >- + Unsettled is the amount needed to settle payment if account is + overdrawn + withdrawn: + description: >- + Withdrawn corresponds to the amount of coins withdrawn by the + Payment. type: object properties: - val: + denom: type: string - format: byte - attributes: - type: array - items: + amount: + type: string + description: Payment stores state for a payment. + title: Payment + title: QueryLeaseResponse is response type for the Query/Lease RPC method + akash.market.v1beta5.QueryLeasesResponse: + type: object + properties: + leases: + type: array + items: + type: object + properties: + lease: + description: Lease holds the lease for a deployment. + type: object + properties: + id: + description: Id is the unique identifier of the Lease. type: object properties: - key: + owner: type: string description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: + Owner is the account bech32 address of the user who owns + the deployment. + + It is a string representing a valid bech32 account + address. + + + Example: + "akash1..." + dseq: type: string + format: uint64 description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: Attribute represents an arbitrary attribute key-value pair. - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is implemented when the - lease is deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: >- - SequenceNumber represents a sequence number for the - Endpoint. - description: Endpoint describes a publicly accessible IP service. - title: Endpoint resources available - title: >- - Resources describes all available resources types for deployment/node - etc + Dseq (deployment sequence number) is a unique numeric + identifier for the deployment. - if field is nil resource is not present in the given data-structure - count: - type: integer - format: int64 - description: Count corresponds to the amount of replicas to run of the resources. - price: - description: Price holds the pricing for the resource units. - type: object - properties: - denom: - type: string - amount: - type: string - description: ResourceUnit extends Resources and adds Count along with the Price. - akash.escrow.id.v1.Account: - type: object - properties: - scope: - type: string - enum: - - invalid - - deployment - - bid - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state. - - deployment: DeploymentActive denotes state for deployment active. - - bid: DeploymentClosed denotes state for deployment closed. - title: Scope is an enum which refers to the account scope - xid: - type: string - description: Account is the account identifier. - akash.escrow.id.v1.Scope: - type: string - enum: - - invalid - - deployment - - bid - default: invalid - description: |- - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - deployment: DeploymentActive denotes state for deployment active. - - bid: DeploymentClosed denotes state for deployment closed. - title: Scope is an enum which refers to the account scope - akash.escrow.types.v1.Account: - type: object - properties: - id: - type: object - properties: - scope: - type: string - enum: - - invalid - - deployment - - bid - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state. - - deployment: DeploymentActive denotes state for deployment active. - - bid: DeploymentClosed denotes state for deployment closed. - title: Scope is an enum which refers to the account scope - xid: - type: string - description: Account is the account identifier. - state: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. - - It is a string representing a valid bech32 account address. - - - Example: - "akash1..." - state: - description: State represents the current state of an Account. - type: string - enum: - - invalid - - open - - closed - - overdrawn - default: invalid - transferred: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: Transferred total coins spent by this account. - settled_at: - type: string - format: int64 - description: >- - SettledAt represents the block height at which this account was - last settled. - funds: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Balance holds the unspent coin received from all deposits with - same denom - - DecCoin is not being used here as it does not support negative - values, + It is used to differentiate deployments created by the + same owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric + identifier for the group. - and balance may go negative if account is overdrawn. - title: Funds holds the unspent coins received from all deposits - deposits: - type: array - items: - type: object - properties: - owner: - type: string - description: >- - Owner is the bech32 address of the depositor. + It is used to differentiate groups created by the same + owner in a deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders + associated with a single deployment. - It is a string representing a valid account address. + Oseq is incremented when a lease associated with an + existing deployment is closed, and a new order is + generated. + provider: + type: string + description: >- + Provider is the account bech32 address of the provider + making the bid. + It is a string representing a valid account bech32 + address. - Example: - "akash1..." - If depositor is same as the owner, then any incoming coins - are added to the Balance. - If depositor isn't same as the owner, then any incoming - coins are added to the Funds. - height: - type: string - format: int64 - title: Height blockchain height at which deposit was created - source: - title: Source indicated origination of the funds + Example: + "akash1..." + bseq: + type: integer + format: int64 + description: >- + BSeq (bid sequence) distinguishes multiple bids + associated with a single deployment from same provider. + state: + description: State represents the state of the Lease. type: string enum: - invalid - - balance - - grant + - active + - insufficient_funds + - closed + - reclaiming default: invalid - description: >- - Source is an enum which lists source of funds for deployment - deposit. - - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - balance: SourceBalance denotes account balance as source of funds - - grant: SourceGrant denotes authz grants as source of funds - balance: + price: type: object properties: denom: @@ -49402,1551 +51434,1510 @@ definitions: method signatures required by gogoproto. - description: Depositor stores state of a deposit. - description: Account stores state for an escrow account. - title: Account - akash.escrow.types.v1.AccountState: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + created_at: + type: string + format: int64 + description: >- + CreatedAt is the block height at which the Lease was + created. + closed_on: + type: string + format: int64 + description: ClosedOn is the block height at which the Lease was closed. + reason: + type: string + enum: + - lease_closed_invalid + - lease_closed_owner + - lease_closed_reason_unstable + - lease_closed_reason_decommission + - lease_closed_reason_unspecified + - lease_closed_reason_manifest_timeout + - lease_closed_reason_insufficient_funds + default: lease_closed_invalid + description: >- + - lease_closed_invalid: LeaseClosedReasonInvalid represents + the default zero value for LeaseClosedReason. - It is a string representing a valid bech32 account address. + This value indicates an uninitialized or invalid lease + closure reason and should not + be used + - lease_closed_owner: values between 1..9999 indicate owner‑initiated close + - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close + lease_closed_reason_unstable lease workloads have been + unstable + - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned + - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason + - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received + - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close + title: LeaseClosedReason indicates reason bid was closed + reclamation: + description: >- + Reclamation holds reclamation configuration and state, if + applicable. - Example: - "akash1..." - state: - description: State represents the current state of an Account. - type: string - enum: - - invalid - - open - - closed - - overdrawn - default: invalid - transferred: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. + Nil if reclamation is not configured for this lease. + type: object + properties: + window: + type: string + description: >- + window is the negotiated reclamation window duration + (from the winning bid). + started_at: + type: string + format: int64 + description: >- + started_at is the block height at which reclamation was + initiated. - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: Transferred total coins spent by this account. - settled_at: - type: string - format: int64 - description: >- - SettledAt represents the block height at which this account was last - settled. - funds: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Balance holds the unspent coin received from all deposits with same - denom + Zero means reclamation has not been started yet. + deadline: + type: string + format: int64 + description: >- + deadline is the unix timestamp at which the reclamation + window expires. - DecCoin is not being used here as it does not support negative - values, + Zero means reclamation has not been started yet. + reason: + type: string + enum: + - lease_closed_invalid + - lease_closed_owner + - lease_closed_reason_unstable + - lease_closed_reason_decommission + - lease_closed_reason_unspecified + - lease_closed_reason_manifest_timeout + - lease_closed_reason_insufficient_funds + default: lease_closed_invalid + description: >- + - lease_closed_invalid: LeaseClosedReasonInvalid + represents the default zero value for LeaseClosedReason. - and balance may go negative if account is overdrawn. - title: Funds holds the unspent coins received from all deposits - deposits: - type: array - items: - type: object - properties: - owner: - type: string + This value indicates an uninitialized or invalid lease + closure reason and should not + + be used + - lease_closed_owner: values between 1..9999 indicate owner‑initiated close + - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close + lease_closed_reason_unstable lease workloads have been + unstable + - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned + - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason + - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received + - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close + title: LeaseClosedReason indicates reason bid was closed + escrow_payment: description: >- - Owner is the bech32 address of the depositor. + EscrowPayment holds information about the Lease's fractional + payment. + type: object + properties: + id: + type: object + properties: + aid: + type: object + properties: + scope: + type: string + enum: + - invalid + - deployment + - bid + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So + declaring dummy state. + - deployment: DeploymentActive denotes state for deployment active. + - bid: DeploymentClosed denotes state for deployment closed. + title: Scope is an enum which refers to the account scope + xid: + type: string + description: Account is the account identifier. + xid: + type: string + description: Payment is the payment identifier. + state: + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns + the deployment. - It is a string representing a valid account address. + It is a string representing a valid bech32 account + address. - Example: - "akash1..." - If depositor is same as the owner, then any incoming coins are - added to the Balance. + Example: + "akash1..." + state: + description: State represents the state of the Payment. + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + rate: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. - If depositor isn't same as the owner, then any incoming coins - are added to the Funds. - height: - type: string - format: int64 - title: Height blockchain height at which deposit was created - source: - title: Source indicated origination of the funds - type: string - enum: - - invalid - - balance - - grant - default: invalid - description: >- - Source is an enum which lists source of funds for deployment - deposit. - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - balance: SourceBalance denotes account balance as source of funds - - grant: SourceGrant denotes authz grants as source of funds - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. + NOTE: The amount field is an Dec which implements the + custom method + signatures required by gogoproto. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. - NOTE: The amount field is an Dec which implements the custom - method - signatures required by gogoproto. - description: Depositor stores state of a deposit. - description: Account stores state for an escrow account. - akash.escrow.types.v1.Balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Balance holds the unspent coin received from all deposits with same denom - DecCoin is not being used here as it does not support negative values, - and balance may go negative if account is overdrawn. - akash.escrow.types.v1.Depositor: - type: object - properties: - owner: - type: string - description: >- - Owner is the bech32 address of the depositor. + NOTE: The amount field is an Dec which implements the + custom method - It is a string representing a valid account address. + signatures required by gogoproto. + unsettled: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. - Example: - "akash1..." - If depositor is same as the owner, then any incoming coins are added - to the Balance. + NOTE: The amount field is an Dec which implements the + custom method - If depositor isn't same as the owner, then any incoming coins are - added to the Funds. - height: - type: string - format: int64 - title: Height blockchain height at which deposit was created - source: - title: Source indicated origination of the funds - type: string - enum: - - invalid - - balance - - grant - default: invalid - description: |- - Source is an enum which lists source of funds for deployment deposit. - - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - balance: SourceBalance denotes account balance as source of funds - - grant: SourceGrant denotes authz grants as source of funds - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: Depositor stores state of a deposit. - akash.escrow.types.v1.State: - type: string - enum: - - invalid - - open - - closed - - overdrawn - default: invalid - description: |- - State stores state for an escrow account. - - - invalid: AccountStateInvalid is an invalid state. - - open: StateOpen is the state when an object is open. - - closed: StateClosed is the state when an object is closed. - - overdrawn: StateOverdrawn is the state when an object are overdrawn. - cosmos.base.v1beta1.Coin: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - cosmos.base.v1beta1.DecCoin: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - akash.base.deposit.v1.Deposit: - type: object - properties: - amount: - description: >- - amount specifies the amount of coins to include in the deployment's - first deposit. + signatures required by gogoproto. + title: >- + Unsettled is the amount needed to settle payment if + account is overdrawn + withdrawn: + description: >- + Withdrawn corresponds to the amount of coins withdrawn + by the Payment. + type: object + properties: + denom: + type: string + amount: + type: string + description: Payment stores state for a payment. + title: Payment + title: QueryLeaseResponse is response type for the Query/Lease RPC method + description: Leases is a list of Lease. + pagination: + description: Pagination contains the information about response pagination. type: object properties: - denom: + next_key: type: string - amount: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - sources: - type: array - items: - type: string - enum: - - invalid - - balance - - grant - default: invalid - description: >- - Source is an enum which lists source of funds for deployment - deposit. - - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - balance: SourceBalance denotes account balance as source of funds - - grant: SourceGrant denotes authz grants as source of funds - description: Sources is the set of deposit sources, each entry must be unique. - description: >- - Deposit is a data type used by MsgCreateDeployment, MsgDepositDeployment - and MsgCreateBid to indicate source of the deposit. - akash.deployment.v1beta4.MsgCloseDeploymentResponse: - type: object - description: MsgCloseDeploymentResponse defines the Msg/CloseDeployment response type. - akash.deployment.v1beta4.MsgCloseGroupResponse: - type: object - description: MsgCloseGroupResponse defines the Msg/CloseGroup response type. - akash.deployment.v1beta4.MsgCreateDeploymentResponse: - type: object - description: >- - MsgCreateDeploymentResponse defines the Msg/CreateDeployment response - type. - akash.deployment.v1beta4.MsgPauseGroupResponse: - type: object - description: MsgPauseGroupResponse defines the Msg/PauseGroup response type. - akash.deployment.v1beta4.MsgStartGroupResponse: - type: object - description: MsgStartGroupResponse defines the Msg/StartGroup response type. - akash.deployment.v1beta4.MsgUpdateDeploymentResponse: - type: object - description: >- - MsgUpdateDeploymentResponse defines the Msg/UpdateDeployment response - type. - akash.deployment.v1beta4.MsgUpdateParamsResponse: - type: object - description: |- - MsgUpdateParamsResponse defines the response structure for executing a - MsgUpdateParams message. + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - Since: akash v1.0.0 - akash.escrow.id.v1.Payment: - type: object - properties: - aid: - type: object - properties: - scope: - type: string - enum: - - invalid - - deployment - - bid - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state. - - deployment: DeploymentActive denotes state for deployment active. - - bid: DeploymentClosed denotes state for deployment closed. - title: Scope is an enum which refers to the account scope - xid: - type: string - description: Account is the account identifier. - xid: - type: string - description: Payment is the payment identifier. - akash.escrow.types.v1.Payment: + was set, its value is undefined otherwise + description: QueryLeasesResponse is response type for the Query/Leases RPC method. + akash.market.v1beta5.QueryOrderResponse: type: object properties: - id: + order: + description: Order represents a market order. type: object properties: - aid: + id: + description: Id is the unique identifier of the order. type: object properties: - scope: + owner: type: string - enum: - - invalid - - deployment - - bid - default: invalid description: >- - - invalid: Prefix should start with 0 in enum. So declaring - dummy state. - - deployment: DeploymentActive denotes state for deployment active. - - bid: DeploymentClosed denotes state for deployment closed. - title: Scope is an enum which refers to the account scope - xid: + Owner is the account bech32 address of the user who owns the + deployment. + + It is a string representing a valid bech32 account address. + + + Example: + "akash1..." + dseq: type: string - description: Account is the account identifier. - xid: - type: string - description: Payment is the payment identifier. - state: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric + identifier for the deployment. - It is a string representing a valid bech32 account address. + It is used to differentiate deployments created by the same + owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier + for the group. + It is used to differentiate groups created by the same owner + in a deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders associated + with a single deployment. - Example: - "akash1..." + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. state: - description: State represents the state of the Payment. type: string enum: - invalid - open + - active - closed - - overdrawn default: invalid - rate: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal amount. - - - NOTE: The amount field is an Dec which implements the custom - method + description: |- + State is an enum which refers to state of order. - signatures required by gogoproto. - balance: + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - open: OrderOpen denotes state for order open. + - active: OrderMatched denotes state for order matched. + - closed: OrderClosed denotes state for order lost. + spec: type: object properties: - denom: - type: string - amount: + name: type: string - description: >- - DecCoin defines a token with a denomination and a decimal amount. + description: Name is the name of the group. + requirements: + description: >- + Requirements specifies the placement requirements for the + group. + This determines where the resources in the group can be + deployed. + type: object + properties: + signed_by: + description: >- + SignedBy holds the list of keys that tenants expect to + have signatures from. + type: object + properties: + all_of: + type: array + items: + type: string + description: >- + AllOf indicates all keys in this list must have signed + attributes. + any_of: + type: array + items: + type: string + description: >- + AnyOf means that at least one of the keys from the + list must have signed attributes. + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: >- + Attribute represents an arbitrary attribute key-value + pair. + description: >- + Attribute holds the list of attributes tenant expects from + the provider. + resources: + type: array + items: + type: object + properties: + resource: + description: Resource holds the amount of resources. + type: object + properties: + id: + type: integer + format: int64 + description: Id is a unique identifier for the resources. + cpu: + description: >- + CPU resources available, including the architecture, + number of cores and other details. - NOTE: The amount field is an Dec which implements the custom - method + This field is optional and can be empty if no CPU + resources are available. + type: object + properties: + units: + description: >- + Units of the CPU, which represents the number of + CPUs available. - signatures required by gogoproto. - unsettled: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal amount. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes holds a list of key-value attributes + that describe the GPU, such as its model, memory + and interface. + This field is required and must be a list of + `Attribute` messages. + memory: + description: >- + Memory resources available, including the quantity + and attributes. - NOTE: The amount field is an Dec which implements the custom - method + This field is optional and can be empty if no memory + resources are available. + type: object + properties: + quantity: + description: >- + Quantity of memory available, which represents + the amount of memory in bytes. - signatures required by gogoproto. - title: >- - Unsettled is the amount needed to settle payment if account is - overdrawn - withdrawn: - description: >- - Withdrawn corresponds to the amount of coins withdrawn by the - Payment. - type: object - properties: - denom: - type: string - amount: - type: string - description: Payment stores state for a payment. - title: Payment - akash.escrow.types.v1.PaymentState: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes that describe the memory, such as its + type and speed. - It is a string representing a valid bech32 account address. + This field is required and must be a list of + Attribute key-values. + storage: + type: array + items: + type: object + properties: + name: + type: string + description: >- + Name holds an arbitrary name for the storage + resource. + quantity: + description: >- + Quantity of storage available, which + represents the amount of memory in bytes. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes that describe the storage. - Example: - "akash1..." - state: - description: State represents the state of the Payment. - type: string - enum: - - invalid - - open - - closed - - overdrawn - default: invalid - rate: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - unsettled: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. + This field is required and must be a list of + Attribute key-values. + description: >- + Storage stores resource quantity and storage + attributes. + description: >- + Storage resources available, including the quantity + and attributes. - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - title: >- - Unsettled is the amount needed to settle payment if account is - overdrawn - withdrawn: - description: Withdrawn corresponds to the amount of coins withdrawn by the Payment. - type: object - properties: - denom: - type: string - amount: - type: string - description: Payment stores state for a payment. - akash.market.v1.BidID: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + This field is optional and can be empty if no + storage resources are available. + gpu: + description: >- + GPU resources available, including the type, + architecture and other details. - It is a string representing a valid bech32 account address. + This field is optional and can be empty if no GPU + resources are available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which represents + the number of GPUs available. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is implemented + when the lease is deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: >- + SequenceNumber represents a sequence number + for the Endpoint. + description: >- + Endpoint describes a publicly accessible IP + service. + title: Endpoint resources available + title: >- + Resources describes all available resources types for + deployment/node etc - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier for - the deployment. + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + description: >- + Count corresponds to the amount of replicas to run of + the resources. + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. - It is used to differentiate deployments created by the same owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier for the - group. - It is used to differentiate groups created by the same owner in a - deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders associated with a - single deployment. + NOTE: The amount field is an Dec which implements the + custom method - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - provider: - type: string - description: |- - Provider is the account bech32 address of the provider making the bid. - It is a string representing a valid account bech32 address. + signatures required by gogoproto. + description: >- + ResourceUnit extends Resources and adds Count along with the + Price. + description: >- + Resources is a list containing the resource units allocated to + the group. - Example: - "akash1..." - bseq: - type: integer - format: int64 - description: >- - BSeq (bid sequence) distinguishes multiple bids associated with a - single deployment from same provider. - description: |- - BidID stores owner and all other seq numbers. - A successful bid becomes a Lease(ID). - akash.market.v1.Lease: - type: object - properties: - id: - description: Id is the unique identifier of the Lease. - type: object - properties: - owner: - type: string + Each ResourceUnit defines the specific resources (e.g., CPU, + memory) assigned. description: >- - Owner is the account bech32 address of the user who owns the - deployment. - - It is a string representing a valid bech32 account address. - + GroupSpec defines a specification for a group in a deployment on + the network. - Example: - "akash1..." - dseq: + This includes attributes like the group name, placement + requirements, and resource units. + created_at: type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier - for the deployment. - - It is used to differentiate deployments created by the same owner. - gseq: - type: integer format: int64 + reclamation: description: >- - Gseq (group sequence number) is a unique numeric identifier for - the group. + reclamation is the deployment-level reclamation requirement, + propagated to the order. - It is used to differentiate groups created by the same owner in a - deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders associated - with a single deployment. + Nil means the deployment does not require reclamation. + type: object + properties: + min_window: + type: string + description: >- + min_window is the minimum reclamation window the tenant + requires. + description: QueryOrderResponse is response type for the Query/Order RPC method. + akash.market.v1beta5.QueryOrdersResponse: + type: object + properties: + orders: + type: array + items: + type: object + properties: + id: + description: Id is the unique identifier of the order. + type: object + properties: + owner: + type: string + description: >- + Owner is the account bech32 address of the user who owns the + deployment. - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - provider: - type: string - description: >- - Provider is the account bech32 address of the provider making the - bid. + It is a string representing a valid bech32 account address. - It is a string representing a valid account bech32 address. + Example: + "akash1..." + dseq: + type: string + format: uint64 + description: >- + Dseq (deployment sequence number) is a unique numeric + identifier for the deployment. - Example: - "akash1..." - bseq: - type: integer - format: int64 - description: >- - BSeq (bid sequence) distinguishes multiple bids associated with a - single deployment from same provider. - state: - description: State represents the state of the Lease. - type: string - enum: - - invalid - - active - - insufficient_funds - - closed - - reclaiming - default: invalid - price: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. + It is used to differentiate deployments created by the same + owner. + gseq: + type: integer + format: int64 + description: >- + Gseq (group sequence number) is a unique numeric identifier + for the group. - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - created_at: - type: string - format: int64 - description: CreatedAt is the block height at which the Lease was created. - closed_on: - type: string - format: int64 - description: ClosedOn is the block height at which the Lease was closed. - reason: - type: string - enum: - - lease_closed_invalid - - lease_closed_owner - - lease_closed_reason_unstable - - lease_closed_reason_decommission - - lease_closed_reason_unspecified - - lease_closed_reason_manifest_timeout - - lease_closed_reason_insufficient_funds - default: lease_closed_invalid - description: >- - - lease_closed_invalid: LeaseClosedReasonInvalid represents the - default zero value for LeaseClosedReason. + It is used to differentiate groups created by the same owner + in a deployment. + oseq: + type: integer + format: int64 + description: >- + Oseq (order sequence) distinguishes multiple orders + associated with a single deployment. - This value indicates an uninitialized or invalid lease closure reason - and should not + Oseq is incremented when a lease associated with an existing + deployment is closed, and a new order is generated. + state: + type: string + enum: + - invalid + - open + - active + - closed + default: invalid + description: |- + State is an enum which refers to state of order. - be used - - lease_closed_owner: values between 1..9999 indicate owner‑initiated close - - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close - lease_closed_reason_unstable lease workloads have been unstable - - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned - - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason - - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received - - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close - title: LeaseClosedReason indicates reason bid was closed - reclamation: - description: |- - Reclamation holds reclamation configuration and state, if applicable. - Nil if reclamation is not configured for this lease. - type: object - properties: - window: - type: string - description: >- - window is the negotiated reclamation window duration (from the - winning bid). - started_at: - type: string - format: int64 - description: |- - started_at is the block height at which reclamation was initiated. - Zero means reclamation has not been started yet. - deadline: - type: string - format: int64 - description: >- - deadline is the unix timestamp at which the reclamation window - expires. + - invalid: Prefix should start with 0 in enum. So declaring dummy state. + - open: OrderOpen denotes state for order open. + - active: OrderMatched denotes state for order matched. + - closed: OrderClosed denotes state for order lost. + spec: + type: object + properties: + name: + type: string + description: Name is the name of the group. + requirements: + description: >- + Requirements specifies the placement requirements for the + group. - Zero means reclamation has not been started yet. - reason: - type: string - enum: - - lease_closed_invalid - - lease_closed_owner - - lease_closed_reason_unstable - - lease_closed_reason_decommission - - lease_closed_reason_unspecified - - lease_closed_reason_manifest_timeout - - lease_closed_reason_insufficient_funds - default: lease_closed_invalid - description: >- - - lease_closed_invalid: LeaseClosedReasonInvalid represents the - default zero value for LeaseClosedReason. + This determines where the resources in the group can be + deployed. + type: object + properties: + signed_by: + description: >- + SignedBy holds the list of keys that tenants expect to + have signatures from. + type: object + properties: + all_of: + type: array + items: + type: string + description: >- + AllOf indicates all keys in this list must have + signed attributes. + any_of: + type: array + items: + type: string + description: >- + AnyOf means that at least one of the keys from the + list must have signed attributes. + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: >- + Attribute represents an arbitrary attribute key-value + pair. + description: >- + Attribute holds the list of attributes tenant expects + from the provider. + resources: + type: array + items: + type: object + properties: + resource: + description: Resource holds the amount of resources. + type: object + properties: + id: + type: integer + format: int64 + description: Id is a unique identifier for the resources. + cpu: + description: >- + CPU resources available, including the + architecture, number of cores and other details. - This value indicates an uninitialized or invalid lease closure - reason and should not + This field is optional and can be empty if no CPU + resources are available. + type: object + properties: + units: + description: >- + Units of the CPU, which represents the number + of CPUs available. - be used - - lease_closed_owner: values between 1..9999 indicate owner‑initiated close - - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close - lease_closed_reason_unstable lease workloads have been unstable - - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned - - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason - - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received - - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close - title: LeaseClosedReason indicates reason bid was closed - description: >- - Lease stores LeaseID, state of lease and price. - - The Lease defines the terms under which the provider allocates resources - to fulfill - - the tenant's deployment requirements. - - Leases are paid from the tenant to the provider through a deposit and - withdraw mechanism and are priced in blocks. - akash.market.v1.Lease.State: - type: string - enum: - - invalid - - active - - insufficient_funds - - closed - - reclaiming - default: invalid - description: |- - State is an enum which refers to state of lease. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes holds a list of key-value + attributes that describe the GPU, such as its + model, memory and interface. - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - active: LeaseActive denotes state for lease active. - - insufficient_funds: LeaseInsufficientFunds denotes state for lease insufficient_funds. - - closed: LeaseClosed denotes state for lease closed. - - reclaiming: LeaseReclaiming denotes a lease in reclamation (grace period before closure). - akash.market.v1.LeaseClosedReason: - type: string - enum: - - lease_closed_invalid - - lease_closed_owner - - lease_closed_reason_unstable - - lease_closed_reason_decommission - - lease_closed_reason_unspecified - - lease_closed_reason_manifest_timeout - - lease_closed_reason_insufficient_funds - default: lease_closed_invalid - description: >- - - lease_closed_invalid: LeaseClosedReasonInvalid represents the default - zero value for LeaseClosedReason. + This field is required and must be a list of + `Attribute` messages. + memory: + description: >- + Memory resources available, including the quantity + and attributes. - This value indicates an uninitialized or invalid lease closure reason and - should not + This field is optional and can be empty if no + memory resources are available. + type: object + properties: + quantity: + description: >- + Quantity of memory available, which represents + the amount of memory in bytes. - be used - - lease_closed_owner: values between 1..9999 indicate owner‑initiated close - - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close - lease_closed_reason_unstable lease workloads have been unstable - - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned - - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason - - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received - - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close - title: LeaseClosedReason indicates reason bid was closed - akash.market.v1.LeaseFilters: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + description: >- + Attributes that describe the memory, such as + its type and speed. - It is a string representing a valid bech32 account address. + This field is required and must be a list of + Attribute key-values. + storage: + type: array + items: + type: object + properties: + name: + type: string + description: >- + Name holds an arbitrary name for the storage + resource. + quantity: + description: >- + Quantity of storage available, which + represents the amount of memory in bytes. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary + attribute key-value pair. + description: >- + Attributes that describe the storage. - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier for - the deployment. + This field is required and must be a list of + Attribute key-values. + description: >- + Storage stores resource quantity and storage + attributes. + description: >- + Storage resources available, including the + quantity and attributes. - It is used to differentiate deployments created by the same owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier for the - group. + This field is optional and can be empty if no + storage resources are available. + gpu: + description: >- + GPU resources available, including the type, + architecture and other details. - It is used to differentiate groups created by the same owner in a - deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders associated with a - single deployment. + This field is optional and can be empty if no GPU + resources are available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which + represents the number of GPUs available. - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - provider: - type: string - description: |- - Provider is the account bech32 address of the provider making the bid. - It is a string representing a valid account bech32 address. + This field is required and must be a + non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", + "x86_64", etc.). + description: >- + Attribute represents an arbitrary attribute + key-value pair. + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is + implemented when the lease is deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: >- + SequenceNumber represents a sequence number + for the Endpoint. + description: >- + Endpoint describes a publicly accessible IP + service. + title: Endpoint resources available + title: >- + Resources describes all available resources types for + deployment/node etc - Example: - "akash1..." - state: - type: string - description: State represents the state of the lease. - bseq: - type: integer - format: int64 - description: >- - BSeq (bid sequence) distinguishes multiple bids associated with a - single deployment from same provider. - description: LeaseFilters defines flags for lease list filtering. - akash.market.v1.LeaseID: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + description: >- + Count corresponds to the amount of replicas to run of + the resources. + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. - It is a string representing a valid bech32 account address. + NOTE: The amount field is an Dec which implements the + custom method - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier for - the deployment. + signatures required by gogoproto. + description: >- + ResourceUnit extends Resources and adds Count along with + the Price. + description: >- + Resources is a list containing the resource units allocated + to the group. - It is used to differentiate deployments created by the same owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier for the - group. + Each ResourceUnit defines the specific resources (e.g., CPU, + memory) assigned. + description: >- + GroupSpec defines a specification for a group in a deployment on + the network. - It is used to differentiate groups created by the same owner in a - deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders associated with a - single deployment. + This includes attributes like the group name, placement + requirements, and resource units. + created_at: + type: string + format: int64 + reclamation: + description: >- + reclamation is the deployment-level reclamation requirement, + propagated to the order. - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - provider: - type: string - description: |- - Provider is the account bech32 address of the provider making the bid. - It is a string representing a valid account bech32 address. + Nil means the deployment does not require reclamation. + type: object + properties: + min_window: + type: string + description: >- + min_window is the minimum reclamation window the tenant + requires. + description: Order stores orderID, state of order and other details. + description: Orders is a list of market orders. + pagination: + description: Pagination contains the information about response pagination. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - Example: - "akash1..." - bseq: - type: integer - format: int64 - description: >- - BSeq (bid sequence) distinguishes multiple bids associated with a - single deployment from same provider. - description: LeaseID stores bid details of lease. - akash.market.v1.OrderID: + was set, its value is undefined otherwise + title: QueryOrdersResponse is response type for the Query/Orders RPC method + akash.market.v1beta5.QueryParamsResponse: type: object properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + params: + description: params defines the parameters of the module. + type: object + properties: + bid_min_deposit: + title: |- + BidMinDeposit is a parameter for the minimum deposit on a Bid. + Deprecated: use BidMinDeposits + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - It is a string representing a valid bech32 account address. + NOTE: The amount field is an Int which implements the custom + method - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier for - the deployment. + signatures required by gogoproto. + order_max_bids: + type: integer + format: int64 + description: >- + OrderMaxBids is a parameter for the maximum number of bids in an + order. + bid_min_deposits: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - It is used to differentiate deployments created by the same owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier for the - group. - It is used to differentiate groups created by the same owner in a - deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders associated with a - single deployment. + NOTE: The amount field is an Int which implements the custom + method - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - description: OrderId stores owner and all other seq numbers. - akash.market.v1.Reclamation: + signatures required by gogoproto. + description: >- + BidMinDeposits is a parameter for the minimum deposits per denom + on a Bid. + min_reclamation_window: + type: string + description: >- + min_reclamation_window is the minimum reclamation window duration + allowed. + max_reclamation_window: + type: string + description: >- + max_reclamation_window is the maximum reclamation window duration + allowed. + description: QueryParamsResponse is the response type for the Query/Params RPC method. + akash.market.v1beta5.ResourceOffer: type: object properties: - window: - type: string - description: >- - window is the negotiated reclamation window duration (from the winning - bid). - started_at: - type: string - format: int64 - description: |- - started_at is the block height at which reclamation was initiated. - Zero means reclamation has not been started yet. - deadline: - type: string - format: int64 - description: >- - deadline is the unix timestamp at which the reclamation window - expires. - - Zero means reclamation has not been started yet. - reason: - type: string - enum: - - lease_closed_invalid - - lease_closed_owner - - lease_closed_reason_unstable - - lease_closed_reason_decommission - - lease_closed_reason_unspecified - - lease_closed_reason_manifest_timeout - - lease_closed_reason_insufficient_funds - default: lease_closed_invalid - description: >- - - lease_closed_invalid: LeaseClosedReasonInvalid represents the - default zero value for LeaseClosedReason. - - This value indicates an uninitialized or invalid lease closure reason - and should not - - be used - - lease_closed_owner: values between 1..9999 indicate owner‑initiated close - - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close - lease_closed_reason_unstable lease workloads have been unstable - - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned - - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason - - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received - - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close - title: LeaseClosedReason indicates reason bid was closed - description: Reclamation defines the runtime reclamation state stored on a Lease. - akash.market.v1beta5.Bid: - type: object - properties: - id: - description: |- - BidID stores owner and all other seq numbers. - A successful bid becomes a Lease(ID). + resources: + description: Resources holds information about bid resources. type: object properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. - - It is a string representing a valid bech32 account address. - - - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier - for the deployment. - - It is used to differentiate deployments created by the same owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier for - the group. - - It is used to differentiate groups created by the same owner in a - deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders associated - with a single deployment. - - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - provider: - type: string - description: >- - Provider is the account bech32 address of the provider making the - bid. - - It is a string representing a valid account bech32 address. - - - Example: - "akash1..." - bseq: + id: type: integer format: int64 + description: Id is a unique identifier for the resources. + cpu: description: >- - BSeq (bid sequence) distinguishes multiple bids associated with a - single deployment from same provider. - state: - description: State represents the state of the Bid. - type: string - enum: - - invalid - - open - - active - - lost - - closed - default: invalid - price: - description: Price holds the pricing stated on the Bid. - type: object - properties: - denom: - type: string - amount: - type: string - created_at: - type: string - format: int64 - description: CreatedAt is the block height at which the Bid was created. - resources_offer: - type: array - items: - type: object - properties: - resources: - description: Resources holds information about bid resources. - type: object - properties: - id: - type: integer - format: int64 - description: Id is a unique identifier for the resources. - cpu: - description: >- - CPU resources available, including the architecture, number - of cores and other details. - - This field is optional and can be empty if no CPU resources - are available. - type: object - properties: - units: - description: >- - Units of the CPU, which represents the number of CPUs - available. - - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: >- - Attribute represents an arbitrary attribute key-value - pair. - description: >- - Attributes holds a list of key-value attributes that - describe the GPU, such as its model, memory and - interface. + CPU resources available, including the architecture, number of + cores and other details. - This field is required and must be a list of `Attribute` - messages. - memory: - description: >- - Memory resources available, including the quantity and - attributes. + This field is optional and can be empty if no CPU resources are + available. + type: object + properties: + units: + description: >- + Units of the CPU, which represents the number of CPUs + available. - This field is optional and can be empty if no memory - resources are available. + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: type: object properties: - quantity: + key: + type: string description: >- - Quantity of memory available, which represents the - amount of memory in bytes. - - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: >- - Attribute represents an arbitrary attribute key-value - pair. + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string description: >- - Attributes that describe the memory, such as its type - and speed. - - This field is required and must be a list of Attribute - key-values. - storage: - type: array - items: - type: object - properties: - name: - type: string - description: Name holds an arbitrary name for the storage resource. - quantity: - description: >- - Quantity of storage available, which represents the - amount of memory in bytes. - - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the storage. + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: >- + Attributes holds a list of key-value attributes that describe + the GPU, such as its model, memory and interface. - This field is required and must be a list of Attribute - key-values. - description: Storage stores resource quantity and storage attributes. - description: >- - Storage resources available, including the quantity and - attributes. + This field is required and must be a list of `Attribute` + messages. + memory: + description: >- + Memory resources available, including the quantity and attributes. - This field is optional and can be empty if no storage - resources are available. - gpu: - description: >- - GPU resources available, including the type, architecture - and other details. + This field is optional and can be empty if no memory resources are + available. + type: object + properties: + quantity: + description: >- + Quantity of memory available, which represents the amount of + memory in bytes. - This field is optional and can be empty if no GPU resources - are available. + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: type: object properties: - units: + key: + type: string description: >- - The resource value of the GPU, which represents the - number of GPUs available. - - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: >- - Attribute represents an arbitrary attribute key-value - pair. - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is implemented when - the lease is deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: >- - SequenceNumber represents a sequence number for the - Endpoint. - description: Endpoint describes a publicly accessible IP service. - title: Endpoint resources available - title: >- - Resources describes all available resources types for - deployment/node etc + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: >- + Attributes that describe the memory, such as its type and + speed. - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - description: Count is the number of resources. - prices: - description: >- - Prices contains per-resource pricing details (CPU, memory, - storage, GPU, endpoints) for this offer. + This field is required and must be a list of Attribute + key-values. + storage: + type: array + items: type: object properties: - cpu: - description: >- - Cpu is the offered price for CPU resources. When nil, no - explicit - - CPU price is set. - type: object - properties: - denom: - type: string - amount: - type: string - memory: + name: + type: string + description: Name holds an arbitrary name for the storage resource. + quantity: description: >- - Memory is the offered price for memory resources. When nil, - no explicit + Quantity of storage available, which represents the amount + of memory in bytes. - memory price is set. + This field is required and must be a non-negative integer. type: object properties: - denom: - type: string - amount: + val: type: string - storage: + format: byte + attributes: type: array items: type: object properties: - name: + key: type: string description: >- - Name holds an arbitrary name for the storage class - (e.g., "default", "ssd", "hdd"). - - This must match a storage class name from the - corresponding resource specification. - price: + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string description: >- - Price is the offered price per unit of this storage - class, expressed as a - - DecCoin (decimal coin) to allow fractional pricing. - When nil, no explicit - - price is set for this storage class. - type: object - properties: - denom: - type: string - amount: - type: string + Value of the attribute (e.g., "us-west", "x86_64", + etc.). description: >- - StorageOfferPrice represents the price a provider is - offering for a specific - - class of persistent storage. Providers may offer multiple - storage classes - - (e.g., SSD, HDD, NVMe), each identified by name and priced - independently. - - This type is used as a repeated field within OfferPrices - to express - - per-class storage pricing in a bid. + Attribute represents an arbitrary attribute key-value + pair. description: >- - Storage is a list of per-class storage prices. Each entry - corresponds to a + Attributes that describe the storage. - named storage class (e.g., "default", "ssd") and its - associated price. + This field is required and must be a list of Attribute + key-values. + description: Storage stores resource quantity and storage attributes. + description: >- + Storage resources available, including the quantity and + attributes. - Multiple entries allow providers to price different storage - tiers independently. - gpu: - description: >- - Gpu is the offered price for GPU resources. When nil, no - explicit + This field is optional and can be empty if no storage resources + are available. + gpu: + description: >- + GPU resources available, including the type, architecture and + other details. - GPU price is set. - type: object - properties: - denom: - type: string - amount: - type: string - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind specifies the type of network endpoint being - priced. Possible values: - - SHARED_HTTP (0): A Kubernetes Ingress endpoint. - - RANDOM_PORT (1): A Kubernetes NodePort endpoint. - - LEASED_IP (2): A dedicated leased IP endpoint. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - price: - description: >- - Price is the offered price per unit of this endpoint - kind, expressed as a + This field is optional and can be empty if no GPU resources are + available. + type: object + properties: + units: + description: >- + The resource value of the GPU, which represents the number of + GPUs available. - DecCoin (decimal coin) to allow fractional pricing. - When nil, no explicit + This field is required and must be a non-negative integer. + type: object + properties: + val: + type: string + format: byte + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", + "cpu_architecture", etc.). + value: + type: string + description: >- + Value of the attribute (e.g., "us-west", "x86_64", + etc.). + description: Attribute represents an arbitrary attribute key-value pair. + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind describes how the endpoint is implemented when the + lease is deployed. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + sequence_number: + type: integer + format: int64 + description: >- + SequenceNumber represents a sequence number for the + Endpoint. + description: Endpoint describes a publicly accessible IP service. + title: Endpoint resources available + title: >- + Resources describes all available resources types for deployment/node + etc - price is set for this endpoint kind. - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - EndpointOfferPrice represents the price a provider is - offering for a specific + if field is nil resource is not present in the given data-structure + count: + type: integer + format: int64 + description: Count is the number of resources. + prices: + description: >- + Prices contains per-resource pricing details (CPU, memory, storage, + GPU, endpoints) for this offer. + type: object + properties: + cpu: + description: |- + Cpu is the offered price for CPU resources. When nil, no explicit + CPU price is set. + type: object + properties: + denom: + type: string + amount: + type: string + memory: + description: >- + Memory is the offered price for memory resources. When nil, no + explicit - kind of network endpoint. Providers may price each - endpoint kind differently + memory price is set. + type: object + properties: + denom: + type: string + amount: + type: string + storage: + type: array + items: + type: object + properties: + name: + type: string + description: >- + Name holds an arbitrary name for the storage class (e.g., + "default", "ssd", "hdd"). - (e.g., a leased IP may cost more than a shared HTTP - ingress). This type is + This must match a storage class name from the corresponding + resource specification. + price: + description: >- + Price is the offered price per unit of this storage class, + expressed as a - used as a repeated field within OfferPrices to express - per-kind endpoint + DecCoin (decimal coin) to allow fractional pricing. When + nil, no explicit - pricing in a bid. - description: >- - Endpoints is a list of per-kind endpoint prices. Each entry - corresponds to + price is set for this storage class. + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + StorageOfferPrice represents the price a provider is offering + for a specific - a network endpoint kind (SHARED_HTTP, RANDOM_PORT, or - LEASED_IP) and its + class of persistent storage. Providers may offer multiple + storage classes - associated price. Multiple entries allow providers to price - different + (e.g., SSD, HDD, NVMe), each identified by name and priced + independently. - endpoint types independently. - description: |- - ResourceOffer describes resources that provider is offering - for deployment. - description: ResourceOffer is a list of offers. - reclamation_window: - type: string - description: reclamation_window is the reclamation window offered by this provider. - description: Bid stores BidID, state of bid and price. - akash.market.v1beta5.Bid.State: - type: string - enum: - - invalid - - open - - active - - lost - - closed - default: invalid - description: |- - BidState is an enum which refers to state of bid. + This type is used as a repeated field within OfferPrices to + express - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - open: BidOpen denotes state for bid open. - - active: BidMatched denotes state for bid open. - - lost: BidLost denotes state for bid lost. - - closed: BidClosed denotes state for bid closed. - akash.market.v1beta5.BidFilters: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + per-class storage pricing in a bid. + description: >- + Storage is a list of per-class storage prices. Each entry + corresponds to a - It is a string representing a valid bech32 account address. + named storage class (e.g., "default", "ssd") and its associated + price. + Multiple entries allow providers to price different storage tiers + independently. + gpu: + description: |- + Gpu is the offered price for GPU resources. When nil, no explicit + GPU price is set. + type: object + properties: + denom: + type: string + amount: + type: string + endpoints: + type: array + items: + type: object + properties: + kind: + description: >- + Kind specifies the type of network endpoint being priced. + Possible values: + - SHARED_HTTP (0): A Kubernetes Ingress endpoint. + - RANDOM_PORT (1): A Kubernetes NodePort endpoint. + - LEASED_IP (2): A dedicated leased IP endpoint. + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + - LEASED_IP + default: SHARED_HTTP + price: + description: >- + Price is the offered price per unit of this endpoint kind, + expressed as a - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier for - the deployment. + DecCoin (decimal coin) to allow fractional pricing. When + nil, no explicit - It is used to differentiate deployments created by the same owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier for the - group. + price is set for this endpoint kind. + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + EndpointOfferPrice represents the price a provider is offering + for a specific - It is used to differentiate groups created by the same owner in a - deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders associated with a - single deployment. + kind of network endpoint. Providers may price each endpoint kind + differently - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - provider: - type: string - description: |- - Provider is the account bech32 address of the provider making the bid. - It is a string representing a valid account bech32 address. + (e.g., a leased IP may cost more than a shared HTTP ingress). + This type is - Example: - "akash1..." - state: - type: string - description: State represents the state of the lease. - bseq: - type: integer - format: int64 - description: >- - BSeq (bid sequence) distinguishes multiple bids associated with a - single deployment from same provider. - description: BidFilters defines flags for bid list filter. - akash.market.v1beta5.EndpointOfferPrice: + used as a repeated field within OfferPrices to express per-kind + endpoint + + pricing in a bid. + description: >- + Endpoints is a list of per-kind endpoint prices. Each entry + corresponds to + + a network endpoint kind (SHARED_HTTP, RANDOM_PORT, or LEASED_IP) + and its + + associated price. Multiple entries allow providers to price + different + + endpoint types independently. + description: |- + ResourceOffer describes resources that provider is offering + for deployment. + akash.market.v1beta5.StorageOfferPrice: type: object properties: - kind: - description: >- - Kind specifies the type of network endpoint being priced. Possible - values: - - SHARED_HTTP (0): A Kubernetes Ingress endpoint. - - RANDOM_PORT (1): A Kubernetes NodePort endpoint. - - LEASED_IP (2): A dedicated leased IP endpoint. + name: type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP + description: >- + Name holds an arbitrary name for the storage class (e.g., "default", + "ssd", "hdd"). + + This must match a storage class name from the corresponding resource + specification. price: description: >- - Price is the offered price per unit of this endpoint kind, expressed + Price is the offered price per unit of this storage class, expressed as a DecCoin (decimal coin) to allow fractional pricing. When nil, no explicit - price is set for this endpoint kind. + price is set for this storage class. type: object properties: denom: @@ -50954,2592 +52945,1745 @@ definitions: amount: type: string description: >- - EndpointOfferPrice represents the price a provider is offering for a + StorageOfferPrice represents the price a provider is offering for a specific - kind of network endpoint. Providers may price each endpoint kind - differently + class of persistent storage. Providers may offer multiple storage classes - (e.g., a leased IP may cost more than a shared HTTP ingress). This type is + (e.g., SSD, HDD, NVMe), each identified by name and priced independently. - used as a repeated field within OfferPrices to express per-kind endpoint + This type is used as a repeated field within OfferPrices to express - pricing in a bid. - akash.market.v1beta5.OfferPrices: + per-class storage pricing in a bid. + akash.market.v1beta5.MsgCloseBidResponse: + type: object + description: MsgCloseBidResponse defines the Msg/CloseBid response type. + akash.market.v1beta5.MsgCloseLeaseResponse: + type: object + description: MsgCloseLeaseResponse defines the Msg/CloseLease response type. + akash.market.v1beta5.MsgCreateBidResponse: + type: object + description: MsgCreateBidResponse defines the Msg/CreateBid response type. + akash.market.v1beta5.MsgCreateLeaseResponse: + type: object + description: MsgCreateLeaseResponse is the response from creating a lease. + akash.market.v1beta5.MsgLeaseStartReclaimResponse: + type: object + description: >- + MsgLeaseStartReclaimResponse is the response from starting lease + reclamation. + akash.market.v1beta5.MsgUpdateParamsResponse: + type: object + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + + Since: akash v1.0.0 + akash.market.v1beta5.MsgWithdrawLeaseResponse: + type: object + description: MsgWithdrawLeaseResponse defines the Msg/WithdrawLease response type. + akash.provider.v1beta4.Info: type: object properties: - cpu: + email: + type: string + description: Email is the email address to contact the provider. + website: + type: string + description: Website is the URL to the landing page or socials of the provider. + description: Info contains information on the provider. + akash.provider.v1beta4.Provider: + type: object + properties: + owner: + type: string description: |- - Cpu is the offered price for CPU resources. When nil, no explicit - CPU price is set. - type: object - properties: - denom: - type: string - amount: - type: string - memory: + Owner is the bech32 address of the account of the provider. + It is a string representing a valid account address. + + Example: + "akash1..." + host_uri: + type: string description: >- - Memory is the offered price for memory resources. When nil, no - explicit + HostURI is the Uniform Resource Identifier for provider connection. - memory price is set. - type: object - properties: - denom: - type: string - amount: - type: string - storage: + This URI is used to directly connect to the provider to perform tasks + such as sending the manifest. + attributes: type: array items: type: object properties: - name: + key: type: string - description: >- - Name holds an arbitrary name for the storage class (e.g., - "default", "ssd", "hdd"). - - This must match a storage class name from the corresponding - resource specification. - price: - description: >- - Price is the offered price per unit of this storage class, - expressed as a - - DecCoin (decimal coin) to allow fractional pricing. When nil, no - explicit - - price is set for this storage class. - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - StorageOfferPrice represents the price a provider is offering for a - specific - - class of persistent storage. Providers may offer multiple storage - classes - - (e.g., SSD, HDD, NVMe), each identified by name and priced - independently. + description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: Attributes is a list of arbitrary attribute key-value pairs. + info: + description: Info contains additional provider information. + type: object + properties: + email: + type: string + description: Email is the email address to contact the provider. + website: + type: string + description: Website is the URL to the landing page or socials of the provider. + description: >- + Provider stores owner and host details. - This type is used as a repeated field within OfferPrices to express + Akash providers are entities that contribute computing resources to the + network. - per-class storage pricing in a bid. - description: >- - Storage is a list of per-class storage prices. Each entry corresponds - to a + They can be individuals or organizations with underutilized computing + resources, such as data centers or personal servers. - named storage class (e.g., "default", "ssd") and its associated price. + Providers participate in the network by running the Akash node software + and setting the price for their services. - Multiple entries allow providers to price different storage tiers - independently. - gpu: - description: |- - Gpu is the offered price for GPU resources. When nil, no explicit - GPU price is set. + Users can then choose a provider based on factors such as cost, + performance, and location. + akash.provider.v1beta4.QueryProviderResponse: + type: object + properties: + provider: type: object properties: - denom: + owner: type: string - amount: + description: |- + Owner is the bech32 address of the account of the provider. + It is a string representing a valid account address. + + Example: + "akash1..." + host_uri: type: string - endpoints: - type: array - items: + description: >- + HostURI is the Uniform Resource Identifier for provider + connection. + + This URI is used to directly connect to the provider to perform + tasks such as sending the manifest. + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", "cpu_architecture", + etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: Attributes is a list of arbitrary attribute key-value pairs. + info: + description: Info contains additional provider information. + type: object + properties: + email: + type: string + description: Email is the email address to contact the provider. + website: + type: string + description: >- + Website is the URL to the landing page or socials of the + provider. + description: >- + Provider stores owner and host details. + + Akash providers are entities that contribute computing resources to + the network. + + They can be individuals or organizations with underutilized computing + resources, such as data centers or personal servers. + + Providers participate in the network by running the Akash node + software and setting the price for their services. + + Users can then choose a provider based on factors such as cost, + performance, and location. + description: QueryProviderResponse is response type for the Query/Provider RPC method. + akash.provider.v1beta4.QueryProvidersResponse: + type: object + properties: + providers: + type: array + items: type: object properties: - kind: - description: >- - Kind specifies the type of network endpoint being priced. - Possible values: - - SHARED_HTTP (0): A Kubernetes Ingress endpoint. - - RANDOM_PORT (1): A Kubernetes NodePort endpoint. - - LEASED_IP (2): A dedicated leased IP endpoint. + owner: + type: string + description: |- + Owner is the bech32 address of the account of the provider. + It is a string representing a valid account address. + + Example: + "akash1..." + host_uri: type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - price: description: >- - Price is the offered price per unit of this endpoint kind, - expressed as a + HostURI is the Uniform Resource Identifier for provider + connection. - DecCoin (decimal coin) to allow fractional pricing. When nil, no - explicit + This URI is used to directly connect to the provider to perform + tasks such as sending the manifest. + attributes: + type: array + items: + type: object + properties: + key: + type: string + description: >- + Key of the attribute (e.g., "region", "cpu_architecture", + etc.). + value: + type: string + description: Value of the attribute (e.g., "us-west", "x86_64", etc.). + description: Attribute represents an arbitrary attribute key-value pair. + description: Attributes is a list of arbitrary attribute key-value pairs. + info: + description: Info contains additional provider information. + type: object + properties: + email: + type: string + description: Email is the email address to contact the provider. + website: + type: string + description: >- + Website is the URL to the landing page or socials of the + provider. + description: >- + Provider stores owner and host details. - price is set for this endpoint kind. + Akash providers are entities that contribute computing resources to + the network. + + They can be individuals or organizations with underutilized + computing resources, such as data centers or personal servers. + + Providers participate in the network by running the Akash node + software and setting the price for their services. + + Users can then choose a provider based on factors such as cost, + performance, and location. + description: Providers is a list of providers on the network. + pagination: + description: Pagination contains the information about response pagination. + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: QueryProvidersResponse is response type for the Query/Providers RPC method + akash.take.v1.DenomTakeRate: + type: object + properties: + denom: + type: string + description: Denom is the denomination of the take rate (uakt, usdc, etc.). + rate: + type: integer + format: int64 + description: Rate is the value of the take rate. + description: DenomTakeRate describes take rate for specified denom. + akash.take.v1.Params: + type: object + properties: + denom_take_rates: + type: array + items: + type: object + properties: + denom: + type: string + description: Denom is the denomination of the take rate (uakt, usdc, etc.). + rate: + type: integer + format: int64 + description: Rate is the value of the take rate. + description: DenomTakeRate describes take rate for specified denom. + description: DenomTakeRates is a list of configured take rates. + default_take_rate: + type: integer + format: int64 + description: DefaultTakeRate holds the default take rate. + description: Params defines the parameters for the x/take package. + akash.take.v1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + denom_take_rates: + type: array + items: type: object properties: denom: type: string - amount: + description: >- + Denom is the denomination of the take rate (uakt, usdc, + etc.). + rate: + type: integer + format: int64 + description: Rate is the value of the take rate. + description: DenomTakeRate describes take rate for specified denom. + description: DenomTakeRates is a list of configured take rates. + default_take_rate: + type: integer + format: int64 + description: DefaultTakeRate holds the default take rate. + description: QueryParamsResponse is the response type for the Query/Params RPC method. + akash.take.v1.MsgUpdateParamsResponse: + type: object + description: |- + MsgUpdateParamsResponse defines the response structure for executing a + MsgUpdateParams message. + + Since: akash v1.0.0 + cosmos.app.v1alpha1.Config: + type: object + properties: + modules: + type: array + items: + type: object + properties: + name: + type: string + description: >- + name is the unique name of the module within the app. It should + be a name + + that persists between different versions of a module so that + modules + + can be smoothly upgraded to new versions. + + + For example, for the module cosmos.bank.module.v1.Module, we may + chose + + to simply name the module "bank" in the app. When we upgrade to + + cosmos.bank.module.v2.Module, the app-specific name "bank" stays + the same + + and the framework knows that the v2 module should receive all + the same state + + that the v1 module had. Note: modules should provide info on + which versions + + they can migrate from in the ModuleDescriptor.can_migration_from + field. + config: + description: >- + config is the config object for the module. Module config + messages should + + define a ModuleDescriptor using the + cosmos.app.v1alpha1.is_module extension. + type: object + properties: + '@type': type: string - description: >- - EndpointOfferPrice represents the price a provider is offering for a - specific + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - kind of network endpoint. Providers may price each endpoint kind - differently + protocol buffer message. This string must contain at least - (e.g., a leased IP may cost more than a shared HTTP ingress). This - type is + one "/" character. The last segment of the URL's path must + represent - used as a repeated field within OfferPrices to express per-kind - endpoint + the fully qualified name of the type (as in - pricing in a bid. - description: >- - Endpoints is a list of per-kind endpoint prices. Each entry - corresponds to + `path/google.protobuf.Duration`). The name should be in a + canonical form - a network endpoint kind (SHARED_HTTP, RANDOM_PORT, or LEASED_IP) and - its + (e.g., leading "." is not accepted). - associated price. Multiple entries allow providers to price different - endpoint types independently. - description: >- - OfferPrices contains the complete pricing breakdown that a provider - includes + In practice, teams usually precompile into the binary all + types that they - in a bid for a deployment resource group. Each field represents the price - for + expect it to use in the context of Any. However, for URLs + which use the - a specific compute resource type. All price fields use DecCoin (decimal - coin) + scheme `http`, `https`, or no scheme, one can optionally set + up a type - to support fractional pricing denominated in any supported token. + server that maps type URLs to message definitions as + follows: - This message is embedded as a nullable field on ResourceOffer, which in - turn + * If no scheme is provided, `https` is assumed. - is carried by Bid and MsgCreateBid messages. A nil OfferPrices on a + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - ResourceOffer indicates that no per-resource pricing was specified. + Note: this functionality is not currently available in the + official + protobuf release, and it is not used for type URLs beginning + with - Field 1 is reserved for backward compatibility with a previously removed - field. - akash.market.v1beta5.Order: + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + golangBindings: + type: array + items: + type: object + properties: + interfaceType: + type: string + title: >- + interface_type is the interface type which will be bound + to a specific implementation type + implementation: + type: string + title: >- + implementation is the implementing type which will be + supplied when an input of type interface is requested + description: >- + GolangBinding is an explicit interface type to implementing + type binding for dependency injection. + description: >- + golang_bindings specifies explicit interface to implementation + type bindings which + + depinject uses to resolve interface inputs to provider + functions. The scope of this + + field's configuration is module specific. + description: ModuleConfig is a module configuration for an app. + description: modules are the module configurations for the app. + golangBindings: + type: array + items: + type: object + properties: + interfaceType: + type: string + title: >- + interface_type is the interface type which will be bound to a + specific implementation type + implementation: + type: string + title: >- + implementation is the implementing type which will be supplied + when an input of type interface is requested + description: >- + GolangBinding is an explicit interface type to implementing type + binding for dependency injection. + description: >- + golang_bindings specifies explicit interface to implementation type + bindings which + + depinject uses to resolve interface inputs to provider functions. The + scope of this + + field's configuration is global (not module specific). + description: >- + Config represents the configuration for a Cosmos SDK ABCI app. + + It is intended that all state machine logic including the version of + + baseapp and tx handlers (and possibly even Tendermint) that an app needs + + can be described in a config object. For compatibility, the framework + should + + allow a mixture of declarative and imperative app wiring, however, apps + + that strive for the maximum ease of maintainability should be able to + describe + + their state machine with a config object alone. + cosmos.app.v1alpha1.GolangBinding: type: object properties: - id: - description: Id is the unique identifier of the order. + interfaceType: + type: string + title: >- + interface_type is the interface type which will be bound to a specific + implementation type + implementation: + type: string + title: >- + implementation is the implementing type which will be supplied when an + input of type interface is requested + description: >- + GolangBinding is an explicit interface type to implementing type binding + for dependency injection. + cosmos.app.v1alpha1.ModuleConfig: + type: object + properties: + name: + type: string + description: >- + name is the unique name of the module within the app. It should be a + name + + that persists between different versions of a module so that modules + + can be smoothly upgraded to new versions. + + + For example, for the module cosmos.bank.module.v1.Module, we may chose + + to simply name the module "bank" in the app. When we upgrade to + + cosmos.bank.module.v2.Module, the app-specific name "bank" stays the + same + + and the framework knows that the v2 module should receive all the same + state + + that the v1 module had. Note: modules should provide info on which + versions + + they can migrate from in the ModuleDescriptor.can_migration_from + field. + config: + description: >- + config is the config object for the module. Module config messages + should + + define a ModuleDescriptor using the cosmos.app.v1alpha1.is_module + extension. type: object properties: - owner: + '@type': type: string description: >- - Owner is the account bech32 address of the user who owns the - deployment. + A URL/resource name that uniquely identifies the type of the + serialized - It is a string representing a valid bech32 account address. + protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must + represent - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier - for the deployment. + the fully qualified name of the type (as in - It is used to differentiate deployments created by the same owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier for - the group. + `path/google.protobuf.Duration`). The name should be in a + canonical form - It is used to differentiate groups created by the same owner in a - deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders associated - with a single deployment. + (e.g., leading "." is not accepted). - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - state: - type: string - enum: - - invalid - - open - - active - - closed - default: invalid - description: |- - State is an enum which refers to state of order. - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - open: OrderOpen denotes state for order open. - - active: OrderMatched denotes state for order matched. - - closed: OrderClosed denotes state for order lost. - spec: - type: object - properties: - name: - type: string - description: Name is the name of the group. - requirements: - description: |- - Requirements specifies the placement requirements for the group. - This determines where the resources in the group can be deployed. - type: object - properties: - signed_by: - description: >- - SignedBy holds the list of keys that tenants expect to have - signatures from. - type: object - properties: - all_of: - type: array - items: - type: string - description: >- - AllOf indicates all keys in this list must have signed - attributes. - any_of: - type: array - items: - type: string - description: >- - AnyOf means that at least one of the keys from the list - must have signed attributes. - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: >- - Attribute holds the list of attributes tenant expects from the - provider. - resources: + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. As of May 2023, there are no widely used type + server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + golangBindings: + type: array + items: + type: object + properties: + interfaceType: + type: string + title: >- + interface_type is the interface type which will be bound to a + specific implementation type + implementation: + type: string + title: >- + implementation is the implementing type which will be supplied + when an input of type interface is requested + description: >- + GolangBinding is an explicit interface type to implementing type + binding for dependency injection. + description: >- + golang_bindings specifies explicit interface to implementation type + bindings which + + depinject uses to resolve interface inputs to provider functions. The + scope of this + + field's configuration is module specific. + description: ModuleConfig is a module configuration for an app. + cosmos.app.v1alpha1.QueryConfigResponse: + type: object + properties: + config: + description: config is the current app config. + type: object + properties: + modules: type: array items: type: object properties: - resource: - description: Resource holds the amount of resources. - type: object - properties: - id: - type: integer - format: int64 - description: Id is a unique identifier for the resources. - cpu: - description: >- - CPU resources available, including the architecture, - number of cores and other details. - - This field is optional and can be empty if no CPU - resources are available. - type: object - properties: - units: - description: >- - Units of the CPU, which represents the number of - CPUs available. - - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes holds a list of key-value attributes that - describe the GPU, such as its model, memory and - interface. - - This field is required and must be a list of - `Attribute` messages. - memory: - description: >- - Memory resources available, including the quantity and - attributes. + name: + type: string + description: >- + name is the unique name of the module within the app. It + should be a name - This field is optional and can be empty if no memory - resources are available. - type: object - properties: - quantity: - description: >- - Quantity of memory available, which represents the - amount of memory in bytes. + that persists between different versions of a module so that + modules - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the memory, such as its - type and speed. + can be smoothly upgraded to new versions. - This field is required and must be a list of - Attribute key-values. - storage: - type: array - items: - type: object - properties: - name: - type: string - description: >- - Name holds an arbitrary name for the storage - resource. - quantity: - description: >- - Quantity of storage available, which represents - the amount of memory in bytes. - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the storage. + For example, for the module cosmos.bank.module.v1.Module, we + may chose - This field is required and must be a list of - Attribute key-values. - description: >- - Storage stores resource quantity and storage - attributes. - description: >- - Storage resources available, including the quantity and - attributes. + to simply name the module "bank" in the app. When we upgrade + to - This field is optional and can be empty if no storage - resources are available. - gpu: - description: >- - GPU resources available, including the type, - architecture and other details. + cosmos.bank.module.v2.Module, the app-specific name "bank" + stays the same - This field is optional and can be empty if no GPU - resources are available. - type: object - properties: - units: - description: >- - The resource value of the GPU, which represents the - number of GPUs available. + and the framework knows that the v2 module should receive + all the same state - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is implemented - when the lease is deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: >- - SequenceNumber represents a sequence number for - the Endpoint. - description: Endpoint describes a publicly accessible IP service. - title: Endpoint resources available - title: >- - Resources describes all available resources types for - deployment/node etc + that the v1 module had. Note: modules should provide info on + which versions - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 + they can migrate from in the + ModuleDescriptor.can_migration_from field. + config: description: >- - Count corresponds to the amount of replicas to run of the - resources. - price: + config is the config object for the module. Module config + messages should + + define a ModuleDescriptor using the + cosmos.app.v1alpha1.is_module extension. type: object properties: - denom: - type: string - amount: + '@type': type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + protocol buffer message. This string must contain at + least - NOTE: The amount field is an Dec which implements the custom - method + one "/" character. The last segment of the URL's path + must represent - signatures required by gogoproto. - description: >- - ResourceUnit extends Resources and adds Count along with the - Price. - description: >- - Resources is a list containing the resource units allocated to the - group. + the fully qualified name of the type (as in - Each ResourceUnit defines the specific resources (e.g., CPU, - memory) assigned. - description: >- - GroupSpec defines a specification for a group in a deployment on the - network. + `path/google.protobuf.Duration`). The name should be in + a canonical form - This includes attributes like the group name, placement requirements, - and resource units. - created_at: - type: string - format: int64 - reclamation: - description: >- - reclamation is the deployment-level reclamation requirement, - propagated to the order. + (e.g., leading "." is not accepted). - Nil means the deployment does not require reclamation. - type: object - properties: - min_window: - type: string - description: min_window is the minimum reclamation window the tenant requires. - description: Order stores orderID, state of order and other details. - akash.market.v1beta5.Order.State: - type: string - enum: - - invalid - - open - - active - - closed - default: invalid - description: |- - State is an enum which refers to state of order. - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - open: OrderOpen denotes state for order open. - - active: OrderMatched denotes state for order matched. - - closed: OrderClosed denotes state for order lost. - akash.market.v1beta5.OrderFilters: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + In practice, teams usually precompile into the binary + all types that they - It is a string representing a valid bech32 account address. + expect it to use in the context of Any. However, for + URLs which use the + scheme `http`, `https`, or no scheme, one can optionally + set up a type - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric identifier for - the deployment. + server that maps type URLs to message definitions as + follows: - It is used to differentiate deployments created by the same owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier for the - group. - It is used to differentiate groups created by the same owner in a - deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders associated with a - single deployment. + * If no scheme is provided, `https` is assumed. - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - state: - type: string - description: State represents the state of the lease. - title: OrderFilters defines flags for order list filter - akash.market.v1beta5.Params: - type: object - properties: - bid_min_deposit: - title: |- - BidMinDeposit is a parameter for the minimum deposit on a Bid. - Deprecated: use BidMinDeposits - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - order_max_bids: - type: integer - format: int64 - description: >- - OrderMaxBids is a parameter for the maximum number of bids in an - order. - bid_min_deposits: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: >- - BidMinDeposits is a parameter for the minimum deposits per denom on a - Bid. - min_reclamation_window: - type: string - description: >- - min_reclamation_window is the minimum reclamation window duration - allowed. - max_reclamation_window: - type: string - description: >- - max_reclamation_window is the maximum reclamation window duration - allowed. - description: Params is the params for the x/market module. - akash.market.v1beta5.QueryBidResponse: - type: object - properties: - bid: - description: Bid represents a deployment bid. - type: object - properties: - id: - description: |- - BidID stores owner and all other seq numbers. - A successful bid becomes a Lease(ID). - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. - - It is a string representing a valid bech32 account address. + Note: this functionality is not currently available in + the official + protobuf release, and it is not used for type URLs + beginning with - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric - identifier for the deployment. + type.googleapis.com. As of May 2023, there are no widely + used type server - It is used to differentiate deployments created by the same - owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier - for the group. + implementations and no plans to implement one. - It is used to differentiate groups created by the same owner - in a deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders associated - with a single deployment. - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - provider: - type: string - description: >- - Provider is the account bech32 address of the provider making - the bid. + Schemes other than `http`, `https` (or the empty scheme) + might be - It is a string representing a valid account bech32 address. + used with implementation specific semantics. + additionalProperties: {} + golangBindings: + type: array + items: + type: object + properties: + interfaceType: + type: string + title: >- + interface_type is the interface type which will be + bound to a specific implementation type + implementation: + type: string + title: >- + implementation is the implementing type which will be + supplied when an input of type interface is requested + description: >- + GolangBinding is an explicit interface type to + implementing type binding for dependency injection. + description: >- + golang_bindings specifies explicit interface to + implementation type bindings which + depinject uses to resolve interface inputs to provider + functions. The scope of this - Example: - "akash1..." - bseq: - type: integer - format: int64 - description: >- - BSeq (bid sequence) distinguishes multiple bids associated - with a single deployment from same provider. - state: - description: State represents the state of the Bid. - type: string - enum: - - invalid - - open - - active - - lost - - closed - default: invalid - price: - description: Price holds the pricing stated on the Bid. - type: object - properties: - denom: - type: string - amount: - type: string - created_at: - type: string - format: int64 - description: CreatedAt is the block height at which the Bid was created. - resources_offer: + field's configuration is module specific. + description: ModuleConfig is a module configuration for an app. + description: modules are the module configurations for the app. + golangBindings: type: array items: type: object properties: - resources: - description: Resources holds information about bid resources. - type: object - properties: - id: - type: integer - format: int64 - description: Id is a unique identifier for the resources. - cpu: - description: >- - CPU resources available, including the architecture, - number of cores and other details. + interfaceType: + type: string + title: >- + interface_type is the interface type which will be bound to + a specific implementation type + implementation: + type: string + title: >- + implementation is the implementing type which will be + supplied when an input of type interface is requested + description: >- + GolangBinding is an explicit interface type to implementing type + binding for dependency injection. + description: >- + golang_bindings specifies explicit interface to implementation + type bindings which - This field is optional and can be empty if no CPU - resources are available. - type: object - properties: - units: - description: >- - Units of the CPU, which represents the number of - CPUs available. + depinject uses to resolve interface inputs to provider functions. + The scope of this - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes holds a list of key-value attributes that - describe the GPU, such as its model, memory and - interface. + field's configuration is global (not module specific). + description: QueryConfigResponse is the Query/Config response type. + google.rpc.Status: + type: object + properties: + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - This field is required and must be a list of - `Attribute` messages. - memory: - description: >- - Memory resources available, including the quantity and - attributes. + protocol buffer message. This string must contain at least - This field is optional and can be empty if no memory - resources are available. - type: object - properties: - quantity: - description: >- - Quantity of memory available, which represents the - amount of memory in bytes. + one "/" character. The last segment of the URL's path must + represent - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the memory, such as its - type and speed. + the fully qualified name of the type (as in - This field is required and must be a list of - Attribute key-values. - storage: - type: array - items: - type: object - properties: - name: - type: string - description: >- - Name holds an arbitrary name for the storage - resource. - quantity: - description: >- - Quantity of storage available, which represents - the amount of memory in bytes. + `path/google.protobuf.Duration`). The name should be in a + canonical form - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the storage. + (e.g., leading "." is not accepted). - This field is required and must be a list of - Attribute key-values. - description: >- - Storage stores resource quantity and storage - attributes. - description: >- - Storage resources available, including the quantity and - attributes. - This field is optional and can be empty if no storage - resources are available. - gpu: - description: >- - GPU resources available, including the type, - architecture and other details. + In practice, teams usually precompile into the binary all types + that they - This field is optional and can be empty if no GPU - resources are available. - type: object - properties: - units: - description: >- - The resource value of the GPU, which represents the - number of GPUs available. + expect it to use in the context of Any. However, for URLs which + use the - This field is required and must be a non-negative - integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is implemented - when the lease is deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: >- - SequenceNumber represents a sequence number for - the Endpoint. - description: Endpoint describes a publicly accessible IP service. - title: Endpoint resources available - title: >- - Resources describes all available resources types for - deployment/node etc + scheme `http`, `https`, or no scheme, one can optionally set up + a type - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - description: Count is the number of resources. - prices: - description: >- - Prices contains per-resource pricing details (CPU, memory, - storage, GPU, endpoints) for this offer. - type: object - properties: - cpu: - description: >- - Cpu is the offered price for CPU resources. When nil, no - explicit + server that maps type URLs to message definitions as follows: - CPU price is set. - type: object - properties: - denom: - type: string - amount: - type: string - memory: - description: >- - Memory is the offered price for memory resources. When - nil, no explicit - memory price is set. - type: object - properties: - denom: - type: string - amount: - type: string - storage: - type: array - items: - type: object - properties: - name: - type: string - description: >- - Name holds an arbitrary name for the storage class - (e.g., "default", "ssd", "hdd"). + * If no scheme is provided, `https` is assumed. - This must match a storage class name from the - corresponding resource specification. - price: - description: >- - Price is the offered price per unit of this - storage class, expressed as a + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - DecCoin (decimal coin) to allow fractional - pricing. When nil, no explicit + Note: this functionality is not currently available in the + official - price is set for this storage class. - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - StorageOfferPrice represents the price a provider is - offering for a specific + protobuf release, and it is not used for type URLs beginning + with - class of persistent storage. Providers may offer - multiple storage classes + type.googleapis.com. As of May 2023, there are no widely used + type server - (e.g., SSD, HDD, NVMe), each identified by name and - priced independently. + implementations and no plans to implement one. - This type is used as a repeated field within - OfferPrices to express - per-class storage pricing in a bid. - description: >- - Storage is a list of per-class storage prices. Each - entry corresponds to a + Schemes other than `http`, `https` (or the empty scheme) might + be - named storage class (e.g., "default", "ssd") and its - associated price. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a - Multiple entries allow providers to price different - storage tiers independently. - gpu: - description: >- - Gpu is the offered price for GPU resources. When nil, no - explicit + URL that describes the type of the serialized message. - GPU price is set. - type: object - properties: - denom: - type: string - amount: - type: string - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind specifies the type of network endpoint being - priced. Possible values: - - SHARED_HTTP (0): A Kubernetes Ingress endpoint. - - RANDOM_PORT (1): A Kubernetes NodePort endpoint. - - LEASED_IP (2): A dedicated leased IP endpoint. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - price: - description: >- - Price is the offered price per unit of this - endpoint kind, expressed as a - DecCoin (decimal coin) to allow fractional - pricing. When nil, no explicit + Protobuf library provides support to pack/unpack Any values in the + form - price is set for this endpoint kind. - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - EndpointOfferPrice represents the price a provider is - offering for a specific + of utility functions or additional generated methods of the Any + type. - kind of network endpoint. Providers may price each - endpoint kind differently - (e.g., a leased IP may cost more than a shared HTTP - ingress). This type is + Example 1: Pack and unpack a message in C++. - used as a repeated field within OfferPrices to express - per-kind endpoint + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - pricing in a bid. - description: >- - Endpoints is a list of per-kind endpoint prices. Each - entry corresponds to + Example 2: Pack and unpack a message in Java. - a network endpoint kind (SHARED_HTTP, RANDOM_PORT, or - LEASED_IP) and its + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - associated price. Multiple entries allow providers to - price different + Example 3: Pack and unpack a message in Python. - endpoint types independently. - description: |- - ResourceOffer describes resources that provider is offering - for deployment. - description: ResourceOffer is a list of offers. - reclamation_window: - type: string - description: >- - reclamation_window is the reclamation window offered by this - provider. - escrow_account: - description: EscrowAccount represents the escrow account created for the Bid. - type: object - properties: - id: - type: object - properties: - scope: - type: string - enum: - - invalid - - deployment - - bid - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring - dummy state. - - deployment: DeploymentActive denotes state for deployment active. - - bid: DeploymentClosed denotes state for deployment closed. - title: Scope is an enum which refers to the account scope - xid: - type: string - description: Account is the account identifier. - state: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - It is a string representing a valid bech32 account address. + Example 4: Pack and unpack a message in Go + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - Example: - "akash1..." - state: - description: State represents the current state of an Account. - type: string - enum: - - invalid - - open - - closed - - overdrawn - default: invalid - transferred: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. + The pack methods provided by protobuf library will by default use + 'type.googleapis.com/full.type.name' as the type URL and the unpack - NOTE: The amount field is an Dec which implements the custom - method + methods only use the fully qualified type name after the last '/' - signatures required by gogoproto. - description: Transferred total coins spent by this account. - settled_at: - type: string - format: int64 - description: >- - SettledAt represents the block height at which this account - was last settled. - funds: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Balance holds the unspent coin received from all deposits - with same denom + in the type URL, for example "foo.bar.com/x/y.z" will yield type - DecCoin is not being used here as it does not support - negative values, + name "y.z". - and balance may go negative if account is overdrawn. - title: Funds holds the unspent coins received from all deposits - deposits: - type: array - items: - type: object - properties: - owner: - type: string - description: >- - Owner is the bech32 address of the depositor. - It is a string representing a valid account address. + JSON + ==== - Example: - "akash1..." - If depositor is same as the owner, then any incoming - coins are added to the Balance. + The JSON representation of an `Any` value uses the regular - If depositor isn't same as the owner, then any incoming - coins are added to the Funds. - height: - type: string - format: int64 - title: Height blockchain height at which deposit was created - source: - title: Source indicated origination of the funds - type: string - enum: - - invalid - - balance - - grant - default: invalid - description: >- - Source is an enum which lists source of funds for - deployment deposit. + representation of the deserialized, embedded message, with an - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - balance: SourceBalance denotes account balance as source of funds - - grant: SourceGrant denotes authz grants as source of funds - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. + additional field `@type` which contains the type URL. Example: + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - NOTE: The amount field is an Dec which implements the - custom method + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - signatures required by gogoproto. - description: Depositor stores state of a deposit. - description: Account stores state for an escrow account. - title: Account - description: QueryBidResponse is response type for the Query/Bid RPC method. - akash.market.v1beta5.QueryBidsResponse: + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + cosmos.auth.v1beta1.AddressBytesToStringResponse: type: object properties: - bids: - type: array - items: - type: object - properties: - bid: - description: Bid represents a deployment bid. - type: object - properties: - id: - description: |- - BidID stores owner and all other seq numbers. - A successful bid becomes a Lease(ID). - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns - the deployment. + addressString: + type: string + description: >- + AddressBytesToStringResponse is the response type for AddressString rpc + method. + cosmos.auth.v1beta1.AddressStringToBytesResponse: + type: object + properties: + addressBytes: + type: string + format: byte + description: >- + AddressStringToBytesResponse is the response type for AddressBytes rpc + method. + cosmos.auth.v1beta1.BaseAccount: + type: object + properties: + address: + type: string + pubKey: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - It is a string representing a valid bech32 account - address. + protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must + represent - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric - identifier for the deployment. + the fully qualified name of the type (as in - It is used to differentiate deployments created by the - same owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric - identifier for the group. + `path/google.protobuf.Duration`). The name should be in a + canonical form - It is used to differentiate groups created by the same - owner in a deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders - associated with a single deployment. + (e.g., leading "." is not accepted). - Oseq is incremented when a lease associated with an - existing deployment is closed, and a new order is - generated. - provider: - type: string - description: >- - Provider is the account bech32 address of the provider - making the bid. - It is a string representing a valid account bech32 - address. + In practice, teams usually precompile into the binary all types + that they + expect it to use in the context of Any. However, for URLs which + use the - Example: - "akash1..." - bseq: - type: integer - format: int64 - description: >- - BSeq (bid sequence) distinguishes multiple bids - associated with a single deployment from same provider. - state: - description: State represents the state of the Bid. - type: string - enum: - - invalid - - open - - active - - lost - - closed - default: invalid - price: - description: Price holds the pricing stated on the Bid. - type: object - properties: - denom: - type: string - amount: - type: string - created_at: - type: string - format: int64 - description: CreatedAt is the block height at which the Bid was created. - resources_offer: - type: array - items: - type: object - properties: - resources: - description: Resources holds information about bid resources. - type: object - properties: - id: - type: integer - format: int64 - description: Id is a unique identifier for the resources. - cpu: - description: >- - CPU resources available, including the - architecture, number of cores and other details. + scheme `http`, `https`, or no scheme, one can optionally set up a + type - This field is optional and can be empty if no CPU - resources are available. - type: object - properties: - units: - description: >- - Units of the CPU, which represents the number - of CPUs available. + server that maps type URLs to message definitions as follows: - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes holds a list of key-value - attributes that describe the GPU, such as its - model, memory and interface. - This field is required and must be a list of - `Attribute` messages. - memory: - description: >- - Memory resources available, including the quantity - and attributes. + * If no scheme is provided, `https` is assumed. - This field is optional and can be empty if no - memory resources are available. - type: object - properties: - quantity: - description: >- - Quantity of memory available, which represents - the amount of memory in bytes. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the memory, such as - its type and speed. + Note: this functionality is not currently available in the + official - This field is required and must be a list of - Attribute key-values. - storage: - type: array - items: - type: object - properties: - name: - type: string - description: >- - Name holds an arbitrary name for the storage - resource. - quantity: - description: >- - Quantity of storage available, which - represents the amount of memory in bytes. + protobuf release, and it is not used for type URLs beginning with - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary - attribute key-value pair. - description: >- - Attributes that describe the storage. + type.googleapis.com. As of May 2023, there are no widely used type + server - This field is required and must be a list of - Attribute key-values. - description: >- - Storage stores resource quantity and storage - attributes. - description: >- - Storage resources available, including the - quantity and attributes. + implementations and no plans to implement one. - This field is optional and can be empty if no - storage resources are available. - gpu: - description: >- - GPU resources available, including the type, - architecture and other details. - - This field is optional and can be empty if no GPU - resources are available. - type: object - properties: - units: - description: >- - The resource value of the GPU, which - represents the number of GPUs available. - - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is - implemented when the lease is deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: >- - SequenceNumber represents a sequence number - for the Endpoint. - description: >- - Endpoint describes a publicly accessible IP - service. - title: Endpoint resources available - title: >- - Resources describes all available resources types for - deployment/node etc - - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - description: Count is the number of resources. - prices: - description: >- - Prices contains per-resource pricing details (CPU, - memory, storage, GPU, endpoints) for this offer. - type: object - properties: - cpu: - description: >- - Cpu is the offered price for CPU resources. When - nil, no explicit - - CPU price is set. - type: object - properties: - denom: - type: string - amount: - type: string - memory: - description: >- - Memory is the offered price for memory resources. - When nil, no explicit - - memory price is set. - type: object - properties: - denom: - type: string - amount: - type: string - storage: - type: array - items: - type: object - properties: - name: - type: string - description: >- - Name holds an arbitrary name for the storage - class (e.g., "default", "ssd", "hdd"). - - This must match a storage class name from - the corresponding resource specification. - price: - description: >- - Price is the offered price per unit of this - storage class, expressed as a - DecCoin (decimal coin) to allow fractional - pricing. When nil, no explicit - - price is set for this storage class. - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - StorageOfferPrice represents the price a - provider is offering for a specific + Schemes other than `http`, `https` (or the empty scheme) might be - class of persistent storage. Providers may offer - multiple storage classes + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a - (e.g., SSD, HDD, NVMe), each identified by name - and priced independently. + URL that describes the type of the serialized message. - This type is used as a repeated field within - OfferPrices to express - per-class storage pricing in a bid. - description: >- - Storage is a list of per-class storage prices. - Each entry corresponds to a + Protobuf library provides support to pack/unpack Any values in the + form - named storage class (e.g., "default", "ssd") and - its associated price. + of utility functions or additional generated methods of the Any type. - Multiple entries allow providers to price - different storage tiers independently. - gpu: - description: >- - Gpu is the offered price for GPU resources. When - nil, no explicit - GPU price is set. - type: object - properties: - denom: - type: string - amount: - type: string - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind specifies the type of network endpoint - being priced. Possible values: - - SHARED_HTTP (0): A Kubernetes Ingress endpoint. - - RANDOM_PORT (1): A Kubernetes NodePort endpoint. - - LEASED_IP (2): A dedicated leased IP endpoint. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - price: - description: >- - Price is the offered price per unit of this - endpoint kind, expressed as a + Example 1: Pack and unpack a message in C++. - DecCoin (decimal coin) to allow fractional - pricing. When nil, no explicit + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - price is set for this endpoint kind. - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - EndpointOfferPrice represents the price a - provider is offering for a specific + Example 2: Pack and unpack a message in Java. - kind of network endpoint. Providers may price - each endpoint kind differently + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - (e.g., a leased IP may cost more than a shared - HTTP ingress). This type is + Example 3: Pack and unpack a message in Python. - used as a repeated field within OfferPrices to - express per-kind endpoint + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - pricing in a bid. - description: >- - Endpoints is a list of per-kind endpoint prices. - Each entry corresponds to + Example 4: Pack and unpack a message in Go - a network endpoint kind (SHARED_HTTP, RANDOM_PORT, - or LEASED_IP) and its + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - associated price. Multiple entries allow providers - to price different + The pack methods provided by protobuf library will by default use - endpoint types independently. - description: >- - ResourceOffer describes resources that provider is - offering + 'type.googleapis.com/full.type.name' as the type URL and the unpack - for deployment. - description: ResourceOffer is a list of offers. - reclamation_window: - type: string - description: >- - reclamation_window is the reclamation window offered by this - provider. - escrow_account: - description: EscrowAccount represents the escrow account created for the Bid. - type: object - properties: - id: - type: object - properties: - scope: - type: string - enum: - - invalid - - deployment - - bid - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So - declaring dummy state. - - deployment: DeploymentActive denotes state for deployment active. - - bid: DeploymentClosed denotes state for deployment closed. - title: Scope is an enum which refers to the account scope - xid: - type: string - description: Account is the account identifier. - state: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns - the deployment. + methods only use the fully qualified type name after the last '/' - It is a string representing a valid bech32 account - address. + in the type URL, for example "foo.bar.com/x/y.z" will yield type + name "y.z". - Example: - "akash1..." - state: - description: State represents the current state of an Account. - type: string - enum: - - invalid - - open - - closed - - overdrawn - default: invalid - transferred: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. + JSON - NOTE: The amount field is an Dec which implements the - custom method + ==== - signatures required by gogoproto. - description: Transferred total coins spent by this account. - settled_at: - type: string - format: int64 - description: >- - SettledAt represents the block height at which this - account was last settled. - funds: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Balance holds the unspent coin received from all - deposits with same denom + The JSON representation of an `Any` value uses the regular - DecCoin is not being used here as it does not support - negative values, + representation of the deserialized, embedded message, with an - and balance may go negative if account is overdrawn. - title: Funds holds the unspent coins received from all deposits - deposits: - type: array - items: - type: object - properties: - owner: - type: string - description: >- - Owner is the bech32 address of the depositor. + additional field `@type` which contains the type URL. Example: - It is a string representing a valid account - address. + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - Example: - "akash1..." - If depositor is same as the owner, then any - incoming coins are added to the Balance. + If the embedded message type is well-known and has a custom JSON - If depositor isn't same as the owner, then any - incoming coins are added to the Funds. - height: - type: string - format: int64 - title: >- - Height blockchain height at which deposit was - created - source: - title: Source indicated origination of the funds - type: string - enum: - - invalid - - balance - - grant - default: invalid - description: >- - Source is an enum which lists source of funds for - deployment deposit. + representation, that representation will be embedded adding a field - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - balance: SourceBalance denotes account balance as source of funds - - grant: SourceGrant denotes authz grants as source of funds - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. + `value` which holds the custom JSON in addition to the `@type` + field. Example (for message [google.protobuf.Duration][]): - NOTE: The amount field is an Dec which implements - the custom method + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + accountNumber: + type: string + format: uint64 + sequence: + type: string + format: uint64 + description: >- + BaseAccount defines a base account type. It contains all the necessary + fields - signatures required by gogoproto. - description: Depositor stores state of a deposit. - description: Account stores state for an escrow account. - title: Account - description: QueryBidResponse is response type for the Query/Bid RPC method. - description: Bids is a list of deployment bids. - pagination: - description: Pagination contains the information about response pagination. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + for basic account functionality. Any custom account type should extend + this - was set, its value is undefined otherwise - title: QueryBidsResponse is response type for the Query/Bids RPC method - akash.market.v1beta5.QueryLeaseResponse: + type for additional functionality (e.g. vesting). + cosmos.auth.v1beta1.Bech32PrefixResponse: type: object properties: - lease: - description: Lease holds the lease for a deployment. + bech32Prefix: + type: string + description: Bech32PrefixResponse is the response type for Bech32Prefix rpc method. + cosmos.auth.v1beta1.Params: + type: object + properties: + maxMemoCharacters: + type: string + format: uint64 + txSigLimit: + type: string + format: uint64 + txSizeCostPerByte: + type: string + format: uint64 + sigVerifyCostEd25519: + type: string + format: uint64 + sigVerifyCostSecp256k1: + type: string + format: uint64 + description: Params defines the parameters for the auth module. + cosmos.auth.v1beta1.QueryAccountAddressByIDResponse: + type: object + properties: + accountAddress: + type: string + title: >- + QueryAccountAddressByIDResponse is the response type for + AccountAddressByID rpc method + cosmos.auth.v1beta1.QueryAccountInfoResponse: + type: object + properties: + info: + description: info is the account info which is represented by BaseAccount. type: object properties: - id: - description: Id is the unique identifier of the Lease. + address: + type: string + pubKey: type: object properties: - owner: + '@type': type: string description: >- - Owner is the account bech32 address of the user who owns the - deployment. + A URL/resource name that uniquely identifies the type of the + serialized - It is a string representing a valid bech32 account address. + protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must + represent - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric - identifier for the deployment. + the fully qualified name of the type (as in - It is used to differentiate deployments created by the same - owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier - for the group. + `path/google.protobuf.Duration`). The name should be in a + canonical form - It is used to differentiate groups created by the same owner - in a deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders associated - with a single deployment. + (e.g., leading "." is not accepted). - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - provider: - type: string - description: >- - Provider is the account bech32 address of the provider making - the bid. - It is a string representing a valid account bech32 address. + In practice, teams usually precompile into the binary all + types that they + expect it to use in the context of Any. However, for URLs + which use the - Example: - "akash1..." - bseq: - type: integer - format: int64 - description: >- - BSeq (bid sequence) distinguishes multiple bids associated - with a single deployment from same provider. - state: - description: State represents the state of the Lease. - type: string - enum: - - invalid - - active - - insufficient_funds - - closed - - reclaiming - default: invalid - price: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal amount. + scheme `http`, `https`, or no scheme, one can optionally set + up a type + server that maps type URLs to message definitions as follows: - NOTE: The amount field is an Dec which implements the custom - method - signatures required by gogoproto. - created_at: - type: string - format: int64 - description: CreatedAt is the block height at which the Lease was created. - closed_on: - type: string - format: int64 - description: ClosedOn is the block height at which the Lease was closed. - reason: - type: string - enum: - - lease_closed_invalid - - lease_closed_owner - - lease_closed_reason_unstable - - lease_closed_reason_decommission - - lease_closed_reason_unspecified - - lease_closed_reason_manifest_timeout - - lease_closed_reason_insufficient_funds - default: lease_closed_invalid - description: >- - - lease_closed_invalid: LeaseClosedReasonInvalid represents the - default zero value for LeaseClosedReason. + * If no scheme is provided, `https` is assumed. - This value indicates an uninitialized or invalid lease closure - reason and should not + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - be used - - lease_closed_owner: values between 1..9999 indicate owner‑initiated close - - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close - lease_closed_reason_unstable lease workloads have been unstable - - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned - - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason - - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received - - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close - title: LeaseClosedReason indicates reason bid was closed - reclamation: - description: >- - Reclamation holds reclamation configuration and state, if - applicable. + Note: this functionality is not currently available in the + official - Nil if reclamation is not configured for this lease. - type: object - properties: - window: - type: string - description: >- - window is the negotiated reclamation window duration (from the - winning bid). - started_at: - type: string - format: int64 - description: >- - started_at is the block height at which reclamation was - initiated. + protobuf release, and it is not used for type URLs beginning + with - Zero means reclamation has not been started yet. - deadline: - type: string - format: int64 - description: >- - deadline is the unix timestamp at which the reclamation window - expires. + type.googleapis.com. As of May 2023, there are no widely used + type server - Zero means reclamation has not been started yet. - reason: - type: string - enum: - - lease_closed_invalid - - lease_closed_owner - - lease_closed_reason_unstable - - lease_closed_reason_decommission - - lease_closed_reason_unspecified - - lease_closed_reason_manifest_timeout - - lease_closed_reason_insufficient_funds - default: lease_closed_invalid - description: >- - - lease_closed_invalid: LeaseClosedReasonInvalid represents - the default zero value for LeaseClosedReason. + implementations and no plans to implement one. - This value indicates an uninitialized or invalid lease closure - reason and should not - be used - - lease_closed_owner: values between 1..9999 indicate owner‑initiated close - - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close - lease_closed_reason_unstable lease workloads have been - unstable - - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned - - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason - - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received - - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close - title: LeaseClosedReason indicates reason bid was closed - escrow_payment: - description: EscrowPayment holds information about the Lease's fractional payment. - type: object - properties: - id: - type: object - properties: - aid: - type: object - properties: - scope: - type: string - enum: - - invalid - - deployment - - bid - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So - declaring dummy state. - - deployment: DeploymentActive denotes state for deployment active. - - bid: DeploymentClosed denotes state for deployment closed. - title: Scope is an enum which refers to the account scope - xid: - type: string - description: Account is the account identifier. - xid: - type: string - description: Payment is the payment identifier. - state: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + Schemes other than `http`, `https` (or the empty scheme) might + be - It is a string representing a valid bech32 account address. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + URL that describes the type of the serialized message. - Example: - "akash1..." - state: - description: State represents the state of the Payment. - type: string - enum: - - invalid - - open - - closed - - overdrawn - default: invalid - rate: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. + Protobuf library provides support to pack/unpack Any values in the + form - NOTE: The amount field is an Dec which implements the custom - method + of utility functions or additional generated methods of the Any + type. - signatures required by gogoproto. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. + Example 1: Pack and unpack a message in C++. - NOTE: The amount field is an Dec which implements the custom - method + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - signatures required by gogoproto. - unsettled: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. + Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - NOTE: The amount field is an Dec which implements the custom - method + Example 3: Pack and unpack a message in Python. - signatures required by gogoproto. - title: >- - Unsettled is the amount needed to settle payment if account is - overdrawn - withdrawn: - description: >- - Withdrawn corresponds to the amount of coins withdrawn by the - Payment. - type: object - properties: - denom: - type: string - amount: - type: string - description: Payment stores state for a payment. - title: Payment - title: QueryLeaseResponse is response type for the Query/Lease RPC method - akash.market.v1beta5.QueryLeasesResponse: - type: object - properties: - leases: - type: array - items: - type: object - properties: - lease: - description: Lease holds the lease for a deployment. - type: object - properties: - id: - description: Id is the unique identifier of the Lease. - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns - the deployment. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - It is a string representing a valid bech32 account - address. + Example 4: Pack and unpack a message in Go + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric - identifier for the deployment. + The pack methods provided by protobuf library will by default use - It is used to differentiate deployments created by the - same owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric - identifier for the group. + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - It is used to differentiate groups created by the same - owner in a deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders - associated with a single deployment. + methods only use the fully qualified type name after the last '/' - Oseq is incremented when a lease associated with an - existing deployment is closed, and a new order is - generated. - provider: - type: string - description: >- - Provider is the account bech32 address of the provider - making the bid. + in the type URL, for example "foo.bar.com/x/y.z" will yield type - It is a string representing a valid account bech32 - address. + name "y.z". - Example: - "akash1..." - bseq: - type: integer - format: int64 - description: >- - BSeq (bid sequence) distinguishes multiple bids - associated with a single deployment from same provider. - state: - description: State represents the state of the Lease. - type: string - enum: - - invalid - - active - - insufficient_funds - - closed - - reclaiming - default: invalid - price: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. + JSON + ==== - NOTE: The amount field is an Dec which implements the custom - method + The JSON representation of an `Any` value uses the regular - signatures required by gogoproto. - created_at: - type: string - format: int64 - description: >- - CreatedAt is the block height at which the Lease was - created. - closed_on: - type: string - format: int64 - description: ClosedOn is the block height at which the Lease was closed. - reason: - type: string - enum: - - lease_closed_invalid - - lease_closed_owner - - lease_closed_reason_unstable - - lease_closed_reason_decommission - - lease_closed_reason_unspecified - - lease_closed_reason_manifest_timeout - - lease_closed_reason_insufficient_funds - default: lease_closed_invalid - description: >- - - lease_closed_invalid: LeaseClosedReasonInvalid represents - the default zero value for LeaseClosedReason. + representation of the deserialized, embedded message, with an - This value indicates an uninitialized or invalid lease - closure reason and should not + additional field `@type` which contains the type URL. Example: - be used - - lease_closed_owner: values between 1..9999 indicate owner‑initiated close - - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close - lease_closed_reason_unstable lease workloads have been - unstable - - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned - - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason - - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received - - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close - title: LeaseClosedReason indicates reason bid was closed - reclamation: - description: >- - Reclamation holds reclamation configuration and state, if - applicable. + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - Nil if reclamation is not configured for this lease. - type: object - properties: - window: - type: string - description: >- - window is the negotiated reclamation window duration - (from the winning bid). - started_at: - type: string - format: int64 - description: >- - started_at is the block height at which reclamation was - initiated. + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - Zero means reclamation has not been started yet. - deadline: - type: string - format: int64 - description: >- - deadline is the unix timestamp at which the reclamation - window expires. + If the embedded message type is well-known and has a custom JSON - Zero means reclamation has not been started yet. - reason: - type: string - enum: - - lease_closed_invalid - - lease_closed_owner - - lease_closed_reason_unstable - - lease_closed_reason_decommission - - lease_closed_reason_unspecified - - lease_closed_reason_manifest_timeout - - lease_closed_reason_insufficient_funds - default: lease_closed_invalid - description: >- - - lease_closed_invalid: LeaseClosedReasonInvalid - represents the default zero value for LeaseClosedReason. + representation, that representation will be embedded adding a + field - This value indicates an uninitialized or invalid lease - closure reason and should not + `value` which holds the custom JSON in addition to the `@type` - be used - - lease_closed_owner: values between 1..9999 indicate owner‑initiated close - - lease_closed_reason_unstable: values between 10000..19999 are indicating provider initiated close - lease_closed_reason_unstable lease workloads have been - unstable - - lease_closed_reason_decommission: lease_closed_reason_decommission provider is being decommissioned - - lease_closed_reason_unspecified: lease_closed_reason_unspecified provider did not specify reason - - lease_closed_reason_manifest_timeout: lease_closed_reason_manifest_timeout provider closed leases due to manifest not received - - lease_closed_reason_insufficient_funds: values between 20000..29999 indicate network‑initiated close - title: LeaseClosedReason indicates reason bid was closed - escrow_payment: - description: >- - EscrowPayment holds information about the Lease's fractional - payment. - type: object - properties: - id: - type: object - properties: - aid: - type: object - properties: - scope: - type: string - enum: - - invalid - - deployment - - bid - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So - declaring dummy state. - - deployment: DeploymentActive denotes state for deployment active. - - bid: DeploymentClosed denotes state for deployment closed. - title: Scope is an enum which refers to the account scope - xid: - type: string - description: Account is the account identifier. - xid: - type: string - description: Payment is the payment identifier. - state: - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns - the deployment. + field. Example (for message [google.protobuf.Duration][]): - It is a string representing a valid bech32 account - address. + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + accountNumber: + type: string + format: uint64 + sequence: + type: string + format: uint64 + description: QueryAccountInfoResponse is the Query/AccountInfo response type. + cosmos.auth.v1beta1.QueryAccountResponse: + type: object + properties: + account: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + protocol buffer message. This string must contain at least - Example: - "akash1..." - state: - description: State represents the state of the Payment. - type: string - enum: - - invalid - - open - - closed - - overdrawn - default: invalid - rate: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. + one "/" character. The last segment of the URL's path must + represent + the fully qualified name of the type (as in - NOTE: The amount field is an Dec which implements the - custom method + `path/google.protobuf.Duration`). The name should be in a + canonical form - signatures required by gogoproto. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. + (e.g., leading "." is not accepted). - NOTE: The amount field is an Dec which implements the - custom method + In practice, teams usually precompile into the binary all types + that they - signatures required by gogoproto. - unsettled: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. + expect it to use in the context of Any. However, for URLs which + use the + scheme `http`, `https`, or no scheme, one can optionally set up a + type - NOTE: The amount field is an Dec which implements the - custom method + server that maps type URLs to message definitions as follows: - signatures required by gogoproto. - title: >- - Unsettled is the amount needed to settle payment if - account is overdrawn - withdrawn: - description: >- - Withdrawn corresponds to the amount of coins withdrawn - by the Payment. - type: object - properties: - denom: - type: string - amount: - type: string - description: Payment stores state for a payment. - title: Payment - title: QueryLeaseResponse is response type for the Query/Lease RPC method - description: Leases is a list of Lease. + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. As of May 2023, there are no widely used type + server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryAccountResponse is the response type for the Query/Account RPC + method. + cosmos.auth.v1beta1.QueryAccountsResponse: + type: object + properties: + accounts: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. As of May 2023, there are no widely used + type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: accounts are the existing accounts pagination: - description: Pagination contains the information about response pagination. + description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -53554,1635 +54698,565 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: QueryLeasesResponse is response type for the Query/Leases RPC method. - akash.market.v1beta5.QueryOrderResponse: + description: >- + QueryAccountsResponse is the response type for the Query/Accounts RPC + method. + cosmos.auth.v1beta1.QueryModuleAccountByNameResponse: type: object properties: - order: - description: Order represents a market order. + account: type: object properties: - id: - description: Id is the unique identifier of the order. - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - It is a string representing a valid bech32 account address. + protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must + represent - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric - identifier for the deployment. + the fully qualified name of the type (as in - It is used to differentiate deployments created by the same - owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier - for the group. + `path/google.protobuf.Duration`). The name should be in a + canonical form - It is used to differentiate groups created by the same owner - in a deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders associated - with a single deployment. + (e.g., leading "." is not accepted). - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - state: - type: string - enum: - - invalid - - open - - active - - closed - default: invalid - description: |- - State is an enum which refers to state of order. - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - open: OrderOpen denotes state for order open. - - active: OrderMatched denotes state for order matched. - - closed: OrderClosed denotes state for order lost. - spec: - type: object - properties: - name: - type: string - description: Name is the name of the group. - requirements: - description: >- - Requirements specifies the placement requirements for the - group. + In practice, teams usually precompile into the binary all types + that they - This determines where the resources in the group can be - deployed. - type: object - properties: - signed_by: - description: >- - SignedBy holds the list of keys that tenants expect to - have signatures from. - type: object - properties: - all_of: - type: array - items: - type: string - description: >- - AllOf indicates all keys in this list must have signed - attributes. - any_of: - type: array - items: - type: string - description: >- - AnyOf means that at least one of the keys from the - list must have signed attributes. - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: >- - Attribute represents an arbitrary attribute key-value - pair. - description: >- - Attribute holds the list of attributes tenant expects from - the provider. - resources: - type: array - items: - type: object - properties: - resource: - description: Resource holds the amount of resources. - type: object - properties: - id: - type: integer - format: int64 - description: Id is a unique identifier for the resources. - cpu: - description: >- - CPU resources available, including the architecture, - number of cores and other details. + expect it to use in the context of Any. However, for URLs which + use the - This field is optional and can be empty if no CPU - resources are available. - type: object - properties: - units: - description: >- - Units of the CPU, which represents the number of - CPUs available. + scheme `http`, `https`, or no scheme, one can optionally set up a + type - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes holds a list of key-value attributes - that describe the GPU, such as its model, memory - and interface. + server that maps type URLs to message definitions as follows: - This field is required and must be a list of - `Attribute` messages. - memory: - description: >- - Memory resources available, including the quantity - and attributes. - This field is optional and can be empty if no memory - resources are available. - type: object - properties: - quantity: - description: >- - Quantity of memory available, which represents - the amount of memory in bytes. + * If no scheme is provided, `https` is assumed. - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the memory, such as its - type and speed. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - This field is required and must be a list of - Attribute key-values. - storage: - type: array - items: - type: object - properties: - name: - type: string - description: >- - Name holds an arbitrary name for the storage - resource. - quantity: - description: >- - Quantity of storage available, which - represents the amount of memory in bytes. + Note: this functionality is not currently available in the + official - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the storage. + protobuf release, and it is not used for type URLs beginning with - This field is required and must be a list of - Attribute key-values. - description: >- - Storage stores resource quantity and storage - attributes. - description: >- - Storage resources available, including the quantity - and attributes. + type.googleapis.com. As of May 2023, there are no widely used type + server - This field is optional and can be empty if no - storage resources are available. - gpu: - description: >- - GPU resources available, including the type, - architecture and other details. + implementations and no plans to implement one. - This field is optional and can be empty if no GPU - resources are available. - type: object - properties: - units: - description: >- - The resource value of the GPU, which represents - the number of GPUs available. - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is implemented - when the lease is deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: >- - SequenceNumber represents a sequence number - for the Endpoint. - description: >- - Endpoint describes a publicly accessible IP - service. - title: Endpoint resources available - title: >- - Resources describes all available resources types for - deployment/node etc + Schemes other than `http`, `https` (or the empty scheme) might be - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - description: >- - Count corresponds to the amount of replicas to run of - the resources. - price: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + URL that describes the type of the serialized message. - NOTE: The amount field is an Dec which implements the - custom method - signatures required by gogoproto. - description: >- - ResourceUnit extends Resources and adds Count along with the - Price. - description: >- - Resources is a list containing the resource units allocated to - the group. + Protobuf library provides support to pack/unpack Any values in the + form - Each ResourceUnit defines the specific resources (e.g., CPU, - memory) assigned. - description: >- - GroupSpec defines a specification for a group in a deployment on - the network. + of utility functions or additional generated methods of the Any type. - This includes attributes like the group name, placement - requirements, and resource units. - created_at: - type: string - format: int64 - reclamation: - description: >- - reclamation is the deployment-level reclamation requirement, - propagated to the order. - Nil means the deployment does not require reclamation. - type: object - properties: - min_window: - type: string - description: >- - min_window is the minimum reclamation window the tenant - requires. - description: QueryOrderResponse is response type for the Query/Order RPC method. - akash.market.v1beta5.QueryOrdersResponse: + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryModuleAccountByNameResponse is the response type for the + Query/ModuleAccountByName RPC method. + cosmos.auth.v1beta1.QueryModuleAccountsResponse: type: object properties: - orders: + accounts: type: array items: type: object properties: - id: - description: Id is the unique identifier of the order. - type: object - properties: - owner: - type: string - description: >- - Owner is the account bech32 address of the user who owns the - deployment. + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - It is a string representing a valid bech32 account address. + protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must + represent - Example: - "akash1..." - dseq: - type: string - format: uint64 - description: >- - Dseq (deployment sequence number) is a unique numeric - identifier for the deployment. + the fully qualified name of the type (as in - It is used to differentiate deployments created by the same - owner. - gseq: - type: integer - format: int64 - description: >- - Gseq (group sequence number) is a unique numeric identifier - for the group. + `path/google.protobuf.Duration`). The name should be in a + canonical form - It is used to differentiate groups created by the same owner - in a deployment. - oseq: - type: integer - format: int64 - description: >- - Oseq (order sequence) distinguishes multiple orders - associated with a single deployment. + (e.g., leading "." is not accepted). - Oseq is incremented when a lease associated with an existing - deployment is closed, and a new order is generated. - state: - type: string - enum: - - invalid - - open - - active - - closed - default: invalid - description: |- - State is an enum which refers to state of order. - - invalid: Prefix should start with 0 in enum. So declaring dummy state. - - open: OrderOpen denotes state for order open. - - active: OrderMatched denotes state for order matched. - - closed: OrderClosed denotes state for order lost. - spec: - type: object - properties: - name: - type: string - description: Name is the name of the group. - requirements: - description: >- - Requirements specifies the placement requirements for the - group. + In practice, teams usually precompile into the binary all types + that they - This determines where the resources in the group can be - deployed. - type: object - properties: - signed_by: - description: >- - SignedBy holds the list of keys that tenants expect to - have signatures from. - type: object - properties: - all_of: - type: array - items: - type: string - description: >- - AllOf indicates all keys in this list must have - signed attributes. - any_of: - type: array - items: - type: string - description: >- - AnyOf means that at least one of the keys from the - list must have signed attributes. - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: >- - Attribute represents an arbitrary attribute key-value - pair. - description: >- - Attribute holds the list of attributes tenant expects - from the provider. - resources: - type: array - items: - type: object - properties: - resource: - description: Resource holds the amount of resources. - type: object - properties: - id: - type: integer - format: int64 - description: Id is a unique identifier for the resources. - cpu: - description: >- - CPU resources available, including the - architecture, number of cores and other details. + expect it to use in the context of Any. However, for URLs which + use the - This field is optional and can be empty if no CPU - resources are available. - type: object - properties: - units: - description: >- - Units of the CPU, which represents the number - of CPUs available. + scheme `http`, `https`, or no scheme, one can optionally set up + a type - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes holds a list of key-value - attributes that describe the GPU, such as its - model, memory and interface. + server that maps type URLs to message definitions as follows: - This field is required and must be a list of - `Attribute` messages. - memory: - description: >- - Memory resources available, including the quantity - and attributes. - This field is optional and can be empty if no - memory resources are available. - type: object - properties: - quantity: - description: >- - Quantity of memory available, which represents - the amount of memory in bytes. + * If no scheme is provided, `https` is assumed. - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - description: >- - Attributes that describe the memory, such as - its type and speed. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - This field is required and must be a list of - Attribute key-values. - storage: - type: array - items: - type: object - properties: - name: - type: string - description: >- - Name holds an arbitrary name for the storage - resource. - quantity: - description: >- - Quantity of storage available, which - represents the amount of memory in bytes. + Note: this functionality is not currently available in the + official - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary - attribute key-value pair. - description: >- - Attributes that describe the storage. + protobuf release, and it is not used for type URLs beginning + with - This field is required and must be a list of - Attribute key-values. - description: >- - Storage stores resource quantity and storage - attributes. - description: >- - Storage resources available, including the - quantity and attributes. + type.googleapis.com. As of May 2023, there are no widely used + type server - This field is optional and can be empty if no - storage resources are available. - gpu: - description: >- - GPU resources available, including the type, - architecture and other details. + implementations and no plans to implement one. - This field is optional and can be empty if no GPU - resources are available. - type: object - properties: - units: - description: >- - The resource value of the GPU, which - represents the number of GPUs available. - This field is required and must be a - non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", - "x86_64", etc.). - description: >- - Attribute represents an arbitrary attribute - key-value pair. - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is - implemented when the lease is deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: >- - SequenceNumber represents a sequence number - for the Endpoint. - description: >- - Endpoint describes a publicly accessible IP - service. - title: Endpoint resources available - title: >- - Resources describes all available resources types for - deployment/node etc + Schemes other than `http`, `https` (or the empty scheme) might + be - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - description: >- - Count corresponds to the amount of replicas to run of - the resources. - price: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + URL that describes the type of the serialized message. - NOTE: The amount field is an Dec which implements the - custom method - signatures required by gogoproto. - description: >- - ResourceUnit extends Resources and adds Count along with - the Price. - description: >- - Resources is a list containing the resource units allocated - to the group. + Protobuf library provides support to pack/unpack Any values in the + form - Each ResourceUnit defines the specific resources (e.g., CPU, - memory) assigned. - description: >- - GroupSpec defines a specification for a group in a deployment on - the network. + of utility functions or additional generated methods of the Any + type. - This includes attributes like the group name, placement - requirements, and resource units. - created_at: - type: string - format: int64 - reclamation: - description: >- - reclamation is the deployment-level reclamation requirement, - propagated to the order. - Nil means the deployment does not require reclamation. - type: object - properties: - min_window: - type: string - description: >- - min_window is the minimum reclamation window the tenant - requires. - description: Order stores orderID, state of order and other details. - description: Orders is a list of market orders. - pagination: - description: Pagination contains the information about response pagination. + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryModuleAccountsResponse is the response type for the + Query/ModuleAccounts RPC method. + cosmos.auth.v1beta1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. type: object properties: - next_key: + maxMemoCharacters: type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + format: uint64 + txSigLimit: type: string format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: QueryOrdersResponse is response type for the Query/Orders RPC method - akash.market.v1beta5.QueryParamsResponse: + txSizeCostPerByte: + type: string + format: uint64 + sigVerifyCostEd25519: + type: string + format: uint64 + sigVerifyCostSecp256k1: + type: string + format: uint64 + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.authz.v1beta1.Grant: type: object properties: - params: - description: params defines the parameters of the module. + authorization: type: object properties: - bid_min_deposit: - title: |- - BidMinDeposit is a parameter for the minimum deposit on a Bid. - Deprecated: use BidMinDeposits - type: object - properties: - denom: - type: string - amount: - type: string + '@type': + type: string description: >- - Coin defines a token with a denomination and an amount. + A URL/resource name that uniquely identifies the type of the + serialized + protocol buffer message. This string must contain at least - NOTE: The amount field is an Int which implements the custom - method + one "/" character. The last segment of the URL's path must + represent - signatures required by gogoproto. - order_max_bids: - type: integer - format: int64 - description: >- - OrderMaxBids is a parameter for the maximum number of bids in an - order. - bid_min_deposits: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in a + canonical form - NOTE: The amount field is an Int which implements the custom - method + (e.g., leading "." is not accepted). - signatures required by gogoproto. - description: >- - BidMinDeposits is a parameter for the minimum deposits per denom - on a Bid. - min_reclamation_window: - type: string - description: >- - min_reclamation_window is the minimum reclamation window duration - allowed. - max_reclamation_window: - type: string - description: >- - max_reclamation_window is the maximum reclamation window duration - allowed. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - akash.market.v1beta5.ResourceOffer: - type: object - properties: - resources: - description: Resources holds information about bid resources. - type: object - properties: - id: - type: integer - format: int64 - description: Id is a unique identifier for the resources. - cpu: - description: >- - CPU resources available, including the architecture, number of - cores and other details. - This field is optional and can be empty if no CPU resources are - available. - type: object - properties: - units: - description: >- - Units of the CPU, which represents the number of CPUs - available. + In practice, teams usually precompile into the binary all types + that they - This field is required and must be a non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: >- - Attributes holds a list of key-value attributes that describe - the GPU, such as its model, memory and interface. + expect it to use in the context of Any. However, for URLs which + use the - This field is required and must be a list of `Attribute` - messages. - memory: - description: >- - Memory resources available, including the quantity and attributes. + scheme `http`, `https`, or no scheme, one can optionally set up a + type - This field is optional and can be empty if no memory resources are - available. - type: object - properties: - quantity: - description: >- - Quantity of memory available, which represents the amount of - memory in bytes. + server that maps type URLs to message definitions as follows: - This field is required and must be a non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: >- - Attributes that describe the memory, such as its type and - speed. - This field is required and must be a list of Attribute - key-values. - storage: - type: array - items: - type: object - properties: - name: - type: string - description: Name holds an arbitrary name for the storage resource. - quantity: - description: >- - Quantity of storage available, which represents the amount - of memory in bytes. + * If no scheme is provided, `https` is assumed. - This field is required and must be a non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: >- - Attribute represents an arbitrary attribute key-value - pair. - description: >- - Attributes that describe the storage. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - This field is required and must be a list of Attribute - key-values. - description: Storage stores resource quantity and storage attributes. - description: >- - Storage resources available, including the quantity and - attributes. + Note: this functionality is not currently available in the + official - This field is optional and can be empty if no storage resources - are available. - gpu: - description: >- - GPU resources available, including the type, architecture and - other details. + protobuf release, and it is not used for type URLs beginning with - This field is optional and can be empty if no GPU resources are - available. - type: object - properties: - units: - description: >- - The resource value of the GPU, which represents the number of - GPUs available. + type.googleapis.com. As of May 2023, there are no widely used type + server - This field is required and must be a non-negative integer. - type: object - properties: - val: - type: string - format: byte - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", - "cpu_architecture", etc.). - value: - type: string - description: >- - Value of the attribute (e.g., "us-west", "x86_64", - etc.). - description: Attribute represents an arbitrary attribute key-value pair. - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind describes how the endpoint is implemented when the - lease is deployed. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - sequence_number: - type: integer - format: int64 - description: >- - SequenceNumber represents a sequence number for the - Endpoint. - description: Endpoint describes a publicly accessible IP service. - title: Endpoint resources available - title: >- - Resources describes all available resources types for deployment/node - etc + implementations and no plans to implement one. - if field is nil resource is not present in the given data-structure - count: - type: integer - format: int64 - description: Count is the number of resources. - prices: + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} description: >- - Prices contains per-resource pricing details (CPU, memory, storage, - GPU, endpoints) for this offer. - type: object - properties: - cpu: - description: |- - Cpu is the offered price for CPU resources. When nil, no explicit - CPU price is set. - type: object - properties: - denom: - type: string - amount: - type: string - memory: - description: >- - Memory is the offered price for memory resources. When nil, no - explicit + `Any` contains an arbitrary serialized protocol buffer message along + with a - memory price is set. - type: object - properties: - denom: - type: string - amount: - type: string - storage: - type: array - items: - type: object - properties: - name: - type: string - description: >- - Name holds an arbitrary name for the storage class (e.g., - "default", "ssd", "hdd"). + URL that describes the type of the serialized message. - This must match a storage class name from the corresponding - resource specification. - price: - description: >- - Price is the offered price per unit of this storage class, - expressed as a - DecCoin (decimal coin) to allow fractional pricing. When - nil, no explicit + Protobuf library provides support to pack/unpack Any values in the + form - price is set for this storage class. - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - StorageOfferPrice represents the price a provider is offering - for a specific + of utility functions or additional generated methods of the Any type. - class of persistent storage. Providers may offer multiple - storage classes - (e.g., SSD, HDD, NVMe), each identified by name and priced - independently. + Example 1: Pack and unpack a message in C++. - This type is used as a repeated field within OfferPrices to - express + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - per-class storage pricing in a bid. - description: >- - Storage is a list of per-class storage prices. Each entry - corresponds to a + Example 2: Pack and unpack a message in Java. - named storage class (e.g., "default", "ssd") and its associated - price. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - Multiple entries allow providers to price different storage tiers - independently. - gpu: - description: |- - Gpu is the offered price for GPU resources. When nil, no explicit - GPU price is set. - type: object - properties: - denom: - type: string - amount: - type: string - endpoints: - type: array - items: - type: object - properties: - kind: - description: >- - Kind specifies the type of network endpoint being priced. - Possible values: - - SHARED_HTTP (0): A Kubernetes Ingress endpoint. - - RANDOM_PORT (1): A Kubernetes NodePort endpoint. - - LEASED_IP (2): A dedicated leased IP endpoint. - type: string - enum: - - SHARED_HTTP - - RANDOM_PORT - - LEASED_IP - default: SHARED_HTTP - price: - description: >- - Price is the offered price per unit of this endpoint kind, - expressed as a + Example 3: Pack and unpack a message in Python. - DecCoin (decimal coin) to allow fractional pricing. When - nil, no explicit + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - price is set for this endpoint kind. - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - EndpointOfferPrice represents the price a provider is offering - for a specific + Example 4: Pack and unpack a message in Go - kind of network endpoint. Providers may price each endpoint kind - differently + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - (e.g., a leased IP may cost more than a shared HTTP ingress). - This type is + The pack methods provided by protobuf library will by default use - used as a repeated field within OfferPrices to express per-kind - endpoint + 'type.googleapis.com/full.type.name' as the type URL and the unpack - pricing in a bid. - description: >- - Endpoints is a list of per-kind endpoint prices. Each entry - corresponds to + methods only use the fully qualified type name after the last '/' - a network endpoint kind (SHARED_HTTP, RANDOM_PORT, or LEASED_IP) - and its + in the type URL, for example "foo.bar.com/x/y.z" will yield type - associated price. Multiple entries allow providers to price - different + name "y.z". - endpoint types independently. - description: |- - ResourceOffer describes resources that provider is offering - for deployment. - akash.market.v1beta5.StorageOfferPrice: - type: object - properties: - name: - type: string - description: >- - Name holds an arbitrary name for the storage class (e.g., "default", - "ssd", "hdd"). - This must match a storage class name from the corresponding resource - specification. - price: - description: >- - Price is the offered price per unit of this storage class, expressed - as a + JSON - DecCoin (decimal coin) to allow fractional pricing. When nil, no - explicit + ==== - price is set for this storage class. - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - StorageOfferPrice represents the price a provider is offering for a - specific + The JSON representation of an `Any` value uses the regular - class of persistent storage. Providers may offer multiple storage classes + representation of the deserialized, embedded message, with an - (e.g., SSD, HDD, NVMe), each identified by name and priced independently. + additional field `@type` which contains the type URL. Example: - This type is used as a repeated field within OfferPrices to express + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - per-class storage pricing in a bid. - akash.market.v1beta5.MsgCloseBidResponse: - type: object - description: MsgCloseBidResponse defines the Msg/CloseBid response type. - akash.market.v1beta5.MsgCloseLeaseResponse: - type: object - description: MsgCloseLeaseResponse defines the Msg/CloseLease response type. - akash.market.v1beta5.MsgCreateBidResponse: - type: object - description: MsgCreateBidResponse defines the Msg/CreateBid response type. - akash.market.v1beta5.MsgCreateLeaseResponse: - type: object - description: MsgCreateLeaseResponse is the response from creating a lease. - akash.market.v1beta5.MsgLeaseStartReclaimResponse: - type: object - description: >- - MsgLeaseStartReclaimResponse is the response from starting lease - reclamation. - akash.market.v1beta5.MsgUpdateParamsResponse: - type: object - description: |- - MsgUpdateParamsResponse defines the response structure for executing a - MsgUpdateParams message. + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - Since: akash v1.0.0 - akash.market.v1beta5.MsgWithdrawLeaseResponse: - type: object - description: MsgWithdrawLeaseResponse defines the Msg/WithdrawLease response type. - akash.provider.v1beta4.Info: - type: object - properties: - email: - type: string - description: Email is the email address to contact the provider. - website: + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: type: string - description: Website is the URL to the landing page or socials of the provider. - description: Info contains information on the provider. - akash.provider.v1beta4.Provider: + format: date-time + title: >- + time when the grant will expire and will be pruned. If null, then the + grant + + doesn't have a time expiration (other conditions in `authorization` + + may apply to invalidate the grant) + description: |- + Grant gives permissions to execute + the provide method with expiration time. + cosmos.authz.v1beta1.GrantAuthorization: type: object properties: - owner: + granter: type: string - description: |- - Owner is the bech32 address of the account of the provider. - It is a string representing a valid account address. - - Example: - "akash1..." - host_uri: - type: string - description: >- - HostURI is the Uniform Resource Identifier for provider connection. - - This URI is used to directly connect to the provider to perform tasks - such as sending the manifest. - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: Key of the attribute (e.g., "region", "cpu_architecture", etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: Attributes is a list of arbitrary attribute key-value pairs. - info: - description: Info contains additional provider information. - type: object - properties: - email: - type: string - description: Email is the email address to contact the provider. - website: - type: string - description: Website is the URL to the landing page or socials of the provider. - description: >- - Provider stores owner and host details. - - Akash providers are entities that contribute computing resources to the - network. - - They can be individuals or organizations with underutilized computing - resources, such as data centers or personal servers. - - Providers participate in the network by running the Akash node software - and setting the price for their services. - - Users can then choose a provider based on factors such as cost, - performance, and location. - akash.provider.v1beta4.QueryProviderResponse: - type: object - properties: - provider: - type: object - properties: - owner: - type: string - description: |- - Owner is the bech32 address of the account of the provider. - It is a string representing a valid account address. - - Example: - "akash1..." - host_uri: - type: string - description: >- - HostURI is the Uniform Resource Identifier for provider - connection. - - This URI is used to directly connect to the provider to perform - tasks such as sending the manifest. - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", "cpu_architecture", - etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: Attributes is a list of arbitrary attribute key-value pairs. - info: - description: Info contains additional provider information. - type: object - properties: - email: - type: string - description: Email is the email address to contact the provider. - website: - type: string - description: >- - Website is the URL to the landing page or socials of the - provider. - description: >- - Provider stores owner and host details. - - Akash providers are entities that contribute computing resources to - the network. - - They can be individuals or organizations with underutilized computing - resources, such as data centers or personal servers. - - Providers participate in the network by running the Akash node - software and setting the price for their services. - - Users can then choose a provider based on factors such as cost, - performance, and location. - description: QueryProviderResponse is response type for the Query/Provider RPC method. - akash.provider.v1beta4.QueryProvidersResponse: - type: object - properties: - providers: - type: array - items: - type: object - properties: - owner: - type: string - description: |- - Owner is the bech32 address of the account of the provider. - It is a string representing a valid account address. - - Example: - "akash1..." - host_uri: - type: string - description: >- - HostURI is the Uniform Resource Identifier for provider - connection. - - This URI is used to directly connect to the provider to perform - tasks such as sending the manifest. - attributes: - type: array - items: - type: object - properties: - key: - type: string - description: >- - Key of the attribute (e.g., "region", "cpu_architecture", - etc.). - value: - type: string - description: Value of the attribute (e.g., "us-west", "x86_64", etc.). - description: Attribute represents an arbitrary attribute key-value pair. - description: Attributes is a list of arbitrary attribute key-value pairs. - info: - description: Info contains additional provider information. - type: object - properties: - email: - type: string - description: Email is the email address to contact the provider. - website: - type: string - description: >- - Website is the URL to the landing page or socials of the - provider. - description: >- - Provider stores owner and host details. - - Akash providers are entities that contribute computing resources to - the network. - - They can be individuals or organizations with underutilized - computing resources, such as data centers or personal servers. - - Providers participate in the network by running the Akash node - software and setting the price for their services. - - Users can then choose a provider based on factors such as cost, - performance, and location. - description: Providers is a list of providers on the network. - pagination: - description: Pagination contains the information about response pagination. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: QueryProvidersResponse is response type for the Query/Providers RPC method - akash.take.v1.DenomTakeRate: - type: object - properties: - denom: - type: string - description: Denom is the denomination of the take rate (uakt, usdc, etc.). - rate: - type: integer - format: int64 - description: Rate is the value of the take rate. - description: DenomTakeRate describes take rate for specified denom. - akash.take.v1.Params: - type: object - properties: - denom_take_rates: - type: array - items: - type: object - properties: - denom: - type: string - description: Denom is the denomination of the take rate (uakt, usdc, etc.). - rate: - type: integer - format: int64 - description: Rate is the value of the take rate. - description: DenomTakeRate describes take rate for specified denom. - description: DenomTakeRates is a list of configured take rates. - default_take_rate: - type: integer - format: int64 - description: DefaultTakeRate holds the default take rate. - description: Params defines the parameters for the x/take package. - akash.take.v1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - denom_take_rates: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - Denom is the denomination of the take rate (uakt, usdc, - etc.). - rate: - type: integer - format: int64 - description: Rate is the value of the take rate. - description: DenomTakeRate describes take rate for specified denom. - description: DenomTakeRates is a list of configured take rates. - default_take_rate: - type: integer - format: int64 - description: DefaultTakeRate holds the default take rate. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - akash.take.v1.MsgUpdateParamsResponse: - type: object - description: |- - MsgUpdateParamsResponse defines the response structure for executing a - MsgUpdateParams message. - - Since: akash v1.0.0 - cosmos.auth.v1beta1.AddressBytesToStringResponse: - type: object - properties: - address_string: - type: string - description: >- - AddressBytesToStringResponse is the response type for AddressString rpc - method. - - - Since: cosmos-sdk 0.46 - cosmos.auth.v1beta1.AddressStringToBytesResponse: - type: object - properties: - address_bytes: - type: string - format: byte - description: >- - AddressStringToBytesResponse is the response type for AddressBytes rpc - method. - - - Since: cosmos-sdk 0.46 - cosmos.auth.v1beta1.BaseAccount: - type: object - properties: - address: + grantee: type: string - pub_key: + authorization: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -55228,18 +55302,16 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used type + server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -55276,7 +55348,7 @@ definitions: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -55286,7 +55358,7 @@ definitions: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -55312,6 +55384,7 @@ definitions: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -55343,594 +55416,647 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - account_number: - type: string - format: uint64 - sequence: + expiration: type: string - format: uint64 - description: >- - BaseAccount defines a base account type. It contains all the necessary - fields - - for basic account functionality. Any custom account type should extend - this + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses of the grantee + and granter. - type for additional functionality (e.g. vesting). - cosmos.auth.v1beta1.Bech32PrefixResponse: + It is used in genesis.proto and query.proto + cosmos.authz.v1beta1.QueryGranteeGrantsResponse: type: object properties: - bech32_prefix: - type: string - description: |- - Bech32PrefixResponse is the response type for Bech32Prefix rpc method. + grants: + type: array + items: + type: object + properties: + granter: + type: string + grantee: + type: string + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - Since: cosmos-sdk 0.46 - cosmos.auth.v1beta1.Params: - type: object - properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: - type: string - format: uint64 - sig_verify_cost_secp256k1: - type: string - format: uint64 - description: Params defines the parameters for the auth module. - cosmos.auth.v1beta1.QueryAccountAddressByIDResponse: - type: object - properties: - account_address: - type: string - description: 'Since: cosmos-sdk 0.46.2' - title: >- - QueryAccountAddressByIDResponse is the response type for - AccountAddressByID rpc method - cosmos.auth.v1beta1.QueryAccountInfoResponse: - type: object - properties: - info: - description: info is the account info which is represented by BaseAccount. - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + protocol buffer message. This string must contain at least - protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must + represent - one "/" character. The last segment of the URL's path must - represent + the fully qualified name of the type (as in - the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in a + canonical form - `path/google.protobuf.Duration`). The name should be in a - canonical form + (e.g., leading "." is not accepted). - (e.g., leading "." is not accepted). + In practice, teams usually precompile into the binary all + types that they - In practice, teams usually precompile into the binary all - types that they + expect it to use in the context of Any. However, for URLs + which use the - expect it to use in the context of Any. However, for URLs - which use the + scheme `http`, `https`, or no scheme, one can optionally set + up a type - scheme `http`, `https`, or no scheme, one can optionally set - up a type + server that maps type URLs to message definitions as + follows: - server that maps type URLs to message definitions as follows: + * If no scheme is provided, `https` is assumed. - * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + Note: this functionality is not currently available in the + official - Note: this functionality is not currently available in the - official + protobuf release, and it is not used for type URLs beginning + with - protobuf release, and it is not used for type URLs beginning - with + type.googleapis.com. As of May 2023, there are no widely + used type server - type.googleapis.com. + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) might - be + Schemes other than `http`, `https` (or the empty scheme) + might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the - form + Protobuf library provides support to pack/unpack Any values in + the form - of utility functions or additional generated methods of the Any - type. + of utility functions or additional generated methods of the Any + type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } ... - } + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by default use + The pack methods provided by protobuf library will by default + use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - methods only use the fully qualified type name after the last '/' + methods only use the fully qualified type name after the last + '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type + in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + name "y.z". - JSON + JSON + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + additional field `@type` which contains the type URL. Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom JSON + If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a - field + representation, that representation will be embedded adding a + field - `value` which holds the custom JSON in addition to the `@type` + `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - account_number: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses of the + grantee and granter. + + It is used in genesis.proto and query.proto + description: grants is a list of grants granted to the grantee. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + nextKey: type: string - format: uint64 - sequence: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string format: uint64 - description: |- - QueryAccountInfoResponse is the Query/AccountInfo response type. + title: >- + total is total number of results available if + PageRequest.count_total - Since: cosmos-sdk 0.47 - cosmos.auth.v1beta1.QueryAccountResponse: + was set, its value is undefined otherwise + description: >- + QueryGranteeGrantsResponse is the response type for the + Query/GranteeGrants RPC method. + cosmos.authz.v1beta1.QueryGranterGrantsResponse: type: object properties: - account: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + grants: + type: array + items: + type: object + properties: + granter: + type: string + grantee: + type: string + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all types - that they + In practice, teams usually precompile into the binary all + types that they - expect it to use in the context of Any. However, for URLs which - use the + expect it to use in the context of Any. However, for URLs + which use the - scheme `http`, `https`, or no scheme, one can optionally set up a - type + scheme `http`, `https`, or no scheme, one can optionally set + up a type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning with + protobuf release, and it is not used for type URLs beginning + with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + Schemes other than `http`, `https` (or the empty scheme) + might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the - form - of utility functions or additional generated methods of the Any type. + Protobuf library provides support to pack/unpack Any values in + the form + of utility functions or additional generated methods of the Any + type. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Example 1: Pack and unpack a message in C++. - Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Example 2: Pack and unpack a message in Java. - Example 3: Pack and unpack a message in Python. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Example 3: Pack and unpack a message in Python. - Example 4: Pack and unpack a message in Go + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Example 4: Pack and unpack a message in Go - The pack methods provided by protobuf library will by default use + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - 'type.googleapis.com/full.type.name' as the type URL and the unpack + The pack methods provided by protobuf library will by default + use - methods only use the fully qualified type name after the last '/' + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - in the type URL, for example "foo.bar.com/x/y.z" will yield type + methods only use the fully qualified type name after the last + '/' - name "y.z". + in the type URL, for example "foo.bar.com/x/y.z" will yield type + name "y.z". - JSON + JSON - The JSON representation of an `Any` value uses the regular + ==== - representation of the deserialized, embedded message, with an + The JSON representation of an `Any` value uses the regular - additional field `@type` which contains the type URL. Example: + representation of the deserialized, embedded message, with an - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + additional field `@type` which contains the type URL. Example: - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - If the embedded message type is well-known and has a custom JSON + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - representation, that representation will be embedded adding a field + If the embedded message type is well-known and has a custom JSON - `value` which holds the custom JSON in addition to the `@type` + representation, that representation will be embedded adding a + field - field. Example (for message [google.protobuf.Duration][]): + `value` which holds the custom JSON in addition to the `@type` - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + GrantAuthorization extends a grant with both the addresses of the + grantee and granter. + + It is used in genesis.proto and query.proto + description: grants is a list of grants granted by the granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise description: >- - QueryAccountResponse is the response type for the Query/Account RPC - method. - cosmos.auth.v1beta1.QueryAccountsResponse: + QueryGranterGrantsResponse is the response type for the + Query/GranterGrants RPC method. + cosmos.authz.v1beta1.QueryGrantsResponse: type: object properties: - accounts: + grants: type: array items: type: object properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + authorization: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all types - that they + In practice, teams usually precompile into the binary all + types that they - expect it to use in the context of Any. However, for URLs which - use the + expect it to use in the context of Any. However, for URLs + which use the - scheme `http`, `https`, or no scheme, one can optionally set up - a type + scheme `http`, `https`, or no scheme, one can optionally set + up a type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning - with + protobuf release, and it is not used for type URLs beginning + with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) might - be - used with implementation specific semantics. - value: - type: string - format: byte + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + `Any` contains an arbitrary serialized protocol buffer message + along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the - form + Protobuf library provides support to pack/unpack Any values in + the form - of utility functions or additional generated methods of the Any - type. + of utility functions or additional generated methods of the Any + type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by default use + The pack methods provided by protobuf library will by default + use - 'type.googleapis.com/full.type.name' as the type URL and the unpack + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - methods only use the fully qualified type name after the last '/' + methods only use the fully qualified type name after the last + '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type + in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + name "y.z". - JSON + JSON + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + additional field `@type` which contains the type URL. Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom JSON + If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a field + representation, that representation will be embedded adding a + field - `value` which holds the custom JSON in addition to the `@type` + `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: accounts are the existing accounts + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + expiration: + type: string + format: date-time + title: >- + time when the grant will expire and will be pruned. If null, + then the grant + + doesn't have a time expiration (other conditions in + `authorization` + + may apply to invalidate the grant) + description: |- + Grant gives permissions to execute + the provide method with expiration time. + description: authorizations is a list of grants granted for grantee by granter. pagination: - description: pagination defines the pagination in the response. + description: pagination defines an pagination for the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -55946,382 +56072,8 @@ definitions: was set, its value is undefined otherwise description: >- - QueryAccountsResponse is the response type for the Query/Accounts RPC + QueryGrantsResponse is the response type for the Query/Authorizations RPC method. - - - Since: cosmos-sdk 0.43 - cosmos.auth.v1beta1.QueryModuleAccountByNameResponse: - type: object - properties: - account: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryModuleAccountByNameResponse is the response type for the - Query/ModuleAccountByName RPC method. - cosmos.auth.v1beta1.QueryModuleAccountsResponse: - type: object - properties: - accounts: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryModuleAccountsResponse is the response type for the - Query/ModuleAccounts RPC method. - - - Since: cosmos-sdk 0.46 - cosmos.auth.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: - type: string - format: uint64 - sig_verify_cost_secp256k1: - type: string - format: uint64 - description: QueryParamsResponse is the response type for the Query/Params RPC method. cosmos.bank.v1beta1.DenomOwner: type: object properties: @@ -56329,23 +56081,17 @@ definitions: type: string description: address defines the address that owns a particular denomination. balance: + description: balance is the balance of the denominated coin for an account. type: object properties: denom: type: string amount: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. description: |- DenomOwner defines structure representing an account that owns or holds a particular denominated token. It contains the account address and account balance of the denominated token. - - Since: cosmos-sdk 0.46 cosmos.bank.v1beta1.DenomUnit: type: object properties: @@ -56379,7 +56125,7 @@ definitions: properties: description: type: string - denom_units: + denomUnits: type: array items: type: object @@ -56425,7 +56171,6 @@ definitions: displayed in clients. name: type: string - description: 'Since: cosmos-sdk 0.43' title: 'name defines the name of the token (eg: Cosmos Atom)' symbol: type: string @@ -56434,34 +56179,25 @@ definitions: can be the same as the display. - - - Since: cosmos-sdk 0.43 uri: type: string description: >- URI to a document (on or off-chain) that contains additional information. Optional. - - - Since: cosmos-sdk 0.46 - uri_hash: + uriHash: type: string description: >- URIHash is a sha256 hash of a document pointed by URI. It's used to verify that the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 description: |- Metadata represents a struct that describes a basic token. cosmos.bank.v1beta1.Params: type: object properties: - send_enabled: + sendEnabled: type: array items: type: object @@ -56487,7 +56223,7 @@ definitions: As of cosmos-sdk 0.47, this only exists for backwards compatibility of genesis files. - default_send_enabled: + defaultSendEnabled: type: boolean description: Params defines the parameters for the bank module. cosmos.bank.v1beta1.QueryAllBalancesResponse: @@ -56512,7 +56248,7 @@ definitions: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -56536,17 +56272,13 @@ definitions: type: object properties: balance: + description: balance is the balance of the coin. type: object properties: denom: type: string amount: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. description: >- QueryBalanceResponse is the response type for the Query/Balance RPC method. @@ -56554,11 +56286,14 @@ definitions: type: object properties: metadata: + description: >- + metadata describes and provides all the client information for the + requested token. type: object properties: description: type: string - denom_units: + denomUnits: type: array items: type: object @@ -56604,7 +56339,6 @@ definitions: displayed in clients. name: type: string - description: 'Since: cosmos-sdk 0.43' title: 'name defines the name of the token (eg: Cosmos Atom)' symbol: type: string @@ -56613,30 +56347,18 @@ definitions: This can be the same as the display. - - - Since: cosmos-sdk 0.43 uri: type: string description: >- URI to a document (on or off-chain) that contains additional information. Optional. - - - Since: cosmos-sdk 0.46 - uri_hash: + uriHash: type: string description: >- URIHash is a sha256 hash of a document pointed by URI. It's used to verify that the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. description: >- QueryDenomMetadataByQueryStringResponse is the response type for the Query/DenomMetadata RPC @@ -56647,11 +56369,14 @@ definitions: type: object properties: metadata: + description: >- + metadata describes and provides all the client information for the + requested token. type: object properties: description: type: string - denom_units: + denomUnits: type: array items: type: object @@ -56697,7 +56422,6 @@ definitions: displayed in clients. name: type: string - description: 'Since: cosmos-sdk 0.43' title: 'name defines the name of the token (eg: Cosmos Atom)' symbol: type: string @@ -56706,30 +56430,18 @@ definitions: This can be the same as the display. - - - Since: cosmos-sdk 0.43 uri: type: string description: >- URI to a document (on or off-chain) that contains additional information. Optional. - - - Since: cosmos-sdk 0.46 - uri_hash: + uriHash: type: string description: >- URIHash is a sha256 hash of a document pointed by URI. It's used to verify that the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. description: >- QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC @@ -56738,7 +56450,7 @@ definitions: cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse: type: object properties: - denom_owners: + denomOwners: type: array items: type: object @@ -56747,20 +56459,13 @@ definitions: type: string description: address defines the address that owns a particular denomination. balance: + description: balance is the balance of the denominated coin for an account. type: object properties: denom: type: string amount: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. description: >- DenomOwner defines structure representing an account that owns or holds a @@ -56769,14 +56474,11 @@ definitions: account balance of the denominated token. - - - Since: cosmos-sdk 0.46 pagination: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -56794,13 +56496,10 @@ definitions: description: >- QueryDenomOwnersByQueryResponse defines the RPC response of a DenomOwnersByQuery RPC query. - - - Since: cosmos-sdk 0.50.3 cosmos.bank.v1beta1.QueryDenomOwnersResponse: type: object properties: - denom_owners: + denomOwners: type: array items: type: object @@ -56809,36 +56508,26 @@ definitions: type: string description: address defines the address that owns a particular denomination. balance: + description: balance is the balance of the denominated coin for an account. type: object properties: denom: type: string amount: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - DenomOwner defines structure representing an account that owns or - holds a + description: >- + DenomOwner defines structure representing an account that owns or + holds a particular denominated token. It contains the account address and account balance of the denominated token. - - - Since: cosmos-sdk 0.46 pagination: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -56856,9 +56545,6 @@ definitions: description: >- QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC query. - - - Since: cosmos-sdk 0.46 cosmos.bank.v1beta1.QueryDenomsMetadataResponse: type: object properties: @@ -56869,7 +56555,7 @@ definitions: properties: description: type: string - denom_units: + denomUnits: type: array items: type: object @@ -56915,7 +56601,6 @@ definitions: displayed in clients. name: type: string - description: 'Since: cosmos-sdk 0.43' title: 'name defines the name of the token (eg: Cosmos Atom)' symbol: type: string @@ -56924,27 +56609,18 @@ definitions: ATOM). This can be the same as the display. - - - Since: cosmos-sdk 0.43 uri: type: string description: >- URI to a document (on or off-chain) that contains additional information. Optional. - - - Since: cosmos-sdk 0.46 - uri_hash: + uriHash: type: string description: >- URIHash is a sha256 hash of a document pointed by URI. It's used to verify that the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 description: |- Metadata represents a struct that describes a basic token. @@ -56955,7 +56631,7 @@ definitions: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -56982,7 +56658,7 @@ definitions: description: params provides the parameters of the bank module. type: object properties: - send_enabled: + sendEnabled: type: array items: type: object @@ -57008,7 +56684,7 @@ definitions: As of cosmos-sdk 0.47, this only exists for backwards compatibility of genesis files. - default_send_enabled: + defaultSendEnabled: type: boolean description: >- QueryParamsResponse defines the response type for querying x/bank @@ -57016,7 +56692,7 @@ definitions: cosmos.bank.v1beta1.QuerySendEnabledResponse: type: object properties: - send_enabled: + sendEnabled: type: array items: type: object @@ -57036,7 +56712,7 @@ definitions: populated if the denoms field in the request is empty. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -57051,33 +56727,23 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: |- - QuerySendEnabledResponse defines the RPC response of a SendEnable query. - - Since: cosmos-sdk 0.47 + description: QuerySendEnabledResponse defines the RPC response of a SendEnable query. cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse: type: object properties: balance: + description: balance is the balance of the coin. type: object properties: denom: type: string amount: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. description: >- QuerySpendableBalanceByDenomResponse defines the gRPC response structure for querying an account's spendable balance for a specific denom. - - - Since: cosmos-sdk 0.47 cosmos.bank.v1beta1.QuerySpendableBalancesResponse: type: object properties: @@ -57100,7 +56766,7 @@ definitions: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -57120,24 +56786,17 @@ definitions: querying an account's spendable balances. - - - Since: cosmos-sdk 0.46 cosmos.bank.v1beta1.QuerySupplyOfResponse: type: object properties: amount: + description: amount is the supply of the coin. type: object properties: denom: type: string amount: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. description: >- QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC method. @@ -57160,13 +56819,10 @@ definitions: signatures required by gogoproto. title: supply is the supply of the coins pagination: - description: |- - pagination defines the pagination in the response. - - Since: cosmos-sdk 0.43 + description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -57196,6 +56852,43 @@ definitions: description: |- SendEnabled maps coin denom to a send_enabled status (whether a denom is sendable). + cosmos.base.node.v1beta1.ConfigResponse: + type: object + properties: + minimumGasPrice: + type: string + pruningKeepRecent: + type: string + pruningInterval: + type: string + haltHeight: + type: string + format: uint64 + description: ConfigResponse defines the response structure for the Config gRPC query. + cosmos.base.node.v1beta1.StatusResponse: + type: object + properties: + earliestStoreHeight: + type: string + format: uint64 + title: earliest block height available in the store + height: + type: string + format: uint64 + title: current block height + timestamp: + type: string + format: date-time + title: block height timestamp + appHash: + type: string + format: byte + title: app hash of the current block + validatorHash: + type: string + format: byte + title: validator hash provided by the consensus header + description: StateResponse defines the response structure for the status of a node. cosmos.base.tendermint.v1beta1.ABCIQueryResponse: type: object properties: @@ -57204,8 +56897,10 @@ definitions: format: int64 log: type: string + title: nondeterministic info: type: string + title: nondeterministic index: type: string format: int64 @@ -57215,7 +56910,7 @@ definitions: value: type: string format: byte - proof_ops: + proofOps: type: object properties: ops: @@ -57286,7 +56981,7 @@ definitions: application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -57294,13 +56989,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -57311,34 +57006,42 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: root hash of all results from the txs from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string description: >- proposer_address is the original block proposer address, formatted @@ -57348,6 +57051,9 @@ definitions: to a Bech32 string for better UX. + + + original proposer of the block description: Header defines the structure of a Tendermint block header. data: type: object @@ -57373,10 +57079,10 @@ definitions: items: type: object properties: - duplicate_vote_evidence: + duplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -57399,13 +57105,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -57416,13 +57122,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -57441,7 +57148,7 @@ definitions: valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -57456,7 +57163,7 @@ definitions: validators for consensus. - vote_b: + voteB: type: object properties: type: @@ -57479,13 +57186,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -57496,13 +57203,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -57521,7 +57229,7 @@ definitions: valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -57536,10 +57244,10 @@ definitions: validators for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -57548,13 +57256,13 @@ definitions: description: >- DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. - light_client_attack_evidence: + lightClientAttackEvidence: type: object properties: - conflicting_block: + conflictingBlock: type: object properties: - signed_header: + signedHeader: type: object properties: header: @@ -57578,7 +57286,7 @@ definitions: the rules of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -57586,13 +57294,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -57603,38 +57311,49 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs from + the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. commit: type: object @@ -57645,13 +57364,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -57667,7 +57386,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -57675,10 +57394,16 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -57693,7 +57418,7 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. - validator_set: + validatorSet: type: object properties: validators: @@ -57704,7 +57429,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -57716,10 +57441,10 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 proposer: @@ -57728,7 +57453,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -57740,19 +57465,19 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 - common_height: + commonHeight: type: string format: int64 - byzantine_validators: + byzantineValidators: type: array items: type: object @@ -57760,7 +57485,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -57772,13 +57497,13 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 timestamp: @@ -57787,7 +57512,7 @@ definitions: description: >- LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. - last_commit: + lastCommit: type: object properties: height: @@ -57796,13 +57521,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -57818,7 +57543,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -57826,8 +57551,13 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -57846,13 +57576,13 @@ definitions: cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse: type: object properties: - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -57888,7 +57618,7 @@ definitions: application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -57896,13 +57626,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -57913,36 +57643,45 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: root hash of all results from the txs from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. data: type: object @@ -57968,10 +57707,10 @@ definitions: items: type: object properties: - duplicate_vote_evidence: + duplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -57994,13 +57733,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -58011,13 +57750,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -58036,7 +57776,7 @@ definitions: valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -58051,7 +57791,7 @@ definitions: validators for consensus. - vote_b: + voteB: type: object properties: type: @@ -58074,13 +57814,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -58091,13 +57831,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -58116,7 +57857,7 @@ definitions: valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -58131,10 +57872,10 @@ definitions: validators for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -58143,13 +57884,13 @@ definitions: description: >- DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. - light_client_attack_evidence: + lightClientAttackEvidence: type: object properties: - conflicting_block: + conflictingBlock: type: object properties: - signed_header: + signedHeader: type: object properties: header: @@ -58174,7 +57915,7 @@ definitions: and the rules of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -58182,13 +57923,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -58199,38 +57940,51 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs + from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -58243,13 +57997,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -58265,7 +58019,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -58273,10 +58027,16 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -58291,7 +58051,7 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. - validator_set: + validatorSet: type: object properties: validators: @@ -58302,7 +58062,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -58314,10 +58074,10 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 proposer: @@ -58326,7 +58086,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -58338,19 +58098,19 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 - common_height: + commonHeight: type: string format: int64 - byzantine_validators: + byzantineValidators: type: array items: type: object @@ -58358,7 +58118,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -58370,13 +58130,13 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 timestamp: @@ -58385,7 +58145,7 @@ definitions: description: >- LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. - last_commit: + lastCommit: type: object properties: height: @@ -58394,13 +58154,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -58416,7 +58176,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -58424,8 +58184,13 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -58438,8 +58203,7 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. - sdk_block: - title: 'Since: cosmos-sdk 0.47' + sdkBlock: type: object properties: header: @@ -58463,7 +58227,7 @@ definitions: application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -58471,13 +58235,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -58488,34 +58252,42 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: root hash of all results from the txs from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string description: >- proposer_address is the original block proposer address, @@ -58525,6 +58297,9 @@ definitions: convert it to a Bech32 string for better UX. + + + original proposer of the block description: Header defines the structure of a Tendermint block header. data: type: object @@ -58550,10 +58325,10 @@ definitions: items: type: object properties: - duplicate_vote_evidence: + duplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -58576,13 +58351,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -58593,13 +58368,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -58618,7 +58394,7 @@ definitions: valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -58633,7 +58409,7 @@ definitions: validators for consensus. - vote_b: + voteB: type: object properties: type: @@ -58656,13 +58432,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -58673,13 +58449,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -58698,7 +58475,7 @@ definitions: valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -58713,10 +58490,10 @@ definitions: validators for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -58725,13 +58502,13 @@ definitions: description: >- DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. - light_client_attack_evidence: + lightClientAttackEvidence: type: object properties: - conflicting_block: + conflictingBlock: type: object properties: - signed_header: + signedHeader: type: object properties: header: @@ -58756,7 +58533,7 @@ definitions: and the rules of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -58764,13 +58541,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -58781,38 +58558,51 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs + from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -58825,13 +58615,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -58847,7 +58637,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -58855,10 +58645,16 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -58873,7 +58669,7 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. - validator_set: + validatorSet: type: object properties: validators: @@ -58884,7 +58680,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -58896,10 +58692,10 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 proposer: @@ -58908,7 +58704,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -58920,19 +58716,19 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 - common_height: + commonHeight: type: string format: int64 - byzantine_validators: + byzantineValidators: type: array items: type: object @@ -58940,7 +58736,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -58952,13 +58748,13 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 timestamp: @@ -58967,7 +58763,7 @@ definitions: description: >- LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. - last_commit: + lastCommit: type: object properties: height: @@ -58976,13 +58772,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -58998,7 +58794,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -59006,8 +58802,13 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -59029,13 +58830,13 @@ definitions: cosmos.base.tendermint.v1beta1.GetLatestBlockResponse: type: object properties: - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -59071,7 +58872,7 @@ definitions: application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -59079,13 +58880,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -59096,36 +58897,45 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: root hash of all results from the txs from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. data: type: object @@ -59151,10 +58961,10 @@ definitions: items: type: object properties: - duplicate_vote_evidence: + duplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -59177,13 +58987,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -59194,13 +59004,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -59219,7 +59030,7 @@ definitions: valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -59234,7 +59045,7 @@ definitions: validators for consensus. - vote_b: + voteB: type: object properties: type: @@ -59257,13 +59068,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -59274,13 +59085,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -59299,7 +59111,7 @@ definitions: valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -59314,10 +59126,10 @@ definitions: validators for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -59326,13 +59138,13 @@ definitions: description: >- DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. - light_client_attack_evidence: + lightClientAttackEvidence: type: object properties: - conflicting_block: + conflictingBlock: type: object properties: - signed_header: + signedHeader: type: object properties: header: @@ -59357,7 +59169,7 @@ definitions: and the rules of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -59365,13 +59177,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -59382,38 +59194,51 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs + from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -59426,13 +59251,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -59448,7 +59273,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -59456,10 +59281,16 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -59474,7 +59305,7 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. - validator_set: + validatorSet: type: object properties: validators: @@ -59485,7 +59316,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -59497,10 +59328,10 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 proposer: @@ -59509,7 +59340,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -59521,19 +59352,19 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 - common_height: + commonHeight: type: string format: int64 - byzantine_validators: + byzantineValidators: type: array items: type: object @@ -59541,7 +59372,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -59553,13 +59384,13 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 timestamp: @@ -59568,7 +59399,7 @@ definitions: description: >- LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. - last_commit: + lastCommit: type: object properties: height: @@ -59577,13 +59408,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -59599,7 +59430,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -59607,8 +59438,13 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -59621,8 +59457,7 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. - sdk_block: - title: 'Since: cosmos-sdk 0.47' + sdkBlock: type: object properties: header: @@ -59646,7 +59481,7 @@ definitions: application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -59654,13 +59489,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -59671,34 +59506,42 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: root hash of all results from the txs from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string description: >- proposer_address is the original block proposer address, @@ -59708,6 +59551,9 @@ definitions: convert it to a Bech32 string for better UX. + + + original proposer of the block description: Header defines the structure of a Tendermint block header. data: type: object @@ -59733,10 +59579,10 @@ definitions: items: type: object properties: - duplicate_vote_evidence: + duplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -59759,13 +59605,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -59776,13 +59622,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -59801,7 +59648,7 @@ definitions: valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -59816,7 +59663,7 @@ definitions: validators for consensus. - vote_b: + voteB: type: object properties: type: @@ -59839,13 +59686,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -59856,13 +59703,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -59881,7 +59729,7 @@ definitions: valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -59896,10 +59744,10 @@ definitions: validators for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -59908,13 +59756,13 @@ definitions: description: >- DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. - light_client_attack_evidence: + lightClientAttackEvidence: type: object properties: - conflicting_block: + conflictingBlock: type: object properties: - signed_header: + signedHeader: type: object properties: header: @@ -59939,7 +59787,7 @@ definitions: and the rules of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -59947,13 +59795,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -59964,38 +59812,51 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: >- + commit from validators from the last + block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs + from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: >- Header defines the structure of a block header. @@ -60008,13 +59869,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -60030,7 +59891,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -60038,10 +59899,16 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -60056,7 +59923,7 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. - validator_set: + validatorSet: type: object properties: validators: @@ -60067,7 +59934,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -60079,10 +59946,10 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 proposer: @@ -60091,7 +59958,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -60103,19 +59970,19 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 - common_height: + commonHeight: type: string format: int64 - byzantine_validators: + byzantineValidators: type: array items: type: object @@ -60123,7 +59990,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -60135,13 +60002,13 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 timestamp: @@ -60150,7 +60017,7 @@ definitions: description: >- LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. - last_commit: + lastCommit: type: object properties: height: @@ -60159,13 +60026,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -60181,7 +60048,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -60189,8 +60056,13 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -60212,7 +60084,7 @@ definitions: cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse: type: object properties: - block_height: + blockHeight: type: string format: int64 validators: @@ -60222,10 +60094,10 @@ definitions: properties: address: type: string - pub_key: + pubKey: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -60275,19 +60147,314 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + votingPower: + type: string + format: int64 + proposerPriority: + type: string + format: int64 + description: Validator is the type for the validator-set. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + GetLatestValidatorSetResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. + cosmos.base.tendermint.v1beta1.GetNodeInfoResponse: + type: object + properties: + defaultNodeInfo: + type: object + properties: + protocolVersion: + type: object + properties: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 + defaultNodeId: + type: string + listenAddr: + type: string + network: + type: string + version: + type: string + channels: + type: string + format: byte + moniker: + type: string + other: + type: object + properties: + txIndex: + type: string + rpcAddress: + type: string + applicationVersion: + type: object + properties: + name: + type: string + appName: + type: string + version: + type: string + gitCommit: + type: string + buildTags: + type: string + goVersion: + type: string + buildDeps: + type: array + items: + type: object + properties: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmosSdkVersion: + type: string + description: VersionInfo is the type for the GetNodeInfoResponse message. + description: >- + GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC + method. + cosmos.base.tendermint.v1beta1.GetSyncingResponse: + type: object + properties: + syncing: + type: boolean + description: >- + GetSyncingResponse is the response type for the Query/GetSyncing RPC + method. + cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse: + type: object + properties: + blockHeight: + type: string + format: int64 + validators: + type: array + items: + type: object + properties: + address: + type: string + pubKey: + type: object + properties: + '@type': type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the above - specified type. + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -60325,7 +60492,7 @@ definitions: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -60335,7 +60502,7 @@ definitions: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -60364,6 +60531,7 @@ definitions: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -60396,10 +60564,10 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 description: Validator is the type for the validator-set. @@ -60407,306 +60575,7 @@ definitions: description: pagination defines an pagination for the response. type: object properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - GetLatestValidatorSetResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - cosmos.base.tendermint.v1beta1.GetNodeInfoResponse: - type: object - properties: - default_node_info: - type: object - properties: - protocol_version: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - application_version: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: - type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - description: >- - GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC - method. - cosmos.base.tendermint.v1beta1.GetSyncingResponse: - type: object - properties: - syncing: - type: boolean - description: >- - GetSyncingResponse is the response type for the Query/GetSyncing RPC - method. - cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse: - type: object - properties: - block_height: - type: string - format: int64 - validators: - type: array - items: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: + nextKey: type: string format: byte description: |- @@ -60745,7 +60614,7 @@ definitions: application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -60753,13 +60622,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -60770,34 +60639,42 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: root hash of all results from the txs from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string description: >- proposer_address is the original block proposer address, formatted as @@ -60807,6 +60684,9 @@ definitions: a Bech32 string for better UX. + + + original proposer of the block description: Header defines the structure of a Tendermint block header. cosmos.base.tendermint.v1beta1.Module: type: object @@ -60883,10 +60763,10 @@ definitions: properties: address: type: string - pub_key: + pubKey: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -60932,18 +60812,16 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used type + server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -60980,7 +60858,7 @@ definitions: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -60990,7 +60868,7 @@ definitions: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -61016,6 +60894,7 @@ definitions: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -61047,10 +60926,10 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 description: Validator is the type for the validator-set. @@ -61059,17 +60938,17 @@ definitions: properties: name: type: string - app_name: + appName: type: string version: type: string - git_commit: + gitCommit: type: string - build_tags: + buildTags: type: string - go_version: + goVersion: type: string - build_deps: + buildDeps: type: array items: type: object @@ -61084,9 +60963,8 @@ definitions: type: string title: checksum title: Module is the type for VersionInfo - cosmos_sdk_version: + cosmosSdkVersion: type: string - title: 'Since: cosmos-sdk 0.43' description: VersionInfo is the type for the GetNodeInfoResponse message. tendermint.crypto.PublicKey: type: object @@ -61101,7 +60979,7 @@ definitions: tendermint.p2p.DefaultNodeInfo: type: object properties: - protocol_version: + protocolVersion: type: object properties: p2p: @@ -61113,9 +60991,9 @@ definitions: app: type: string format: uint64 - default_node_id: + defaultNodeId: type: string - listen_addr: + listenAddr: type: string network: type: string @@ -61129,16 +61007,16 @@ definitions: other: type: object properties: - tx_index: + txIndex: type: string - rpc_address: + rpcAddress: type: string tendermint.p2p.DefaultNodeInfoOther: type: object properties: - tx_index: + txIndex: type: string - rpc_address: + rpcAddress: type: string tendermint.p2p.ProtocolVersion: type: object @@ -61176,7 +61054,7 @@ definitions: application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -61184,13 +61062,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -61201,36 +61079,45 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: root hash of all results from the txs from the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. data: type: object @@ -61256,10 +61143,10 @@ definitions: items: type: object properties: - duplicate_vote_evidence: + duplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -61282,13 +61169,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -61299,13 +61186,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -61324,7 +61212,7 @@ definitions: valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -61339,7 +61227,7 @@ definitions: validators for consensus. - vote_b: + voteB: type: object properties: type: @@ -61362,13 +61250,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -61379,13 +61267,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -61404,7 +61293,7 @@ definitions: valid for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -61419,10 +61308,10 @@ definitions: validators for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -61431,13 +61320,13 @@ definitions: description: >- DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. - light_client_attack_evidence: + lightClientAttackEvidence: type: object properties: - conflicting_block: + conflictingBlock: type: object properties: - signed_header: + signedHeader: type: object properties: header: @@ -61461,7 +61350,7 @@ definitions: the rules of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -61469,13 +61358,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -61486,38 +61375,49 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: >- hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs from + the previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. commit: type: object @@ -61528,13 +61428,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -61550,7 +61450,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -61558,10 +61458,16 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -61576,7 +61482,7 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. - validator_set: + validatorSet: type: object properties: validators: @@ -61587,7 +61493,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -61599,10 +61505,10 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 proposer: @@ -61611,7 +61517,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -61623,19 +61529,19 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 - common_height: + commonHeight: type: string format: int64 - byzantine_validators: + byzantineValidators: type: array items: type: object @@ -61643,7 +61549,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -61655,13 +61561,13 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 timestamp: @@ -61670,7 +61576,7 @@ definitions: description: >- LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. - last_commit: + lastCommit: type: object properties: height: @@ -61679,13 +61585,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -61701,7 +61607,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -61709,8 +61615,13 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -61729,7 +61640,7 @@ definitions: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -61748,6 +61659,11 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: BlockIdFlag indicates which BlockID the signature is for tendermint.types.Commit: type: object @@ -61758,13 +61674,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -61780,7 +61696,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -61788,8 +61704,13 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -61805,7 +61726,7 @@ definitions: tendermint.types.CommitSig: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -61813,8 +61734,13 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -61843,7 +61769,7 @@ definitions: tendermint.types.DuplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -61865,13 +61791,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -61882,13 +61808,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -61907,7 +61834,7 @@ definitions: precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: |- @@ -61917,7 +61844,7 @@ definitions: description: |- Vote represents a prevote or precommit vote from validators for consensus. - vote_b: + voteB: type: object properties: type: @@ -61939,13 +61866,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -61956,13 +61883,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -61981,7 +61909,7 @@ definitions: precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: |- @@ -61991,10 +61919,10 @@ definitions: description: |- Vote represents a prevote or precommit vote from validators for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -62006,10 +61934,10 @@ definitions: tendermint.types.Evidence: type: object properties: - duplicate_vote_evidence: + duplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -62031,13 +61959,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -62048,13 +61976,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -62073,7 +62002,7 @@ definitions: precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -62086,7 +62015,7 @@ definitions: description: |- Vote represents a prevote or precommit vote from validators for consensus. - vote_b: + voteB: type: object properties: type: @@ -62108,13 +62037,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -62125,13 +62054,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -62150,7 +62080,7 @@ definitions: precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -62163,10 +62093,10 @@ definitions: description: |- Vote represents a prevote or precommit vote from validators for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -62175,13 +62105,13 @@ definitions: description: >- DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. - light_client_attack_evidence: + lightClientAttackEvidence: type: object properties: - conflicting_block: + conflictingBlock: type: object properties: - signed_header: + signedHeader: type: object properties: header: @@ -62205,7 +62135,7 @@ definitions: of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -62213,13 +62143,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -62230,36 +62160,47 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs from the + previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. commit: type: object @@ -62270,13 +62211,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -62292,7 +62233,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -62300,10 +62241,16 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error + condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -62318,7 +62265,7 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. - validator_set: + validatorSet: type: object properties: validators: @@ -62329,7 +62276,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -62341,10 +62288,10 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 proposer: @@ -62353,7 +62300,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -62365,19 +62312,19 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 - common_height: + commonHeight: type: string format: int64 - byzantine_validators: + byzantineValidators: type: array items: type: object @@ -62385,7 +62332,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -62395,13 +62342,13 @@ definitions: type: string format: byte title: PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 timestamp: @@ -62418,10 +62365,10 @@ definitions: items: type: object properties: - duplicate_vote_evidence: + duplicateVoteEvidence: type: object properties: - vote_a: + voteA: type: object properties: type: @@ -62444,13 +62391,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -62461,13 +62408,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -62486,7 +62434,7 @@ definitions: for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -62501,7 +62449,7 @@ definitions: for consensus. - vote_b: + voteB: type: object properties: type: @@ -62524,13 +62472,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -62541,13 +62489,14 @@ definitions: format: byte title: PartsetHeader title: BlockID + description: zero if vote is nil. timestamp: type: string format: date-time - validator_address: + validatorAddress: type: string format: byte - validator_index: + validatorIndex: type: integer format: int32 signature: @@ -62566,7 +62515,7 @@ definitions: for precommit messages. - extension_signature: + extensionSignature: type: string format: byte description: >- @@ -62581,10 +62530,10 @@ definitions: for consensus. - total_voting_power: + totalVotingPower: type: string format: int64 - validator_power: + validatorPower: type: string format: int64 timestamp: @@ -62593,13 +62542,13 @@ definitions: description: >- DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. - light_client_attack_evidence: + lightClientAttackEvidence: type: object properties: - conflicting_block: + conflictingBlock: type: object properties: - signed_header: + signedHeader: type: object properties: header: @@ -62623,7 +62572,7 @@ definitions: rules of the application's state transition machine. - chain_id: + chainId: type: string height: type: string @@ -62631,13 +62580,13 @@ definitions: time: type: string format: date-time - last_block_id: + lastBlockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -62648,36 +62597,47 @@ definitions: format: byte title: PartsetHeader title: BlockID - last_commit_hash: + lastCommitHash: type: string format: byte + description: commit from validators from the last block title: hashes of block data - data_hash: + dataHash: type: string format: byte - validators_hash: + title: transactions + validatorsHash: type: string format: byte + description: validators for the current block title: hashes from the app output from the prev block - next_validators_hash: + nextValidatorsHash: type: string format: byte - consensus_hash: + title: validators for the next block + consensusHash: type: string format: byte - app_hash: + title: consensus params for current block + appHash: type: string format: byte - last_results_hash: + title: state after txs from the previous block + lastResultsHash: type: string format: byte - evidence_hash: + title: >- + root hash of all results from the txs from the + previous block + evidenceHash: type: string format: byte + description: evidence included in the block title: consensus info - proposer_address: + proposerAddress: type: string format: byte + title: original proposer of the block description: Header defines the structure of a block header. commit: type: object @@ -62688,13 +62648,13 @@ definitions: round: type: integer format: int32 - block_id: + blockId: type: object properties: hash: type: string format: byte - part_set_header: + partSetHeader: type: object properties: total: @@ -62710,7 +62670,7 @@ definitions: items: type: object properties: - block_id_flag: + blockIdFlag: type: string enum: - BLOCK_ID_FLAG_UNKNOWN @@ -62718,10 +62678,16 @@ definitions: - BLOCK_ID_FLAG_COMMIT - BLOCK_ID_FLAG_NIL default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil title: >- BlockIdFlag indicates which BlockID the signature is for - validator_address: + validatorAddress: type: string format: byte timestamp: @@ -62736,7 +62702,7 @@ definitions: description: >- Commit contains the evidence that a block was committed by a set of validators. - validator_set: + validatorSet: type: object properties: validators: @@ -62747,7 +62713,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -62759,10 +62725,10 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 proposer: @@ -62771,7 +62737,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -62783,19 +62749,19 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 - common_height: + commonHeight: type: string format: int64 - byzantine_validators: + byzantineValidators: type: array items: type: object @@ -62803,7 +62769,7 @@ definitions: address: type: string format: byte - pub_key: + pubKey: type: object properties: ed25519: @@ -62815,5620 +62781,969 @@ definitions: title: >- PublicKey defines the keys available for use with Validators - voting_power: + votingPower: type: string format: int64 - proposer_priority: + proposerPriority: type: string format: int64 - total_voting_power: + totalVotingPower: type: string format: int64 timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - tendermint.types.Header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in the - blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a block header. - tendermint.types.LightBlock: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlockID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - tendermint.types.LightClientAttackEvidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a - block in the blockchain, - - including all blockchain data structures and the rules of - the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlockID the signature is - for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a - set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of validators - attempting to mislead a light client. - tendermint.types.PartSetHeader: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - tendermint.types.SignedHeader: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in - the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlockID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.SignedMsgType: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - tendermint.types.Validator: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - tendermint.types.ValidatorSet: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - tendermint.types.Vote: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they participated in consensus for - the - - associated block. - extension: - type: string - format: byte - description: |- - Vote extension provided by the application. Only valid for precommit - messages. - extension_signature: - type: string - format: byte - description: |- - Vote extension signature by the validator if they participated in - consensus for the associated block. - Only valid for precommit messages. - description: |- - Vote represents a prevote or precommit vote from validators for - consensus. - tendermint.version.Consensus: - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in the - blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - cosmos.base.node.v1beta1.ConfigResponse: - type: object - properties: - minimum_gas_price: - type: string - pruning_keep_recent: - type: string - pruning_interval: - type: string - halt_height: - type: string - format: uint64 - description: ConfigResponse defines the response structure for the Config gRPC query. - cosmos.base.node.v1beta1.StatusResponse: - type: object - properties: - earliest_store_height: - type: string - format: uint64 - height: - type: string - format: uint64 - timestamp: - type: string - format: date-time - app_hash: - type: string - format: byte - validator_hash: - type: string - format: byte - description: StateResponse defines the response structure for the status of a node. - cosmos.distribution.v1beta1.DelegationDelegatorReward: - type: object - properties: - validator_address: - type: string - reward: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - DelegationDelegatorReward represents the properties - of a delegator's delegation reward. - cosmos.distribution.v1beta1.Params: - type: object - properties: - community_tax: - type: string - base_proposer_reward: - type: string - description: >- - Deprecated: The base_proposer_reward field is deprecated and is no - longer used - - in the x/distribution module's reward mechanism. - bonus_proposer_reward: - type: string - description: >- - Deprecated: The bonus_proposer_reward field is deprecated and is no - longer used - - in the x/distribution module's reward mechanism. - withdraw_addr_enabled: - type: boolean - description: Params defines the set of params for the distribution module. - cosmos.distribution.v1beta1.QueryCommunityPoolResponse: - type: object - properties: - pool: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: pool defines community pool's coins. - description: >- - QueryCommunityPoolResponse is the response type for the - Query/CommunityPool - - RPC method. - cosmos.distribution.v1beta1.QueryDelegationRewardsResponse: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: rewards defines the rewards accrued by a delegation. - description: |- - QueryDelegationRewardsResponse is the response type for the - Query/DelegationRewards RPC method. - cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - validator_address: - type: string - reward: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: |- - DelegationDelegatorReward represents the properties - of a delegator's delegation reward. - description: rewards defines all the rewards accrued by a delegator. - total: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: total defines the sum of all the rewards. - description: |- - QueryDelegationTotalRewardsResponse is the response type for the - Query/DelegationTotalRewards RPC method. - cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse: - type: object - properties: - validators: - type: array - items: - type: string - description: validators defines the validators a delegator is delegating for. - description: |- - QueryDelegatorValidatorsResponse is the response type for the - Query/DelegatorValidators RPC method. - cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse: - type: object - properties: - withdraw_address: - type: string - description: withdraw_address defines the delegator address to query for. - description: |- - QueryDelegatorWithdrawAddressResponse is the response type for the - Query/DelegatorWithdrawAddress RPC method. - cosmos.distribution.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - community_tax: - type: string - base_proposer_reward: - type: string - description: >- - Deprecated: The base_proposer_reward field is deprecated and is no - longer used - - in the x/distribution module's reward mechanism. - bonus_proposer_reward: - type: string - description: >- - Deprecated: The bonus_proposer_reward field is deprecated and is - no longer used - - in the x/distribution module's reward mechanism. - withdraw_addr_enabled: - type: boolean - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.distribution.v1beta1.QueryValidatorCommissionResponse: - type: object - properties: - commission: - description: commission defines the commission the validator received. - type: object - properties: - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - title: |- - QueryValidatorCommissionResponse is the response type for the - Query/ValidatorCommission RPC method - cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse: - type: object - properties: - operator_address: - type: string - description: operator_address defines the validator operator address. - self_bond_rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: self_bond_rewards defines the self delegations rewards. - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: commission defines the commission the validator received. - description: >- - QueryValidatorDistributionInfoResponse is the response type for the - Query/ValidatorDistributionInfo RPC method. - cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse: - type: object - properties: - rewards: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: >- - ValidatorOutstandingRewards represents outstanding (un-withdrawn) - rewards - - for a validator inexpensive to track, allows simple sanity checks. - description: |- - QueryValidatorOutstandingRewardsResponse is the response type for the - Query/ValidatorOutstandingRewards RPC method. - cosmos.distribution.v1beta1.QueryValidatorSlashesResponse: - type: object - properties: - slashes: - type: array - items: - type: object - properties: - validator_period: - type: string - format: uint64 - fraction: - type: string - description: |- - ValidatorSlashEvent represents a validator slash event. - Height is implicit within the store key. - This is needed to calculate appropriate amount of staking tokens - for delegations which are withdrawn after a slash has occurred. - description: slashes defines the slashes the validator received. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryValidatorSlashesResponse is the response type for the - Query/ValidatorSlashes RPC method. - cosmos.distribution.v1beta1.ValidatorAccumulatedCommission: - type: object - properties: - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - ValidatorAccumulatedCommission represents accumulated commission - for a validator kept as a running counter, can be withdrawn at any time. - cosmos.distribution.v1beta1.ValidatorOutstandingRewards: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards - for a validator inexpensive to track, allows simple sanity checks. - cosmos.distribution.v1beta1.ValidatorSlashEvent: - type: object - properties: - validator_period: - type: string - format: uint64 - fraction: - type: string - description: |- - ValidatorSlashEvent represents a validator slash event. - Height is implicit within the store key. - This is needed to calculate appropriate amount of staking tokens - for delegations which are withdrawn after a slash has occurred. - cosmos.evidence.v1beta1.QueryAllEvidenceResponse: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: evidence returns all evidences. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllEvidenceResponse is the response type for the Query/AllEvidence - RPC - - method. - cosmos.evidence.v1beta1.QueryEvidenceResponse: - type: object - properties: - evidence: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryEvidenceResponse is the response type for the Query/Evidence RPC - method. - cosmos.gov.v1beta1.Deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - depositor: - type: string - description: depositor defines the deposit addresses from the proposals. - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: amount to be deposited by depositor. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - cosmos.gov.v1beta1.DepositParams: - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - - months. - description: DepositParams defines the params for deposits on governance proposals. - cosmos.gov.v1beta1.Proposal: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - description: status defines the proposal status. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: |- - final_tally_result is the final tally result of the proposal. When - querying a proposal via gRPC, this field is not populated until the - proposal's voting period has ended. - type: object - properties: - 'yes': - type: string - description: yes is the number of yes votes on a proposal. - abstain: - type: string - description: abstain is the number of abstain votes on a proposal. - 'no': - type: string - description: no is the number of no votes on a proposal. - no_with_veto: - type: string - description: no_with_veto is the number of no with veto votes on a proposal. - submit_time: - type: string - format: date-time - description: submit_time is the time of proposal submission. - deposit_end_time: - type: string - format: date-time - description: deposit_end_time is the end time for deposition. - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: total_deposit is the total deposit on the proposal. - voting_start_time: - type: string - format: date-time - description: voting_start_time is the starting time to vote on a proposal. - voting_end_time: - type: string - format: date-time - description: voting_end_time is the end time of voting on a proposal. - description: Proposal defines the core field members of a governance proposal. - cosmos.gov.v1beta1.ProposalStatus: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - cosmos.gov.v1beta1.QueryDepositResponse: - type: object - properties: - deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - depositor: - type: string - description: depositor defines the deposit addresses from the proposals. - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: amount to be deposited by depositor. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - description: >- - QueryDepositResponse is the response type for the Query/Deposit RPC - method. - cosmos.gov.v1beta1.QueryDepositsResponse: - type: object - properties: - deposits: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - depositor: - type: string - description: depositor defines the deposit addresses from the proposals. - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: amount to be deposited by depositor. - description: >- - Deposit defines an amount deposited by an account address to an - active - - proposal. - description: deposits defines the requested deposits. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDepositsResponse is the response type for the Query/Deposits RPC - method. - cosmos.gov.v1beta1.QueryParamsResponse: - type: object - properties: - voting_params: - description: voting_params defines the parameters related to voting. - type: object - properties: - voting_period: - type: string - description: Duration of the voting period. - deposit_params: - description: deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - - months. - tally_params: - description: tally_params defines the parameters related to tally. - type: object - properties: - quorum: - type: string - format: byte - description: >- - Minimum percentage of total stake needed to vote for a result to - be - - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. Default - value: 0.5. - veto_threshold: - type: string - format: byte - description: >- - Minimum value of Veto votes to Total votes ratio for proposal to - be - - vetoed. Default value: 1/3. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.gov.v1beta1.QueryProposalResponse: - type: object - properties: - proposal: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - description: status defines the proposal status. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result is the final tally result of the proposal. When - - querying a proposal via gRPC, this field is not populated until - the - - proposal's voting period has ended. - type: object - properties: - 'yes': - type: string - description: yes is the number of yes votes on a proposal. - abstain: - type: string - description: abstain is the number of abstain votes on a proposal. - 'no': - type: string - description: no is the number of no votes on a proposal. - no_with_veto: - type: string - description: >- - no_with_veto is the number of no with veto votes on a - proposal. - submit_time: - type: string - format: date-time - description: submit_time is the time of proposal submission. - deposit_end_time: - type: string - format: date-time - description: deposit_end_time is the end time for deposition. - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: total_deposit is the total deposit on the proposal. - voting_start_time: - type: string - format: date-time - description: voting_start_time is the starting time to vote on a proposal. - voting_end_time: - type: string - format: date-time - description: voting_end_time is the end time of voting on a proposal. - description: Proposal defines the core field members of a governance proposal. - description: >- - QueryProposalResponse is the response type for the Query/Proposal RPC - method. - cosmos.gov.v1beta1.QueryProposalsResponse: - type: object - properties: - proposals: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - description: status defines the proposal status. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result is the final tally result of the proposal. - When - - querying a proposal via gRPC, this field is not populated until - the - - proposal's voting period has ended. - type: object - properties: - 'yes': - type: string - description: yes is the number of yes votes on a proposal. - abstain: - type: string - description: abstain is the number of abstain votes on a proposal. - 'no': - type: string - description: no is the number of no votes on a proposal. - no_with_veto: - type: string - description: >- - no_with_veto is the number of no with veto votes on a - proposal. - submit_time: - type: string - format: date-time - description: submit_time is the time of proposal submission. - deposit_end_time: - type: string - format: date-time - description: deposit_end_time is the end time for deposition. - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: total_deposit is the total deposit on the proposal. - voting_start_time: - type: string - format: date-time - description: voting_start_time is the starting time to vote on a proposal. - voting_end_time: - type: string - format: date-time - description: voting_end_time is the end time of voting on a proposal. - description: Proposal defines the core field members of a governance proposal. - description: proposals defines all the requested governance proposals. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryProposalsResponse is the response type for the Query/Proposals RPC - method. - cosmos.gov.v1beta1.QueryTallyResultResponse: - type: object - properties: - tally: - description: tally defines the requested tally. - type: object - properties: - 'yes': - type: string - description: yes is the number of yes votes on a proposal. - abstain: - type: string - description: abstain is the number of abstain votes on a proposal. - 'no': - type: string - description: no is the number of no votes on a proposal. - no_with_veto: - type: string - description: no_with_veto is the number of no with veto votes on a proposal. - description: >- - QueryTallyResultResponse is the response type for the Query/Tally RPC - method. - cosmos.gov.v1beta1.QueryVoteResponse: - type: object - properties: - vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - voter: - type: string - description: voter is the voter address of the proposal. - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is set in - queries - - if and only if `len(options) == 1` and that option has weight 1. - In all - - other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - description: >- - option defines the valid vote options, it must not contain - duplicate vote options. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - weight: - type: string - description: weight is the vote weight associated with the vote option. - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - description: |- - options is the weighted vote options. - - Since: cosmos-sdk 0.43 - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: QueryVoteResponse is the response type for the Query/Vote RPC method. - cosmos.gov.v1beta1.QueryVotesResponse: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - voter: - type: string - description: voter is the voter address of the proposal. - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is set - in queries - - if and only if `len(options) == 1` and that option has weight 1. - In all - - other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - description: >- - option defines the valid vote options, it must not contain - duplicate vote options. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - weight: - type: string - description: weight is the vote weight associated with the vote option. - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - description: |- - options is the weighted vote options. - - Since: cosmos-sdk 0.43 - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: votes defines the queried votes. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryVotesResponse is the response type for the Query/Votes RPC method. - cosmos.gov.v1beta1.TallyParams: - type: object - properties: - quorum: - type: string - format: byte - description: |- - Minimum percentage of total stake needed to vote for a result to be - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. Default value: - 0.5. - veto_threshold: - type: string - format: byte - description: |- - Minimum value of Veto votes to Total votes ratio for proposal to be - vetoed. Default value: 1/3. - description: TallyParams defines the params for tallying votes on governance proposals. - cosmos.gov.v1beta1.TallyResult: - type: object - properties: - 'yes': - type: string - description: yes is the number of yes votes on a proposal. - abstain: - type: string - description: abstain is the number of abstain votes on a proposal. - 'no': - type: string - description: no is the number of no votes on a proposal. - no_with_veto: - type: string - description: no_with_veto is the number of no with veto votes on a proposal. - description: TallyResult defines a standard tally for a governance proposal. - cosmos.gov.v1beta1.Vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - voter: - type: string - description: voter is the voter address of the proposal. - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is set in - queries - - if and only if `len(options) == 1` and that option has weight 1. In - all - - other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - description: >- - option defines the valid vote options, it must not contain - duplicate vote options. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - weight: - type: string - description: weight is the vote weight associated with the vote option. - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - description: |- - options is the weighted vote options. - - Since: cosmos-sdk 0.43 - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - cosmos.gov.v1beta1.VoteOption: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given governance - proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - cosmos.gov.v1beta1.VotingParams: - type: object - properties: - voting_period: - type: string - description: Duration of the voting period. - description: VotingParams defines the params for voting on governance proposals. - cosmos.gov.v1beta1.WeightedVoteOption: - type: object - properties: - option: - description: >- - option defines the valid vote options, it must not contain duplicate - vote options. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - weight: - type: string - description: weight is the vote weight associated with the vote option. - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - cosmos.gov.v1.Deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - depositor: - type: string - description: depositor defines the deposit addresses from the proposals. - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: amount to be deposited by depositor. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - cosmos.gov.v1.DepositParams: - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - - months. - description: DepositParams defines the params for deposits on governance proposals. - cosmos.gov.v1.Params: - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - - months. - voting_period: - type: string - description: Duration of the voting period. - quorum: - type: string - description: |- - Minimum percentage of total stake needed to vote for a result to be - considered valid. - threshold: - type: string - description: >- - Minimum proportion of Yes votes for proposal to pass. Default value: - 0.5. - veto_threshold: - type: string - description: |- - Minimum value of Veto votes to Total votes ratio for proposal to be - vetoed. Default value: 1/3. - min_initial_deposit_ratio: - type: string - description: >- - The ratio representing the proportion of the deposit value that must - be paid at proposal submission. - proposal_cancel_ratio: - type: string - description: >- - The cancel ratio which will not be returned back to the depositors - when a proposal is cancelled. - - - Since: cosmos-sdk 0.50 - proposal_cancel_dest: - type: string - description: >- - The address which will receive (proposal_cancel_ratio * deposit) - proposal deposits. - - If empty, the (proposal_cancel_ratio * deposit) proposal deposits will - be burned. - - - Since: cosmos-sdk 0.50 - expedited_voting_period: - type: string - description: |- - Duration of the voting period of an expedited proposal. - - Since: cosmos-sdk 0.50 - expedited_threshold: - type: string - description: >- - Minimum proportion of Yes votes for proposal to pass. Default value: - 0.67. - - - Since: cosmos-sdk 0.50 - expedited_min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Minimum expedited deposit for a proposal to enter voting period. - burn_vote_quorum: - type: boolean - title: burn deposits if a proposal does not meet quorum - burn_proposal_deposit_prevote: - type: boolean - title: burn deposits if the proposal does not enter voting period - burn_vote_veto: - type: boolean - title: burn deposits if quorum with vote type no_veto is met - min_deposit_ratio: - type: string - description: >- - The ratio representing the proportion of the deposit value minimum - that must be met when making a deposit. - - Default value: 0.01. Meaning that for a chain with a min_deposit of - 100stake, a deposit of 1stake would be - - required. - - - Since: cosmos-sdk 0.50 - description: |- - Params defines the parameters for the x/gov module. - - Since: cosmos-sdk 0.47 - cosmos.gov.v1.Proposal: - type: object - properties: - id: - type: string - format: uint64 - description: id defines the unique id of the proposal. - messages: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages are the arbitrary messages to be executed if the proposal - passes. - status: - description: status defines the proposal status. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: |- - final_tally_result is the final tally result of the proposal. When - querying a proposal via gRPC, this field is not populated until the - proposal's voting period has ended. - type: object - properties: - yes_count: - type: string - description: yes_count is the number of yes votes on a proposal. - abstain_count: - type: string - description: abstain_count is the number of abstain votes on a proposal. - no_count: - type: string - description: no_count is the number of no votes on a proposal. - no_with_veto_count: - type: string - description: >- - no_with_veto_count is the number of no with veto votes on a - proposal. - submit_time: - type: string - format: date-time - description: submit_time is the time of proposal submission. - deposit_end_time: - type: string - format: date-time - description: deposit_end_time is the end time for deposition. - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: total_deposit is the total deposit on the proposal. - voting_start_time: - type: string - format: date-time - description: voting_start_time is the starting time to vote on a proposal. - voting_end_time: - type: string - format: date-time - description: voting_end_time is the end time of voting on a proposal. - metadata: - type: string - title: |- - metadata is any arbitrary metadata attached to the proposal. - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/gov#proposal-3 - title: - type: string - description: 'Since: cosmos-sdk 0.47' - title: title is the title of the proposal - summary: - type: string - description: 'Since: cosmos-sdk 0.47' - title: summary is a short summary of the proposal - proposer: - type: string - description: 'Since: cosmos-sdk 0.47' - title: proposer is the address of the proposal sumbitter - expedited: - type: boolean - description: 'Since: cosmos-sdk 0.50' - title: expedited defines if the proposal is expedited - failed_reason: - type: string - description: 'Since: cosmos-sdk 0.50' - title: failed_reason defines the reason why the proposal failed - description: Proposal defines the core field members of a governance proposal. - cosmos.gov.v1.ProposalStatus: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - cosmos.gov.v1.QueryConstitutionResponse: - type: object - properties: - constitution: - type: string - title: >- - QueryConstitutionResponse is the response type for the Query/Constitution - RPC method - cosmos.gov.v1.QueryDepositResponse: - type: object - properties: - deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - depositor: - type: string - description: depositor defines the deposit addresses from the proposals. - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: amount to be deposited by depositor. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - description: >- - QueryDepositResponse is the response type for the Query/Deposit RPC - method. - cosmos.gov.v1.QueryDepositsResponse: - type: object - properties: - deposits: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - depositor: - type: string - description: depositor defines the deposit addresses from the proposals. - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: amount to be deposited by depositor. - description: >- - Deposit defines an amount deposited by an account address to an - active - - proposal. - description: deposits defines the requested deposits. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDepositsResponse is the response type for the Query/Deposits RPC - method. - cosmos.gov.v1.QueryParamsResponse: - type: object - properties: - voting_params: - description: |- - Deprecated: Prefer to use `params` instead. - voting_params defines the parameters related to voting. - type: object - properties: - voting_period: - type: string - description: Duration of the voting period. - deposit_params: - description: |- - Deprecated: Prefer to use `params` instead. - deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - - months. - tally_params: - description: |- - Deprecated: Prefer to use `params` instead. - tally_params defines the parameters related to tally. - type: object - properties: - quorum: - type: string - description: >- - Minimum percentage of total stake needed to vote for a result to - be - - considered valid. - threshold: - type: string - description: >- - Minimum proportion of Yes votes for proposal to pass. Default - value: 0.5. - veto_threshold: - type: string - description: >- - Minimum value of Veto votes to Total votes ratio for proposal to - be - - vetoed. Default value: 1/3. - params: - description: |- - params defines all the paramaters of x/gov module. - - Since: cosmos-sdk 0.47 - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - - months. - voting_period: - type: string - description: Duration of the voting period. - quorum: - type: string - description: >- - Minimum percentage of total stake needed to vote for a result to - be - considered valid. - threshold: - type: string - description: >- - Minimum proportion of Yes votes for proposal to pass. Default - value: 0.5. - veto_threshold: - type: string - description: >- - Minimum value of Veto votes to Total votes ratio for proposal to - be - vetoed. Default value: 1/3. - min_initial_deposit_ratio: - type: string - description: >- - The ratio representing the proportion of the deposit value that - must be paid at proposal submission. - proposal_cancel_ratio: - type: string - description: >- - The cancel ratio which will not be returned back to the depositors - when a proposal is cancelled. - - - Since: cosmos-sdk 0.50 - proposal_cancel_dest: - type: string - description: >- - The address which will receive (proposal_cancel_ratio * deposit) - proposal deposits. - - If empty, the (proposal_cancel_ratio * deposit) proposal deposits - will be burned. - - - Since: cosmos-sdk 0.50 - expedited_voting_period: - type: string - description: |- - Duration of the voting period of an expedited proposal. - - Since: cosmos-sdk 0.50 - expedited_threshold: - type: string - description: >- - Minimum proportion of Yes votes for proposal to pass. Default - value: 0.67. - - - Since: cosmos-sdk 0.50 - expedited_min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: Minimum expedited deposit for a proposal to enter voting period. - burn_vote_quorum: - type: boolean - title: burn deposits if a proposal does not meet quorum - burn_proposal_deposit_prevote: - type: boolean - title: burn deposits if the proposal does not enter voting period - burn_vote_veto: - type: boolean - title: burn deposits if quorum with vote type no_veto is met - min_deposit_ratio: - type: string - description: >- - The ratio representing the proportion of the deposit value minimum - that must be met when making a deposit. - - Default value: 0.01. Meaning that for a chain with a min_deposit - of 100stake, a deposit of 1stake would be - - required. - - - Since: cosmos-sdk 0.50 - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.gov.v1.QueryProposalResponse: - type: object - properties: - proposal: - type: object - properties: - id: - type: string - format: uint64 - description: id defines the unique id of the proposal. - messages: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages are the arbitrary messages to be executed if the proposal - passes. - status: - description: status defines the proposal status. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result is the final tally result of the proposal. When - - querying a proposal via gRPC, this field is not populated until - the - - proposal's voting period has ended. - type: object - properties: - yes_count: - type: string - description: yes_count is the number of yes votes on a proposal. - abstain_count: - type: string - description: abstain_count is the number of abstain votes on a proposal. - no_count: - type: string - description: no_count is the number of no votes on a proposal. - no_with_veto_count: - type: string - description: >- - no_with_veto_count is the number of no with veto votes on a - proposal. - submit_time: - type: string - format: date-time - description: submit_time is the time of proposal submission. - deposit_end_time: - type: string - format: date-time - description: deposit_end_time is the end time for deposition. - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: total_deposit is the total deposit on the proposal. - voting_start_time: - type: string - format: date-time - description: voting_start_time is the starting time to vote on a proposal. - voting_end_time: - type: string - format: date-time - description: voting_end_time is the end time of voting on a proposal. - metadata: - type: string - title: |- - metadata is any arbitrary metadata attached to the proposal. - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/gov#proposal-3 - title: - type: string - description: 'Since: cosmos-sdk 0.47' - title: title is the title of the proposal - summary: - type: string - description: 'Since: cosmos-sdk 0.47' - title: summary is a short summary of the proposal - proposer: - type: string - description: 'Since: cosmos-sdk 0.47' - title: proposer is the address of the proposal sumbitter - expedited: - type: boolean - description: 'Since: cosmos-sdk 0.50' - title: expedited defines if the proposal is expedited - failed_reason: - type: string - description: 'Since: cosmos-sdk 0.50' - title: failed_reason defines the reason why the proposal failed - description: Proposal defines the core field members of a governance proposal. - description: >- - QueryProposalResponse is the response type for the Query/Proposal RPC - method. - cosmos.gov.v1.QueryProposalsResponse: - type: object - properties: - proposals: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id defines the unique id of the proposal. - messages: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages are the arbitrary messages to be executed if the - proposal passes. - status: - description: status defines the proposal status. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result is the final tally result of the proposal. - When - - querying a proposal via gRPC, this field is not populated until - the - - proposal's voting period has ended. - type: object - properties: - yes_count: - type: string - description: yes_count is the number of yes votes on a proposal. - abstain_count: - type: string - description: abstain_count is the number of abstain votes on a proposal. - no_count: - type: string - description: no_count is the number of no votes on a proposal. - no_with_veto_count: - type: string - description: >- - no_with_veto_count is the number of no with veto votes on a - proposal. - submit_time: - type: string - format: date-time - description: submit_time is the time of proposal submission. - deposit_end_time: - type: string - format: date-time - description: deposit_end_time is the end time for deposition. - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: total_deposit is the total deposit on the proposal. - voting_start_time: - type: string - format: date-time - description: voting_start_time is the starting time to vote on a proposal. - voting_end_time: - type: string - format: date-time - description: voting_end_time is the end time of voting on a proposal. - metadata: - type: string - title: |- - metadata is any arbitrary metadata attached to the proposal. - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/gov#proposal-3 - title: - type: string - description: 'Since: cosmos-sdk 0.47' - title: title is the title of the proposal - summary: - type: string - description: 'Since: cosmos-sdk 0.47' - title: summary is a short summary of the proposal - proposer: - type: string - description: 'Since: cosmos-sdk 0.47' - title: proposer is the address of the proposal sumbitter - expedited: - type: boolean - description: 'Since: cosmos-sdk 0.50' - title: expedited defines if the proposal is expedited - failed_reason: - type: string - description: 'Since: cosmos-sdk 0.50' - title: failed_reason defines the reason why the proposal failed - description: Proposal defines the core field members of a governance proposal. - description: proposals defines all the requested governance proposals. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryProposalsResponse is the response type for the Query/Proposals RPC - method. - cosmos.gov.v1.QueryTallyResultResponse: - type: object - properties: - tally: - description: tally defines the requested tally. - type: object - properties: - yes_count: - type: string - description: yes_count is the number of yes votes on a proposal. - abstain_count: - type: string - description: abstain_count is the number of abstain votes on a proposal. - no_count: - type: string - description: no_count is the number of no votes on a proposal. - no_with_veto_count: - type: string - description: >- - no_with_veto_count is the number of no with veto votes on a - proposal. - description: >- - QueryTallyResultResponse is the response type for the Query/Tally RPC - method. - cosmos.gov.v1.QueryVoteResponse: - type: object - properties: - vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - voter: - type: string - description: voter is the voter address of the proposal. - options: - type: array - items: - type: object - properties: - option: - description: >- - option defines the valid vote options, it must not contain - duplicate vote options. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - weight: - type: string - description: weight is the vote weight associated with the vote option. - description: WeightedVoteOption defines a unit of vote for vote split. - description: options is the weighted vote options. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the vote. - - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/gov#vote-5 - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: QueryVoteResponse is the response type for the Query/Vote RPC method. - cosmos.gov.v1.QueryVotesResponse: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - voter: - type: string - description: voter is the voter address of the proposal. - options: - type: array - items: - type: object - properties: - option: - description: >- - option defines the valid vote options, it must not contain - duplicate vote options. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - weight: - type: string - description: weight is the vote weight associated with the vote option. - description: WeightedVoteOption defines a unit of vote for vote split. - description: options is the weighted vote options. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the vote. - - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/gov#vote-5 - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: votes defines the queried votes. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryVotesResponse is the response type for the Query/Votes RPC method. - cosmos.gov.v1.TallyParams: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + tendermint.types.Header: type: object properties: - quorum: - type: string - description: |- - Minimum percentage of total stake needed to vote for a result to be - considered valid. - threshold: - type: string + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 description: >- - Minimum proportion of Yes votes for proposal to pass. Default value: - 0.5. - veto_threshold: - type: string - description: |- - Minimum value of Veto votes to Total votes ratio for proposal to be - vetoed. Default value: 1/3. - description: TallyParams defines the params for tallying votes on governance proposals. - cosmos.gov.v1.TallyResult: - type: object - properties: - yes_count: - type: string - description: yes_count is the number of yes votes on a proposal. - abstain_count: - type: string - description: abstain_count is the number of abstain votes on a proposal. - no_count: - type: string - description: no_count is the number of no votes on a proposal. - no_with_veto_count: - type: string - description: no_with_veto_count is the number of no with veto votes on a proposal. - description: TallyResult defines a standard tally for a governance proposal. - cosmos.gov.v1.Vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal_id defines the unique id of the proposal. - voter: - type: string - description: voter is the voter address of the proposal. - options: - type: array - items: - type: object - properties: - option: - description: >- - option defines the valid vote options, it must not contain - duplicate vote options. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - weight: - type: string - description: weight is the vote weight associated with the vote option. - description: WeightedVoteOption defines a unit of vote for vote split. - description: options is the weighted vote options. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the vote. + Consensus captures the consensus rules for processing a block in the + blockchain, - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/gov#vote-5 - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - cosmos.gov.v1.VoteOption: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given governance - proposal. + including all blockchain data structures and the rules of the + application's - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - cosmos.gov.v1.VotingParams: - type: object - properties: - voting_period: + state transition machine. + chainId: type: string - description: Duration of the voting period. - description: VotingParams defines the params for voting on governance proposals. - cosmos.gov.v1.WeightedVoteOption: - type: object - properties: - option: - description: >- - option defines the valid vote options, it must not contain duplicate - vote options. + height: type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - weight: + format: int64 + time: type: string - description: weight is the vote weight associated with the vote option. - description: WeightedVoteOption defines a unit of vote for vote split. - cosmos.mint.v1beta1.Params: - type: object - properties: - mint_denom: + format: date-time + lastBlockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + lastCommitHash: type: string - title: type of coin to mint - inflation_rate_change: + format: byte + description: commit from validators from the last block + title: hashes of block data + dataHash: type: string - title: maximum annual change in inflation rate - inflation_max: + format: byte + title: transactions + validatorsHash: type: string - title: maximum inflation rate - inflation_min: + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + nextValidatorsHash: type: string - title: minimum inflation rate - goal_bonded: + format: byte + title: validators for the next block + consensusHash: type: string - title: goal of percent bonded atoms - blocks_per_year: + format: byte + title: consensus params for current block + appHash: type: string - format: uint64 - title: expected blocks per year - description: Params defines the parameters for the x/mint module. - cosmos.mint.v1beta1.QueryAnnualProvisionsResponse: - type: object - properties: - annual_provisions: + format: byte + title: state after txs from the previous block + lastResultsHash: type: string format: byte - description: annual_provisions is the current minting annual provisions value. - description: |- - QueryAnnualProvisionsResponse is the response type for the - Query/AnnualProvisions RPC method. - cosmos.mint.v1beta1.QueryInflationResponse: - type: object - properties: - inflation: + title: root hash of all results from the txs from the previous block + evidenceHash: type: string format: byte - description: inflation is the current minting inflation value. - description: |- - QueryInflationResponse is the response type for the Query/Inflation RPC - method. - cosmos.mint.v1beta1.QueryParamsResponse: + description: evidence included in the block + title: consensus info + proposerAddress: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + tendermint.types.LightBlock: type: object properties: - params: - description: params defines the parameters of the module. + signedHeader: type: object properties: - mint_denom: - type: string - title: type of coin to mint - inflation_rate_change: - type: string - title: maximum annual change in inflation rate - inflation_max: - type: string - title: maximum inflation rate - inflation_min: - type: string - title: minimum inflation rate - goal_bonded: - type: string - title: goal of percent bonded atoms - blocks_per_year: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chainId: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + lastBlockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + lastCommitHash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + dataHash: + type: string + format: byte + title: transactions + validatorsHash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + nextValidatorsHash: + type: string + format: byte + title: validators for the next block + consensusHash: + type: string + format: byte + title: consensus params for current block + appHash: + type: string + format: byte + title: state after txs from the previous block + lastResultsHash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + evidenceHash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposerAddress: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + blockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + blockIdFlag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil + title: BlockIdFlag indicates which BlockID the signature is for + validatorAddress: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + validatorSet: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pubKey: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Validators + votingPower: + type: string + format: int64 + proposerPriority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pubKey: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Validators + votingPower: + type: string + format: int64 + proposerPriority: + type: string + format: int64 + totalVotingPower: type: string - format: uint64 - title: expected blocks per year - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.params.v1beta1.ParamChange: + format: int64 + tendermint.types.LightClientAttackEvidence: type: object properties: - subspace: - type: string - key: - type: string - value: + conflictingBlock: + type: object + properties: + signedHeader: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a + block in the blockchain, + + including all blockchain data structures and the rules of + the application's + + state transition machine. + chainId: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + lastBlockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + lastCommitHash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + dataHash: + type: string + format: byte + title: transactions + validatorsHash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + nextValidatorsHash: + type: string + format: byte + title: validators for the next block + consensusHash: + type: string + format: byte + title: consensus params for current block + appHash: + type: string + format: byte + title: state after txs from the previous block + lastResultsHash: + type: string + format: byte + title: >- + root hash of all results from the txs from the previous + block + evidenceHash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposerAddress: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + blockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + blockIdFlag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error + condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil + title: >- + BlockIdFlag indicates which BlockID the signature is + for + validatorAddress: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a + set of validators. + validatorSet: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pubKey: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Validators + votingPower: + type: string + format: int64 + proposerPriority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pubKey: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Validators + votingPower: + type: string + format: int64 + proposerPriority: + type: string + format: int64 + totalVotingPower: + type: string + format: int64 + commonHeight: type: string - description: |- - ParamChange defines an individual parameter change, for use in - ParameterChangeProposal. - cosmos.params.v1beta1.QueryParamsResponse: - type: object - properties: - param: - description: param defines the queried parameter. - type: object - properties: - subspace: - type: string - key: - type: string - value: - type: string - description: QueryParamsResponse is response type for the Query/Params RPC method. - cosmos.params.v1beta1.QuerySubspacesResponse: - type: object - properties: - subspaces: + format: int64 + byzantineValidators: type: array items: type: object properties: - subspace: + address: type: string - keys: - type: array - items: - type: string - description: >- - Subspace defines a parameter subspace name and all the keys that - exist for - - the subspace. - - - Since: cosmos-sdk 0.46 - description: |- - QuerySubspacesResponse defines the response types for querying for all - registered subspaces and all keys for a subspace. - - Since: cosmos-sdk 0.46 - cosmos.params.v1beta1.Subspace: - type: object - properties: - subspace: + format: byte + pubKey: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Validators + votingPower: + type: string + format: int64 + proposerPriority: + type: string + format: int64 + totalVotingPower: type: string - keys: - type: array - items: - type: string - description: |- - Subspace defines a parameter subspace name and all the keys that exist for - the subspace. - - Since: cosmos-sdk 0.46 - cosmos.slashing.v1beta1.Params: + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of validators + attempting to mislead a light client. + tendermint.types.PartSetHeader: type: object properties: - signed_blocks_window: - type: string + total: + type: integer format: int64 - min_signed_per_window: - type: string - format: byte - downtime_jail_duration: - type: string - slash_fraction_double_sign: - type: string - format: byte - slash_fraction_downtime: + hash: type: string format: byte - description: Params represents the parameters used for by the slashing module. - cosmos.slashing.v1beta1.QueryParamsResponse: + title: PartsetHeader + tendermint.types.SignedHeader: type: object properties: - params: + header: type: object properties: - signed_blocks_window: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in + the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chainId: + type: string + height: type: string format: int64 - min_signed_per_window: + time: + type: string + format: date-time + lastBlockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + lastCommitHash: type: string format: byte - downtime_jail_duration: + description: commit from validators from the last block + title: hashes of block data + dataHash: type: string - slash_fraction_double_sign: + format: byte + title: transactions + validatorsHash: type: string format: byte - slash_fraction_downtime: + description: validators for the current block + title: hashes from the app output from the prev block + nextValidatorsHash: type: string format: byte - description: Params represents the parameters used for by the slashing module. - title: QueryParamsResponse is the response type for the Query/Params RPC method - cosmos.slashing.v1beta1.QuerySigningInfoResponse: - type: object - properties: - val_signing_info: - type: object - properties: - address: + title: validators for the next block + consensusHash: type: string - start_height: + format: byte + title: consensus params for current block + appHash: type: string - format: int64 - title: Height at which validator was first a candidate OR was un-jailed - index_offset: + format: byte + title: state after txs from the previous block + lastResultsHash: type: string - format: int64 - description: >- - Index which is incremented every time a validator is bonded in a - block and - - _may_ have signed a pre-commit or not. This in conjunction with - the - - signed_blocks_window param determines the index in the missed - block bitmap. - jailed_until: + format: byte + title: root hash of all results from the txs from the previous block + evidenceHash: type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to liveness - downtime. - tombstoned: - type: boolean - description: >- - Whether or not a validator has been tombstoned (killed out of - validator - - set). It is set once the validator commits an equivocation or for - any other - - configured misbehavior. - missed_blocks_counter: + format: byte + description: evidence included in the block + title: consensus info + proposerAddress: type: string - format: int64 - description: >- - A counter of missed (unsigned) blocks. It is used to avoid - unnecessary - - reads in the missed block bitmap. - description: >- - ValidatorSigningInfo defines a validator's signing info for monitoring - their - - liveness activity. - title: val_signing_info is the signing info of requested val cons address - title: >- - QuerySigningInfoResponse is the response type for the Query/SigningInfo - RPC - - method - cosmos.slashing.v1beta1.QuerySigningInfosResponse: - type: object - properties: - info: - type: array - items: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: Height at which validator was first a candidate OR was un-jailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented every time a validator is bonded in a - block and - - _may_ have signed a pre-commit or not. This in conjunction with - the - - signed_blocks_window param determines the index in the missed - block bitmap. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to liveness - downtime. - tombstoned: - type: boolean - description: >- - Whether or not a validator has been tombstoned (killed out of - validator - - set). It is set once the validator commits an equivocation or - for any other - - configured misbehavior. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter of missed (unsigned) blocks. It is used to avoid - unnecessary - - reads in the missed block bitmap. - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their - - liveness activity. - title: info is the signing info of all validators - pagination: + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + commit: type: object properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + height: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QuerySigningInfosResponse is the response type for the Query/SigningInfos - RPC - - method - cosmos.slashing.v1beta1.ValidatorSigningInfo: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: Height at which validator was first a candidate OR was un-jailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented every time a validator is bonded in a block - and - - _may_ have signed a pre-commit or not. This in conjunction with the - - signed_blocks_window param determines the index in the missed block - bitmap. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to liveness - downtime. - tombstoned: - type: boolean + format: int64 + round: + type: integer + format: int32 + blockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + blockIdFlag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil + title: BlockIdFlag indicates which BlockID the signature is for + validatorAddress: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. description: >- - Whether or not a validator has been tombstoned (killed out of - validator - - set). It is set once the validator commits an equivocation or for any - other - - configured misbehavior. - missed_blocks_counter: - type: string - format: int64 - description: |- - A counter of missed (unsigned) blocks. It is used to avoid unnecessary - reads in the missed block bitmap. - description: >- - ValidatorSigningInfo defines a validator's signing info for monitoring - their - - liveness activity. - cosmos.staking.v1beta1.BondStatus: + Commit contains the evidence that a block was committed by a set of + validators. + tendermint.types.SignedMsgType: type: string enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. - - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - cosmos.staking.v1beta1.Commission: - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be used for - creating a validator. - type: object - properties: - rate: - type: string - description: rate is the commission rate charged to delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which validator can - ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the - validator commission, as a fraction. - update_time: - type: string - format: date-time - description: update_time is the last time the commission rate was changed. - description: Commission defines commission parameters for a given validator. - cosmos.staking.v1beta1.CommissionRates: - type: object - properties: - rate: - type: string - description: rate is the commission rate charged to delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which validator can ever - charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the validator - commission, as a fraction. - description: >- - CommissionRates defines the initial commission rates to be used for - creating - - a validator. - cosmos.staking.v1beta1.Delegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the encoded address of the delegator. - validator_address: - type: string - description: validator_address is the encoded address of the validator. - shares: - type: string - description: shares define the delegation shares received. + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN description: |- - Delegation represents the bond with tokens held by an account. It is - owned by one delegator, and is associated with the voting power of one - validator. - cosmos.staking.v1beta1.DelegationResponse: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the encoded address of the delegator. - validator_address: - type: string - description: validator_address is the encoded address of the validator. - shares: - type: string - description: shares define the delegation shares received. - description: |- - Delegation represents the bond with tokens held by an account. It is - owned by one delegator, and is associated with the voting power of one - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + SignedMsgType is a type of signed message in the consensus. - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: |- - DelegationResponse is equivalent to Delegation except that it contains a - balance in addition to shares which is more suitable for client responses. - cosmos.staking.v1beta1.Description: - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort or - Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: security_contact defines an optional email for security contact. - details: - type: string - description: details define other optional details. - description: Description defines a validator description. - cosmos.staking.v1beta1.HistoricalInfo: + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + tendermint.types.Validator: type: object properties: - header: + address: + type: string + format: byte + pubKey: type: object properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in - the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: + ed25519: type: string format: byte - title: consensus info - proposer_address: + secp256k1: type: string format: byte - description: Header defines the structure of a block header. - valset: + title: PublicKey defines the keys available for use with Validators + votingPower: + type: string + format: int64 + proposerPriority: + type: string + format: int64 + tendermint.types.ValidatorSet: + type: object + properties: + validators: type: array items: type: object properties: - operator_address: + address: type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: + format: byte + pubKey: type: object properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: + ed25519: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort - or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: + secp256k1: type: string - description: details define other optional details. - unbonding_height: + format: byte + title: PublicKey defines the keys available for use with Validators + votingPower: type: string format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of - the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum - self delegation. - - - Since: cosmos-sdk 0.46 - unbonding_on_hold_ref_count: + proposerPriority: type: string format: int64 - title: >- - strictly positive if this validator's unbonding has been stopped - by external modules - unbonding_ids: - type: array - items: + proposer: + type: object + properties: + address: + type: string + format: byte + pubKey: + type: object + properties: + ed25519: type: string - format: uint64 - title: >- - list of unbonding ids, each uniquely identifing an unbonding of - this validator - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - description: >- - HistoricalInfo contains header and validator information for a given - block. - - It is stored as part of staking module's state, which persists the `n` - most - - recent HistoricalInfo - - (`n` is set by the staking module's `historical_entries` parameter). - cosmos.staking.v1beta1.Params: + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Validators + votingPower: + type: string + format: int64 + proposerPriority: + type: string + format: int64 + totalVotingPower: + type: string + format: int64 + tendermint.types.Vote: type: object properties: - unbonding_time: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: type: string - description: unbonding_time is the time duration of unbonding. - max_validators: - type: integer format: int64 - description: max_validators is the maximum number of validators. - max_entries: + round: type: integer - format: int64 - description: >- - max_entries is the max entries for either unbonding delegation or - redelegation (per pair/trio). - historical_entries: + format: int32 + blockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + description: zero if vote is nil. + timestamp: + type: string + format: date-time + validatorAddress: + type: string + format: byte + validatorIndex: type: integer - format: int64 - description: historical_entries is the number of historical entries to persist. - bond_denom: + format: int32 + signature: type: string - description: bond_denom defines the bondable coin denomination. - min_commission_rate: + format: byte + description: >- + Vote signature by the validator if they participated in consensus for + the + + associated block. + extension: type: string - title: >- - min_commission_rate is the chain-wide minimum commission rate that a - validator can charge their delegators - description: Params defines the parameters for the x/staking module. - cosmos.staking.v1beta1.Pool: + format: byte + description: |- + Vote extension provided by the application. Only valid for precommit + messages. + extensionSignature: + type: string + format: byte + description: |- + Vote extension signature by the validator if they participated in + consensus for the associated block. + Only valid for precommit messages. + description: |- + Vote represents a prevote or precommit vote from validators for + consensus. + tendermint.version.Consensus: type: object properties: - not_bonded_tokens: + block: type: string - bonded_tokens: + format: uint64 + app: type: string - description: |- - Pool is used for tracking bonded and not-bonded token supply of the bond - denomination. - cosmos.staking.v1beta1.QueryDelegationResponse: + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in the + blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + cosmos.circuit.v1.AccountResponse: type: object properties: - delegation_response: + permission: type: object properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the encoded address of the delegator. - validator_address: - type: string - description: validator_address is the encoded address of the validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an account. It - is - - owned by one delegator, and is associated with the voting power of - one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string + level: + description: level is the level of permissions granted to this account. + type: string + enum: + - LEVEL_NONE_UNSPECIFIED + - LEVEL_SOME_MSGS + - LEVEL_ALL_MSGS + - LEVEL_SUPER_ADMIN + default: LEVEL_NONE_UNSPECIFIED + limitTypeUrls: + type: array + items: + type: string description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method + limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of + Msg type - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it contains - a + URLs that the account can trip. It is an error to use + limit_type_urls with - balance in addition to shares which is more suitable for client - responses. - description: >- - QueryDelegationResponse is response type for the Query/Delegation RPC - method. - cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse: + a level other than LEVEL_SOME_MSGS. + description: |- + Permissions are the permissions that an account has to trip + or reset the circuit breaker. + description: AccountResponse is the response type for the Query/Account RPC method. + cosmos.circuit.v1.AccountsResponse: type: object properties: - delegation_responses: + accounts: type: array items: type: object properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the encoded address of the delegator. - validator_address: - type: string - description: validator_address is the encoded address of the validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an account. - It is - - owned by one delegator, and is associated with the voting power - of one - - validator. - balance: + address: + type: string + permissions: type: object properties: - denom: - type: string - amount: + level: + description: level is the level of permissions granted to this account. type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method + enum: + - LEVEL_NONE_UNSPECIFIED + - LEVEL_SOME_MSGS + - LEVEL_ALL_MSGS + - LEVEL_SUPER_ADMIN + default: LEVEL_NONE_UNSPECIFIED + limitTypeUrls: + type: array + items: + type: string + description: >- + limit_type_urls is used with LEVEL_SOME_MSGS to limit the + lists of Msg type - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it - contains a + URLs that the account can trip. It is an error to use + limit_type_urls with - balance in addition to shares which is more suitable for client - responses. - description: delegation_responses defines all the delegations' info of a delegator. + a level other than LEVEL_SOME_MSGS. + description: |- + Permissions are the permissions that an account has to trip + or reset the circuit breaker. + title: >- + GenesisAccountPermissions is the account permissions for the circuit + breaker in genesis pagination: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -68443,724 +63758,737 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: |- - QueryDelegatorDelegationsResponse is response type for the - Query/DelegatorDelegations RPC method. - cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse: + description: AccountsResponse is the response type for the Query/Accounts RPC method. + cosmos.circuit.v1.DisabledListResponse: type: object properties: - unbonding_responses: + disabledList: type: array items: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the encoded address of the delegator. - validator_address: - type: string - description: validator_address is the encoded address of the validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding took - place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to - receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - unbonding_id: - type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been - stopped by external modules - description: >- - UnbondingDelegationEntry defines an unbonding object with - relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's unbonding - bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryUnbondingDelegatorDelegationsResponse is response type for the - Query/UnbondingDelegatorDelegations RPC method. - cosmos.staking.v1beta1.QueryDelegatorValidatorResponse: + type: string + description: >- + DisabledListResponse is the response type for the Query/DisabledList RPC + method. + cosmos.circuit.v1.GenesisAccountPermissions: type: object properties: - validator: + address: + type: string + permissions: type: object properties: - operator_address: + level: + description: level is the level of permissions granted to this account. type: string + enum: + - LEVEL_NONE_UNSPECIFIED + - LEVEL_SOME_MSGS + - LEVEL_ALL_MSGS + - LEVEL_SUPER_ADMIN + default: LEVEL_NONE_UNSPECIFIED + limitTypeUrls: + type: array + items: + type: string description: >- - operator_address defines the address of the validator's operator; - bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. + limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of + Msg type - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + URLs that the account can trip. It is an error to use + limit_type_urls with - Note: this functionality is not currently available in the - official + a level other than LEVEL_SOME_MSGS. + description: |- + Permissions are the permissions that an account has to trip + or reset the circuit breaker. + title: >- + GenesisAccountPermissions is the account permissions for the circuit + breaker in genesis + cosmos.circuit.v1.Permissions: + type: object + properties: + level: + description: level is the level of permissions granted to this account. + type: string + enum: + - LEVEL_NONE_UNSPECIFIED + - LEVEL_SOME_MSGS + - LEVEL_ALL_MSGS + - LEVEL_SUPER_ADMIN + default: LEVEL_NONE_UNSPECIFIED + limitTypeUrls: + type: array + items: + type: string + description: >- + limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of Msg + type - protobuf release, and it is not used for type URLs beginning - with + URLs that the account can trip. It is an error to use limit_type_urls + with - type.googleapis.com. + a level other than LEVEL_SOME_MSGS. + description: |- + Permissions are the permissions that an account has to trip + or reset the circuit breaker. + cosmos.circuit.v1.Permissions.Level: + type: string + enum: + - LEVEL_NONE_UNSPECIFIED + - LEVEL_SOME_MSGS + - LEVEL_ALL_MSGS + - LEVEL_SUPER_ADMIN + default: LEVEL_NONE_UNSPECIFIED + description: |- + Level is the permission level. + - LEVEL_NONE_UNSPECIFIED: LEVEL_NONE_UNSPECIFIED indicates that the account will have no circuit + breaker permissions. + - LEVEL_SOME_MSGS: LEVEL_SOME_MSGS indicates that the account will have permission to + trip or reset the circuit breaker for some Msg type URLs. If this level + is chosen, a non-empty list of Msg type URLs must be provided in + limit_type_urls. + - LEVEL_ALL_MSGS: LEVEL_ALL_MSGS indicates that the account can trip or reset the circuit + breaker for Msg's of all type URLs. + - LEVEL_SUPER_ADMIN: LEVEL_SUPER_ADMIN indicates that the account can take all circuit breaker + actions and can grant permissions to other accounts. + cosmos.consensus.v1.QueryParamsResponse: + type: object + properties: + params: + description: >- + params are the tendermint consensus params stored in the consensus + module. - Schemes other than `http`, `https` (or the empty scheme) might - be + Please note that `params.version` is not populated in this response, + it is - used with implementation specific semantics. - value: + tracked separately in the x/upgrade module. + type: object + properties: + block: + type: object + properties: + maxBytes: type: string - format: byte + format: int64 + title: |- + Max block size, in bytes. + Note: must be greater than 0 + maxGas: + type: string + format: int64 + title: |- + Max gas per block. + Note: must be greater or equal to -1 + description: BlockParams contains limits on the block size. + evidence: + type: object + properties: + maxAgeNumBlocks: + type: string + format: int64 description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular + Max age of evidence, in blocks. - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + The basic formula for calculating this is: MaxAgeDuration / + {average block - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + time}. + maxAgeDuration: + type: string + description: >- + Max age of evidence, in time. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a custom JSON + It should correspond with an app's "unbonding period" or other + similar - representation, that representation will be embedded adding a - field + mechanism for handling [Nothing-At-Stake - `value` which holds the custom JSON in addition to the `@type` + attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). + maxBytes: + type: string + format: int64 + title: >- + This sets the maximum size of total evidence in bytes that can + be committed in a single block. - field. Example (for message [google.protobuf.Duration][]): + and should fall comfortably under the max block bytes. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort or - Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. + Default is 1048576 or 1MB + description: EvidenceParams determine how we handle evidence of malfeasance. + validator: type: object properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the - validator commission, as a fraction. - update_time: + pubKeyTypes: + type: array + items: + type: string + description: |- + ValidatorParams restrict the public key types validators can use. + NOTE: uses ABCI pubkey naming, not Amino names. + version: + type: object + properties: + app: type: string - format: date-time - description: update_time is the last time the commission rate was changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum self - delegation. - + format: uint64 + description: VersionParams contains the ABCI application version. + abci: + type: object + properties: + voteExtensionsEnableHeight: + type: string + format: int64 + description: >- + vote_extensions_enable_height configures the first height + during which - Since: cosmos-sdk 0.46 - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - strictly positive if this validator's unbonding has been stopped - by external modules - unbonding_ids: - type: array - items: - type: string - format: uint64 - title: >- - list of unbonding ids, each uniquely identifing an unbonding of - this validator - description: >- - Validator defines a validator, together with the total amount of the + vote extensions will be enabled. During this specified height, + and for all - Validator's bond shares and their exchange rate to coins. Slashing - results in + subsequent heights, precommit messages that do not contain + valid extension data - a decrease in the exchange rate, allowing correct calculation of - future + will be considered invalid. Prior to this height, vote + extensions will not - undelegations without iterating over delegators. When coins are - delegated to + be used or accepted by validators on the network. - this validator, the validator is credited with a delegation whose - number of - bond shares is based on the amount of coins delegated divided by the - current + Once enabled, vote extensions will be created by the + application in ExtendVote, - exchange rate. Voting power can be calculated as total bonded shares + passed to the application for validation in + VerifyVoteExtension and given - multiplied by exchange rate. - description: |- - QueryDelegatorValidatorResponse response type for the - Query/DelegatorValidator RPC method. - cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse: + to the application to use when proposing a block during + PrepareProposal. + description: >- + ABCIParams configure functionality specific to the Application + Blockchain Interface. + description: >- + QueryParamsResponse defines the response type for querying x/consensus + parameters. + tendermint.types.ABCIParams: type: object properties: - validators: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least + voteExtensionsEnableHeight: + type: string + format: int64 + description: >- + vote_extensions_enable_height configures the first height during which - one "/" character. The last segment of the URL's path must - represent + vote extensions will be enabled. During this specified height, and for + all - the fully qualified name of the type (as in + subsequent heights, precommit messages that do not contain valid + extension data - `path/google.protobuf.Duration`). The name should be in a - canonical form + will be considered invalid. Prior to this height, vote extensions will + not - (e.g., leading "." is not accepted). + be used or accepted by validators on the network. - In practice, teams usually precompile into the binary all - types that they + Once enabled, vote extensions will be created by the application in + ExtendVote, - expect it to use in the context of Any. However, for URLs - which use the + passed to the application for validation in VerifyVoteExtension and + given - scheme `http`, `https`, or no scheme, one can optionally set - up a type + to the application to use when proposing a block during + PrepareProposal. + description: >- + ABCIParams configure functionality specific to the Application Blockchain + Interface. + tendermint.types.BlockParams: + type: object + properties: + maxBytes: + type: string + format: int64 + title: |- + Max block size, in bytes. + Note: must be greater than 0 + maxGas: + type: string + format: int64 + title: |- + Max gas per block. + Note: must be greater or equal to -1 + description: BlockParams contains limits on the block size. + tendermint.types.ConsensusParams: + type: object + properties: + block: + type: object + properties: + maxBytes: + type: string + format: int64 + title: |- + Max block size, in bytes. + Note: must be greater than 0 + maxGas: + type: string + format: int64 + title: |- + Max gas per block. + Note: must be greater or equal to -1 + description: BlockParams contains limits on the block size. + evidence: + type: object + properties: + maxAgeNumBlocks: + type: string + format: int64 + description: >- + Max age of evidence, in blocks. - server that maps type URLs to message definitions as - follows: + The basic formula for calculating this is: MaxAgeDuration / + {average block - * If no scheme is provided, `https` is assumed. + time}. + maxAgeDuration: + type: string + description: >- + Max age of evidence, in time. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - Note: this functionality is not currently available in the - official + It should correspond with an app's "unbonding period" or other + similar - protobuf release, and it is not used for type URLs beginning - with + mechanism for handling [Nothing-At-Stake - type.googleapis.com. + attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). + maxBytes: + type: string + format: int64 + title: >- + This sets the maximum size of total evidence in bytes that can be + committed in a single block. + and should fall comfortably under the max block bytes. - Schemes other than `http`, `https` (or the empty scheme) - might be + Default is 1048576 or 1MB + description: EvidenceParams determine how we handle evidence of malfeasance. + validator: + type: object + properties: + pubKeyTypes: + type: array + items: + type: string + description: |- + ValidatorParams restrict the public key types validators can use. + NOTE: uses ABCI pubkey naming, not Amino names. + version: + type: object + properties: + app: + type: string + format: uint64 + description: VersionParams contains the ABCI application version. + abci: + type: object + properties: + voteExtensionsEnableHeight: + type: string + format: int64 + description: >- + vote_extensions_enable_height configures the first height during + which - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + vote extensions will be enabled. During this specified height, and + for all - URL that describes the type of the serialized message. + subsequent heights, precommit messages that do not contain valid + extension data + will be considered invalid. Prior to this height, vote extensions + will not - Protobuf library provides support to pack/unpack Any values in - the form + be used or accepted by validators on the network. - of utility functions or additional generated methods of the Any - type. + Once enabled, vote extensions will be created by the application + in ExtendVote, - Example 1: Pack and unpack a message in C++. + passed to the application for validation in VerifyVoteExtension + and given - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + to the application to use when proposing a block during + PrepareProposal. + description: >- + ABCIParams configure functionality specific to the Application + Blockchain Interface. + description: |- + ConsensusParams contains consensus critical parameters that determine the + validity of blocks. + tendermint.types.EvidenceParams: + type: object + properties: + maxAgeNumBlocks: + type: string + format: int64 + description: >- + Max age of evidence, in blocks. - Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + The basic formula for calculating this is: MaxAgeDuration / {average + block - Example 3: Pack and unpack a message in Python. + time}. + maxAgeDuration: + type: string + description: >- + Max age of evidence, in time. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - Example 4: Pack and unpack a message in Go + It should correspond with an app's "unbonding period" or other similar - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + mechanism for handling [Nothing-At-Stake - The pack methods provided by protobuf library will by default - use + attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). + maxBytes: + type: string + format: int64 + title: >- + This sets the maximum size of total evidence in bytes that can be + committed in a single block. - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + and should fall comfortably under the max block bytes. - methods only use the fully qualified type name after the last - '/' + Default is 1048576 or 1MB + description: EvidenceParams determine how we handle evidence of malfeasance. + tendermint.types.ValidatorParams: + type: object + properties: + pubKeyTypes: + type: array + items: + type: string + description: |- + ValidatorParams restrict the public key types validators can use. + NOTE: uses ABCI pubkey naming, not Amino names. + tendermint.types.VersionParams: + type: object + properties: + app: + type: string + format: uint64 + description: VersionParams contains the ABCI application version. + cosmos.distribution.v1beta1.DelegationDelegatorReward: + type: object + properties: + validatorAddress: + type: string + reward: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - in the type URL, for example "foo.bar.com/x/y.z" will yield type + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: |- + DelegationDelegatorReward represents the properties + of a delegator's delegation reward. + cosmos.distribution.v1beta1.Params: + type: object + properties: + communityTax: + type: string + baseProposerReward: + type: string + description: >- + Deprecated: The base_proposer_reward field is deprecated and is no + longer used - name "y.z". + in the x/distribution module's reward mechanism. + bonusProposerReward: + type: string + description: >- + Deprecated: The bonus_proposer_reward field is deprecated and is no + longer used + in the x/distribution module's reward mechanism. + withdrawAddrEnabled: + type: boolean + description: Params defines the set of params for the distribution module. + cosmos.distribution.v1beta1.QueryCommunityPoolResponse: + type: object + properties: + pool: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - JSON + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: pool defines community pool's coins. + description: >- + QueryCommunityPoolResponse is the response type for the + Query/CommunityPool + RPC method. + cosmos.distribution.v1beta1.QueryDelegationRewardsResponse: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - The JSON representation of an `Any` value uses the regular + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: rewards defines the rewards accrued by a delegation. + description: |- + QueryDelegationRewardsResponse is the response type for the + Query/DelegationRewards RPC method. + cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + validatorAddress: + type: string + reward: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + NOTE: The amount field is an Dec which implements the custom + method - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + signatures required by gogoproto. + description: |- + DelegationDelegatorReward represents the properties + of a delegator's delegation reward. + description: rewards defines all the rewards accrued by a delegator. + total: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: total defines the sum of all the rewards. + description: |- + QueryDelegationTotalRewardsResponse is the response type for the + Query/DelegationTotalRewards RPC method. + cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse: + type: object + properties: + validators: + type: array + items: + type: string + description: validators defines the validators a delegator is delegating for. + description: |- + QueryDelegatorValidatorsResponse is the response type for the + Query/DelegatorValidators RPC method. + cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse: + type: object + properties: + withdrawAddress: + type: string + description: withdraw_address defines the delegator address to query for. + description: |- + QueryDelegatorWithdrawAddressResponse is the response type for the + Query/DelegatorWithdrawAddress RPC method. + cosmos.distribution.v1beta1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + communityTax: + type: string + baseProposerReward: + type: string + description: >- + Deprecated: The base_proposer_reward field is deprecated and is no + longer used - If the embedded message type is well-known and has a custom JSON + in the x/distribution module's reward mechanism. + bonusProposerReward: + type: string + description: >- + Deprecated: The bonus_proposer_reward field is deprecated and is + no longer used - representation, that representation will be embedded adding a - field + in the x/distribution module's reward mechanism. + withdrawAddrEnabled: + type: boolean + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.distribution.v1beta1.QueryValidatorCommissionResponse: + type: object + properties: + commission: + description: commission defines the commission the validator received. + type: object + properties: + commission: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + NOTE: The amount field is an Dec which implements the custom + method - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: + signatures required by gogoproto. + title: |- + QueryValidatorCommissionResponse is the response type for the + Query/ValidatorCommission RPC method + cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse: + type: object + properties: + operatorAddress: + type: string + description: operator_address defines the validator operator address. + selfBondRewards: + type: array + items: + type: object + properties: + denom: type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: + amount: type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort - or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: self_bond_rewards defines the self delegations rewards. + commission: + type: array + items: + type: object + properties: + denom: type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: + amount: type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. + description: |- + DecCoin defines a token with a denomination and a decimal amount. + + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: commission defines the commission the validator received. + description: >- + QueryValidatorDistributionInfoResponse is the response type for the + Query/ValidatorDistributionInfo RPC method. + cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse: + type: object + properties: + rewards: + type: object + properties: + rewards: + type: array + items: type: object properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of - the validator commission, as a fraction. - update_time: + denom: + type: string + amount: type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string description: >- - min_self_delegation is the validator's self declared minimum - self delegation. - - - Since: cosmos-sdk 0.46 - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - strictly positive if this validator's unbonding has been stopped - by external modules - unbonding_ids: - type: array - items: - type: string - format: uint64 - title: >- - list of unbonding ids, each uniquely identifing an unbonding of - this validator - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to + DecCoin defines a token with a denomination and a decimal + amount. - this validator, the validator is credited with a delegation whose - number of - bond shares is based on the amount of coins delegated divided by the - current + NOTE: The amount field is an Dec which implements the custom + method - exchange rate. Voting power can be calculated as total bonded shares + signatures required by gogoproto. + description: >- + ValidatorOutstandingRewards represents outstanding (un-withdrawn) + rewards - multiplied by exchange rate. - description: validators defines the validators' info of a delegator. + for a validator inexpensive to track, allows simple sanity checks. + description: |- + QueryValidatorOutstandingRewardsResponse is the response type for the + Query/ValidatorOutstandingRewards RPC method. + cosmos.distribution.v1beta1.QueryValidatorSlashesResponse: + type: object + properties: + slashes: + type: array + items: + type: object + properties: + validatorPeriod: + type: string + format: uint64 + fraction: + type: string + description: |- + ValidatorSlashEvent represents a validator slash event. + Height is implicit within the store key. + This is needed to calculate appropriate amount of staking tokens + for delegations which are withdrawn after a slash has occurred. + description: slashes defines the slashes the validator received. pagination: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -69176,604 +64504,442 @@ definitions: was set, its value is undefined otherwise description: |- - QueryDelegatorValidatorsResponse is response type for the - Query/DelegatorValidators RPC method. - cosmos.staking.v1beta1.QueryHistoricalInfoResponse: + QueryValidatorSlashesResponse is the response type for the + Query/ValidatorSlashes RPC method. + cosmos.distribution.v1beta1.ValidatorAccumulatedCommission: type: object properties: - hist: - description: hist defines the historical info at the given height. - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, + commission: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - including all blockchain data structures and the rules of the - application's + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: |- + ValidatorAccumulatedCommission represents accumulated commission + for a validator kept as a running counter, can be withdrawn at any time. + cosmos.distribution.v1beta1.ValidatorOutstandingRewards: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + DecCoin defines a token with a denomination and a decimal amount. - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a block header. - valset: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + NOTE: The amount field is an Dec which implements the custom method + signatures required by gogoproto. + description: |- + ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards + for a validator inexpensive to track, allows simple sanity checks. + cosmos.distribution.v1beta1.ValidatorSlashEvent: + type: object + properties: + validatorPeriod: + type: string + format: uint64 + fraction: + type: string + description: |- + ValidatorSlashEvent represents a validator slash event. + Height is implicit within the store key. + This is needed to calculate appropriate amount of staking tokens + for delegations which are withdrawn after a slash has occurred. + cosmos.epochs.v1beta1.EpochInfo: + type: object + properties: + identifier: + type: string + description: identifier is a unique reference to this particular timer. + startTime: + type: string + format: date-time + description: >- + start_time is the time at which the timer first ever ticks. - protocol buffer message. This string must contain at - least + If start_time is in the future, the epoch will not begin until the + start - one "/" character. The last segment of the URL's path - must represent + time. + duration: + type: string + description: |- + duration is the time in between epoch ticks. + In order for intended behavior to be met, duration should + be greater than the chains expected block time. + Duration must be non-zero. + currentEpoch: + type: string + format: int64 + description: >- + current_epoch is the current epoch number, or in other words, - the fully qualified name of the type (as in + how many times has the timer 'ticked'. - `path/google.protobuf.Duration`). The name should be in - a canonical form + The first tick (current_epoch=1) is defined as - (e.g., leading "." is not accepted). + the first block whose blocktime is greater than the EpochInfo + start_time. + currentEpochStartTime: + type: string + format: date-time + description: >- + current_epoch_start_time describes the start time of the current timer + interval. The interval is (current_epoch_start_time, - In practice, teams usually precompile into the binary - all types that they + current_epoch_start_time + duration] When the timer ticks, this is set + to - expect it to use in the context of Any. However, for - URLs which use the + current_epoch_start_time = last_epoch_start_time + duration only one + timer - scheme `http`, `https`, or no scheme, one can optionally - set up a type + tick for a given identifier can occur per block. - server that maps type URLs to message definitions as - follows: + NOTE! The current_epoch_start_time may diverge significantly from the - * If no scheme is provided, `https` is assumed. + wall-clock time the epoch began at. Wall-clock time of epoch start may + be - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + >> current_epoch_start_time. Suppose current_epoch_start_time = 10, - Note: this functionality is not currently available in - the official + duration = 5. Suppose the chain goes offline at t=14, and comes back + online - protobuf release, and it is not used for type URLs - beginning with + at t=30, and produces blocks at every successive time. (t=31, 32, + etc.) - type.googleapis.com. + * The t=30 block will start the epoch for (10, 15] + * The t=31 block will start the epoch for (15, 20] - Schemes other than `http`, `https` (or the empty scheme) - might be + * The t=32 block will start the epoch for (20, 25] - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + * The t=33 block will start the epoch for (25, 30] - URL that describes the type of the serialized message. + * The t=34 block will start the epoch for (30, 35] + * The **t=36** block will start the epoch for (35, 40] + epochCountingStarted: + type: boolean + description: |- + epoch_counting_started is a boolean, that indicates whether this + epoch timer has began yet. + currentEpochStartHeight: + type: string + format: int64 + title: >- + current_epoch_start_height is the block height at which the current + epoch - Protobuf library provides support to pack/unpack Any values - in the form + started. (The block height at which the timer last ticked) + description: |- + EpochInfo is a struct that describes the data going into + a timer defined by the x/epochs module. + cosmos.epochs.v1beta1.QueryCurrentEpochResponse: + type: object + properties: + currentEpoch: + type: string + format: int64 + description: |- + QueryCurrentEpochResponse defines the gRPC response structure for + querying an epoch by its identifier. + cosmos.epochs.v1beta1.QueryEpochInfosResponse: + type: object + properties: + epochs: + type: array + items: + type: object + properties: + identifier: + type: string + description: identifier is a unique reference to this particular timer. + startTime: + type: string + format: date-time + description: >- + start_time is the time at which the timer first ever ticks. - of utility functions or additional generated methods of the - Any type. + If start_time is in the future, the epoch will not begin until + the start + time. + duration: + type: string + description: |- + duration is the time in between epoch ticks. + In order for intended behavior to be met, duration should + be greater than the chains expected block time. + Duration must be non-zero. + currentEpoch: + type: string + format: int64 + description: >- + current_epoch is the current epoch number, or in other words, - Example 1: Pack and unpack a message in C++. + how many times has the timer 'ticked'. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + The first tick (current_epoch=1) is defined as - Example 2: Pack and unpack a message in Java. + the first block whose blocktime is greater than the EpochInfo + start_time. + currentEpochStartTime: + type: string + format: date-time + description: >- + current_epoch_start_time describes the start time of the current + timer - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + interval. The interval is (current_epoch_start_time, + + current_epoch_start_time + duration] When the timer ticks, this + is set to + + current_epoch_start_time = last_epoch_start_time + duration only + one timer + + tick for a given identifier can occur per block. + + + NOTE! The current_epoch_start_time may diverge significantly + from the + + wall-clock time the epoch began at. Wall-clock time of epoch + start may be + + >> current_epoch_start_time. Suppose current_epoch_start_time = + 10, + + duration = 5. Suppose the chain goes offline at t=14, and comes + back online + + at t=30, and produces blocks at every successive time. (t=31, + 32, etc.) + + * The t=30 block will start the epoch for (10, 15] + + * The t=31 block will start the epoch for (15, 20] + + * The t=32 block will start the epoch for (20, 25] + + * The t=33 block will start the epoch for (25, 30] + + * The t=34 block will start the epoch for (30, 35] + + * The **t=36** block will start the epoch for (35, 40] + epochCountingStarted: + type: boolean + description: |- + epoch_counting_started is a boolean, that indicates whether this + epoch timer has began yet. + currentEpochStartHeight: + type: string + format: int64 + title: >- + current_epoch_start_height is the block height at which the + current epoch + + started. (The block height at which the timer last ticked) + description: |- + EpochInfo is a struct that describes the data going into + a timer defined by the x/epochs module. + description: |- + QueryEpochInfosRequest defines the gRPC response structure for + querying all epoch info. + cosmos.evidence.v1beta1.QueryAllEvidenceResponse: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. - Example 3: Pack and unpack a message in Python. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Note: this functionality is not currently available in the + official - Example 4: Pack and unpack a message in Go + protobuf release, and it is not used for type URLs beginning + with - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + type.googleapis.com. As of May 2023, there are no widely used + type server - The pack methods provided by protobuf library will by - default use + implementations and no plans to implement one. - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - methods only use the fully qualified type name after the - last '/' + Schemes other than `http`, `https` (or the empty scheme) might + be - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a - name "y.z". + URL that describes the type of the serialized message. - JSON + Protobuf library provides support to pack/unpack Any values in the + form + of utility functions or additional generated methods of the Any + type. - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with - an + Example 1: Pack and unpack a message in C++. - additional field `@type` which contains the type URL. - Example: + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + Example 2: Pack and unpack a message in Java. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - If the embedded message type is well-known and has a custom - JSON + Example 3: Pack and unpack a message in Python. - representation, that representation will be embedded adding - a field + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - `value` which holds the custom JSON in addition to the - `@type` + Example 4: Pack and unpack a message in Go - field. Example (for message [google.protobuf.Duration][]): + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from - bonded status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which - this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to - be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, - as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase - of the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum - self delegation. + The pack methods provided by protobuf library will by default use + 'type.googleapis.com/full.type.name' as the type URL and the unpack - Since: cosmos-sdk 0.46 - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - strictly positive if this validator's unbonding has been - stopped by external modules - unbonding_ids: - type: array - items: - type: string - format: uint64 - title: >- - list of unbonding ids, each uniquely identifing an unbonding - of this validator - description: >- - Validator defines a validator, together with the total amount of - the + methods only use the fully qualified type name after the last '/' - Validator's bond shares and their exchange rate to coins. - Slashing results in + in the type URL, for example "foo.bar.com/x/y.z" will yield type - a decrease in the exchange rate, allowing correct calculation of - future + name "y.z". - undelegations without iterating over delegators. When coins are - delegated to - this validator, the validator is credited with a delegation - whose number of + JSON - bond shares is based on the amount of coins delegated divided by - the current + ==== - exchange rate. Voting power can be calculated as total bonded - shares + The JSON representation of an `Any` value uses the regular - multiplied by exchange rate. - description: >- - QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo - RPC + representation of the deserialized, embedded message, with an - method. - cosmos.staking.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params holds all the parameters of this module. - type: object - properties: - unbonding_time: - type: string - description: unbonding_time is the time duration of unbonding. - max_validators: - type: integer - format: int64 - description: max_validators is the maximum number of validators. - max_entries: - type: integer - format: int64 - description: >- - max_entries is the max entries for either unbonding delegation or - redelegation (per pair/trio). - historical_entries: - type: integer - format: int64 - description: historical_entries is the number of historical entries to persist. - bond_denom: - type: string - description: bond_denom defines the bondable coin denomination. - min_commission_rate: - type: string - title: >- - min_commission_rate is the chain-wide minimum commission rate that - a validator can charge their delegators - description: QueryParamsResponse is response type for the Query/Params RPC method. - cosmos.staking.v1beta1.QueryPoolResponse: - type: object - properties: - pool: - description: pool defines the pool info. - type: object - properties: - not_bonded_tokens: - type: string - bonded_tokens: - type: string - description: QueryPoolResponse is response type for the Query/Pool RPC method. - cosmos.staking.v1beta1.QueryRedelegationsResponse: - type: object - properties: - redelegation_responses: - type: array - items: - type: object - properties: - redelegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_src_address: - type: string - description: >- - validator_src_address is the validator redelegation source - operator address. - validator_dst_address: - type: string - description: >- - validator_dst_address is the validator redelegation - destination operator address. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when - redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator - shares created by redelegation. - unbonding_id: - type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been - stopped by external modules - description: >- - RedelegationEntry defines a redelegation object with - relevant metadata. - description: entries are the redelegation entries. - description: >- - Redelegation contains the list of a particular delegator's - redelegating bonds + additional field `@type` which contains the type URL. Example: - from a particular source validator to a particular destination - validator. - entries: - type: array - items: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when - redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator - shares created by redelegation. - unbonding_id: - type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been - stopped by external modules - description: >- - RedelegationEntry defines a redelegation object with - relevant metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a RedelegationEntry - except that it + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - contains a balance in addition to shares which is more - suitable for client + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except that its - entries + If the embedded message type is well-known and has a custom JSON - contain a balance in addition to shares which is more suitable for - client + representation, that representation will be embedded adding a field - responses. + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: evidence returns all evidences. pagination: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -69789,151 +64955,172 @@ definitions: was set, its value is undefined otherwise description: >- - QueryRedelegationsResponse is response type for the Query/Redelegations + QueryAllEvidenceResponse is the response type for the Query/AllEvidence RPC method. - cosmos.staking.v1beta1.QueryUnbondingDelegationResponse: + cosmos.evidence.v1beta1.QueryEvidenceResponse: type: object properties: - unbond: + evidence: + description: evidence returns the requested evidence. type: object properties: - delegator_address: + '@type': type: string - description: delegator_address is the encoded address of the delegator. - validator_address: - type: string - description: validator_address is the encoded address of the validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding took - place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to - receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - unbonding_id: - type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been stopped - by external modules - description: >- - UnbondingDelegationEntry defines an unbonding object with - relevant metadata. - description: entries are the unbonding delegation entries. - description: |- - UnbondingDelegation stores all of a single delegator's unbonding bonds - for a single validator in an time-ordered list. - description: |- - QueryDelegationResponse is response type for the Query/UnbondingDelegation - RPC method. - cosmos.staking.v1beta1.QueryValidatorDelegationsResponse: - type: object - properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the encoded address of the delegator. - validator_address: - type: string - description: validator_address is the encoded address of the validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an account. - It is + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - owned by one delegator, and is associated with the voting power - of one + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + protobuf release, and it is not used for type URLs beginning with + type.googleapis.com. As of May 2023, there are no widely used type + server - NOTE: The amount field is an Int which implements the custom - method + implementations and no plans to implement one. - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it - contains a - balance in addition to shares which is more suitable for client - responses. - pagination: - description: pagination defines the pagination in the response. + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + description: >- + QueryEvidenceResponse is the response type for the Query/Evidence RPC + method. + cosmos.feegrant.v1beta1.Grant: + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance of their + funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + allowance: + description: allowance can be any of basic, periodic, allowed fee allowance. type: object properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: + '@type': type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - was set, its value is undefined otherwise - title: |- - QueryValidatorDelegationsResponse is response type for the - Query/ValidatorDelegations RPC method - cosmos.staking.v1beta1.QueryValidatorResponse: + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. As of May 2023, there are no widely used type + server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + title: Grant is stored in the KVStore to record a grant with full context + cosmos.feegrant.v1beta1.QueryAllowanceResponse: type: object properties: - validator: + allowance: + description: allowance is a allowance granted for grantee by granter. type: object properties: - operator_address: + granter: type: string description: >- - operator_address defines the address of the validator's operator; - bech encoded in JSON. - consensus_pubkey: + granter is the address of the user granting an allowance of their + funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + allowance: + description: allowance can be any of basic, periodic, allowed fee allowance. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -69981,657 +65168,767 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used + type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + additionalProperties: {} + title: Grant is stored in the KVStore to record a grant with full context + description: >- + QueryAllowanceResponse is the response type for the Query/Allowance RPC + method. + cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse: + type: object + properties: + allowances: + type: array + items: + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance of + their funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + allowance: + description: allowance can be any of basic, periodic, allowed fee allowance. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - URL that describes the type of the serialized message. + protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must + represent - Protobuf library provides support to pack/unpack Any values in the - form + the fully qualified name of the type (as in - of utility functions or additional generated methods of the Any - type. + `path/google.protobuf.Duration`). The name should be in a + canonical form + (e.g., leading "." is not accepted). - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + In practice, teams usually precompile into the binary all + types that they - Example 2: Pack and unpack a message in Java. + expect it to use in the context of Any. However, for URLs + which use the - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + scheme `http`, `https`, or no scheme, one can optionally set + up a type - Example 3: Pack and unpack a message in Python. + server that maps type URLs to message definitions as + follows: - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - Example 4: Pack and unpack a message in Go + * If no scheme is provided, `https` is assumed. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - The pack methods provided by protobuf library will by default use + Note: this functionality is not currently available in the + official - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + protobuf release, and it is not used for type URLs beginning + with - methods only use the fully qualified type name after the last '/' + type.googleapis.com. As of May 2023, there are no widely + used type server - in the type URL, for example "foo.bar.com/x/y.z" will yield type + implementations and no plans to implement one. - name "y.z". + Schemes other than `http`, `https` (or the empty scheme) + might be - JSON + used with implementation specific semantics. + additionalProperties: {} + title: Grant is stored in the KVStore to record a grant with full context + description: allowances that have been issued by the granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + was set, its value is undefined otherwise + description: >- + QueryAllowancesByGranterResponse is the response type for the + Query/AllowancesByGranter RPC method. + cosmos.feegrant.v1beta1.QueryAllowancesResponse: + type: object + properties: + allowances: + type: array + items: + type: object + properties: + granter: + type: string + description: >- + granter is the address of the user granting an allowance of + their funds. + grantee: + type: string + description: >- + grantee is the address of the user being granted an allowance of + another user's funds. + allowance: + description: allowance can be any of basic, periodic, allowed fee allowance. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - The JSON representation of an `Any` value uses the regular + protocol buffer message. This string must contain at least - representation of the deserialized, embedded message, with an + one "/" character. The last segment of the URL's path must + represent - additional field `@type` which contains the type URL. Example: + the fully qualified name of the type (as in - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + `path/google.protobuf.Duration`). The name should be in a + canonical form - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + (e.g., leading "." is not accepted). - If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a - field + In practice, teams usually precompile into the binary all + types that they - `value` which holds the custom JSON in addition to the `@type` + expect it to use in the context of Any. However, for URLs + which use the - field. Example (for message [google.protobuf.Duration][]): + scheme `http`, `https`, or no scheme, one can optionally set + up a type - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort or - Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the - validator commission, as a fraction. - update_time: - type: string - format: date-time - description: update_time is the last time the commission rate was changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum self - delegation. + server that maps type URLs to message definitions as + follows: - Since: cosmos-sdk 0.46 - unbonding_on_hold_ref_count: + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + title: Grant is stored in the KVStore to record a grant with full context + description: allowances are allowance's granted for grantee by granter. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + nextKey: type: string - format: int64 - title: >- - strictly positive if this validator's unbonding has been stopped - by external modules - unbonding_ids: - type: array - items: - type: string - format: uint64 + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 title: >- - list of unbonding ids, each uniquely identifing an unbonding of - this validator - description: >- - Validator defines a validator, together with the total amount of the + total is total number of results available if + PageRequest.count_total - Validator's bond shares and their exchange rate to coins. Slashing - results in + was set, its value is undefined otherwise + description: >- + QueryAllowancesResponse is the response type for the Query/Allowances RPC + method. + cosmos.gov.v1.Deposit: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: depositor defines the deposit addresses from the proposals. + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - a decrease in the exchange rate, allowing correct calculation of - future + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: amount to be deposited by depositor. + description: |- + Deposit defines an amount deposited by an account address to an active + proposal. + cosmos.gov.v1.DepositParams: + type: object + properties: + minDeposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - undelegations without iterating over delegators. When coins are - delegated to + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + maxDepositPeriod: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 - this validator, the validator is credited with a delegation whose - number of + months. + description: DepositParams defines the params for deposits on governance proposals. + cosmos.gov.v1.Params: + type: object + properties: + minDeposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - bond shares is based on the amount of coins delegated divided by the - current + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + maxDepositPeriod: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 - exchange rate. Voting power can be calculated as total bonded shares + months. + votingPeriod: + type: string + description: Duration of the voting period. + quorum: + type: string + description: |- + Minimum percentage of total stake needed to vote for a result to be + considered valid. + threshold: + type: string + description: >- + Minimum proportion of Yes votes for proposal to pass. Default value: + 0.5. + vetoThreshold: + type: string + description: |- + Minimum value of Veto votes to Total votes ratio for proposal to be + vetoed. Default value: 1/3. + minInitialDepositRatio: + type: string + description: >- + The ratio representing the proportion of the deposit value that must + be paid at proposal submission. + proposalCancelRatio: + type: string + description: >- + The cancel ratio which will not be returned back to the depositors + when a proposal is cancelled. + proposalCancelDest: + type: string + description: >- + The address which will receive (proposal_cancel_ratio * deposit) + proposal deposits. - multiplied by exchange rate. - title: QueryValidatorResponse is response type for the Query/Validator RPC method - cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse: - type: object - properties: - unbonding_responses: + If empty, the (proposal_cancel_ratio * deposit) proposal deposits will + be burned. + expeditedVotingPeriod: + type: string + description: Duration of the voting period of an expedited proposal. + expeditedThreshold: + type: string + description: >- + Minimum proportion of Yes votes for proposal to pass. Default value: + 0.67. + expeditedMinDeposit: type: array items: type: object properties: - delegator_address: + denom: type: string - description: delegator_address is the encoded address of the delegator. - validator_address: + amount: type: string - description: validator_address is the encoded address of the validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding took - place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to - receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - unbonding_id: - type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been - stopped by external modules - description: >- - UnbondingDelegationEntry defines an unbonding object with - relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's unbonding - bonds + description: |- + Coin defines a token with a denomination and an amount. - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: Minimum expedited deposit for a proposal to enter voting period. + burnVoteQuorum: + type: boolean + title: burn deposits if a proposal does not meet quorum + burnProposalDepositPrevote: + type: boolean + title: burn deposits if the proposal does not enter voting period + burnVoteVeto: + type: boolean + title: burn deposits if quorum with vote type no_veto is met + minDepositRatio: + type: string + description: >- + The ratio representing the proportion of the deposit value minimum + that must be met when making a deposit. - was set, its value is undefined otherwise - description: |- - QueryValidatorUnbondingDelegationsResponse is response type for the - Query/ValidatorUnbondingDelegations RPC method. - cosmos.staking.v1beta1.QueryValidatorsResponse: + Default value: 0.01. Meaning that for a chain with a min_deposit of + 100stake, a deposit of 1stake would be + + required. + description: Params defines the parameters for the x/gov module. + cosmos.gov.v1.Proposal: type: object properties: - validators: + id: + type: string + format: uint64 + description: id defines the unique id of the proposal. + messages: type: array items: type: object properties: - operator_address: + '@type': type: string description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all - types that they + In practice, teams usually precompile into the binary all types + that they - expect it to use in the context of Any. However, for URLs - which use the + expect it to use in the context of Any. However, for URLs which + use the - scheme `http`, `https`, or no scheme, one can optionally set - up a type + scheme `http`, `https`, or no scheme, one can optionally set up + a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning - with + protobuf release, and it is not used for type URLs beginning + with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used + type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) - might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + Schemes other than `http`, `https` (or the empty scheme) might + be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in - the form - of utility functions or additional generated methods of the Any - type. + Protobuf library provides support to pack/unpack Any values in the + form + of utility functions or additional generated methods of the Any + type. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Example 1: Pack and unpack a message in C++. - Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Example 2: Pack and unpack a message in Java. - Example 3: Pack and unpack a message in Python. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Example 3: Pack and unpack a message in Python. - Example 4: Pack and unpack a message in Go + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Example 4: Pack and unpack a message in Go - The pack methods provided by protobuf library will by default - use + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + The pack methods provided by protobuf library will by default use - methods only use the fully qualified type name after the last - '/' + 'type.googleapis.com/full.type.name' as the type URL and the unpack - in the type URL, for example "foo.bar.com/x/y.z" will yield type + methods only use the fully qualified type name after the last '/' - name "y.z". + in the type URL, for example "foo.bar.com/x/y.z" will yield type + name "y.z". - JSON + JSON - The JSON representation of an `Any` value uses the regular + ==== - representation of the deserialized, embedded message, with an + The JSON representation of an `Any` value uses the regular - additional field `@type` which contains the type URL. Example: + representation of the deserialized, embedded message, with an - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + additional field `@type` which contains the type URL. Example: - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - If the embedded message type is well-known and has a custom JSON + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - representation, that representation will be embedded adding a - field + If the embedded message type is well-known and has a custom JSON - `value` which holds the custom JSON in addition to the `@type` + representation, that representation will be embedded adding a field - field. Example (for message [google.protobuf.Duration][]): + `value` which holds the custom JSON in addition to the `@type` - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages are the arbitrary messages to be executed if the proposal + passes. + status: + description: status defines the proposal status. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: + description: |- + final_tally_result is the final tally result of the proposal. When + querying a proposal via gRPC, this field is not populated until the + proposal's voting period has ended. + type: object + properties: + yesCount: + type: string + description: yes_count is the number of yes votes on a proposal. + abstainCount: + type: string + description: abstain_count is the number of abstain votes on a proposal. + noCount: + type: string + description: no_count is the number of no votes on a proposal. + noWithVetoCount: + type: string + description: >- + no_with_veto_count is the number of no with veto votes on a + proposal. + submitTime: + type: string + format: date-time + description: submit_time is the time of proposal submission. + depositEndTime: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + totalDeposit: + type: array + items: + type: object + properties: + denom: type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: + amount: type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + votingStartTime: + type: string + format: date-time + description: voting_start_time is the starting time to vote on a proposal. + votingEndTime: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the proposal. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/gov#proposal-3 + title: + type: string + title: title is the title of the proposal + summary: + type: string + title: summary is a short summary of the proposal + proposer: + type: string + title: proposer is the address of the proposal sumbitter + expedited: + type: boolean + title: expedited defines if the proposal is expedited + failedReason: + type: string + title: failed_reason defines the reason why the proposal failed + description: Proposal defines the core field members of a governance proposal. + cosmos.gov.v1.ProposalStatus: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + cosmos.gov.v1.QueryConstitutionResponse: + type: object + properties: + constitution: + type: string + title: >- + QueryConstitutionResponse is the response type for the Query/Constitution + RPC method + cosmos.gov.v1.QueryDepositResponse: + type: object + properties: + deposit: + description: deposit defines the requested deposit. + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: depositor defines the deposit addresses from the proposals. + amount: + type: array + items: type: object properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort - or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: + denom: type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of - the validator commission, as a fraction. - update_time: + amount: type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string description: >- - min_self_delegation is the validator's self declared minimum - self delegation. + Coin defines a token with a denomination and an amount. - Since: cosmos-sdk 0.46 - unbonding_on_hold_ref_count: + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: amount to be deposited by depositor. + description: >- + QueryDepositResponse is the response type for the Query/Deposit RPC + method. + cosmos.gov.v1.QueryDepositsResponse: + type: object + properties: + deposits: + type: array + items: + type: object + properties: + proposalId: type: string - format: int64 - title: >- - strictly positive if this validator's unbonding has been stopped - by external modules - unbonding_ids: + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: depositor defines the deposit addresses from the proposals. + amount: type: array items: - type: string - format: uint64 - title: >- - list of unbonding ids, each uniquely identifing an unbonding of - this validator - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - this validator, the validator is credited with a delegation whose - number of - bond shares is based on the amount of coins delegated divided by the - current + NOTE: The amount field is an Int which implements the custom + method - exchange rate. Voting power can be calculated as total bonded shares + signatures required by gogoproto. + description: amount to be deposited by depositor. + description: >- + Deposit defines an amount deposited by an account address to an + active - multiplied by exchange rate. - description: validators contains all the queried validators. + proposal. + description: deposits defines the requested deposits. pagination: description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -70646,1046 +65943,1102 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - title: >- - QueryValidatorsResponse is response type for the Query/Validators RPC - method - cosmos.staking.v1beta1.Redelegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_src_address: - type: string - description: >- - validator_src_address is the validator redelegation source operator - address. - validator_dst_address: - type: string - description: >- - validator_dst_address is the validator redelegation destination - operator address. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the redelegation took - place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when redelegation - started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares created - by redelegation. - unbonding_id: - type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been stopped by - external modules - description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - description: entries are the redelegation entries. description: >- - Redelegation contains the list of a particular delegator's redelegating - bonds - - from a particular source validator to a particular destination validator. - cosmos.staking.v1beta1.RedelegationEntry: - type: object - properties: - creation_height: - type: string - format: int64 - description: creation_height defines the height which the redelegation took place. - completion_time: - type: string - format: date-time - description: completion_time defines the unix time for redelegation completion. - initial_balance: - type: string - description: initial_balance defines the initial balance when redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares created by - redelegation. - unbonding_id: - type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been stopped by - external modules - description: RedelegationEntry defines a redelegation object with relevant metadata. - cosmos.staking.v1beta1.RedelegationEntryResponse: + QueryDepositsResponse is the response type for the Query/Deposits RPC + method. + cosmos.gov.v1.QueryParamsResponse: type: object properties: - redelegation_entry: + votingParams: + description: |- + Deprecated: Prefer to use `params` instead. + voting_params defines the parameters related to voting. type: object properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the redelegation took - place. - completion_time: - type: string - format: date-time - description: completion_time defines the unix time for redelegation completion. - initial_balance: + votingPeriod: type: string - description: >- - initial_balance defines the initial balance when redelegation - started. - shares_dst: + description: Duration of the voting period. + depositParams: + description: |- + Deprecated: Prefer to use `params` instead. + deposit_params defines the parameters related to deposit. + type: object + properties: + minDeposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + maxDepositPeriod: type: string description: >- - shares_dst is the amount of destination-validator shares created - by redelegation. - unbonding_id: - type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been stopped by - external modules - description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a RedelegationEntry except that - it - - contains a balance in addition to shares which is more suitable for client + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 - responses. - cosmos.staking.v1beta1.RedelegationResponse: - type: object - properties: - redelegation: + months. + tallyParams: + description: |- + Deprecated: Prefer to use `params` instead. + tally_params defines the parameters related to tally. type: object properties: - delegator_address: + quorum: type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_src_address: + description: >- + Minimum percentage of total stake needed to vote for a result to + be + + considered valid. + threshold: type: string description: >- - validator_src_address is the validator redelegation source - operator address. - validator_dst_address: + Minimum proportion of Yes votes for proposal to pass. Default + value: 0.5. + vetoThreshold: type: string description: >- - validator_dst_address is the validator redelegation destination - operator address. - entries: + Minimum value of Veto votes to Total votes ratio for proposal to + be + + vetoed. Default value: 1/3. + params: + description: params defines all the paramaters of x/gov module. + type: object + properties: + minDeposit: type: array items: type: object properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the redelegation - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when - redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares - created by redelegation. - unbonding_id: + denom: type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: + amount: type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been stopped - by external modules description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - description: entries are the redelegation entries. - description: >- - Redelegation contains the list of a particular delegator's - redelegating bonds + Coin defines a token with a denomination and an amount. - from a particular source validator to a particular destination - validator. - entries: - type: array - items: - type: object - properties: - redelegation_entry: + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + maxDepositPeriod: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 + + months. + votingPeriod: + type: string + description: Duration of the voting period. + quorum: + type: string + description: >- + Minimum percentage of total stake needed to vote for a result to + be + considered valid. + threshold: + type: string + description: >- + Minimum proportion of Yes votes for proposal to pass. Default + value: 0.5. + vetoThreshold: + type: string + description: >- + Minimum value of Veto votes to Total votes ratio for proposal to + be + vetoed. Default value: 1/3. + minInitialDepositRatio: + type: string + description: >- + The ratio representing the proportion of the deposit value that + must be paid at proposal submission. + proposalCancelRatio: + type: string + description: >- + The cancel ratio which will not be returned back to the depositors + when a proposal is cancelled. + proposalCancelDest: + type: string + description: >- + The address which will receive (proposal_cancel_ratio * deposit) + proposal deposits. + + If empty, the (proposal_cancel_ratio * deposit) proposal deposits + will be burned. + expeditedVotingPeriod: + type: string + description: Duration of the voting period of an expedited proposal. + expeditedThreshold: + type: string + description: >- + Minimum proportion of Yes votes for proposal to pass. Default + value: 0.67. + expeditedMinDeposit: + type: array + items: type: object properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the redelegation - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when - redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares - created by redelegation. - unbonding_id: + denom: type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: + amount: type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been stopped - by external modules description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a RedelegationEntry - except that it - - contains a balance in addition to shares which is more suitable for - client + Coin defines a token with a denomination and an amount. - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except that its - entries - contain a balance in addition to shares which is more suitable for client + NOTE: The amount field is an Int which implements the custom + method - responses. - cosmos.staking.v1beta1.UnbondingDelegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the encoded address of the delegator. - validator_address: - type: string - description: validator_address is the encoded address of the validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: creation_height is the height which the unbonding took place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to - receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - unbonding_id: - type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been stopped by - external modules - description: >- - UnbondingDelegationEntry defines an unbonding object with relevant - metadata. - description: entries are the unbonding delegation entries. - description: |- - UnbondingDelegation stores all of a single delegator's unbonding bonds - for a single validator in an time-ordered list. - cosmos.staking.v1beta1.UnbondingDelegationEntry: - type: object - properties: - creation_height: - type: string - format: int64 - description: creation_height is the height which the unbonding took place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to receive at - completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - unbonding_id: - type: string - format: uint64 - title: Incrementing id that uniquely identifies this entry - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - Strictly positive if this entry's unbonding has been stopped by - external modules - description: >- - UnbondingDelegationEntry defines an unbonding object with relevant - metadata. - cosmos.staking.v1beta1.Validator: + signatures required by gogoproto. + description: Minimum expedited deposit for a proposal to enter voting period. + burnVoteQuorum: + type: boolean + title: burn deposits if a proposal does not meet quorum + burnProposalDepositPrevote: + type: boolean + title: burn deposits if the proposal does not enter voting period + burnVoteVeto: + type: boolean + title: burn deposits if quorum with vote type no_veto is met + minDepositRatio: + type: string + description: >- + The ratio representing the proportion of the deposit value minimum + that must be met when making a deposit. + + Default value: 0.01. Meaning that for a chain with a min_deposit + of 100stake, a deposit of 1stake would be + + required. + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.gov.v1.QueryProposalResponse: type: object properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's operator; bech - encoded in JSON. - consensus_pubkey: + proposal: + description: proposal is the requested governance proposal. type: object properties: - type_url: + id: type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + format: uint64 + description: id defines the unique id of the proposal. + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all types - that they + In practice, teams usually precompile into the binary all + types that they - expect it to use in the context of Any. However, for URLs which - use the + expect it to use in the context of Any. However, for URLs + which use the - scheme `http`, `https`, or no scheme, one can optionally set up a - type + scheme `http`, `https`, or no scheme, one can optionally set + up a type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning with + protobuf release, and it is not used for type URLs beginning + with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + Schemes other than `http`, `https` (or the empty scheme) + might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the - form - of utility functions or additional generated methods of the Any type. + Protobuf library provides support to pack/unpack Any values in + the form + of utility functions or additional generated methods of the Any + type. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Example 1: Pack and unpack a message in C++. - Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Example 2: Pack and unpack a message in Java. - Example 3: Pack and unpack a message in Python. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Example 3: Pack and unpack a message in Python. - Example 4: Pack and unpack a message in Go + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Example 4: Pack and unpack a message in Go - The pack methods provided by protobuf library will by default use + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - 'type.googleapis.com/full.type.name' as the type URL and the unpack + The pack methods provided by protobuf library will by default + use - methods only use the fully qualified type name after the last '/' + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - in the type URL, for example "foo.bar.com/x/y.z" will yield type + methods only use the fully qualified type name after the last + '/' - name "y.z". + in the type URL, for example "foo.bar.com/x/y.z" will yield type + name "y.z". - JSON + JSON - The JSON representation of an `Any` value uses the regular + ==== - representation of the deserialized, embedded message, with an + The JSON representation of an `Any` value uses the regular - additional field `@type` which contains the type URL. Example: + representation of the deserialized, embedded message, with an - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + additional field `@type` which contains the type URL. Example: - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - If the embedded message type is well-known and has a custom JSON + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - representation, that representation will be embedded adding a field + If the embedded message type is well-known and has a custom JSON - `value` which holds the custom JSON in addition to the `@type` + representation, that representation will be embedded adding a + field - field. Example (for message [google.protobuf.Duration][]): + `value` which holds the custom JSON in addition to the `@type` - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } description: >- - identity defines an optional identity signature (ex. UPort or - Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: security_contact defines an optional email for security contact. - details: + messages are the arbitrary messages to be executed if the proposal + passes. + status: + description: status defines the proposal status. type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the validator - to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: description: >- - commission_rates defines the initial commission rates to be used - for creating a validator. + final_tally_result is the final tally result of the proposal. When + + querying a proposal via gRPC, this field is not populated until + the + + proposal's voting period has ended. type: object properties: - rate: + yesCount: type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: + description: yes_count is the number of yes votes on a proposal. + abstainCount: type: string - description: >- - max_rate defines the maximum commission rate which validator - can ever charge, as a fraction. - max_change_rate: + description: abstain_count is the number of abstain votes on a proposal. + noCount: + type: string + description: no_count is the number of no votes on a proposal. + noWithVetoCount: type: string description: >- - max_change_rate defines the maximum daily increase of the - validator commission, as a fraction. - update_time: + no_with_veto_count is the number of no with veto votes on a + proposal. + submitTime: type: string format: date-time - description: update_time is the last time the commission rate was changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum self - delegation. - - - Since: cosmos-sdk 0.46 - unbonding_on_hold_ref_count: - type: string - format: int64 - title: >- - strictly positive if this validator's unbonding has been stopped by - external modules - unbonding_ids: - type: array - items: - type: string - format: uint64 - title: >- - list of unbonding ids, each uniquely identifing an unbonding of this - validator - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing results - in - - a decrease in the exchange rate, allowing correct calculation of future - - undelegations without iterating over delegators. When coins are delegated - to - - this validator, the validator is credited with a delegation whose number - of + description: submit_time is the time of proposal submission. + depositEndTime: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + totalDeposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - bond shares is based on the amount of coins delegated divided by the - current - exchange rate. Voting power can be calculated as total bonded shares + NOTE: The amount field is an Int which implements the custom + method - multiplied by exchange rate. - cosmos.base.abci.v1beta1.ABCIMessageLog: + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + votingStartTime: + type: string + format: date-time + description: voting_start_time is the starting time to vote on a proposal. + votingEndTime: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the proposal. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/gov#proposal-3 + title: + type: string + title: title is the title of the proposal + summary: + type: string + title: summary is a short summary of the proposal + proposer: + type: string + title: proposer is the address of the proposal sumbitter + expedited: + type: boolean + title: expedited defines if the proposal is expedited + failedReason: + type: string + title: failed_reason defines the reason why the proposal failed + description: >- + QueryProposalResponse is the response type for the Query/Proposal RPC + method. + cosmos.gov.v1.QueryProposalsResponse: type: object properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: + proposals: type: array items: type: object properties: - type: + id: type: string - attributes: + format: uint64 + description: id defines the unique id of the proposal. + messages: type: array items: type: object properties: - key: + '@type': type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the key and value - are + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - strings instead of raw bytes. - description: |- - StringEvent defines en Event object wrapper where all the attributes - contain key/value pairs that are strings instead of raw bytes. - description: |- - Events contains a slice of Event objects that were emitted during some - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx ABCI message - log. - cosmos.base.abci.v1beta1.Attribute: - type: object - properties: - key: - type: string - value: - type: string - description: |- - Attribute defines an attribute wrapper where the key and value are - strings instead of raw bytes. - cosmos.base.abci.v1beta1.GasInfo: - type: object - properties: - gas_wanted: - type: string - format: uint64 - description: GasWanted is the maximum units of work we allow this tx to perform. - gas_used: - type: string - format: uint64 - description: GasUsed is the amount of gas actually consumed. - description: GasInfo defines tx execution gas context. - cosmos.base.abci.v1beta1.Result: - type: object - properties: - data: - type: string - format: byte - description: >- - Data is any data returned from message or handler execution. It MUST - be + protocol buffer message. This string must contain at least - length prefixed in order to separate data from multiple message - executions. + one "/" character. The last segment of the URL's path must + represent - Deprecated. This field is still populated, but prefer msg_response - instead + the fully qualified name of the type (as in - because it also contains the Msg response typeURL. - log: - type: string - description: Log contains the log information from message or handler execution. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, associated with an - event. - description: >- - Event allows application developers to attach additional information - to + `path/google.protobuf.Duration`). The name should be in a + canonical form - ResponseFinalizeBlock and ResponseCheckTx. + (e.g., leading "." is not accepted). - Later, transactions may be queried using these events. - description: >- - Events contains a slice of Event objects that were emitted during - message - or handler execution. - msg_responses: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + In practice, teams usually precompile into the binary all + types that they - protocol buffer message. This string must contain at least + expect it to use in the context of Any. However, for URLs + which use the - one "/" character. The last segment of the URL's path must - represent + scheme `http`, `https`, or no scheme, one can optionally + set up a type - the fully qualified name of the type (as in + server that maps type URLs to message definitions as + follows: - `path/google.protobuf.Duration`). The name should be in a - canonical form - (e.g., leading "." is not accepted). + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - In practice, teams usually precompile into the binary all types - that they + Note: this functionality is not currently available in the + official - expect it to use in the context of Any. However, for URLs which - use the + protobuf release, and it is not used for type URLs + beginning with - scheme `http`, `https`, or no scheme, one can optionally set up - a type + type.googleapis.com. As of May 2023, there are no widely + used type server - server that maps type URLs to message definitions as follows: + implementations and no plans to implement one. - * If no scheme is provided, `https` is assumed. + Schemes other than `http`, `https` (or the empty scheme) + might be - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - Note: this functionality is not currently available in the - official + URL that describes the type of the serialized message. - protobuf release, and it is not used for type URLs beginning - with - type.googleapis.com. + Protobuf library provides support to pack/unpack Any values in + the form + of utility functions or additional generated methods of the + Any type. - Schemes other than `http`, `https` (or the empty scheme) might - be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + Example 1: Pack and unpack a message in C++. - URL that describes the type of the serialized message. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + Example 2: Pack and unpack a message in Java. - Protobuf library provides support to pack/unpack Any values in the - form + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - of utility functions or additional generated methods of the Any - type. + Example 3: Pack and unpack a message in Python. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 1: Pack and unpack a message in C++. + Example 4: Pack and unpack a message in Go - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - Example 2: Pack and unpack a message in Java. + The pack methods provided by protobuf library will by default + use - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - Example 3: Pack and unpack a message in Python. + methods only use the fully qualified type name after the last + '/' - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - Example 4: Pack and unpack a message in Go + name "y.z". - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - The pack methods provided by protobuf library will by default use + JSON - 'type.googleapis.com/full.type.name' as the type URL and the unpack + ==== - methods only use the fully qualified type name after the last '/' + The JSON representation of an `Any` value uses the regular - in the type URL, for example "foo.bar.com/x/y.z" will yield type + representation of the deserialized, embedded message, with an - name "y.z". + additional field `@type` which contains the type URL. Example: + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - JSON + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + If the embedded message type is well-known and has a custom + JSON - The JSON representation of an `Any` value uses the regular + representation, that representation will be embedded adding a + field - representation of the deserialized, embedded message, with an + `value` which holds the custom JSON in addition to the `@type` - additional field `@type` which contains the type URL. Example: + field. Example (for message [google.protobuf.Duration][]): - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages are the arbitrary messages to be executed if the + proposal passes. + status: + description: status defines the proposal status. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: + description: >- + final_tally_result is the final tally result of the proposal. + When - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + querying a proposal via gRPC, this field is not populated until + the - If the embedded message type is well-known and has a custom JSON + proposal's voting period has ended. + type: object + properties: + yesCount: + type: string + description: yes_count is the number of yes votes on a proposal. + abstainCount: + type: string + description: abstain_count is the number of abstain votes on a proposal. + noCount: + type: string + description: no_count is the number of no votes on a proposal. + noWithVetoCount: + type: string + description: >- + no_with_veto_count is the number of no with veto votes on a + proposal. + submitTime: + type: string + format: date-time + description: submit_time is the time of proposal submission. + depositEndTime: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + totalDeposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` + NOTE: The amount field is an Int which implements the custom + method - field. Example (for message [google.protobuf.Duration][]): + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + votingStartTime: + type: string + format: date-time + description: voting_start_time is the starting time to vote on a proposal. + votingEndTime: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the proposal. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/gov#proposal-3 + title: + type: string + title: title is the title of the proposal + summary: + type: string + title: summary is a short summary of the proposal + proposer: + type: string + title: proposer is the address of the proposal sumbitter + expedited: + type: boolean + title: expedited defines if the proposal is expedited + failedReason: + type: string + title: failed_reason defines the reason why the proposal failed + description: Proposal defines the core field members of a governance proposal. + description: proposals defines all the requested governance proposals. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryProposalsResponse is the response type for the Query/Proposals RPC + method. + cosmos.gov.v1.QueryTallyResultResponse: + type: object + properties: + tally: + description: tally defines the requested tally. + type: object + properties: + yesCount: + type: string + description: yes_count is the number of yes votes on a proposal. + abstainCount: + type: string + description: abstain_count is the number of abstain votes on a proposal. + noCount: + type: string + description: no_count is the number of no votes on a proposal. + noWithVetoCount: + type: string + description: >- + no_with_veto_count is the number of no with veto votes on a + proposal. + description: >- + QueryTallyResultResponse is the response type for the Query/Tally RPC + method. + cosmos.gov.v1.QueryVoteResponse: + type: object + properties: + vote: + description: vote defines the queried vote. + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not contain + duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: weight is the vote weight associated with the vote option. + description: WeightedVoteOption defines a unit of vote for vote split. + description: options is the weighted vote options. + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the vote. + + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/gov#vote-5 + description: QueryVoteResponse is the response type for the Query/Vote RPC method. + cosmos.gov.v1.QueryVotesResponse: + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not contain + duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: weight is the vote weight associated with the vote option. + description: WeightedVoteOption defines a unit of vote for vote split. + description: options is the weighted vote options. + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the vote. + + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/gov#vote-5 + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + description: votes defines the queried votes. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: QueryVotesResponse is the response type for the Query/Votes RPC method. + cosmos.gov.v1.TallyParams: + type: object + properties: + quorum: + type: string + description: |- + Minimum percentage of total stake needed to vote for a result to be + considered valid. + threshold: + type: string + description: >- + Minimum proportion of Yes votes for proposal to pass. Default value: + 0.5. + vetoThreshold: + type: string + description: |- + Minimum value of Veto votes to Total votes ratio for proposal to be + vetoed. Default value: 1/3. + description: TallyParams defines the params for tallying votes on governance proposals. + cosmos.gov.v1.TallyResult: + type: object + properties: + yesCount: + type: string + description: yes_count is the number of yes votes on a proposal. + abstainCount: + type: string + description: abstain_count is the number of abstain votes on a proposal. + noCount: + type: string + description: no_count is the number of no votes on a proposal. + noWithVetoCount: + type: string + description: no_with_veto_count is the number of no with veto votes on a proposal. + description: TallyResult defines a standard tally for a governance proposal. + cosmos.gov.v1.Vote: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not contain + duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: weight is the vote weight associated with the vote option. + description: WeightedVoteOption defines a unit of vote for vote split. + description: options is the weighted vote options. + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the vote. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: |- - msg_responses contains the Msg handler responses type packed in Anys. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/gov#vote-5 + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + cosmos.gov.v1.VoteOption: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given governance + proposal. - Since: cosmos-sdk 0.46 - description: Result is the union of ResponseFormat and ResponseCheckTx. - cosmos.base.abci.v1beta1.StringEvent: + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + cosmos.gov.v1.VotingParams: type: object properties: - type: + votingPeriod: type: string - attributes: + description: Duration of the voting period. + description: VotingParams defines the params for voting on governance proposals. + cosmos.gov.v1.WeightedVoteOption: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not contain duplicate + vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: weight is the vote weight associated with the vote option. + description: WeightedVoteOption defines a unit of vote for vote split. + cosmos.gov.v1beta1.Deposit: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: depositor defines the deposit addresses from the proposals. + amount: type: array items: type: object properties: - key: + denom: type: string - value: + amount: type: string description: |- - Attribute defines an attribute wrapper where the key and value are - strings instead of raw bytes. + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: amount to be deposited by depositor. description: |- - StringEvent defines en Event object wrapper where all the attributes - contain key/value pairs that are strings instead of raw bytes. - cosmos.base.abci.v1beta1.TxResponse: + Deposit defines an amount deposited by an account address to an active + proposal. + cosmos.gov.v1beta1.DepositParams: type: object properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: - type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: - type: string - description: Result bytes, if any. - raw_log: - type: string - description: |- - The output of the application's logger (raw string). May be - non-deterministic. - logs: + minDeposit: type: array items: type: object properties: - msg_index: - type: integer - format: int64 - log: + denom: type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the key and - value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where all the - attributes - - contain key/value pairs that are strings instead of raw bytes. - description: >- - Events contains a slice of Event objects that were emitted - during some + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx ABCI - message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + maxDepositPeriod: type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: + description: >- + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 + + months. + description: DepositParams defines the params for deposits on governance proposals. + cosmos.gov.v1beta1.Proposal: + type: object + properties: + proposalId: type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: + format: uint64 + description: proposal_id defines the unique id of the proposal. + content: + description: content is the proposal's content. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -71731,330 +67084,116 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used type + server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: + additionalProperties: {} + status: + description: status defines the proposal status. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: + description: |- + final_tally_result is the final tally result of the proposal. When + querying a proposal via gRPC, this field is not populated until the + proposal's voting period has ended. + type: object + properties: + 'yes': type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: abstain is the number of abstain votes on a proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + noWithVeto: + type: string + description: no_with_veto is the number of no with veto votes on a proposal. + submitTime: type: string - description: >- - Time of the previous block. For heights > 1, it's the weighted median - of - - the timestamps of the valid votes in the block.LastCommit. For height - == 1, - - it's genesis time. - events: + format: date-time + description: submit_time is the time of proposal submission. + depositEndTime: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + totalDeposit: type: array items: type: object properties: - type: + denom: type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, associated with an - event. - description: >- - Event allows application developers to attach additional information - to - - ResponseFinalizeBlock and ResponseCheckTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a transaction. - Note, - - these events include those emitted by processing all the messages and - those - - emitted from the ante. Whereas Logs contains the events, with - - additional metadata, emitted only by processing the messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and metadata. - The + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - tags are stringified and the log is JSON decoded. - cosmos.crypto.multisig.v1beta1.CompactBitArray: - type: object - properties: - extra_bits_stored: - type: integer - format: int64 - elems: + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + votingStartTime: type: string - format: byte - description: |- - CompactBitArray is an implementation of a space efficient bit array. - This is used to ensure that the encoded data takes up a minimal amount of - space after proto encoding. - This is not thread safe, and is not intended for concurrent usage. - cosmos.tx.signing.v1beta1.SignMode: + format: date-time + description: voting_start_time is the starting time to vote on a proposal. + votingEndTime: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + description: Proposal defines the core field members of a governance proposal. + cosmos.gov.v1beta1.ProposalStatus: type: string enum: - - SIGN_MODE_UNSPECIFIED - - SIGN_MODE_DIRECT - - SIGN_MODE_TEXTUAL - - SIGN_MODE_DIRECT_AUX - - SIGN_MODE_LEGACY_AMINO_JSON - - SIGN_MODE_EIP_191 - default: SIGN_MODE_UNSPECIFIED + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED description: |- - SignMode represents a signing mode with its own security guarantees. - - This enum should be considered a registry of all known sign modes - in the Cosmos ecosystem. Apps are not expected to support all known - sign modes. Apps that would like to support custom sign modes are - encouraged to open a small PR against this file to add a new case - to this SignMode enum describing their sign mode so that different - apps have a consistent version of this enum. - - - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - rejected. - - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - verified with raw bytes from Tx. - - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some - human-readable textual representation on top of the binary representation - from SIGN_MODE_DIRECT. - - Since: cosmos-sdk 0.50 - - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses - SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not - require signers signing over other signers' `signer_info`. - - Since: cosmos-sdk 0.46 - - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - Amino JSON and will be removed in the future. - - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos - SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 - - Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant, - but is not implemented on the SDK by default. To enable EIP-191, you need - to pass a custom `TxConfig` that has an implementation of - `SignModeHandler` for EIP-191. The SDK may decide to fully support - EIP-191 in the future. - - Since: cosmos-sdk 0.45.2 - cosmos.tx.v1beta1.AuthInfo: - type: object - properties: - signer_infos: - type: array - items: - $ref: '#/definitions/cosmos.tx.v1beta1.SignerInfo' - description: >- - signer_infos defines the signing modes for the required signers. The - number - - and order of elements must match the required signers from TxBody's - - messages. The first element is the primary signer and the one which - pays - - the fee. - fee: - description: >- - Fee is the fee and gas limit for the transaction. The first signer is - the - - primary signer and the one which pays the fee. The fee can be - calculated - - based on the cost of evaluating the body and doing signature - verification - - of the signers. This can be estimated via simulation. - type: object - properties: - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: amount is the amount of coins to be paid as a fee - gas_limit: - type: string - format: uint64 - title: >- - gas_limit is the maximum gas that can be used in transaction - processing - - before an out of gas error occurs - payer: - type: string - description: >- - if unset, the first signer is responsible for paying the fees. If - set, the specified account must pay the fees. - - the payer must be a tx signer (and thus have signed this field in - AuthInfo). - - setting this field does *not* change the ordering of required - signers for the transaction. - granter: - type: string - title: >- - if set, the fee payer (either the first signer or the value of the - payer field) requests that a fee grant be used - - to pay fees instead of the fee payer's own balance. If an - appropriate fee grant does not exist or the chain does - - not support fee grants, this will fail - tip: - description: >- - Tip is the optional tip used for transactions fees paid in another - denom. - - - This field is ignored if the chain didn't enable tips, i.e. didn't add - the - - `TipDecorator` in its posthandler. - + ProposalStatus enumerates the valid statuses of a proposal. - Since: cosmos-sdk 0.46 + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + cosmos.gov.v1beta1.QueryDepositResponse: + type: object + properties: + deposit: + description: deposit defines the requested deposit. type: object properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: depositor defines the deposit addresses from the proposals. amount: type: array items: @@ -72072,154 +67211,152 @@ definitions: method signatures required by gogoproto. - title: amount is the amount of the tip - tipper: - type: string - title: tipper is the address of the account paying for the tip - description: |- - AuthInfo describes the fee and signer modes that are used to sign a - transaction. - cosmos.tx.v1beta1.BroadcastMode: - type: string - enum: - - BROADCAST_MODE_UNSPECIFIED - - BROADCAST_MODE_BLOCK - - BROADCAST_MODE_SYNC - - BROADCAST_MODE_ASYNC - default: BROADCAST_MODE_UNSPECIFIED - description: |- - BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC + description: amount to be deposited by depositor. + description: >- + QueryDepositResponse is the response type for the Query/Deposit RPC method. - - - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering - - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead, - BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards. - - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits - for a CheckTx execution response only. - - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client - returns immediately. - cosmos.tx.v1beta1.BroadcastTxRequest: + cosmos.gov.v1beta1.QueryDepositsResponse: type: object properties: - tx_bytes: - type: string - format: byte - description: tx_bytes is the raw transaction. - mode: - type: string - enum: - - BROADCAST_MODE_UNSPECIFIED - - BROADCAST_MODE_BLOCK - - BROADCAST_MODE_SYNC - - BROADCAST_MODE_ASYNC - default: BROADCAST_MODE_UNSPECIFIED - description: >- - BroadcastMode specifies the broadcast mode for the TxService.Broadcast - RPC + deposits: + type: array + items: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + depositor: + type: string + description: depositor defines the deposit addresses from the proposals. + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - method. - - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering - - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead, - BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards. - - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits - for a CheckTx execution response only. - - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client - returns immediately. - description: |- - BroadcastTxRequest is the request type for the Service.BroadcastTxRequest - RPC method. - cosmos.tx.v1beta1.BroadcastTxResponse: - type: object - properties: - tx_response: + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: amount to be deposited by depositor. + description: >- + Deposit defines an amount deposited by an account address to an + active + + proposal. + description: deposits defines the requested deposits. + pagination: + description: pagination defines the pagination in the response. type: object properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: + nextKey: type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: type: string - description: Result bytes, if any. - raw_log: + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDepositsResponse is the response type for the Query/Deposits RPC + method. + cosmos.gov.v1beta1.QueryParamsResponse: + type: object + properties: + votingParams: + description: voting_params defines the parameters related to voting. + type: object + properties: + votingPeriod: type: string - description: |- - The output of the application's logger (raw string). May be - non-deterministic. - logs: + description: Duration of the voting period. + depositParams: + description: deposit_params defines the parameters related to deposit. + type: object + properties: + minDeposit: type: array items: type: object properties: - msg_index: - type: integer - format: int64 - log: + denom: type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the key - and value are + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where all the - attributes - contain key/value pairs that are strings instead of raw - bytes. - description: >- - Events contains a slice of Event objects that were emitted - during some + NOTE: The amount field is an Int which implements the custom + method - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx ABCI - message log. + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + maxDepositPeriod: + type: string description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 + + months. + tallyParams: + description: tally_params defines the parameters related to tally. + type: object + properties: + quorum: type: string - description: Additional information. May be non-deterministic. - gas_wanted: + format: byte + description: >- + Minimum percentage of total stake needed to vote for a result to + be + + considered valid. + threshold: type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: + format: byte + description: >- + Minimum proportion of Yes votes for proposal to pass. Default + value: 0.5. + vetoThreshold: type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: + format: byte + description: >- + Minimum value of Veto votes to Total votes ratio for proposal to + be + + vetoed. Default value: 1/3. + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.gov.v1beta1.QueryProposalResponse: + type: object + properties: + proposal: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + content: + description: content is the proposal's content. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -72267,842 +67404,400 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used + type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: + additionalProperties: {} + status: + description: status defines the proposal status. type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: description: >- - Time of the previous block. For heights > 1, it's the weighted - median of - - the timestamps of the valid votes in the block.LastCommit. For - height == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, associated with - an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseFinalizeBlock and ResponseCheckTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a transaction. - Note, - - these events include those emitted by processing all the messages - and those - - emitted from the ante. Whereas Logs contains the events, with - - additional metadata, emitted only by processing the messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. - description: |- - BroadcastTxResponse is the response type for the - Service.BroadcastTx method. - cosmos.tx.v1beta1.Fee: - type: object - properties: - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: amount is the amount of coins to be paid as a fee - gas_limit: - type: string - format: uint64 - title: >- - gas_limit is the maximum gas that can be used in transaction - processing - - before an out of gas error occurs - payer: - type: string - description: >- - if unset, the first signer is responsible for paying the fees. If set, - the specified account must pay the fees. - - the payer must be a tx signer (and thus have signed this field in - AuthInfo). - - setting this field does *not* change the ordering of required signers - for the transaction. - granter: - type: string - title: >- - if set, the fee payer (either the first signer or the value of the - payer field) requests that a fee grant be used - - to pay fees instead of the fee payer's own balance. If an appropriate - fee grant does not exist or the chain does - - not support fee grants, this will fail - description: >- - Fee includes the amount of coins paid in fees and the maximum - - gas to be used by the transaction. The ratio yields an effective - "gasprice", - - which must be above some miminum to be accepted into the mempool. - cosmos.tx.v1beta1.GetBlockWithTxsResponse: - type: object - properties: - txs: - type: array - items: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: txs are the transactions in the block. - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, - - including all blockchain data structures and the rules of the - application's + final_tally_result is the final tally result of the proposal. When - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: + querying a proposal via gRPC, this field is not populated until + the + + proposal's voting period has ended. + type: object + properties: + 'yes': type: string - format: byte - last_results_hash: + description: yes is the number of yes votes on a proposal. + abstain: type: string - format: byte - evidence_hash: + description: abstain is the number of abstain votes on a proposal. + 'no': type: string - format: byte - title: consensus info - proposer_address: + description: no is the number of no votes on a proposal. + noWithVeto: type: string - format: byte - description: Header defines the structure of a block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte description: >- - Txs that will be applied by state @ block.Height+1. + no_with_veto is the number of no with veto votes on a + proposal. + submitTime: + type: string + format: date-time + description: submit_time is the time of proposal submission. + depositEndTime: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + totalDeposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - NOTE: not all txs here are valid. We're just agreeing on the - order first. - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. + NOTE: The amount field is an Int which implements the custom + method - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they - participated in consensus for the + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + votingStartTime: + type: string + format: date-time + description: voting_start_time is the starting time to vote on a proposal. + votingEndTime: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + description: Proposal defines the core field members of a governance proposal. + description: >- + QueryProposalResponse is the response type for the Query/Proposal RPC + method. + cosmos.gov.v1beta1.QueryProposalsResponse: + type: object + properties: + proposals: + type: array + items: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + content: + description: content is the proposal's content. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - associated block. - extension: - type: string - format: byte - description: >- - Vote extension provided by the application. Only - valid for precommit + protocol buffer message. This string must contain at least - messages. - extension_signature: - type: string - format: byte - description: >- - Vote extension signature by the validator if - they participated in + one "/" character. The last segment of the URL's path must + represent - consensus for the associated block. + the fully qualified name of the type (as in - Only valid for precommit messages. - description: >- - Vote represents a prevote or precommit vote from - validators for + `path/google.protobuf.Duration`). The name should be in a + canonical form - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. + (e.g., leading "." is not accepted). - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote signature by the validator if they - participated in consensus for the - associated block. - extension: - type: string - format: byte - description: >- - Vote extension provided by the application. Only - valid for precommit + In practice, teams usually precompile into the binary all + types that they - messages. - extension_signature: - type: string - format: byte - description: >- - Vote extension signature by the validator if - they participated in + expect it to use in the context of Any. However, for URLs + which use the - consensus for the associated block. + scheme `http`, `https`, or no scheme, one can optionally set + up a type - Only valid for precommit messages. - description: >- - Vote represents a prevote or precommit vote from - validators for + server that maps type URLs to message definitions as + follows: - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - including all blockchain data structures - and the rules of the application's + * If no scheme is provided, `https` is assumed. - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a block - header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlockID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + status: + description: status defines the proposal status. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: + description: >- + final_tally_result is the final tally result of the proposal. + When + + querying a proposal via gRPC, this field is not populated until + the + + proposal's voting period has ended. + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: abstain is the number of abstain votes on a proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + noWithVeto: + type: string + description: >- + no_with_veto is the number of no with veto votes on a + proposal. + submitTime: + type: string + format: date-time + description: submit_time is the time of proposal submission. + depositEndTime: + type: string + format: date-time + description: deposit_end_time is the end time for deposition. + totalDeposit: + type: array + items: type: object properties: - hash: + denom: type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlockID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: total_deposit is the total deposit on the proposal. + votingStartTime: + type: string + format: date-time + description: voting_start_time is the starting time to vote on a proposal. + votingEndTime: + type: string + format: date-time + description: voting_end_time is the end time of voting on a proposal. + description: Proposal defines the core field members of a governance proposal. + description: proposals defines all the requested governance proposals. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryProposalsResponse is the response type for the Query/Proposals RPC + method. + cosmos.gov.v1beta1.QueryTallyResultResponse: + type: object + properties: + tally: + description: tally defines the requested tally. + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: abstain is the number of abstain votes on a proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + noWithVeto: + type: string + description: no_with_veto is the number of no with veto votes on a proposal. + description: >- + QueryTallyResultResponse is the response type for the Query/Tally RPC + method. + cosmos.gov.v1beta1.QueryVoteResponse: + type: object + properties: + vote: + description: vote defines the queried vote. + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + option: description: >- - Commit contains the evidence that a block was committed by a set - of validators. + Deprecated: Prefer to use `options` instead. This field is set in + queries + + if and only if `len(options) == 1` and that option has weight 1. + In all + + other cases, this field will default to VOTE_OPTION_UNSPECIFIED. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not contain + duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: weight is the vote weight associated with the vote option. + description: WeightedVoteOption defines a unit of vote for vote split. + description: options is the weighted vote options. + description: QueryVoteResponse is the response type for the Query/Vote RPC method. + cosmos.gov.v1beta1.QueryVotesResponse: + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + option: + description: >- + Deprecated: Prefer to use `options` instead. This field is set + in queries + + if and only if `len(options) == 1` and that option has weight 1. + In all + + other cases, this field will default to VOTE_OPTION_UNSPECIFIED. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not contain + duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: weight is the vote weight associated with the vote option. + description: WeightedVoteOption defines a unit of vote for vote split. + description: options is the weighted vote options. + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + description: votes defines the queried votes. pagination: - description: pagination defines a pagination for the response. + description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -73116,430 +67811,789 @@ definitions: total is total number of results available if PageRequest.count_total - was set, its value is undefined otherwise - description: >- - GetBlockWithTxsResponse is the response type for the - Service.GetBlockWithTxs + was set, its value is undefined otherwise + description: QueryVotesResponse is the response type for the Query/Votes RPC method. + cosmos.gov.v1beta1.TallyParams: + type: object + properties: + quorum: + type: string + format: byte + description: |- + Minimum percentage of total stake needed to vote for a result to be + considered valid. + threshold: + type: string + format: byte + description: >- + Minimum proportion of Yes votes for proposal to pass. Default value: + 0.5. + vetoThreshold: + type: string + format: byte + description: |- + Minimum value of Veto votes to Total votes ratio for proposal to be + vetoed. Default value: 1/3. + description: TallyParams defines the params for tallying votes on governance proposals. + cosmos.gov.v1beta1.TallyResult: + type: object + properties: + 'yes': + type: string + description: yes is the number of yes votes on a proposal. + abstain: + type: string + description: abstain is the number of abstain votes on a proposal. + 'no': + type: string + description: no is the number of no votes on a proposal. + noWithVeto: + type: string + description: no_with_veto is the number of no with veto votes on a proposal. + description: TallyResult defines a standard tally for a governance proposal. + cosmos.gov.v1beta1.Vote: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal_id defines the unique id of the proposal. + voter: + type: string + description: voter is the voter address of the proposal. + option: + description: >- + Deprecated: Prefer to use `options` instead. This field is set in + queries + + if and only if `len(options) == 1` and that option has weight 1. In + all + + other cases, this field will default to VOTE_OPTION_UNSPECIFIED. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + options: + type: array + items: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not contain + duplicate vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: weight is the vote weight associated with the vote option. + description: WeightedVoteOption defines a unit of vote for vote split. + description: options is the weighted vote options. + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + cosmos.gov.v1beta1.VoteOption: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given governance + proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + cosmos.gov.v1beta1.VotingParams: + type: object + properties: + votingPeriod: + type: string + description: Duration of the voting period. + description: VotingParams defines the params for voting on governance proposals. + cosmos.gov.v1beta1.WeightedVoteOption: + type: object + properties: + option: + description: >- + option defines the valid vote options, it must not contain duplicate + vote options. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + weight: + type: string + description: weight is the vote weight associated with the vote option. + description: WeightedVoteOption defines a unit of vote for vote split. + cosmos.group.v1.GroupInfo: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata to attached to the group. + + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#group-1 + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership structure + that + + would break existing proposals. Whenever any members weight is + changed, + + or any member is added or removed this version is incremented and will + + cause proposals based on older versions of this group to fail + totalWeight: + type: string + description: total_weight is the sum of the group members' weights. + createdAt: + type: string + format: date-time + description: created_at is a timestamp specifying when a group was created. + description: GroupInfo represents the high-level on-chain information for a group. + cosmos.group.v1.GroupMember: + type: object + properties: + groupId: + type: string + format: uint64 + description: group_id is the unique ID of the group. + member: + description: member is the member data. + type: object + properties: + address: + type: string + description: address is the member's account address. + weight: + type: string + description: >- + weight is the member's voting weight that should be greater than + 0. + metadata: + type: string + description: metadata is any arbitrary metadata attached to the member. + addedAt: + type: string + format: date-time + description: added_at is a timestamp specifying when a member was added. + description: GroupMember represents the relationship between a group and a member. + cosmos.group.v1.GroupPolicyInfo: + type: object + properties: + address: + type: string + description: address is the account address of group policy. + groupId: + type: string + format: uint64 + description: group_id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group admin. + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the group policy. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 + version: + type: string + format: uint64 + description: >- + version is used to track changes to a group's GroupPolicyInfo + structure that + + would create a different result on a running proposal. + decisionPolicy: + description: decision_policy specifies the group policy's decision policy. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: - method. + * If no scheme is provided, `https` is assumed. - Since: cosmos-sdk 0.45.2 - cosmos.tx.v1beta1.GetTxResponse: + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. As of May 2023, there are no widely used type + server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + additionalProperties: {} + createdAt: + type: string + format: date-time + description: created_at is a timestamp specifying when a group policy was created. + description: >- + GroupPolicyInfo represents the high-level on-chain information for a group + policy. + cosmos.group.v1.Member: type: object properties: - tx: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: tx is the queried transaction. - tx_response: + address: + type: string + description: address is the member's account address. + weight: + type: string + description: weight is the member's voting weight that should be greater than 0. + metadata: + type: string + description: metadata is any arbitrary metadata attached to the member. + addedAt: + type: string + format: date-time + description: added_at is a timestamp specifying when a member was added. + description: |- + Member represents a group member with an account address, + non-zero weight, metadata and added_at timestamp. + cosmos.group.v1.Proposal: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique id of the proposal. + groupPolicyAddress: + type: string + description: group_policy_address is the account address of group policy. + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the proposal. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#proposal-4 + proposers: + type: array + items: + type: string + description: proposers are the account addresses of the proposers. + submitTime: + type: string + format: date-time + description: submit_time is a timestamp specifying when a proposal was submitted. + groupVersion: + type: string + format: uint64 + description: |- + group_version tracks the version of the group at proposal submission. + This field is here for informational purposes only. + groupPolicyVersion: + type: string + format: uint64 + description: >- + group_policy_version tracks the version of the group policy at + proposal submission. + + When a decision policy is changed, existing proposals from previous + policy + + versions will become invalid with the `ABORTED` status. + + This field is here for informational purposes only. + status: + description: >- + status represents the high level position in the life cycle of the + proposal. Initial value is Submitted. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: + description: >- + final_tally_result contains the sums of all weighted votes for this + + proposal for each vote option. It is empty at submission, and only + + populated after tallying, at voting period end or at proposal + execution, + + whichever happens first. type: object properties: - height: - type: string - format: int64 - title: The block height - txhash: + yesCount: type: string - description: The transaction hash. - codespace: + description: yes_count is the weighted sum of yes votes. + abstainCount: type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: + description: abstain_count is the weighted sum of abstainers. + noCount: type: string - description: Result bytes, if any. - raw_log: + description: no_count is the weighted sum of no votes. + noWithVetoCount: type: string - description: |- - The output of the application's logger (raw string). May be - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the key - and value are + description: no_with_veto_count is the weighted sum of veto. + votingPeriodEnd: + type: string + format: date-time + description: >- + voting_period_end is the timestamp before which voting must be done. - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where all the - attributes + Unless a successful MsgExec is called before (to execute a proposal + whose - contain key/value pairs that are strings instead of raw - bytes. - description: >- - Events contains a slice of Event objects that were emitted - during some + tally is successful before the voting period ends), tallying will be + done - execution. + at this point, and the `final_tally_result`and `status` fields will be + + accordingly updated. + executorResult: + description: >- + executor_result is the final result of the proposal execution. Initial + value is NotRun. + type: string + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + messages: + type: array + items: + type: object + properties: + '@type': + type: string description: >- - ABCIMessageLog defines a structure containing an indexed tx ABCI - message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all - types that they + In practice, teams usually precompile into the binary all types + that they - expect it to use in the context of Any. However, for URLs - which use the + expect it to use in the context of Any. However, for URLs which + use the - scheme `http`, `https`, or no scheme, one can optionally set - up a type + scheme `http`, `https`, or no scheme, one can optionally set up + a type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning - with + protobuf release, and it is not used for type URLs beginning + with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used + type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) might - be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + Schemes other than `http`, `https` (or the empty scheme) might + be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the - form + Protobuf library provides support to pack/unpack Any values in the + form - of utility functions or additional generated methods of the Any - type. + of utility functions or additional generated methods of the Any + type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { ... - if (any.UnpackTo(&foo)) { - ... - } + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + The pack methods provided by protobuf library will by default use - methods only use the fully qualified type name after the last '/' + 'type.googleapis.com/full.type.name' as the type URL and the unpack - in the type URL, for example "foo.bar.com/x/y.z" will yield type + methods only use the fully qualified type name after the last '/' - name "y.z". + in the type URL, for example "foo.bar.com/x/y.z" will yield type + name "y.z". - JSON + JSON - The JSON representation of an `Any` value uses the regular + ==== - representation of the deserialized, embedded message, with an + The JSON representation of an `Any` value uses the regular - additional field `@type` which contains the type URL. Example: + representation of the deserialized, embedded message, with an - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + additional field `@type` which contains the type URL. Example: - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - If the embedded message type is well-known and has a custom JSON + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - representation, that representation will be embedded adding a - field + If the embedded message type is well-known and has a custom JSON - `value` which holds the custom JSON in addition to the `@type` + representation, that representation will be embedded adding a field - field. Example (for message [google.protobuf.Duration][]): + `value` which holds the custom JSON in addition to the `@type` - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the weighted - median of + field. Example (for message [google.protobuf.Duration][]): - the timestamps of the valid votes in the block.LastCommit. For - height == 1, + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of `sdk.Msg`s that will be executed if the proposal + passes. + title: + type: string + title: title is the title of the proposal + summary: + type: string + title: summary is a short summary of the proposal + description: >- + Proposal defines a group proposal. Any member of a group can submit a + proposal - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, associated with - an event. - description: >- - Event allows application developers to attach additional - information to + for a group policy to decide upon. - ResponseFinalizeBlock and ResponseCheckTx. + A proposal consists of a set of `sdk.Msg`s that will be executed if the + proposal - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a transaction. - Note, + passes as well as some optional metadata associated with the proposal. + cosmos.group.v1.ProposalExecutorResult: + type: string + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + description: |- + ProposalExecutorResult defines types of proposal executor results. - these events include those emitted by processing all the messages - and those + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED: An empty value is not allowed. + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN: We have not yet run the executor. + - PROPOSAL_EXECUTOR_RESULT_SUCCESS: The executor was successful and proposed action updated state. + - PROPOSAL_EXECUTOR_RESULT_FAILURE: The executor returned an error and proposed action didn't update state. + cosmos.group.v1.ProposalStatus: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus defines proposal statuses. - emitted from the ante. Whereas Logs contains the events, with + - PROPOSAL_STATUS_UNSPECIFIED: An empty value is invalid and not allowed. + - PROPOSAL_STATUS_SUBMITTED: Initial status of a proposal when submitted. + - PROPOSAL_STATUS_ACCEPTED: Final status of a proposal when the final tally is done and the outcome + passes the group policy's decision policy. + - PROPOSAL_STATUS_REJECTED: Final status of a proposal when the final tally is done and the outcome + is rejected by the group policy's decision policy. + - PROPOSAL_STATUS_ABORTED: Final status of a proposal when the group policy is modified before the + final tally. + - PROPOSAL_STATUS_WITHDRAWN: A proposal can be withdrawn before the voting start time by the owner. + When this happens the final status is Withdrawn. + cosmos.group.v1.QueryGroupInfoResponse: + type: object + properties: + info: + description: info is the GroupInfo of the group. + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata to attached to the group. - additional metadata, emitted only by processing the messages. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#group-1 + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership structure + that + would break existing proposals. Whenever any members weight is + changed, - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The + or any member is added or removed this version is incremented and + will - tags are stringified and the log is JSON decoded. - description: GetTxResponse is the response type for the Service.GetTx method. - cosmos.tx.v1beta1.GetTxsEventResponse: + cause proposals based on older versions of this group to fail + totalWeight: + type: string + description: total_weight is the sum of the group members' weights. + createdAt: + type: string + format: date-time + description: created_at is a timestamp specifying when a group was created. + description: QueryGroupInfoResponse is the Query/GroupInfo response type. + cosmos.group.v1.QueryGroupMembersResponse: type: object properties: - txs: + members: type: array items: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: txs is the list of queried transactions. - tx_responses: + type: object + properties: + groupId: + type: string + format: uint64 + description: group_id is the unique ID of the group. + member: + description: member is the member data. + type: object + properties: + address: + type: string + description: address is the member's account address. + weight: + type: string + description: >- + weight is the member's voting weight that should be greater + than 0. + metadata: + type: string + description: metadata is any arbitrary metadata attached to the member. + addedAt: + type: string + format: date-time + description: added_at is a timestamp specifying when a member was added. + description: >- + GroupMember represents the relationship between a group and a + member. + description: members are the members of the group with given group_id. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: QueryGroupMembersResponse is the Query/GroupMembersResponse response type. + cosmos.group.v1.QueryGroupPoliciesByAdminResponse: + type: object + properties: + groupPolicies: type: array items: type: object properties: - height: - type: string - format: int64 - title: The block height - txhash: + address: type: string - description: The transaction hash. - codespace: + description: address is the account address of group policy. + groupId: type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: + format: uint64 + description: group_id is the unique ID of the group. + admin: type: string - description: Result bytes, if any. - raw_log: + description: admin is the account address of the group admin. + metadata: type: string - description: |- - The output of the application's logger (raw string). May be - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the - key and value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where all - the attributes + title: >- + metadata is any arbitrary metadata attached to the group policy. - contain key/value pairs that are strings instead of raw - bytes. - description: >- - Events contains a slice of Event objects that were emitted - during some + the recommended format of the metadata is to be found here: - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx - ABCI message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: + https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 + version: type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: + format: uint64 + description: >- + version is used to track changes to a group's GroupPolicyInfo + structure that + + would create a different result on a running proposal. + decisionPolicy: + description: decision_policy specifies the group policy's decision policy. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -73589,191 +68643,32 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: + additionalProperties: {} + createdAt: type: string + format: date-time description: >- - Time of the previous block. For heights > 1, it's the weighted - median of - - the timestamps of the valid votes in the block.LastCommit. For - height == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, associated - with an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseFinalizeBlock and ResponseCheckTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a - transaction. Note, - - these events include those emitted by processing all the - messages and those - - emitted from the ante. Whereas Logs contains the events, with - - additional metadata, emitted only by processing the messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 + created_at is a timestamp specifying when a group policy was + created. description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. - description: tx_responses is the list of queried TxResponses. + GroupPolicyInfo represents the high-level on-chain information for a + group policy. + description: group_policies are the group policies info with provided admin. pagination: - description: |- - pagination defines a pagination for the response. - Deprecated post v0.46.x: use total instead. + description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -73788,493 +68683,570 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - total: - type: string - format: uint64 - title: total is total number of results available - description: |- - GetTxsEventResponse is the response type for the Service.TxsByEvents - RPC method. - cosmos.tx.v1beta1.ModeInfo: - type: object - properties: - single: - title: single represents a single signer - type: object - properties: - mode: - title: mode is the signing mode of the single signer - type: string - enum: - - SIGN_MODE_UNSPECIFIED - - SIGN_MODE_DIRECT - - SIGN_MODE_TEXTUAL - - SIGN_MODE_DIRECT_AUX - - SIGN_MODE_LEGACY_AMINO_JSON - - SIGN_MODE_EIP_191 - default: SIGN_MODE_UNSPECIFIED - description: >- - SignMode represents a signing mode with its own security - guarantees. - - - This enum should be considered a registry of all known sign modes - - in the Cosmos ecosystem. Apps are not expected to support all - known - - sign modes. Apps that would like to support custom sign modes are - - encouraged to open a small PR against this file to add a new case - - to this SignMode enum describing their sign mode so that different - - apps have a consistent version of this enum. - - - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - rejected. - - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - verified with raw bytes from Tx. - - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some - human-readable textual representation on top of the binary - representation - - from SIGN_MODE_DIRECT. - - - Since: cosmos-sdk 0.50 - - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses - SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode - does not - - require signers signing over other signers' `signer_info`. - - - Since: cosmos-sdk 0.46 - - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - Amino JSON and will be removed in the future. - - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos - SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 - - - Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum - variant, - - but is not implemented on the SDK by default. To enable EIP-191, - you need - - to pass a custom `TxConfig` that has an implementation of - - `SignModeHandler` for EIP-191. The SDK may decide to fully support - - EIP-191 in the future. - - - Since: cosmos-sdk 0.45.2 - multi: - $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi' - title: multi represents a nested multisig signer - description: ModeInfo describes the signing mode of a single or nested multisig signer. - cosmos.tx.v1beta1.ModeInfo.Multi: + description: >- + QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin + response type. + cosmos.group.v1.QueryGroupPoliciesByGroupResponse: type: object properties: - bitarray: - title: bitarray specifies which keys within the multisig are signing - type: object - properties: - extra_bits_stored: - type: integer - format: int64 - elems: - type: string - format: byte - description: >- - CompactBitArray is an implementation of a space efficient bit array. - - This is used to ensure that the encoded data takes up a minimal amount - of - - space after proto encoding. - - This is not thread safe, and is not intended for concurrent usage. - mode_infos: + groupPolicies: type: array items: - $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' - title: |- - mode_infos is the corresponding modes of the signers of the multisig - which could include nested multisig public keys - title: Multi is the mode info for a multisig public key - cosmos.tx.v1beta1.ModeInfo.Single: - type: object - properties: - mode: - title: mode is the signing mode of the single signer - type: string - enum: - - SIGN_MODE_UNSPECIFIED - - SIGN_MODE_DIRECT - - SIGN_MODE_TEXTUAL - - SIGN_MODE_DIRECT_AUX - - SIGN_MODE_LEGACY_AMINO_JSON - - SIGN_MODE_EIP_191 - default: SIGN_MODE_UNSPECIFIED - description: >- - SignMode represents a signing mode with its own security guarantees. + type: object + properties: + address: + type: string + description: address is the account address of group policy. + groupId: + type: string + format: uint64 + description: group_id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the group policy. + the recommended format of the metadata is to be found here: - This enum should be considered a registry of all known sign modes + https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 + version: + type: string + format: uint64 + description: >- + version is used to track changes to a group's GroupPolicyInfo + structure that - in the Cosmos ecosystem. Apps are not expected to support all known + would create a different result on a running proposal. + decisionPolicy: + description: decision_policy specifies the group policy's decision policy. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - sign modes. Apps that would like to support custom sign modes are + protocol buffer message. This string must contain at least - encouraged to open a small PR against this file to add a new case + one "/" character. The last segment of the URL's path must + represent - to this SignMode enum describing their sign mode so that different + the fully qualified name of the type (as in - apps have a consistent version of this enum. + `path/google.protobuf.Duration`). The name should be in a + canonical form - - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - rejected. - - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - verified with raw bytes from Tx. - - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some - human-readable textual representation on top of the binary - representation + (e.g., leading "." is not accepted). - from SIGN_MODE_DIRECT. + In practice, teams usually precompile into the binary all + types that they - Since: cosmos-sdk 0.50 - - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses - SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does - not + expect it to use in the context of Any. However, for URLs + which use the - require signers signing over other signers' `signer_info`. + scheme `http`, `https`, or no scheme, one can optionally set + up a type + server that maps type URLs to message definitions as + follows: - Since: cosmos-sdk 0.46 - - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - Amino JSON and will be removed in the future. - - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos - SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 + * If no scheme is provided, `https` is assumed. - Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant, + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - but is not implemented on the SDK by default. To enable EIP-191, you - need + Note: this functionality is not currently available in the + official - to pass a custom `TxConfig` that has an implementation of + protobuf release, and it is not used for type URLs beginning + with - `SignModeHandler` for EIP-191. The SDK may decide to fully support + type.googleapis.com. As of May 2023, there are no widely + used type server - EIP-191 in the future. + implementations and no plans to implement one. - Since: cosmos-sdk 0.45.2 - title: |- - Single is the mode info for a single signer. It is structured as a message - to allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the - future - cosmos.tx.v1beta1.OrderBy: - type: string - enum: - - ORDER_BY_UNSPECIFIED - - ORDER_BY_ASC - - ORDER_BY_DESC - default: ORDER_BY_UNSPECIFIED - description: >- - - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting - order. OrderBy defaults + Schemes other than `http`, `https` (or the empty scheme) + might be - to ASC in this case. - - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order - - ORDER_BY_DESC: ORDER_BY_DESC defines descending order - title: OrderBy defines the sorting order - cosmos.tx.v1beta1.SignerInfo: + used with implementation specific semantics. + additionalProperties: {} + createdAt: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group policy was + created. + description: >- + GroupPolicyInfo represents the high-level on-chain information for a + group policy. + description: >- + group_policies are the group policies info associated with the + provided group. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup + response type. + cosmos.group.v1.QueryGroupPolicyInfoResponse: type: object properties: - public_key: + info: + description: info is the GroupPolicyInfo of the group policy. type: object properties: - type_url: + address: + type: string + description: address is the account address of group policy. + groupId: + type: string + format: uint64 + description: group_id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group admin. + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the group policy. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 + version: type: string + format: uint64 description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - + version is used to track changes to a group's GroupPolicyInfo + structure that - Schemes other than `http`, `https` (or the empty scheme) might be + would create a different result on a running proposal. + decisionPolicy: + description: decision_policy specifies the group policy's decision policy. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + protocol buffer message. This string must contain at least - URL that describes the type of the serialized message. + one "/" character. The last segment of the URL's path must + represent + the fully qualified name of the type (as in - Protobuf library provides support to pack/unpack Any values in the - form + `path/google.protobuf.Duration`). The name should be in a + canonical form - of utility functions or additional generated methods of the Any type. + (e.g., leading "." is not accepted). - Example 1: Pack and unpack a message in C++. + In practice, teams usually precompile into the binary all + types that they - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + expect it to use in the context of Any. However, for URLs + which use the - Example 2: Pack and unpack a message in Java. + scheme `http`, `https`, or no scheme, one can optionally set + up a type - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + server that maps type URLs to message definitions as follows: - Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + * If no scheme is provided, `https` is assumed. - Example 4: Pack and unpack a message in Go + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Note: this functionality is not currently available in the + official - The pack methods provided by protobuf library will by default use + protobuf release, and it is not used for type URLs beginning + with - 'type.googleapis.com/full.type.name' as the type URL and the unpack + type.googleapis.com. As of May 2023, there are no widely used + type server - methods only use the fully qualified type name after the last '/' + implementations and no plans to implement one. - in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + Schemes other than `http`, `https` (or the empty scheme) might + be + used with implementation specific semantics. + additionalProperties: {} + createdAt: + type: string + format: date-time + description: >- + created_at is a timestamp specifying when a group policy was + created. + description: QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type. + cosmos.group.v1.QueryGroupsByAdminResponse: + type: object + properties: + groups: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata to attached to the group. - JSON + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#group-1 + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership + structure that + would break existing proposals. Whenever any members weight is + changed, - The JSON representation of an `Any` value uses the regular + or any member is added or removed this version is incremented + and will - representation of the deserialized, embedded message, with an + cause proposals based on older versions of this group to fail + totalWeight: + type: string + description: total_weight is the sum of the group members' weights. + createdAt: + type: string + format: date-time + description: created_at is a timestamp specifying when a group was created. + description: >- + GroupInfo represents the high-level on-chain information for a + group. + description: groups are the groups info with the provided admin. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - additional field `@type` which contains the type URL. Example: + was set, its value is undefined otherwise + description: >- + QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response + type. + cosmos.group.v1.QueryGroupsByMemberResponse: + type: object + properties: + groups: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata to attached to the group. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#group-1 + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership + structure that - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + would break existing proposals. Whenever any members weight is + changed, - If the embedded message type is well-known and has a custom JSON + or any member is added or removed this version is incremented + and will - representation, that representation will be embedded adding a field + cause proposals based on older versions of this group to fail + totalWeight: + type: string + description: total_weight is the sum of the group members' weights. + createdAt: + type: string + format: date-time + description: created_at is a timestamp specifying when a group was created. + description: >- + GroupInfo represents the high-level on-chain information for a + group. + description: groups are the groups info with the provided group member. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - `value` which holds the custom JSON in addition to the `@type` + was set, its value is undefined otherwise + description: QueryGroupsByMemberResponse is the Query/GroupsByMember response type. + cosmos.group.v1.QueryGroupsResponse: + type: object + properties: + groups: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + description: id is the unique ID of the group. + admin: + type: string + description: admin is the account address of the group's admin. + metadata: + type: string + title: >- + metadata is any arbitrary metadata to attached to the group. - field. Example (for message [google.protobuf.Duration][]): + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#group-1 + version: + type: string + format: uint64 + title: >- + version is used to track changes to a group's membership + structure that - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - mode_info: - $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' - title: |- - mode_info describes the signing mode of the signer and is a nested - structure to support nested multisig pubkey's - sequence: - type: string - format: uint64 - description: >- - sequence is the sequence of the account, which describes the + would break existing proposals. Whenever any members weight is + changed, - number of committed transactions signed by a given address. It is used - to + or any member is added or removed this version is incremented + and will - prevent replay attacks. - description: |- - SignerInfo describes the public key and signing mode of a single top-level - signer. - cosmos.tx.v1beta1.SimulateRequest: - type: object - properties: - tx: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: |- - tx is the transaction to simulate. - Deprecated. Send raw tx bytes instead. - tx_bytes: - type: string - format: byte - description: |- - tx_bytes is the raw transaction. + cause proposals based on older versions of this group to fail + totalWeight: + type: string + description: total_weight is the sum of the group members' weights. + createdAt: + type: string + format: date-time + description: created_at is a timestamp specifying when a group was created. + description: >- + GroupInfo represents the high-level on-chain information for a + group. + description: '`groups` is all the groups present in state.' + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - Since: cosmos-sdk 0.43 - description: |- - SimulateRequest is the request type for the Service.Simulate - RPC method. - cosmos.tx.v1beta1.SimulateResponse: + was set, its value is undefined otherwise + description: QueryGroupsResponse is the Query/Groups response type. + cosmos.group.v1.QueryProposalResponse: type: object properties: - gas_info: - description: gas_info is the information about gas used in the simulation. + proposal: + description: proposal is the proposal info. type: object properties: - gas_wanted: + id: type: string format: uint64 + description: id is the unique id of the proposal. + groupPolicyAddress: + type: string + description: group_policy_address is the account address of group policy. + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the proposal. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#proposal-4 + proposers: + type: array + items: + type: string + description: proposers are the account addresses of the proposers. + submitTime: + type: string + format: date-time description: >- - GasWanted is the maximum units of work we allow this tx to - perform. - gas_used: + submit_time is a timestamp specifying when a proposal was + submitted. + groupVersion: type: string format: uint64 - description: GasUsed is the amount of gas actually consumed. - result: - description: result is the result of the simulation. - type: object - properties: - data: + description: >- + group_version tracks the version of the group at proposal + submission. + + This field is here for informational purposes only. + groupPolicyVersion: type: string - format: byte + format: uint64 description: >- - Data is any data returned from message or handler execution. It - MUST be + group_policy_version tracks the version of the group policy at + proposal submission. - length prefixed in order to separate data from multiple message - executions. + When a decision policy is changed, existing proposals from + previous policy - Deprecated. This field is still populated, but prefer msg_response - instead + versions will become invalid with the `ABORTED` status. - because it also contains the Msg response typeURL. - log: + This field is here for informational purposes only. + status: + description: >- + status represents the high level position in the life cycle of the + proposal. Initial value is Submitted. type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: description: >- - Log contains the log information from message or handler - execution. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, associated with - an event. - description: >- - Event allows application developers to attach additional - information to + final_tally_result contains the sums of all weighted votes for + this - ResponseFinalizeBlock and ResponseCheckTx. + proposal for each vote option. It is empty at submission, and only - Later, transactions may be queried using these events. + populated after tallying, at voting period end or at proposal + execution, + + whichever happens first. + type: object + properties: + yesCount: + type: string + description: yes_count is the weighted sum of yes votes. + abstainCount: + type: string + description: abstain_count is the weighted sum of abstainers. + noCount: + type: string + description: no_count is the weighted sum of no votes. + noWithVetoCount: + type: string + description: no_with_veto_count is the weighted sum of veto. + votingPeriodEnd: + type: string + format: date-time description: >- - Events contains a slice of Event objects that were emitted during - message + voting_period_end is the timestamp before which voting must be + done. - or handler execution. - msg_responses: + Unless a successful MsgExec is called before (to execute a + proposal whose + + tally is successful before the voting period ends), tallying will + be done + + at this point, and the `final_tally_result`and `status` fields + will be + + accordingly updated. + executorResult: + description: >- + executor_result is the final result of the proposal execution. + Initial value is NotRun. + type: string + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + messages: type: array items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -74324,19 +69296,17 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -74374,7 +69344,7 @@ definitions: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -74384,7 +69354,7 @@ definitions: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -74413,6 +69383,7 @@ definitions: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -74446,2205 +69417,3219 @@ definitions: "value": "1.212s" } description: >- - msg_responses contains the Msg handler responses type packed in - Anys. - - - Since: cosmos-sdk 0.46 - description: |- - SimulateResponse is the response type for the - Service.SimulateRPC method. - cosmos.tx.v1beta1.Tip: + messages is a list of `sdk.Msg`s that will be executed if the + proposal passes. + title: + type: string + title: title is the title of the proposal + summary: + type: string + title: summary is a short summary of the proposal + description: QueryProposalResponse is the Query/Proposal response type. + cosmos.group.v1.QueryProposalsByGroupPolicyResponse: type: object properties: - amount: + proposals: type: array items: type: object properties: - denom: + id: type: string - amount: + format: uint64 + description: id is the unique id of the proposal. + groupPolicyAddress: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: amount is the amount of the tip - tipper: - type: string - title: tipper is the address of the account paying for the tip - description: |- - Tip is the tip used for meta-transactions. - - Since: cosmos-sdk 0.46 - cosmos.tx.v1beta1.Tx: - type: object - properties: - body: - title: body is the processable content of the transaction - type: object - properties: - messages: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. + description: group_policy_address is the account address of group policy. + metadata: + type: string + title: |- + metadata is any arbitrary metadata attached to the proposal. + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#proposal-4 + proposers: + type: array + items: + type: string + description: proposers are the account addresses of the proposers. + submitTime: + type: string + format: date-time + description: >- + submit_time is a timestamp specifying when a proposal was + submitted. + groupVersion: + type: string + format: uint64 + description: >- + group_version tracks the version of the group at proposal + submission. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + This field is here for informational purposes only. + groupPolicyVersion: + type: string + format: uint64 + description: >- + group_policy_version tracks the version of the group policy at + proposal submission. - Note: this functionality is not currently available in the - official + When a decision policy is changed, existing proposals from + previous policy - protobuf release, and it is not used for type URLs beginning - with + versions will become invalid with the `ABORTED` status. - type.googleapis.com. + This field is here for informational purposes only. + status: + description: >- + status represents the high level position in the life cycle of + the proposal. Initial value is Submitted. + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_SUBMITTED + - PROPOSAL_STATUS_ACCEPTED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_ABORTED + - PROPOSAL_STATUS_WITHDRAWN + default: PROPOSAL_STATUS_UNSPECIFIED + finalTallyResult: + description: >- + final_tally_result contains the sums of all weighted votes for + this + proposal for each vote option. It is empty at submission, and + only - Schemes other than `http`, `https` (or the empty scheme) - might be + populated after tallying, at voting period end or at proposal + execution, - used with implementation specific semantics. - value: + whichever happens first. + type: object + properties: + yesCount: type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + description: yes_count is the weighted sum of yes votes. + abstainCount: + type: string + description: abstain_count is the weighted sum of abstainers. + noCount: + type: string + description: no_count is the weighted sum of no votes. + noWithVetoCount: + type: string + description: no_with_veto_count is the weighted sum of veto. + votingPeriodEnd: + type: string + format: date-time description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field + voting_period_end is the timestamp before which voting must be + done. - `value` which holds the custom JSON in addition to the `@type` + Unless a successful MsgExec is called before (to execute a + proposal whose - field. Example (for message [google.protobuf.Duration][]): + tally is successful before the voting period ends), tallying + will be done - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of messages to be executed. The required - signers of + at this point, and the `final_tally_result`and `status` fields + will be - those messages define the number and order of elements in - AuthInfo's + accordingly updated. + executorResult: + description: >- + executor_result is the final result of the proposal execution. + Initial value is NotRun. + type: string + enum: + - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + - PROPOSAL_EXECUTOR_RESULT_NOT_RUN + - PROPOSAL_EXECUTOR_RESULT_SUCCESS + - PROPOSAL_EXECUTOR_RESULT_FAILURE + default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + messages: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - signer_infos and Tx's signatures. Each required signer address is - added to + protocol buffer message. This string must contain at least - the list only the first time it occurs. + one "/" character. The last segment of the URL's path must + represent - By convention, the first required signer (usually from the first - message) + the fully qualified name of the type (as in - is referred to as the primary signer and pays the fee for the - whole + `path/google.protobuf.Duration`). The name should be in a + canonical form - transaction. - memo: - type: string - description: >- - memo is any arbitrary note/comment to be added to the transaction. + (e.g., leading "." is not accepted). - WARNING: in clients, any publicly exposed text should not be - called memo, - but should be called `note` instead (see - https://github.com/cosmos/cosmos-sdk/issues/9122). - timeout_height: - type: string - format: uint64 - title: |- - timeout is the block height after which this transaction will not - be processed by the chain - extension_options: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + In practice, teams usually precompile into the binary all + types that they - protocol buffer message. This string must contain at least + expect it to use in the context of Any. However, for URLs + which use the - one "/" character. The last segment of the URL's path must - represent + scheme `http`, `https`, or no scheme, one can optionally + set up a type - the fully qualified name of the type (as in + server that maps type URLs to message definitions as + follows: - `path/google.protobuf.Duration`). The name should be in a - canonical form - (e.g., leading "." is not accepted). + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - In practice, teams usually precompile into the binary all - types that they + Note: this functionality is not currently available in the + official - expect it to use in the context of Any. However, for URLs - which use the + protobuf release, and it is not used for type URLs + beginning with - scheme `http`, `https`, or no scheme, one can optionally set - up a type + type.googleapis.com. As of May 2023, there are no widely + used type server - server that maps type URLs to message definitions as - follows: + implementations and no plans to implement one. - * If no scheme is provided, `https` is assumed. + Schemes other than `http`, `https` (or the empty scheme) + might be - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - Note: this functionality is not currently available in the - official + URL that describes the type of the serialized message. - protobuf release, and it is not used for type URLs beginning - with - type.googleapis.com. + Protobuf library provides support to pack/unpack Any values in + the form + of utility functions or additional generated methods of the + Any type. - Schemes other than `http`, `https` (or the empty scheme) - might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + Example 1: Pack and unpack a message in C++. - URL that describes the type of the serialized message. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + Example 2: Pack and unpack a message in Java. - Protobuf library provides support to pack/unpack Any values in - the form + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - of utility functions or additional generated methods of the Any - type. + Example 3: Pack and unpack a message in Python. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 1: Pack and unpack a message in C++. + Example 4: Pack and unpack a message in Go - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - Example 2: Pack and unpack a message in Java. + The pack methods provided by protobuf library will by default + use - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - Example 3: Pack and unpack a message in Python. + methods only use the fully qualified type name after the last + '/' - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - Example 4: Pack and unpack a message in Go + name "y.z". - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - The pack methods provided by protobuf library will by default - use + JSON - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + ==== - methods only use the fully qualified type name after the last - '/' + The JSON representation of an `Any` value uses the regular - in the type URL, for example "foo.bar.com/x/y.z" will yield type + representation of the deserialized, embedded message, with an - name "y.z". + additional field `@type` which contains the type URL. Example: + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - JSON + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + If the embedded message type is well-known and has a custom + JSON - The JSON representation of an `Any` value uses the regular + representation, that representation will be embedded adding a + field - representation of the deserialized, embedded message, with an + `value` which holds the custom JSON in addition to the `@type` - additional field `@type` which contains the type URL. Example: + field. Example (for message [google.protobuf.Duration][]): - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of `sdk.Msg`s that will be executed if the + proposal passes. + title: + type: string + title: title is the title of the proposal + summary: + type: string + title: summary is a short summary of the proposal + description: >- + Proposal defines a group proposal. Any member of a group can submit + a proposal - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + for a group policy to decide upon. - If the embedded message type is well-known and has a custom JSON + A proposal consists of a set of `sdk.Msg`s that will be executed if + the proposal - representation, that representation will be embedded adding a - field + passes as well as some optional metadata associated with the + proposal. + description: proposals are the proposals with given group policy. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - `value` which holds the custom JSON in addition to the `@type` + was set, its value is undefined otherwise + description: >- + QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy + response type. + cosmos.group.v1.QueryTallyResultResponse: + type: object + properties: + tally: + description: tally defines the requested tally. + type: object + properties: + yesCount: + type: string + description: yes_count is the weighted sum of yes votes. + abstainCount: + type: string + description: abstain_count is the weighted sum of abstainers. + noCount: + type: string + description: no_count is the weighted sum of no votes. + noWithVetoCount: + type: string + description: no_with_veto_count is the weighted sum of veto. + description: QueryTallyResultResponse is the Query/TallyResult response type. + cosmos.group.v1.QueryVoteByProposalVoterResponse: + type: object + properties: + vote: + description: vote is the vote with given proposal_id and voter. + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the vote. - field. Example (for message [google.protobuf.Duration][]): + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#vote-2 + submitTime: + type: string + format: date-time + description: submit_time is the timestamp when the vote was submitted. + title: Vote represents a vote for a proposal.string metadata + description: >- + QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response + type. + cosmos.group.v1.QueryVotesByProposalResponse: + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the vote. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#vote-2 + submitTime: + type: string + format: date-time + description: submit_time is the timestamp when the vote was submitted. + title: Vote represents a vote for a proposal.string metadata + description: votes are the list of votes for given proposal_id. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 title: >- - extension_options are arbitrary options that can be added by - chains + total is total number of results available if + PageRequest.count_total - when the default options are not sufficient. If any of these are - present + was set, its value is undefined otherwise + description: QueryVotesByProposalResponse is the Query/VotesByProposal response type. + cosmos.group.v1.QueryVotesByVoterResponse: + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the vote. - and can't be handled, the transaction will be rejected - non_critical_extension_options: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#vote-2 + submitTime: + type: string + format: date-time + description: submit_time is the timestamp when the vote was submitted. + title: Vote represents a vote for a proposal.string metadata + description: votes are the list of votes by given voter. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - protocol buffer message. This string must contain at least + was set, its value is undefined otherwise + description: QueryVotesByVoterResponse is the Query/VotesByVoter response type. + cosmos.group.v1.TallyResult: + type: object + properties: + yesCount: + type: string + description: yes_count is the weighted sum of yes votes. + abstainCount: + type: string + description: abstain_count is the weighted sum of abstainers. + noCount: + type: string + description: no_count is the weighted sum of no votes. + noWithVetoCount: + type: string + description: no_with_veto_count is the weighted sum of veto. + description: TallyResult represents the sum of weighted votes for each vote option. + cosmos.group.v1.Vote: + type: object + properties: + proposalId: + type: string + format: uint64 + description: proposal is the unique ID of the proposal. + voter: + type: string + description: voter is the account address of the voter. + option: + description: option is the voter's choice on the proposal. + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + metadata: + type: string + title: >- + metadata is any arbitrary metadata attached to the vote. - one "/" character. The last segment of the URL's path must - represent + the recommended format of the metadata is to be found here: + https://docs.cosmos.network/v0.47/modules/group#vote-2 + submitTime: + type: string + format: date-time + description: submit_time is the timestamp when the vote was submitted. + title: Vote represents a vote for a proposal.string metadata + cosmos.group.v1.VoteOption: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: |- + VoteOption enumerates the valid vote options for a given proposal. - the fully qualified name of the type (as in + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines an unspecified vote option which will + return an error. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + cosmos.mint.v1beta1.Params: + type: object + properties: + mintDenom: + type: string + title: type of coin to mint + inflationRateChange: + type: string + title: maximum annual change in inflation rate + inflationMax: + type: string + title: maximum inflation rate + inflationMin: + type: string + title: minimum inflation rate + goalBonded: + type: string + title: goal of percent bonded atoms + blocksPerYear: + type: string + format: uint64 + title: expected blocks per year + description: Params defines the parameters for the x/mint module. + cosmos.mint.v1beta1.QueryAnnualProvisionsResponse: + type: object + properties: + annualProvisions: + type: string + format: byte + description: annual_provisions is the current minting annual provisions value. + description: |- + QueryAnnualProvisionsResponse is the response type for the + Query/AnnualProvisions RPC method. + cosmos.mint.v1beta1.QueryInflationResponse: + type: object + properties: + inflation: + type: string + format: byte + description: inflation is the current minting inflation value. + description: |- + QueryInflationResponse is the response type for the Query/Inflation RPC + method. + cosmos.mint.v1beta1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + mintDenom: + type: string + title: type of coin to mint + inflationRateChange: + type: string + title: maximum annual change in inflation rate + inflationMax: + type: string + title: maximum inflation rate + inflationMin: + type: string + title: minimum inflation rate + goalBonded: + type: string + title: goal of percent bonded atoms + blocksPerYear: + type: string + format: uint64 + title: expected blocks per year + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.nft.v1beta1.Class: + type: object + properties: + id: + type: string + title: >- + id defines the unique identifier of the NFT classification, similar to + the contract address of ERC721 + name: + type: string + title: >- + name defines the human-readable name of the NFT classification. + Optional + symbol: + type: string + title: symbol is an abbreviated name for nft classification. Optional + description: + type: string + title: description is a brief description of nft classification. Optional + uri: + type: string + title: >- + uri for the class metadata stored off chain. It can define schema for + Class and NFT `Data` attributes. Optional + uriHash: + type: string + title: uri_hash is a hash of the document pointed by uri. Optional + data: + title: data is the app specific metadata of the NFT class. Optional + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - `path/google.protobuf.Duration`). The name should be in a - canonical form + protocol buffer message. This string must contain at least - (e.g., leading "." is not accepted). + one "/" character. The last segment of the URL's path must + represent + the fully qualified name of the type (as in - In practice, teams usually precompile into the binary all - types that they + `path/google.protobuf.Duration`). The name should be in a + canonical form - expect it to use in the context of Any. However, for URLs - which use the + (e.g., leading "." is not accepted). - scheme `http`, `https`, or no scheme, one can optionally set - up a type - server that maps type URLs to message definitions as - follows: + In practice, teams usually precompile into the binary all types + that they + expect it to use in the context of Any. However, for URLs which + use the - * If no scheme is provided, `https` is assumed. + scheme `http`, `https`, or no scheme, one can optionally set up a + type - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + server that maps type URLs to message definitions as follows: - Note: this functionality is not currently available in the - official - protobuf release, and it is not used for type URLs beginning - with + * If no scheme is provided, `https` is assumed. - type.googleapis.com. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + Note: this functionality is not currently available in the + official - Schemes other than `http`, `https` (or the empty scheme) - might be + protobuf release, and it is not used for type URLs beginning with - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + type.googleapis.com. As of May 2023, there are no widely used type + server - URL that describes the type of the serialized message. + implementations and no plans to implement one. - Protobuf library provides support to pack/unpack Any values in - the form + Schemes other than `http`, `https` (or the empty scheme) might be - of utility functions or additional generated methods of the Any - type. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + URL that describes the type of the serialized message. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Protobuf library provides support to pack/unpack Any values in the + form - Example 2: Pack and unpack a message in Java. + of utility functions or additional generated methods of the Any type. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - Example 3: Pack and unpack a message in Python. + Example 1: Pack and unpack a message in C++. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 4: Pack and unpack a message in Go + Example 2: Pack and unpack a message in Java. - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - The pack methods provided by protobuf library will by default - use + Example 3: Pack and unpack a message in Python. - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - methods only use the fully qualified type name after the last - '/' + Example 4: Pack and unpack a message in Go - in the type URL, for example "foo.bar.com/x/y.z" will yield type + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - name "y.z". + The pack methods provided by protobuf library will by default use + 'type.googleapis.com/full.type.name' as the type URL and the unpack - JSON + methods only use the fully qualified type name after the last '/' + in the type URL, for example "foo.bar.com/x/y.z" will yield type - The JSON representation of an `Any` value uses the regular + name "y.z". - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + JSON - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + ==== - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + The JSON representation of an `Any` value uses the regular - If the embedded message type is well-known and has a custom JSON + representation of the deserialized, embedded message, with an - representation, that representation will be embedded adding a - field + additional field `@type` which contains the type URL. Example: - `value` which holds the custom JSON in addition to the `@type` + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - field. Example (for message [google.protobuf.Duration][]): + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by - chains + If the embedded message type is well-known and has a custom JSON - when the default options are not sufficient. If any of these are - present + representation, that representation will be embedded adding a field - and can't be handled, they will be ignored - description: TxBody is the body of a transaction that all signers sign over. - auth_info: - $ref: '#/definitions/cosmos.tx.v1beta1.AuthInfo' - title: |- - auth_info is the authorization related content of the transaction, - specifically signers, signer modes and fee - signatures: - type: array - items: - type: string - format: byte - description: >- - signatures is a list of signatures that matches the length and order - of + `value` which holds the custom JSON in addition to the `@type` - AuthInfo's signer_infos to allow connecting signature meta information - like + field. Example (for message [google.protobuf.Duration][]): - public key and signing mode by position. - description: Tx is the standard type used for broadcasting transactions. - cosmos.tx.v1beta1.TxBody: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: Class defines the class of the nft type. + cosmos.nft.v1beta1.NFT: type: object properties: - messages: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + classId: + type: string + title: >- + class_id associated with the NFT, similar to the contract address of + ERC721 + id: + type: string + title: id is a unique identifier of the NFT + uri: + type: string + title: uri for the NFT metadata stored off chain + uriHash: + type: string + title: uri_hash is a hash of the document pointed by uri + data: + title: data is an app specific data of the NFT. Optional + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all types - that they + In practice, teams usually precompile into the binary all types + that they - expect it to use in the context of Any. However, for URLs which - use the + expect it to use in the context of Any. However, for URLs which + use the - scheme `http`, `https`, or no scheme, one can optionally set up - a type + scheme `http`, `https`, or no scheme, one can optionally set up a + type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning - with + protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used type + server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) might - be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + Schemes other than `http`, `https` (or the empty scheme) might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the - form - of utility functions or additional generated methods of the Any - type. + Protobuf library provides support to pack/unpack Any values in the + form + of utility functions or additional generated methods of the Any type. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { ... - if (any.UnpackTo(&foo)) { - ... - } + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The JSON representation of an `Any` value uses the regular + The pack methods provided by protobuf library will by default use - representation of the deserialized, embedded message, with an + 'type.googleapis.com/full.type.name' as the type URL and the unpack - additional field `@type` which contains the type URL. Example: + methods only use the fully qualified type name after the last '/' - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + in the type URL, for example "foo.bar.com/x/y.z" will yield type - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + name "y.z". - If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a field + JSON - `value` which holds the custom JSON in addition to the `@type` + ==== - field. Example (for message [google.protobuf.Duration][]): + The JSON representation of an `Any` value uses the regular - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of messages to be executed. The required signers of + representation of the deserialized, embedded message, with an - those messages define the number and order of elements in AuthInfo's + additional field `@type` which contains the type URL. Example: - signer_infos and Tx's signatures. Each required signer address is - added to + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - the list only the first time it occurs. + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - By convention, the first required signer (usually from the first - message) + If the embedded message type is well-known and has a custom JSON - is referred to as the primary signer and pays the fee for the whole + representation, that representation will be embedded adding a field - transaction. - memo: - type: string - description: >- - memo is any arbitrary note/comment to be added to the transaction. + `value` which holds the custom JSON in addition to the `@type` - WARNING: in clients, any publicly exposed text should not be called - memo, + field. Example (for message [google.protobuf.Duration][]): - but should be called `note` instead (see - https://github.com/cosmos/cosmos-sdk/issues/9122). - timeout_height: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: NFT defines the NFT. + cosmos.nft.v1beta1.QueryBalanceResponse: + type: object + properties: + amount: type: string format: uint64 - title: |- - timeout is the block height after which this transaction will not - be processed by the chain - extension_options: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + title: amount is the number of all NFTs of a given class owned by the owner + title: QueryBalanceResponse is the response type for the Query/Balance RPC method + cosmos.nft.v1beta1.QueryClassResponse: + type: object + properties: + class: + description: class defines the class of the nft type. + type: object + properties: + id: + type: string + title: >- + id defines the unique identifier of the NFT classification, + similar to the contract address of ERC721 + name: + type: string + title: >- + name defines the human-readable name of the NFT classification. + Optional + symbol: + type: string + title: symbol is an abbreviated name for nft classification. Optional + description: + type: string + title: description is a brief description of nft classification. Optional + uri: + type: string + title: >- + uri for the class metadata stored off chain. It can define schema + for Class and NFT `Data` attributes. Optional + uriHash: + type: string + title: uri_hash is a hash of the document pointed by uri. Optional + data: + title: data is the app specific metadata of the NFT class. Optional + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all types - that they + In practice, teams usually precompile into the binary all + types that they - expect it to use in the context of Any. However, for URLs which - use the + expect it to use in the context of Any. However, for URLs + which use the - scheme `http`, `https`, or no scheme, one can optionally set up - a type + scheme `http`, `https`, or no scheme, one can optionally set + up a type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning - with + protobuf release, and it is not used for type URLs beginning + with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used + type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) might - be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + Schemes other than `http`, `https` (or the empty scheme) might + be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the - form - of utility functions or additional generated methods of the Any - type. + Protobuf library provides support to pack/unpack Any values in the + form + of utility functions or additional generated methods of the Any + type. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - methods only use the fully qualified type name after the last '/' + The pack methods provided by protobuf library will by default use - in the type URL, for example "foo.bar.com/x/y.z" will yield type + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - name "y.z". + methods only use the fully qualified type name after the last '/' + in the type URL, for example "foo.bar.com/x/y.z" will yield type - JSON + name "y.z". - The JSON representation of an `Any` value uses the regular + JSON - representation of the deserialized, embedded message, with an + ==== - additional field `@type` which contains the type URL. Example: + The JSON representation of an `Any` value uses the regular - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + representation of the deserialized, embedded message, with an - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + additional field `@type` which contains the type URL. Example: - If the embedded message type is well-known and has a custom JSON + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - representation, that representation will be embedded adding a field + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - `value` which holds the custom JSON in addition to the `@type` + If the embedded message type is well-known and has a custom JSON - field. Example (for message [google.protobuf.Duration][]): + representation, that representation will be embedded adding a + field - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by chains + `value` which holds the custom JSON in addition to the `@type` - when the default options are not sufficient. If any of these are - present + field. Example (for message [google.protobuf.Duration][]): - and can't be handled, the transaction will be rejected - non_critical_extension_options: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: QueryClassResponse is the response type for the Query/Class RPC method + cosmos.nft.v1beta1.QueryClassesResponse: + type: object + properties: + classes: type: array items: type: object properties: - type_url: + id: type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + title: >- + id defines the unique identifier of the NFT classification, + similar to the contract address of ERC721 + name: + type: string + title: >- + name defines the human-readable name of the NFT classification. + Optional + symbol: + type: string + title: symbol is an abbreviated name for nft classification. Optional + description: + type: string + title: >- + description is a brief description of nft classification. + Optional + uri: + type: string + title: >- + uri for the class metadata stored off chain. It can define + schema for Class and NFT `Data` attributes. Optional + uriHash: + type: string + title: uri_hash is a hash of the document pointed by uri. Optional + data: + title: data is the app specific metadata of the NFT class. Optional + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all types - that they + In practice, teams usually precompile into the binary all + types that they - expect it to use in the context of Any. However, for URLs which - use the + expect it to use in the context of Any. However, for URLs + which use the - scheme `http`, `https`, or no scheme, one can optionally set up - a type + scheme `http`, `https`, or no scheme, one can optionally set + up a type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning - with + protobuf release, and it is not used for type URLs beginning + with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) might - be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + Schemes other than `http`, `https` (or the empty scheme) + might be - URL that describes the type of the serialized message. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the - form - of utility functions or additional generated methods of the Any - type. + Protobuf library provides support to pack/unpack Any values in + the form + of utility functions or additional generated methods of the Any + type. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Example 1: Pack and unpack a message in C++. - Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Example 2: Pack and unpack a message in Java. - Example 3: Pack and unpack a message in Python. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Example 3: Pack and unpack a message in Python. - Example 4: Pack and unpack a message in Go + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + Example 4: Pack and unpack a message in Go - The pack methods provided by protobuf library will by default use + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - 'type.googleapis.com/full.type.name' as the type URL and the unpack + The pack methods provided by protobuf library will by default + use - methods only use the fully qualified type name after the last '/' + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - in the type URL, for example "foo.bar.com/x/y.z" will yield type + methods only use the fully qualified type name after the last + '/' - name "y.z". + in the type URL, for example "foo.bar.com/x/y.z" will yield type + name "y.z". - JSON + JSON - The JSON representation of an `Any` value uses the regular + ==== - representation of the deserialized, embedded message, with an + The JSON representation of an `Any` value uses the regular - additional field `@type` which contains the type URL. Example: + representation of the deserialized, embedded message, with an - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + additional field `@type` which contains the type URL. Example: - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - If the embedded message type is well-known and has a custom JSON + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - representation, that representation will be embedded adding a field + If the embedded message type is well-known and has a custom JSON - `value` which holds the custom JSON in addition to the `@type` + representation, that representation will be embedded adding a + field - field. Example (for message [google.protobuf.Duration][]): + `value` which holds the custom JSON in addition to the `@type` - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by chains + field. Example (for message [google.protobuf.Duration][]): - when the default options are not sufficient. If any of these are - present + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: Class defines the class of the nft type. + description: class defines the class of the nft type. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - and can't be handled, they will be ignored - description: TxBody is the body of a transaction that all signers sign over. - cosmos.tx.v1beta1.TxDecodeAminoRequest: + was set, its value is undefined otherwise + title: QueryClassesResponse is the response type for the Query/Classes RPC method + cosmos.nft.v1beta1.QueryNFTResponse: type: object properties: - amino_binary: - type: string - format: byte - description: |- - TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino - RPC method. + nft: + title: owner is the owner address of the nft + type: object + properties: + classId: + type: string + title: >- + class_id associated with the NFT, similar to the contract address + of ERC721 + id: + type: string + title: id is a unique identifier of the NFT + uri: + type: string + title: uri for the NFT metadata stored off chain + uriHash: + type: string + title: uri_hash is a hash of the document pointed by uri + data: + title: data is an app specific data of the NFT. Optional + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - Since: cosmos-sdk 0.47 - cosmos.tx.v1beta1.TxDecodeAminoResponse: - type: object - properties: - amino_json: - type: string - description: |- - TxDecodeAminoResponse is the response type for the Service.TxDecodeAmino - RPC method. + protocol buffer message. This string must contain at least - Since: cosmos-sdk 0.47 - cosmos.tx.v1beta1.TxDecodeRequest: - type: object - properties: - tx_bytes: - type: string - format: byte - description: tx_bytes is the raw transaction. - description: |- - TxDecodeRequest is the request type for the Service.TxDecode - RPC method. + one "/" character. The last segment of the URL's path must + represent - Since: cosmos-sdk 0.47 - cosmos.tx.v1beta1.TxDecodeResponse: - type: object - properties: - tx: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: tx is the decoded transaction. - description: |- - TxDecodeResponse is the response type for the - Service.TxDecode method. + the fully qualified name of the type (as in - Since: cosmos-sdk 0.47 - cosmos.tx.v1beta1.TxEncodeAminoRequest: - type: object - properties: - amino_json: - type: string - description: |- - TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino - RPC method. + `path/google.protobuf.Duration`). The name should be in a + canonical form - Since: cosmos-sdk 0.47 - cosmos.tx.v1beta1.TxEncodeAminoResponse: - type: object - properties: - amino_binary: - type: string - format: byte - description: |- - TxEncodeAminoResponse is the response type for the Service.TxEncodeAmino - RPC method. + (e.g., leading "." is not accepted). - Since: cosmos-sdk 0.47 - cosmos.tx.v1beta1.TxEncodeRequest: - type: object - properties: - tx: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: tx is the transaction to encode. - description: |- - TxEncodeRequest is the request type for the Service.TxEncode - RPC method. - Since: cosmos-sdk 0.47 - cosmos.tx.v1beta1.TxEncodeResponse: - type: object - properties: - tx_bytes: - type: string - format: byte - description: tx_bytes is the encoded transaction bytes. - description: |- - TxEncodeResponse is the response type for the - Service.TxEncode method. + In practice, teams usually precompile into the binary all + types that they - Since: cosmos-sdk 0.47 - tendermint.abci.Event: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - index: - type: boolean - description: EventAttribute is a single key-value pair, associated with an event. - description: |- - Event allows application developers to attach additional information to - ResponseFinalizeBlock and ResponseCheckTx. - Later, transactions may be queried using these events. - tendermint.abci.EventAttribute: - type: object - properties: - key: - type: string - value: - type: string - index: - type: boolean - description: EventAttribute is a single key-value pair, associated with an event. - cosmos.upgrade.v1beta1.ModuleVersion: - type: object - properties: - name: - type: string - title: name of the app module - version: - type: string - format: uint64 - title: consensus version of the app module - description: |- - ModuleVersion specifies a module and its consensus version. + expect it to use in the context of Any. However, for URLs + which use the - Since: cosmos-sdk 0.43 - cosmos.upgrade.v1beta1.Plan: - type: object - properties: - name: - type: string - description: >- - Sets the name for the upgrade. This name will be used by the upgraded + scheme `http`, `https`, or no scheme, one can optionally set + up a type - version of the software to apply any special "on-upgrade" commands - during + server that maps type URLs to message definitions as follows: - the first BeginBlock method after the upgrade is applied. It is also - used - to detect whether a software version can handle a given upgrade. If no + * If no scheme is provided, `https` is assumed. - upgrade handler with this name has been set in the software, it will - be + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - assumed that the software is out-of-date when the upgrade Time or - Height is + Note: this functionality is not currently available in the + official - reached and the software will exit. - time: - type: string - format: date-time - description: >- - Deprecated: Time based upgrades have been deprecated. Time based - upgrade logic + protobuf release, and it is not used for type URLs beginning + with - has been removed from the SDK. + type.googleapis.com. As of May 2023, there are no widely used + type server - If this field is not empty, an error will be thrown. - height: - type: string - format: int64 - description: The height at which the upgrade must be performed. - info: - type: string - title: |- - Any application specific upgrade info to be included on-chain - such as a git commit that validators could automatically upgrade to - upgraded_client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + implementations and no plans to implement one. - protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + Schemes other than `http`, `https` (or the empty scheme) might + be - the fully qualified name of the type (as in + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - `path/google.protobuf.Duration`). The name should be in a - canonical form + URL that describes the type of the serialized message. - (e.g., leading "." is not accepted). + Protobuf library provides support to pack/unpack Any values in the + form - In practice, teams usually precompile into the binary all types - that they + of utility functions or additional generated methods of the Any + type. - expect it to use in the context of Any. However, for URLs which - use the - scheme `http`, `https`, or no scheme, one can optionally set up a - type + Example 1: Pack and unpack a message in C++. - server that maps type URLs to message definitions as follows: + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + Example 2: Pack and unpack a message in Java. - * If no scheme is provided, `https` is assumed. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + Example 3: Pack and unpack a message in Python. - Note: this functionality is not currently available in the - official + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - protobuf release, and it is not used for type URLs beginning with + Example 4: Pack and unpack a message in Go - type.googleapis.com. + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + The pack methods provided by protobuf library will by default use - Schemes other than `http`, `https` (or the empty scheme) might be + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + methods only use the fully qualified type name after the last '/' - URL that describes the type of the serialized message. + in the type URL, for example "foo.bar.com/x/y.z" will yield type + name "y.z". - Protobuf library provides support to pack/unpack Any values in the - form - of utility functions or additional generated methods of the Any type. + JSON + ==== - Example 1: Pack and unpack a message in C++. + The JSON representation of an `Any` value uses the regular - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + representation of the deserialized, embedded message, with an - Example 2: Pack and unpack a message in Java. + additional field `@type` which contains the type URL. Example: - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - Example 3: Pack and unpack a message in Python. + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + If the embedded message type is well-known and has a custom JSON - Example 4: Pack and unpack a message in Go + representation, that representation will be embedded adding a + field - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + `value` which holds the custom JSON in addition to the `@type` - The pack methods provided by protobuf library will by default use + field. Example (for message [google.protobuf.Duration][]): - 'type.googleapis.com/full.type.name' as the type URL and the unpack + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: NFT defines the NFT. + title: QueryNFTResponse is the response type for the Query/NFT RPC method + cosmos.nft.v1beta1.QueryNFTsResponse: + type: object + properties: + nfts: + type: array + items: + type: object + properties: + classId: + type: string + title: >- + class_id associated with the NFT, similar to the contract + address of ERC721 + id: + type: string + title: id is a unique identifier of the NFT + uri: + type: string + title: uri for the NFT metadata stored off chain + uriHash: + type: string + title: uri_hash is a hash of the document pointed by uri + data: + title: data is an app specific data of the NFT. Optional + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - methods only use the fully qualified type name after the last '/' + protocol buffer message. This string must contain at least - in the type URL, for example "foo.bar.com/x/y.z" will yield type + one "/" character. The last segment of the URL's path must + represent - name "y.z". + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in a + canonical form - JSON + (e.g., leading "." is not accepted). - The JSON representation of an `Any` value uses the regular + In practice, teams usually precompile into the binary all + types that they - representation of the deserialized, embedded message, with an + expect it to use in the context of Any. However, for URLs + which use the - additional field `@type` which contains the type URL. Example: + scheme `http`, `https`, or no scheme, one can optionally set + up a type - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + server that maps type URLs to message definitions as + follows: - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a custom JSON + * If no scheme is provided, `https` is assumed. - representation, that representation will be embedded adding a field + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - `value` which holds the custom JSON in addition to the `@type` + Note: this functionality is not currently available in the + official - field. Example (for message [google.protobuf.Duration][]): + protobuf release, and it is not used for type URLs beginning + with - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - Plan specifies information about a planned upgrade and when it should - occur. - cosmos.upgrade.v1beta1.QueryAppliedPlanResponse: - type: object - properties: - height: - type: string - format: int64 - description: height is the block height at which the plan was applied. - description: >- - QueryAppliedPlanResponse is the response type for the Query/AppliedPlan - RPC + type.googleapis.com. As of May 2023, there are no widely + used type server - method. - cosmos.upgrade.v1beta1.QueryAuthorityResponse: - type: object - properties: - address: - type: string - description: 'Since: cosmos-sdk 0.46' - title: QueryAuthorityResponse is the response type for Query/Authority - cosmos.upgrade.v1beta1.QueryCurrentPlanResponse: - type: object - properties: - plan: - description: plan is the current upgrade plan. - type: object - properties: - name: - type: string - description: >- - Sets the name for the upgrade. This name will be used by the - upgraded + implementations and no plans to implement one. - version of the software to apply any special "on-upgrade" commands - during - the first BeginBlock method after the upgrade is applied. It is - also used + Schemes other than `http`, `https` (or the empty scheme) + might be - to detect whether a software version can handle a given upgrade. - If no + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - upgrade handler with this name has been set in the software, it - will be + URL that describes the type of the serialized message. - assumed that the software is out-of-date when the upgrade Time or - Height is - reached and the software will exit. - time: - type: string - format: date-time - description: >- - Deprecated: Time based upgrades have been deprecated. Time based - upgrade logic + Protobuf library provides support to pack/unpack Any values in + the form - has been removed from the SDK. + of utility functions or additional generated methods of the Any + type. - If this field is not empty, an error will be thrown. - height: - type: string - format: int64 - description: The height at which the upgrade must be performed. - info: - type: string - title: >- - Any application specific upgrade info to be included on-chain - such as a git commit that validators could automatically upgrade - to - upgraded_client_state: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + Example 1: Pack and unpack a message in C++. - protocol buffer message. This string must contain at least + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - one "/" character. The last segment of the URL's path must - represent + Example 2: Pack and unpack a message in Java. - the fully qualified name of the type (as in + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - `path/google.protobuf.Duration`). The name should be in a - canonical form + Example 3: Pack and unpack a message in Python. - (e.g., leading "." is not accepted). + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + Example 4: Pack and unpack a message in Go - In practice, teams usually precompile into the binary all - types that they + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - expect it to use in the context of Any. However, for URLs - which use the + The pack methods provided by protobuf library will by default + use - scheme `http`, `https`, or no scheme, one can optionally set - up a type + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - server that maps type URLs to message definitions as follows: + methods only use the fully qualified type name after the last + '/' + in the type URL, for example "foo.bar.com/x/y.z" will yield type - * If no scheme is provided, `https` is assumed. + name "y.z". - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - Note: this functionality is not currently available in the - official + JSON - protobuf release, and it is not used for type URLs beginning - with + ==== - type.googleapis.com. + The JSON representation of an `Any` value uses the regular + representation of the deserialized, embedded message, with an - Schemes other than `http`, `https` (or the empty scheme) might - be + additional field `@type` which contains the type URL. Example: - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - URL that describes the type of the serialized message. + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + If the embedded message type is well-known and has a custom JSON - Protobuf library provides support to pack/unpack Any values in the - form + representation, that representation will be embedded adding a + field - of utility functions or additional generated methods of the Any - type. + `value` which holds the custom JSON in addition to the `@type` + field. Example (for message [google.protobuf.Duration][]): - Example 1: Pack and unpack a message in C++. + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: NFT defines the NFT. + title: NFT defines the NFT + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + was set, its value is undefined otherwise + title: QueryNFTsResponse is the response type for the Query/NFTs RPC methods + cosmos.nft.v1beta1.QueryOwnerResponse: + type: object + properties: + owner: + type: string + title: owner is the owner address of the nft + title: QueryOwnerResponse is the response type for the Query/Owner RPC method + cosmos.nft.v1beta1.QuerySupplyResponse: + type: object + properties: + amount: + type: string + format: uint64 + title: amount is the number of all NFTs from the given class + title: QuerySupplyResponse is the response type for the Query/Supply RPC method + cosmos.params.v1beta1.ParamChange: + type: object + properties: + subspace: + type: string + key: + type: string + value: + type: string + description: |- + ParamChange defines an individual parameter change, for use in + ParameterChangeProposal. + cosmos.params.v1beta1.QueryParamsResponse: + type: object + properties: + param: + description: param defines the queried parameter. + type: object + properties: + subspace: + type: string + key: + type: string + value: + type: string + description: QueryParamsResponse is response type for the Query/Params RPC method. + cosmos.params.v1beta1.QuerySubspacesResponse: + type: object + properties: + subspaces: + type: array + items: + type: object + properties: + subspace: + type: string + keys: + type: array + items: + type: string + description: >- + Subspace defines a parameter subspace name and all the keys that + exist for - Example 2: Pack and unpack a message in Java. + the subspace. + description: |- + QuerySubspacesResponse defines the response types for querying for all + registered subspaces and all keys for a subspace. + cosmos.params.v1beta1.Subspace: + type: object + properties: + subspace: + type: string + keys: + type: array + items: + type: string + description: |- + Subspace defines a parameter subspace name and all the keys that exist for + the subspace. + cosmos.protocolpool.v1.ContinuousFund: + type: object + properties: + recipient: + type: string + description: Recipient is the address string of the account receiving funds. + percentage: + type: string + description: >- + Percentage is the percentage of funds to be allocated from Community + pool. + expiry: + type: string + format: date-time + description: Optional, if expiry is set, removes the state object when expired. + description: ContinuousFund defines the fields of continuous fund proposal. + cosmos.protocolpool.v1.Params: + type: object + properties: + enabledDistributionDenoms: + type: array + items: + type: string + description: >- + EnabledDistributionDenoms lists the denoms that are allowed to be + distributed. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + This is to avoid spending time distributing undesired tokens to + continuous funds and budgets. + distributionFrequency: + type: string + format: uint64 + description: >- + DistributionFrequency is the frequency (in terms of blocks) that funds + are distributed out from the - Example 3: Pack and unpack a message in Python. + x/protocolpool module. + description: Params defines the parameters for the protocolpool module. + cosmos.protocolpool.v1.QueryCommunityPoolResponse: + type: object + properties: + pool: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: pool defines community pool's coins. + description: >- + QueryCommunityPoolResponse is the response type for the + Query/CommunityPool - Example 4: Pack and unpack a message in Go + RPC method. + cosmos.protocolpool.v1.QueryContinuousFundResponse: + type: object + properties: + continuousFund: + description: ContinuousFunds is the given continuous fund returned in the query. + type: object + properties: + recipient: + type: string + description: Recipient is the address string of the account receiving funds. + percentage: + type: string + description: >- + Percentage is the percentage of funds to be allocated from + Community pool. + expiry: + type: string + format: date-time + description: Optional, if expiry is set, removes the state object when expired. + description: >- + QueryUnclaimedBudgetResponse is the response type for the + Query/ContinuousFund - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + RPC method. + cosmos.protocolpool.v1.QueryContinuousFundsResponse: + type: object + properties: + continuousFunds: + type: array + items: + type: object + properties: + recipient: + type: string + description: Recipient is the address string of the account receiving funds. + percentage: + type: string + description: >- + Percentage is the percentage of funds to be allocated from + Community pool. + expiry: + type: string + format: date-time + description: >- + Optional, if expiry is set, removes the state object when + expired. + description: ContinuousFund defines the fields of continuous fund proposal. + description: ContinuousFunds defines all continuous funds in state. + description: >- + QueryUnclaimedBudgetResponse is the response type for the + Query/ContinuousFunds - The pack methods provided by protobuf library will by default use + RPC method. + cosmos.protocolpool.v1.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + enabledDistributionDenoms: + type: array + items: + type: string + description: >- + EnabledDistributionDenoms lists the denoms that are allowed to be + distributed. - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + This is to avoid spending time distributing undesired tokens to + continuous funds and budgets. + distributionFrequency: + type: string + format: uint64 + description: >- + DistributionFrequency is the frequency (in terms of blocks) that + funds are distributed out from the - methods only use the fully qualified type name after the last '/' + x/protocolpool module. + description: Params defines the parameters for the protocolpool module. + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.slashing.v1beta1.Params: + type: object + properties: + signedBlocksWindow: + type: string + format: int64 + minSignedPerWindow: + type: string + format: byte + downtimeJailDuration: + type: string + slashFractionDoubleSign: + type: string + format: byte + slashFractionDowntime: + type: string + format: byte + description: Params represents the parameters used for by the slashing module. + cosmos.slashing.v1beta1.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + signedBlocksWindow: + type: string + format: int64 + minSignedPerWindow: + type: string + format: byte + downtimeJailDuration: + type: string + slashFractionDoubleSign: + type: string + format: byte + slashFractionDowntime: + type: string + format: byte + description: Params represents the parameters used for by the slashing module. + title: QueryParamsResponse is the response type for the Query/Params RPC method + cosmos.slashing.v1beta1.QuerySigningInfoResponse: + type: object + properties: + valSigningInfo: + title: val_signing_info is the signing info of requested val cons address + type: object + properties: + address: + type: string + startHeight: + type: string + format: int64 + title: Height at which validator was first a candidate OR was un-jailed + indexOffset: + type: string + format: int64 + description: >- + Index which is incremented every time a validator is bonded in a + block and - in the type URL, for example "foo.bar.com/x/y.z" will yield type + _may_ have signed a pre-commit or not. This in conjunction with + the - name "y.z". + signed_blocks_window param determines the index in the missed + block bitmap. + jailedUntil: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to liveness + downtime. + tombstoned: + type: boolean + description: >- + Whether or not a validator has been tombstoned (killed out of + validator + set). It is set once the validator commits an equivocation or for + any other - JSON + configured misbehavior. + missedBlocksCounter: + type: string + format: int64 + description: >- + A counter of missed (unsigned) blocks. It is used to avoid + unnecessary + reads in the missed block bitmap. + description: >- + ValidatorSigningInfo defines a validator's signing info for monitoring + their - The JSON representation of an `Any` value uses the regular + liveness activity. + title: >- + QuerySigningInfoResponse is the response type for the Query/SigningInfo + RPC - representation of the deserialized, embedded message, with an + method + cosmos.slashing.v1beta1.QuerySigningInfosResponse: + type: object + properties: + info: + type: array + items: + type: object + properties: + address: + type: string + startHeight: + type: string + format: int64 + title: Height at which validator was first a candidate OR was un-jailed + indexOffset: + type: string + format: int64 + description: >- + Index which is incremented every time a validator is bonded in a + block and - additional field `@type` which contains the type URL. Example: + _may_ have signed a pre-commit or not. This in conjunction with + the - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + signed_blocks_window param determines the index in the missed + block bitmap. + jailedUntil: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to liveness + downtime. + tombstoned: + type: boolean + description: >- + Whether or not a validator has been tombstoned (killed out of + validator - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + set). It is set once the validator commits an equivocation or + for any other - If the embedded message type is well-known and has a custom JSON + configured misbehavior. + missedBlocksCounter: + type: string + format: int64 + description: >- + A counter of missed (unsigned) blocks. It is used to avoid + unnecessary - representation, that representation will be embedded adding a - field + reads in the missed block bitmap. + description: >- + ValidatorSigningInfo defines a validator's signing info for + monitoring their - `value` which holds the custom JSON in addition to the `@type` + liveness activity. + title: info is the signing info of all validators + pagination: + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - field. Example (for message [google.protobuf.Duration][]): + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryCurrentPlanResponse is the response type for the Query/CurrentPlan + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QuerySigningInfosResponse is the response type for the Query/SigningInfos RPC - method. - cosmos.upgrade.v1beta1.QueryModuleVersionsResponse: + method + cosmos.slashing.v1beta1.ValidatorSigningInfo: type: object properties: - module_versions: - type: array - items: - type: object - properties: - name: - type: string - title: name of the app module - version: - type: string - format: uint64 - title: consensus version of the app module - description: |- - ModuleVersion specifies a module and its consensus version. + address: + type: string + startHeight: + type: string + format: int64 + title: Height at which validator was first a candidate OR was un-jailed + indexOffset: + type: string + format: int64 + description: >- + Index which is incremented every time a validator is bonded in a block + and - Since: cosmos-sdk 0.43 + _may_ have signed a pre-commit or not. This in conjunction with the + + signed_blocks_window param determines the index in the missed block + bitmap. + jailedUntil: + type: string + format: date-time description: >- - module_versions is a list of module names with their consensus - versions. - description: >- - QueryModuleVersionsResponse is the response type for the - Query/ModuleVersions + Timestamp until which the validator is jailed due to liveness + downtime. + tombstoned: + type: boolean + description: >- + Whether or not a validator has been tombstoned (killed out of + validator - RPC method. + set). It is set once the validator commits an equivocation or for any + other + configured misbehavior. + missedBlocksCounter: + type: string + format: int64 + description: |- + A counter of missed (unsigned) blocks. It is used to avoid unnecessary + reads in the missed block bitmap. + description: >- + ValidatorSigningInfo defines a validator's signing info for monitoring + their - Since: cosmos-sdk 0.43 - cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse: + liveness activity. + cosmos.staking.v1beta1.BondStatus: + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + description: |- + BondStatus is the status of a validator. + + - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. + - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. + - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. + - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. + cosmos.staking.v1beta1.Commission: + type: object + properties: + commissionRates: + description: >- + commission_rates defines the initial commission rates to be used for + creating a validator. + type: object + properties: + rate: + type: string + description: rate is the commission rate charged to delegators, as a fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate which validator can + ever charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the + validator commission, as a fraction. + updateTime: + type: string + format: date-time + description: update_time is the last time the commission rate was changed. + description: Commission defines commission parameters for a given validator. + cosmos.staking.v1beta1.CommissionRates: type: object properties: - upgraded_consensus_state: + rate: type: string - format: byte - title: 'Since: cosmos-sdk 0.43' + description: rate is the commission rate charged to delegators, as a fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate which validator can ever + charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the validator + commission, as a fraction. description: >- - QueryUpgradedConsensusStateResponse is the response type for the - Query/UpgradedConsensusState + CommissionRates defines the initial commission rates to be used for + creating - RPC method. - cosmos.authz.v1beta1.Grant: + a validator. + cosmos.staking.v1beta1.Delegation: type: object properties: - authorization: + delegatorAddress: + type: string + description: delegator_address is the encoded address of the delegator. + validatorAddress: + type: string + description: validator_address is the encoded address of the validator. + shares: + type: string + description: shares define the delegation shares received. + description: |- + Delegation represents the bond with tokens held by an account. It is + owned by one delegator, and is associated with the voting power of one + validator. + cosmos.staking.v1beta1.DelegationResponse: + type: object + properties: + delegation: type: object properties: - type_url: + delegatorAddress: type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. + description: delegator_address is the encoded address of the delegator. + validatorAddress: + type: string + description: validator_address is the encoded address of the validator. + shares: + type: string + description: shares define the delegation shares received. + description: |- + Delegation represents the bond with tokens held by an account. It is + owned by one delegator, and is associated with the voting power of one + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: |- + DelegationResponse is equivalent to Delegation except that it contains a + balance in addition to shares which is more suitable for client responses. + cosmos.staking.v1beta1.Description: + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort or + Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: + type: string + description: security_contact defines an optional email for security contact. + details: + type: string + description: details define other optional details. + description: Description defines a validator description. + cosmos.staking.v1beta1.HistoricalInfo: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in + the blockchain, - Schemes other than `http`, `https` (or the empty scheme) might be + including all blockchain data structures and the rules of the + application's - used with implementation specific semantics. - value: + state transition machine. + chainId: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + lastBlockId: + title: prev block info + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + lastCommitHash: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. + description: commit from validators from the last block + title: hashes of block data + dataHash: + type: string + format: byte + title: transactions + validatorsHash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + nextValidatorsHash: + type: string + format: byte + title: validators for the next block + consensusHash: + type: string + format: byte + title: consensus params for current block + appHash: + type: string + format: byte + title: state after txs from the previous block + lastResultsHash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + evidenceHash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposerAddress: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + valset: + type: array + items: + type: object + properties: + operatorAddress: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensusPubkey: + description: >- + consensus_pubkey is the consensus public key of the validator, + as a Protobuf Any. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + protocol buffer message. This string must contain at least - Protobuf library provides support to pack/unpack Any values in the - form + one "/" character. The last segment of the URL's path must + represent - of utility functions or additional generated methods of the Any type. + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in a + canonical form - Example 1: Pack and unpack a message in C++. + (e.g., leading "." is not accepted). - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - Example 2: Pack and unpack a message in Java. + In practice, teams usually precompile into the binary all + types that they - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + expect it to use in the context of Any. However, for URLs + which use the - Example 3: Pack and unpack a message in Python. + scheme `http`, `https`, or no scheme, one can optionally set + up a type - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + server that maps type URLs to message definitions as + follows: - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + * If no scheme is provided, `https` is assumed. - The pack methods provided by protobuf library will by default use + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - 'type.googleapis.com/full.type.name' as the type URL and the unpack + Note: this functionality is not currently available in the + official - methods only use the fully qualified type name after the last '/' + protobuf release, and it is not used for type URLs beginning + with - in the type URL, for example "foo.bar.com/x/y.z" will yield type + type.googleapis.com. As of May 2023, there are no widely + used type server - name "y.z". + implementations and no plans to implement one. - JSON + Schemes other than `http`, `https` (or the empty scheme) + might be + used with implementation specific semantics. + additionalProperties: {} + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegatorShares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort + or Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbondingHeight: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbondingTime: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commissionRates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily increase of + the validator commission, as a fraction. + updateTime: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + minSelfDelegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum + self delegation. + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been stopped + by external modules + unbondingIds: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding of + this validator + description: >- + Validator defines a validator, together with the total amount of the - The JSON representation of an `Any` value uses the regular + Validator's bond shares and their exchange rate to coins. Slashing + results in - representation of the deserialized, embedded message, with an + a decrease in the exchange rate, allowing correct calculation of + future - additional field `@type` which contains the type URL. Example: + undelegations without iterating over delegators. When coins are + delegated to - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + this validator, the validator is credited with a delegation whose + number of - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + bond shares is based on the amount of coins delegated divided by the + current - If the embedded message type is well-known and has a custom JSON + exchange rate. Voting power can be calculated as total bonded shares - representation, that representation will be embedded adding a field + multiplied by exchange rate. + description: >- + HistoricalInfo contains header and validator information for a given + block. - `value` which holds the custom JSON in addition to the `@type` + It is stored as part of staking module's state, which persists the `n` + most - field. Example (for message [google.protobuf.Duration][]): + recent HistoricalInfo - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: + (`n` is set by the staking module's `historical_entries` parameter). + cosmos.staking.v1beta1.Params: + type: object + properties: + unbondingTime: + type: string + description: unbonding_time is the time duration of unbonding. + maxValidators: + type: integer + format: int64 + description: max_validators is the maximum number of validators. + maxEntries: + type: integer + format: int64 + description: >- + max_entries is the max entries for either unbonding delegation or + redelegation (per pair/trio). + historicalEntries: + type: integer + format: int64 + description: historical_entries is the number of historical entries to persist. + bondDenom: + type: string + description: bond_denom defines the bondable coin denomination. + minCommissionRate: type: string - format: date-time title: >- - time when the grant will expire and will be pruned. If null, then the - grant - - doesn't have a time expiration (other conditions in `authorization` - - may apply to invalidate the grant) - description: |- - Grant gives permissions to execute - the provide method with expiration time. - cosmos.authz.v1beta1.GrantAuthorization: + min_commission_rate is the chain-wide minimum commission rate that a + validator can charge their delegators + description: Params defines the parameters for the x/staking module. + cosmos.staking.v1beta1.Pool: type: object properties: - granter: + notBondedTokens: type: string - grantee: + bondedTokens: type: string - authorization: + description: |- + Pool is used for tracking bonded and not-bonded token supply of the bond + denomination. + cosmos.staking.v1beta1.QueryDelegationResponse: + type: object + properties: + delegationResponse: + description: delegation_responses defines the delegation info of a delegation. type: object properties: - type_url: - type: string + delegation: + type: object + properties: + delegatorAddress: + type: string + description: delegator_address is the encoded address of the delegator. + validatorAddress: + type: string + description: validator_address is the encoded address of the validator. + shares: + type: string + description: shares define the delegation shares received. description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the + Delegation represents the bond with tokens held by an account. It + is - scheme `http`, `https`, or no scheme, one can optionally set up a - type + owned by one delegator, and is associated with the voting power of + one - server that maps type URLs to message definitions as follows: + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - * If no scheme is provided, `https` is assumed. + NOTE: The amount field is an Int which implements the custom + method - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + signatures required by gogoproto. + description: >- + QueryDelegationResponse is response type for the Query/Delegation RPC + method. + cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse: + type: object + properties: + delegationResponses: + type: array + items: + type: object + properties: + delegation: + type: object + properties: + delegatorAddress: + type: string + description: delegator_address is the encoded address of the delegator. + validatorAddress: + type: string + description: validator_address is the encoded address of the validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an account. + It is - Note: this functionality is not currently available in the - official + owned by one delegator, and is associated with the voting power + of one - protobuf release, and it is not used for type URLs beginning with + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - type.googleapis.com. + NOTE: The amount field is an Int which implements the custom + method - Schemes other than `http`, `https` (or the empty scheme) might be + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that it + contains a - used with implementation specific semantics. - value: + balance in addition to shares which is more suitable for client + responses. + description: delegation_responses defines all the delegations' info of a delegator. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + was set, its value is undefined otherwise + description: |- + QueryDelegatorDelegationsResponse is response type for the + Query/DelegatorDelegations RPC method. + cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse: + type: object + properties: + unbondingResponses: + type: array + items: + type: object + properties: + delegatorAddress: + type: string + description: delegator_address is the encoded address of the delegator. + validatorAddress: + type: string + description: validator_address is the encoded address of the validator. + entries: + type: array + items: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding took + place. + completionTime: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initialBalance: + type: string + description: >- + initial_balance defines the tokens initially scheduled to + receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been + stopped by external modules + description: >- + UnbondingDelegationEntry defines an unbonding object with + relevant metadata. + description: |- + entries are the unbonding delegation entries. - Example 3: Pack and unpack a message in Python. + unbonding delegation entries + description: >- + UnbondingDelegation stores all of a single delegator's unbonding + bonds - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + for a single validator in an time-ordered list. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - Example 4: Pack and unpack a message in Go + was set, its value is undefined otherwise + description: |- + QueryUnbondingDelegatorDelegationsResponse is response type for the + Query/UnbondingDelegatorDelegations RPC method. + cosmos.staking.v1beta1.QueryDelegatorValidatorResponse: + type: object + properties: + validator: + description: validator defines the validator info. + type: object + properties: + operatorAddress: + type: string + description: >- + operator_address defines the address of the validator's operator; + bech encoded in JSON. + consensusPubkey: + description: >- + consensus_pubkey is the consensus public key of the validator, as + a Protobuf Any. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + protocol buffer message. This string must contain at least - The pack methods provided by protobuf library will by default use + one "/" character. The last segment of the URL's path must + represent - 'type.googleapis.com/full.type.name' as the type URL and the unpack + the fully qualified name of the type (as in - methods only use the fully qualified type name after the last '/' + `path/google.protobuf.Duration`). The name should be in a + canonical form - in the type URL, for example "foo.bar.com/x/y.z" will yield type + (e.g., leading "." is not accepted). - name "y.z". + In practice, teams usually precompile into the binary all + types that they - JSON + expect it to use in the context of Any. However, for URLs + which use the + scheme `http`, `https`, or no scheme, one can optionally set + up a type - The JSON representation of an `Any` value uses the regular + server that maps type URLs to message definitions as follows: - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + * If no scheme is provided, `https` is assumed. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + Note: this functionality is not currently available in the + official - If the embedded message type is well-known and has a custom JSON + protobuf release, and it is not used for type URLs beginning + with - representation, that representation will be embedded adding a field + type.googleapis.com. As of May 2023, there are no widely used + type server - `value` which holds the custom JSON in addition to the `@type` + implementations and no plans to implement one. - field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - GrantAuthorization extends a grant with both the addresses of the grantee - and granter. + Schemes other than `http`, `https` (or the empty scheme) might + be - It is used in genesis.proto and query.proto - cosmos.authz.v1beta1.QueryGranteeGrantsResponse: + used with implementation specific semantics. + additionalProperties: {} + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegatorShares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort or + Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbondingHeight: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbondingTime: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commissionRates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the + validator commission, as a fraction. + updateTime: + type: string + format: date-time + description: update_time is the last time the commission rate was changed. + minSelfDelegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum self + delegation. + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been stopped + by external modules + unbondingIds: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding of + this validator + description: |- + QueryDelegatorValidatorResponse response type for the + Query/DelegatorValidator RPC method. + cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse: type: object properties: - grants: + validators: type: array items: type: object properties: - granter: - type: string - grantee: + operatorAddress: type: string - authorization: + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensusPubkey: + description: >- + consensus_pubkey is the consensus public key of the validator, + as a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -76694,141 +72679,661 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: + additionalProperties: {} + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegatorShares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the above - specified type. + identity defines an optional identity signature (ex. UPort + or Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbondingHeight: + type: string + format: int64 description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbondingTime: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commissionRates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily increase of + the validator commission, as a fraction. + updateTime: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + minSelfDelegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum + self delegation. + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been stopped + by external modules + unbondingIds: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding of + this validator + description: >- + Validator defines a validator, together with the total amount of the - URL that describes the type of the serialized message. + Validator's bond shares and their exchange rate to coins. Slashing + results in + a decrease in the exchange rate, allowing correct calculation of + future - Protobuf library provides support to pack/unpack Any values in - the form + undelegations without iterating over delegators. When coins are + delegated to - of utility functions or additional generated methods of the Any - type. + this validator, the validator is credited with a delegation whose + number of + bond shares is based on the amount of coins delegated divided by the + current - Example 1: Pack and unpack a message in C++. + exchange rate. Voting power can be calculated as total bonded shares - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + multiplied by exchange rate. + description: validators defines the validators' info of a delegator. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - Example 2: Pack and unpack a message in Java. + was set, its value is undefined otherwise + description: |- + QueryDelegatorValidatorsResponse is response type for the + Query/DelegatorValidators RPC method. + cosmos.staking.v1beta1.QueryHistoricalInfoResponse: + type: object + properties: + hist: + description: hist defines the historical info at the given height. + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + including all blockchain data structures and the rules of the + application's - Example 3: Pack and unpack a message in Python. + state transition machine. + chainId: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + lastBlockId: + title: prev block info + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + lastCommitHash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + dataHash: + type: string + format: byte + title: transactions + validatorsHash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + nextValidatorsHash: + type: string + format: byte + title: validators for the next block + consensusHash: + type: string + format: byte + title: consensus params for current block + appHash: + type: string + format: byte + title: state after txs from the previous block + lastResultsHash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + evidenceHash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposerAddress: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + valset: + type: array + items: + type: object + properties: + operatorAddress: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensusPubkey: + description: >- + consensus_pubkey is the consensus public key of the + validator, as a Protobuf Any. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + protocol buffer message. This string must contain at + least - Example 4: Pack and unpack a message in Go + one "/" character. The last segment of the URL's path + must represent - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + the fully qualified name of the type (as in - The pack methods provided by protobuf library will by default - use + `path/google.protobuf.Duration`). The name should be in + a canonical form - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + (e.g., leading "." is not accepted). - methods only use the fully qualified type name after the last - '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type + In practice, teams usually precompile into the binary + all types that they - name "y.z". + expect it to use in the context of Any. However, for + URLs which use the + scheme `http`, `https`, or no scheme, one can optionally + set up a type - JSON + server that maps type URLs to message definitions as + follows: - The JSON representation of an `Any` value uses the regular + * If no scheme is provided, `https` is assumed. - representation of the deserialized, embedded message, with an + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - additional field `@type` which contains the type URL. Example: + Note: this functionality is not currently available in + the official - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + protobuf release, and it is not used for type URLs + beginning with - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + additionalProperties: {} + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from + bonded status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegatorShares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbondingHeight: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which + this validator has begun unbonding. + unbondingTime: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commissionRates: + description: >- + commission_rates defines the initial commission rates to + be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, + as a fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily increase + of the validator commission, as a fraction. + updateTime: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + minSelfDelegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum + self delegation. + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been + stopped by external modules + unbondingIds: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding + of this validator + description: >- + Validator defines a validator, together with the total amount of + the + + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct calculation of + future + + undelegations without iterating over delegators. When coins are + delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated divided by + the current + + exchange rate. Voting power can be calculated as total bonded + shares + + multiplied by exchange rate. + description: >- + QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo + RPC + + method. + cosmos.staking.v1beta1.QueryParamsResponse: + type: object + properties: + params: + description: params holds all the parameters of this module. + type: object + properties: + unbondingTime: + type: string + description: unbonding_time is the time duration of unbonding. + maxValidators: + type: integer + format: int64 + description: max_validators is the maximum number of validators. + maxEntries: + type: integer + format: int64 + description: >- + max_entries is the max entries for either unbonding delegation or + redelegation (per pair/trio). + historicalEntries: + type: integer + format: int64 + description: historical_entries is the number of historical entries to persist. + bondDenom: + type: string + description: bond_denom defines the bondable coin denomination. + minCommissionRate: + type: string + title: >- + min_commission_rate is the chain-wide minimum commission rate that + a validator can charge their delegators + description: QueryParamsResponse is response type for the Query/Params RPC method. + cosmos.staking.v1beta1.QueryPoolResponse: + type: object + properties: + pool: + description: pool defines the pool info. + type: object + properties: + notBondedTokens: + type: string + bondedTokens: + type: string + description: QueryPoolResponse is response type for the Query/Pool RPC method. + cosmos.staking.v1beta1.QueryRedelegationsResponse: + type: object + properties: + redelegationResponses: + type: array + items: + type: object + properties: + redelegation: + type: object + properties: + delegatorAddress: + type: string + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validatorSrcAddress: + type: string + description: >- + validator_src_address is the validator redelegation source + operator address. + validatorDstAddress: + type: string + description: >- + validator_dst_address is the validator redelegation + destination operator address. + entries: + type: array + items: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completionTime: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initialBalance: + type: string + description: >- + initial_balance defines the initial balance when + redelegation started. + sharesDst: + type: string + description: >- + shares_dst is the amount of destination-validator + shares created by redelegation. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been + stopped by external modules + description: >- + RedelegationEntry defines a redelegation object with + relevant metadata. + description: |- + entries are the redelegation entries. - If the embedded message type is well-known and has a custom JSON + redelegation entries + description: >- + Redelegation contains the list of a particular delegator's + redelegating bonds - representation, that representation will be embedded adding a - field + from a particular source validator to a particular destination + validator. + entries: + type: array + items: + type: object + properties: + redelegationEntry: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completionTime: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initialBalance: + type: string + description: >- + initial_balance defines the initial balance when + redelegation started. + sharesDst: + type: string + description: >- + shares_dst is the amount of destination-validator + shares created by redelegation. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been + stopped by external modules + description: >- + RedelegationEntry defines a redelegation object with + relevant metadata. + balance: + type: string + description: >- + RedelegationEntryResponse is equivalent to a RedelegationEntry + except that it - `value` which holds the custom JSON in addition to the `@type` + contains a balance in addition to shares which is more + suitable for client - field. Example (for message [google.protobuf.Duration][]): + responses. + description: >- + RedelegationResponse is equivalent to a Redelegation except that its + entries - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - GrantAuthorization extends a grant with both the addresses of the - grantee and granter. + contain a balance in addition to shares which is more suitable for + client - It is used in genesis.proto and query.proto - description: grants is a list of grants granted to the grantee. + responses. pagination: - description: pagination defines an pagination for the response. + description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -76844,208 +73349,384 @@ definitions: was set, its value is undefined otherwise description: >- - QueryGranteeGrantsResponse is the response type for the - Query/GranteeGrants RPC method. - cosmos.authz.v1beta1.QueryGranterGrantsResponse: + QueryRedelegationsResponse is response type for the Query/Redelegations + RPC + + method. + cosmos.staking.v1beta1.QueryUnbondingDelegationResponse: type: object properties: - grants: + unbond: + description: unbond defines the unbonding information of a delegation. + type: object + properties: + delegatorAddress: + type: string + description: delegator_address is the encoded address of the delegator. + validatorAddress: + type: string + description: validator_address is the encoded address of the validator. + entries: + type: array + items: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding took + place. + completionTime: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initialBalance: + type: string + description: >- + initial_balance defines the tokens initially scheduled to + receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped + by external modules + description: >- + UnbondingDelegationEntry defines an unbonding object with + relevant metadata. + description: |- + entries are the unbonding delegation entries. + + unbonding delegation entries + description: |- + QueryDelegationResponse is response type for the Query/UnbondingDelegation + RPC method. + cosmos.staking.v1beta1.QueryValidatorDelegationsResponse: + type: object + properties: + delegationResponses: type: array items: type: object properties: - granter: - type: string - grantee: - type: string - authorization: + delegation: type: object properties: - type_url: + delegatorAddress: type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: + description: delegator_address is the encoded address of the delegator. + validatorAddress: type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + description: validator_address is the encoded address of the validator. + shares: + type: string + description: shares define the delegation shares received. description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form + Delegation represents the bond with tokens held by an account. + It is - of utility functions or additional generated methods of the Any - type. + owned by one delegator, and is associated with the voting power + of one + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + NOTE: The amount field is an Int which implements the custom + method - Example 2: Pack and unpack a message in Java. + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that it + contains a - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + balance in addition to shares which is more suitable for client + responses. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + nextKey: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - Example 3: Pack and unpack a message in Python. + was set, its value is undefined otherwise + title: |- + QueryValidatorDelegationsResponse is response type for the + Query/ValidatorDelegations RPC method + cosmos.staking.v1beta1.QueryValidatorResponse: + type: object + properties: + validator: + description: validator defines the validator info. + type: object + properties: + operatorAddress: + type: string + description: >- + operator_address defines the address of the validator's operator; + bech encoded in JSON. + consensusPubkey: + description: >- + consensus_pubkey is the consensus public key of the validator, as + a Protobuf Any. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + protocol buffer message. This string must contain at least - Example 4: Pack and unpack a message in Go + one "/" character. The last segment of the URL's path must + represent - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + the fully qualified name of the type (as in - The pack methods provided by protobuf library will by default - use + `path/google.protobuf.Duration`). The name should be in a + canonical form - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + (e.g., leading "." is not accepted). - methods only use the fully qualified type name after the last - '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type + In practice, teams usually precompile into the binary all + types that they - name "y.z". + expect it to use in the context of Any. However, for URLs + which use the + scheme `http`, `https`, or no scheme, one can optionally set + up a type - JSON + server that maps type URLs to message definitions as follows: - The JSON representation of an `Any` value uses the regular + * If no scheme is provided, `https` is assumed. - representation of the deserialized, embedded message, with an + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - additional field `@type` which contains the type URL. Example: + Note: this functionality is not currently available in the + official - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + protobuf release, and it is not used for type URLs beginning + with - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + type.googleapis.com. As of May 2023, there are no widely used + type server - If the embedded message type is well-known and has a custom JSON + implementations and no plans to implement one. - representation, that representation will be embedded adding a - field - `value` which holds the custom JSON in addition to the `@type` + Schemes other than `http`, `https` (or the empty scheme) might + be - field. Example (for message [google.protobuf.Duration][]): + used with implementation specific semantics. + additionalProperties: {} + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegatorShares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort or + Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbondingHeight: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbondingTime: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commissionRates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the + validator commission, as a fraction. + updateTime: + type: string + format: date-time + description: update_time is the last time the commission rate was changed. + minSelfDelegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum self + delegation. + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been stopped + by external modules + unbondingIds: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding of + this validator + title: QueryValidatorResponse is response type for the Query/Validator RPC method + cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse: + type: object + properties: + unbondingResponses: + type: array + items: + type: object + properties: + delegatorAddress: + type: string + description: delegator_address is the encoded address of the delegator. + validatorAddress: + type: string + description: validator_address is the encoded address of the validator. + entries: + type: array + items: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding took + place. + completionTime: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initialBalance: + type: string + description: >- + initial_balance defines the tokens initially scheduled to + receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been + stopped by external modules + description: >- + UnbondingDelegationEntry defines an unbonding object with + relevant metadata. + description: |- + entries are the unbonding delegation entries. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - GrantAuthorization extends a grant with both the addresses of the - grantee and granter. + unbonding delegation entries + description: >- + UnbondingDelegation stores all of a single delegator's unbonding + bonds - It is used in genesis.proto and query.proto - description: grants is a list of grants granted by the granter. + for a single validator in an time-ordered list. pagination: - description: pagination defines an pagination for the response. + description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -77060,21 +73741,29 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: >- - QueryGranterGrantsResponse is the response type for the - Query/GranterGrants RPC method. - cosmos.authz.v1beta1.QueryGrantsResponse: + description: |- + QueryValidatorUnbondingDelegationsResponse is response type for the + Query/ValidatorUnbondingDelegations RPC method. + cosmos.staking.v1beta1.QueryValidatorsResponse: type: object properties: - grants: + validators: type: array items: type: object properties: - authorization: + operatorAddress: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensusPubkey: + description: >- + consensus_pubkey is the consensus public key of the validator, + as a Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -77124,147 +73813,151 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: + additionalProperties: {} + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegatorShares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort + or Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the above - specified type. + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbondingHeight: + type: string + format: int64 description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbondingTime: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commissionRates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + maxRate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily increase of + the validator commission, as a fraction. + updateTime: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + minSelfDelegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum + self delegation. + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been stopped + by external modules + unbondingIds: + type: array + items: + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding of + this validator + description: >- + Validator defines a validator, together with the total amount of the - If the embedded message type is well-known and has a custom JSON + Validator's bond shares and their exchange rate to coins. Slashing + results in - representation, that representation will be embedded adding a - field + a decrease in the exchange rate, allowing correct calculation of + future - `value` which holds the custom JSON in addition to the `@type` + undelegations without iterating over delegators. When coins are + delegated to - field. Example (for message [google.protobuf.Duration][]): + this validator, the validator is credited with a delegation whose + number of - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - time when the grant will expire and will be pruned. If null, - then the grant + bond shares is based on the amount of coins delegated divided by the + current - doesn't have a time expiration (other conditions in - `authorization` + exchange rate. Voting power can be calculated as total bonded shares - may apply to invalidate the grant) - description: |- - Grant gives permissions to execute - the provide method with expiration time. - description: authorizations is a list of grants granted for grantee by granter. + multiplied by exchange rate. + description: validators contains all the queried validators. pagination: - description: pagination defines an pagination for the response. + description: pagination defines the pagination in the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -77278,28 +73971,379 @@ definitions: total is total number of results available if PageRequest.count_total - was set, its value is undefined otherwise - description: >- - QueryGrantsResponse is the response type for the Query/Authorizations RPC - method. - cosmos.feegrant.v1beta1.Grant: + was set, its value is undefined otherwise + title: >- + QueryValidatorsResponse is response type for the Query/Validators RPC + method + cosmos.staking.v1beta1.Redelegation: + type: object + properties: + delegatorAddress: + type: string + description: delegator_address is the bech32-encoded address of the delegator. + validatorSrcAddress: + type: string + description: >- + validator_src_address is the validator redelegation source operator + address. + validatorDstAddress: + type: string + description: >- + validator_dst_address is the validator redelegation destination + operator address. + entries: + type: array + items: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height defines the height which the redelegation took + place. + completionTime: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initialBalance: + type: string + description: >- + initial_balance defines the initial balance when redelegation + started. + sharesDst: + type: string + description: >- + shares_dst is the amount of destination-validator shares created + by redelegation. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped by + external modules + description: >- + RedelegationEntry defines a redelegation object with relevant + metadata. + description: |- + entries are the redelegation entries. + + redelegation entries + description: >- + Redelegation contains the list of a particular delegator's redelegating + bonds + + from a particular source validator to a particular destination validator. + cosmos.staking.v1beta1.RedelegationEntry: + type: object + properties: + creationHeight: + type: string + format: int64 + description: creation_height defines the height which the redelegation took place. + completionTime: + type: string + format: date-time + description: completion_time defines the unix time for redelegation completion. + initialBalance: + type: string + description: initial_balance defines the initial balance when redelegation started. + sharesDst: + type: string + description: >- + shares_dst is the amount of destination-validator shares created by + redelegation. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped by + external modules + description: RedelegationEntry defines a redelegation object with relevant metadata. + cosmos.staking.v1beta1.RedelegationEntryResponse: + type: object + properties: + redelegationEntry: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height defines the height which the redelegation took + place. + completionTime: + type: string + format: date-time + description: completion_time defines the unix time for redelegation completion. + initialBalance: + type: string + description: >- + initial_balance defines the initial balance when redelegation + started. + sharesDst: + type: string + description: >- + shares_dst is the amount of destination-validator shares created + by redelegation. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped by + external modules + description: >- + RedelegationEntry defines a redelegation object with relevant + metadata. + balance: + type: string + description: >- + RedelegationEntryResponse is equivalent to a RedelegationEntry except that + it + + contains a balance in addition to shares which is more suitable for client + + responses. + cosmos.staking.v1beta1.RedelegationResponse: + type: object + properties: + redelegation: + type: object + properties: + delegatorAddress: + type: string + description: delegator_address is the bech32-encoded address of the delegator. + validatorSrcAddress: + type: string + description: >- + validator_src_address is the validator redelegation source + operator address. + validatorDstAddress: + type: string + description: >- + validator_dst_address is the validator redelegation destination + operator address. + entries: + type: array + items: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height defines the height which the redelegation + took place. + completionTime: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initialBalance: + type: string + description: >- + initial_balance defines the initial balance when + redelegation started. + sharesDst: + type: string + description: >- + shares_dst is the amount of destination-validator shares + created by redelegation. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped + by external modules + description: >- + RedelegationEntry defines a redelegation object with relevant + metadata. + description: |- + entries are the redelegation entries. + + redelegation entries + description: >- + Redelegation contains the list of a particular delegator's + redelegating bonds + + from a particular source validator to a particular destination + validator. + entries: + type: array + items: + type: object + properties: + redelegationEntry: + type: object + properties: + creationHeight: + type: string + format: int64 + description: >- + creation_height defines the height which the redelegation + took place. + completionTime: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initialBalance: + type: string + description: >- + initial_balance defines the initial balance when + redelegation started. + sharesDst: + type: string + description: >- + shares_dst is the amount of destination-validator shares + created by redelegation. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped + by external modules + description: >- + RedelegationEntry defines a redelegation object with relevant + metadata. + balance: + type: string + description: >- + RedelegationEntryResponse is equivalent to a RedelegationEntry + except that it + + contains a balance in addition to shares which is more suitable for + client + + responses. + description: >- + RedelegationResponse is equivalent to a Redelegation except that its + entries + + contain a balance in addition to shares which is more suitable for client + + responses. + cosmos.staking.v1beta1.UnbondingDelegation: + type: object + properties: + delegatorAddress: + type: string + description: delegator_address is the encoded address of the delegator. + validatorAddress: + type: string + description: validator_address is the encoded address of the validator. + entries: + type: array + items: + type: object + properties: + creationHeight: + type: string + format: int64 + description: creation_height is the height which the unbonding took place. + completionTime: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initialBalance: + type: string + description: >- + initial_balance defines the tokens initially scheduled to + receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped by + external modules + description: >- + UnbondingDelegationEntry defines an unbonding object with relevant + metadata. + description: |- + entries are the unbonding delegation entries. + + unbonding delegation entries + description: |- + UnbondingDelegation stores all of a single delegator's unbonding bonds + for a single validator in an time-ordered list. + cosmos.staking.v1beta1.UnbondingDelegationEntry: type: object properties: - granter: + creationHeight: + type: string + format: int64 + description: creation_height is the height which the unbonding took place. + completionTime: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initialBalance: type: string description: >- - granter is the address of the user granting an allowance of their - funds. - grantee: + initial_balance defines the tokens initially scheduled to receive at + completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + unbondingId: + type: string + format: uint64 + title: Incrementing id that uniquely identifies this entry + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + Strictly positive if this entry's unbonding has been stopped by + external modules + description: >- + UnbondingDelegationEntry defines an unbonding object with relevant + metadata. + cosmos.staking.v1beta1.Validator: + type: object + properties: + operatorAddress: type: string description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: allowance can be any of basic, periodic, allowed fee allowance. + operator_address defines the address of the validator's operator; bech + encoded in JSON. + consensusPubkey: + description: >- + consensus_pubkey is the consensus public key of the validator, as a + Protobuf Any. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -77345,540 +74389,531 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used type + server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - title: Grant is stored in the KVStore to record a grant with full context - cosmos.feegrant.v1beta1.QueryAllowanceResponse: - type: object - properties: - allowance: - description: allowance is a allowance granted for grantee by granter. + additionalProperties: {} + jailed: + type: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegatorShares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. type: object properties: - granter: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: type: string description: >- - granter is the address of the user granting an allowance of their - funds. - grantee: + identity defines an optional identity signature (ex. UPort or + Keybase). + website: + type: string + description: website defines an optional website link. + securityContact: + type: string + description: security_contact defines an optional email for security contact. + details: type: string + description: details define other optional details. + unbondingHeight: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbondingTime: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the validator + to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commissionRates: description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: allowance can be any of basic, periodic, allowed fee allowance. + commission_rates defines the initial commission rates to be used + for creating a validator. type: object properties: - type_url: + rate: type: string description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: + rate is the commission rate charged to delegators, as a + fraction. + maxRate: type: string - format: byte description: >- - Must be a valid serialized protocol buffer of the above - specified type. - title: Grant is stored in the KVStore to record a grant with full context - description: >- - QueryAllowanceResponse is the response type for the Query/Allowance RPC - method. - cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse: - type: object - properties: - allowances: + max_rate defines the maximum commission rate which validator + can ever charge, as a fraction. + maxChangeRate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the + validator commission, as a fraction. + updateTime: + type: string + format: date-time + description: update_time is the last time the commission rate was changed. + minSelfDelegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum self + delegation. + unbondingOnHoldRefCount: + type: string + format: int64 + title: >- + strictly positive if this validator's unbonding has been stopped by + external modules + unbondingIds: type: array items: - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance of - their funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: allowance can be any of basic, periodic, allowed fee allowance. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with + type: string + format: uint64 + title: >- + list of unbonding ids, each uniquely identifing an unbonding of this + validator + description: >- + Validator defines a validator, together with the total amount of the - type.googleapis.com. + Validator's bond shares and their exchange rate to coins. Slashing results + in + a decrease in the exchange rate, allowing correct calculation of future - Schemes other than `http`, `https` (or the empty scheme) - might be + undelegations without iterating over delegators. When coins are delegated + to - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - title: Grant is stored in the KVStore to record a grant with full context - description: allowances that have been issued by the granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + this validator, the validator is credited with a delegation whose number + of - was set, its value is undefined otherwise - description: >- - QueryAllowancesByGranterResponse is the response type for the - Query/AllowancesByGranter RPC method. + bond shares is based on the amount of coins delegated divided by the + current + exchange rate. Voting power can be calculated as total bonded shares - Since: cosmos-sdk 0.46 - cosmos.feegrant.v1beta1.QueryAllowancesResponse: + multiplied by exchange rate. + cosmos.base.abci.v1beta1.ABCIMessageLog: type: object properties: - allowances: + msgIndex: + type: integer + format: int64 + log: + type: string + events: type: array items: type: object properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance of - their funds. - grantee: + type: type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: allowance can be any of basic, periodic, allowed fee allowance. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - title: Grant is stored in the KVStore to record a grant with full context - description: allowances are allowance's granted for grantee by granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the key and value + are - was set, its value is undefined otherwise + strings instead of raw bytes. + description: |- + StringEvent defines en Event object wrapper where all the attributes + contain key/value pairs that are strings instead of raw bytes. + description: |- + Events contains a slice of Event objects that were emitted during some + execution. description: >- - QueryAllowancesResponse is the response type for the Query/Allowances RPC - method. - cosmos.nft.v1beta1.Class: + ABCIMessageLog defines a structure containing an indexed tx ABCI message + log. + cosmos.base.abci.v1beta1.Attribute: type: object properties: - id: + key: type: string - title: >- - id defines the unique identifier of the NFT classification, similar to - the contract address of ERC721 - name: + value: type: string - title: >- - name defines the human-readable name of the NFT classification. - Optional - symbol: + description: |- + Attribute defines an attribute wrapper where the key and value are + strings instead of raw bytes. + cosmos.base.abci.v1beta1.GasInfo: + type: object + properties: + gasWanted: type: string - title: symbol is an abbreviated name for nft classification. Optional - description: + format: uint64 + description: GasWanted is the maximum units of work we allow this tx to perform. + gasUsed: type: string - title: description is a brief description of nft classification. Optional - uri: + format: uint64 + description: GasUsed is the amount of gas actually consumed. + description: GasInfo defines tx execution gas context. + cosmos.base.abci.v1beta1.Result: + type: object + properties: + data: type: string - title: >- - uri for the class metadata stored off chain. It can define schema for - Class and NFT `Data` attributes. Optional - uri_hash: + format: byte + description: >- + Data is any data returned from message or handler execution. It MUST + be + + length prefixed in order to separate data from multiple message + executions. + + Deprecated. This field is still populated, but prefer msg_response + instead + + because it also contains the Msg response typeURL. + log: type: string - title: uri_hash is a hash of the document pointed by uri. Optional - data: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + description: Log contains the log information from message or handler execution. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + title: nondeterministic + description: >- + EventAttribute is a single key-value pair, associated with an + event. + description: >- + Event allows application developers to attach additional information + to - protocol buffer message. This string must contain at least + ResponseFinalizeBlock and ResponseCheckTx. - one "/" character. The last segment of the URL's path must - represent + Later, transactions may be queried using these events. + description: >- + Events contains a slice of Event objects that were emitted during + message - the fully qualified name of the type (as in + or handler execution. + msgResponses: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - `path/google.protobuf.Duration`). The name should be in a - canonical form + protocol buffer message. This string must contain at least - (e.g., leading "." is not accepted). + one "/" character. The last segment of the URL's path must + represent + the fully qualified name of the type (as in - In practice, teams usually precompile into the binary all types - that they + `path/google.protobuf.Duration`). The name should be in a + canonical form - expect it to use in the context of Any. However, for URLs which - use the + (e.g., leading "." is not accepted). - scheme `http`, `https`, or no scheme, one can optionally set up a - type - server that maps type URLs to message definitions as follows: + In practice, teams usually precompile into the binary all types + that they + expect it to use in the context of Any. However, for URLs which + use the - * If no scheme is provided, `https` is assumed. + scheme `http`, `https`, or no scheme, one can optionally set up + a type - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + server that maps type URLs to message definitions as follows: - Note: this functionality is not currently available in the - official - protobuf release, and it is not used for type URLs beginning with + * If no scheme is provided, `https` is assumed. - type.googleapis.com. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + Note: this functionality is not currently available in the + official - Schemes other than `http`, `https` (or the empty scheme) might be + protobuf release, and it is not used for type URLs beginning + with - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + type.googleapis.com. As of May 2023, there are no widely used + type server - URL that describes the type of the serialized message. + implementations and no plans to implement one. - Protobuf library provides support to pack/unpack Any values in the - form + Schemes other than `http`, `https` (or the empty scheme) might + be - of utility functions or additional generated methods of the Any type. + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + URL that describes the type of the serialized message. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } ... - } + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by default use + The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the unpack + 'type.googleapis.com/full.type.name' as the type URL and the unpack - methods only use the fully qualified type name after the last '/' + methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type + in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + name "y.z". - JSON + JSON + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + additional field `@type` which contains the type URL. Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom JSON + If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a field + representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` + `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is the app specific metadata of the NFT class. Optional - description: Class defines the class of the nft type. - cosmos.nft.v1beta1.NFT: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: msg_responses contains the Msg handler responses type packed in Anys. + description: Result is the union of ResponseFormat and ResponseCheckTx. + cosmos.base.abci.v1beta1.StringEvent: type: object properties: - class_id: + type: type: string - title: >- - class_id associated with the NFT, similar to the contract address of - ERC721 - id: + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: |- + Attribute defines an attribute wrapper where the key and value are + strings instead of raw bytes. + description: |- + StringEvent defines en Event object wrapper where all the attributes + contain key/value pairs that are strings instead of raw bytes. + cosmos.base.abci.v1beta1.TxResponse: + type: object + properties: + height: type: string - title: id is a unique identifier of the NFT - uri: + format: int64 + title: The block height + txhash: type: string - title: uri for the NFT metadata stored off chain - uri_hash: + description: The transaction hash. + codespace: type: string - title: uri_hash is a hash of the document pointed by uri + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. data: + type: string + description: Result bytes, if any. + rawLog: + type: string + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + logs: + type: array + items: + type: object + properties: + msgIndex: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the key and + value are + + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where all the + attributes + + contain key/value pairs that are strings instead of raw bytes. + description: >- + Events contains a slice of Event objects that were emitted + during some + + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx ABCI + message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gasWanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gasUsed: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + description: The request transaction bytes. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -77924,165 +74959,393 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used type + server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. + additionalProperties: {} + timestamp: + type: string description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + Time of the previous block. For heights > 1, it's the weighted median + of - URL that describes the type of the serialized message. + the timestamps of the valid votes in the block.LastCommit. For height + == 1, + + it's genesis time. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + title: nondeterministic + description: >- + EventAttribute is a single key-value pair, associated with an + event. + description: >- + Event allows application developers to attach additional information + to + ResponseFinalizeBlock and ResponseCheckTx. - Protobuf library provides support to pack/unpack Any values in the - form + Later, transactions may be queried using these events. + description: >- + Events defines all the events emitted by processing a transaction. + Note, - of utility functions or additional generated methods of the Any type. + these events include those emitted by processing all the messages and + those + emitted from the ante. Whereas Logs contains the events, with - Example 1: Pack and unpack a message in C++. + additional metadata, emitted only by processing the messages. + description: >- + TxResponse defines a structure containing relevant tx data and metadata. + The - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + tags are stringified and the log is JSON decoded. + cosmos.crypto.multisig.v1beta1.CompactBitArray: + type: object + properties: + extraBitsStored: + type: integer + format: int64 + elems: + type: string + format: byte + description: |- + CompactBitArray is an implementation of a space efficient bit array. + This is used to ensure that the encoded data takes up a minimal amount of + space after proto encoding. + This is not thread safe, and is not intended for concurrent usage. + cosmos.tx.signing.v1beta1.SignMode: + type: string + enum: + - SIGN_MODE_UNSPECIFIED + - SIGN_MODE_DIRECT + - SIGN_MODE_TEXTUAL + - SIGN_MODE_DIRECT_AUX + - SIGN_MODE_LEGACY_AMINO_JSON + - SIGN_MODE_EIP_191 + default: SIGN_MODE_UNSPECIFIED + description: |- + SignMode represents a signing mode with its own security guarantees. - Example 2: Pack and unpack a message in Java. + This enum should be considered a registry of all known sign modes + in the Cosmos ecosystem. Apps are not expected to support all known + sign modes. Apps that would like to support custom sign modes are + encouraged to open a small PR against this file to add a new case + to this SignMode enum describing their sign mode so that different + apps have a consistent version of this enum. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be + rejected. + - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is + verified with raw bytes from Tx. + - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some + human-readable textual representation on top of the binary representation + from SIGN_MODE_DIRECT. - Example 3: Pack and unpack a message in Python. + Since: cosmos-sdk 0.50 + - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses + SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not + require signers signing over other signers' `signer_info`. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Since: cosmos-sdk 0.46 + - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses + Amino JSON and will be removed in the future. + - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos + SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 + + Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant, + but is not implemented on the SDK by default. To enable EIP-191, you need + to pass a custom `TxConfig` that has an implementation of + `SignModeHandler` for EIP-191. The SDK may decide to fully support + EIP-191 in the future. + + Since: cosmos-sdk 0.45.2 + cosmos.tx.v1beta1.AuthInfo: + type: object + properties: + signerInfos: + type: array + items: + type: object + $ref: '#/definitions/cosmos.tx.v1beta1.SignerInfo' + description: >- + signer_infos defines the signing modes for the required signers. The + number + + and order of elements must match the required signers from TxBody's + + messages. The first element is the primary signer and the one which + pays + + the fee. + fee: + description: >- + Fee is the fee and gas limit for the transaction. The first signer is + the - Example 4: Pack and unpack a message in Go + primary signer and the one which pays the fee. The fee can be + calculated - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + based on the cost of evaluating the body and doing signature + verification - The pack methods provided by protobuf library will by default use + of the signers. This can be estimated via simulation. + type: object + properties: + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - 'type.googleapis.com/full.type.name' as the type URL and the unpack - methods only use the fully qualified type name after the last '/' + NOTE: The amount field is an Int which implements the custom + method - in the type URL, for example "foo.bar.com/x/y.z" will yield type + signatures required by gogoproto. + title: amount is the amount of coins to be paid as a fee + gasLimit: + type: string + format: uint64 + title: >- + gas_limit is the maximum gas that can be used in transaction + processing - name "y.z". + before an out of gas error occurs + payer: + type: string + description: >- + if unset, the first signer is responsible for paying the fees. If + set, the + specified account must pay the fees. the payer must be a tx signer + (and - JSON + thus have signed this field in AuthInfo). setting this field does + *not* + change the ordering of required signers for the transaction. + granter: + type: string + title: >- + if set, the fee payer (either the first signer or the value of the + payer - The JSON representation of an `Any` value uses the regular + field) requests that a fee grant be used to pay fees instead of + the fee - representation of the deserialized, embedded message, with an + payer's own balance. If an appropriate fee grant does not exist or + the - additional field `@type` which contains the type URL. Example: + chain does not support fee grants, this will fail + tip: + description: >- + Tip is the optional tip used for transactions fees paid in another + denom. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + This field is ignored if the chain didn't enable tips, i.e. didn't add + the - If the embedded message type is well-known and has a custom JSON + `TipDecorator` in its posthandler. + type: object + properties: + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` + NOTE: The amount field is an Int which implements the custom + method - field. Example (for message [google.protobuf.Duration][]): + signatures required by gogoproto. + title: amount is the amount of the tip + tipper: + type: string + title: tipper is the address of the account paying for the tip + description: |- + AuthInfo describes the fee and signer modes that are used to sign a + transaction. + cosmos.tx.v1beta1.BroadcastMode: + type: string + enum: + - BROADCAST_MODE_UNSPECIFIED + - BROADCAST_MODE_BLOCK + - BROADCAST_MODE_SYNC + - BROADCAST_MODE_ASYNC + default: BROADCAST_MODE_UNSPECIFIED + description: |- + BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC + method. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is an app specific data of the NFT. Optional - description: NFT defines the NFT. - cosmos.nft.v1beta1.QueryBalanceResponse: + - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering + - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead, + BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards. + - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits + for a CheckTx execution response only. + - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client + returns immediately. + cosmos.tx.v1beta1.BroadcastTxRequest: type: object properties: - amount: + txBytes: type: string - format: uint64 - title: amount is the number of all NFTs of a given class owned by the owner - title: QueryBalanceResponse is the response type for the Query/Balance RPC method - cosmos.nft.v1beta1.QueryClassResponse: + format: byte + description: tx_bytes is the raw transaction. + mode: + type: string + enum: + - BROADCAST_MODE_UNSPECIFIED + - BROADCAST_MODE_BLOCK + - BROADCAST_MODE_SYNC + - BROADCAST_MODE_ASYNC + default: BROADCAST_MODE_UNSPECIFIED + description: >- + BroadcastMode specifies the broadcast mode for the TxService.Broadcast + RPC + + method. + + - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering + - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead, + BROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards. + - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits + for a CheckTx execution response only. + - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client + returns immediately. + description: |- + BroadcastTxRequest is the request type for the Service.BroadcastTxRequest + RPC method. + cosmos.tx.v1beta1.BroadcastTxResponse: type: object properties: - class: + txResponse: + description: tx_response is the queried TxResponses. type: object properties: - id: + height: type: string - title: >- - id defines the unique identifier of the NFT classification, - similar to the contract address of ERC721 - name: + format: int64 + title: The block height + txhash: type: string - title: >- - name defines the human-readable name of the NFT classification. - Optional - symbol: + description: The transaction hash. + codespace: type: string - title: symbol is an abbreviated name for nft classification. Optional - description: + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: type: string - title: description is a brief description of nft classification. Optional - uri: + description: Result bytes, if any. + rawLog: type: string - title: >- - uri for the class metadata stored off chain. It can define schema - for Class and NFT `Data` attributes. Optional - uri_hash: + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + logs: + type: array + items: + type: object + properties: + msgIndex: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the key + and value are + + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where all the + attributes + + contain key/value pairs that are strings instead of raw + bytes. + description: >- + Events contains a slice of Event objects that were emitted + during some + + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx ABCI + message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: type: string - title: uri_hash is a hash of the document pointed by uri. Optional - data: + description: Additional information. May be non-deterministic. + gasWanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gasUsed: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + description: The request transaction bytes. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -78130,344 +75393,767 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used + type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} + timestamp: + type: string description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: + Time of the previous block. For heights > 1, it's the weighted + median of - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + the timestamps of the valid votes in the block.LastCommit. For + height == 1, - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + it's genesis time. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + title: nondeterministic + description: >- + EventAttribute is a single key-value pair, associated with + an event. + description: >- + Event allows application developers to attach additional + information to - If the embedded message type is well-known and has a custom JSON + ResponseFinalizeBlock and ResponseCheckTx. - representation, that representation will be embedded adding a - field + Later, transactions may be queried using these events. + description: >- + Events defines all the events emitted by processing a transaction. + Note, - `value` which holds the custom JSON in addition to the `@type` + these events include those emitted by processing all the messages + and those - field. Example (for message [google.protobuf.Duration][]): + emitted from the ante. Whereas Logs contains the events, with - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is the app specific metadata of the NFT class. Optional - description: Class defines the class of the nft type. - title: QueryClassResponse is the response type for the Query/Class RPC method - cosmos.nft.v1beta1.QueryClassesResponse: + additional metadata, emitted only by processing the messages. + description: |- + BroadcastTxResponse is the response type for the + Service.BroadcastTx method. + cosmos.tx.v1beta1.Fee: type: object properties: - classes: + amount: type: array items: type: object properties: - id: - type: string - title: >- - id defines the unique identifier of the NFT classification, - similar to the contract address of ERC721 - name: - type: string - title: >- - name defines the human-readable name of the NFT classification. - Optional - symbol: - type: string - title: symbol is an abbreviated name for nft classification. Optional - description: - type: string - title: >- - description is a brief description of nft classification. - Optional - uri: + denom: type: string - title: >- - uri for the class metadata stored off chain. It can define - schema for Class and NFT `Data` attributes. Optional - uri_hash: + amount: type: string - title: uri_hash is a hash of the document pointed by uri. Optional - data: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form + description: |- + Coin defines a token with a denomination and an amount. - of utility functions or additional generated methods of the Any - type. + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: amount is the amount of coins to be paid as a fee + gasLimit: + type: string + format: uint64 + title: >- + gas_limit is the maximum gas that can be used in transaction + processing + before an out of gas error occurs + payer: + type: string + description: >- + if unset, the first signer is responsible for paying the fees. If set, + the - Example 1: Pack and unpack a message in C++. + specified account must pay the fees. the payer must be a tx signer + (and - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + thus have signed this field in AuthInfo). setting this field does + *not* - Example 2: Pack and unpack a message in Java. + change the ordering of required signers for the transaction. + granter: + type: string + title: >- + if set, the fee payer (either the first signer or the value of the + payer - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + field) requests that a fee grant be used to pay fees instead of the + fee - Example 3: Pack and unpack a message in Python. + payer's own balance. If an appropriate fee grant does not exist or the - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + chain does not support fee grants, this will fail + description: >- + Fee includes the amount of coins paid in fees and the maximum - Example 4: Pack and unpack a message in Go + gas to be used by the transaction. The ratio yields an effective + "gasprice", - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + which must be above some miminum to be accepted into the mempool. + cosmos.tx.v1beta1.GetBlockWithTxsResponse: + type: object + properties: + txs: + type: array + items: + type: object + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: txs are the transactions in the block. + blockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, - The pack methods provided by protobuf library will by default - use + including all blockchain data structures and the rules of the + application's - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + state transition machine. + chainId: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + lastBlockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + lastCommitHash: + type: string + format: byte + description: commit from validators from the last block + title: hashes of block data + dataHash: + type: string + format: byte + title: transactions + validatorsHash: + type: string + format: byte + description: validators for the current block + title: hashes from the app output from the prev block + nextValidatorsHash: + type: string + format: byte + title: validators for the next block + consensusHash: + type: string + format: byte + title: consensus params for current block + appHash: + type: string + format: byte + title: state after txs from the previous block + lastResultsHash: + type: string + format: byte + title: root hash of all results from the txs from the previous block + evidenceHash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposerAddress: + type: string + format: byte + title: original proposer of the block + description: Header defines the structure of a block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. - methods only use the fully qualified type name after the last - '/' + NOTE: not all txs here are valid. We're just agreeing on the + order first. - in the type URL, for example "foo.bar.com/x/y.z" will yield type + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicateVoteEvidence: + type: object + properties: + voteA: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. - name "y.z". + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + blockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + description: zero if vote is nil. + timestamp: + type: string + format: date-time + validatorAddress: + type: string + format: byte + validatorIndex: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit - JSON + messages. + extensionSignature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in + consensus for the associated block. - The JSON representation of an `Any` value uses the regular + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for - representation of the deserialized, embedded message, with an + consensus. + voteB: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. - additional field `@type` which contains the type URL. Example: + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + blockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + description: zero if vote is nil. + timestamp: + type: string + format: date-time + validatorAddress: + type: string + format: byte + validatorIndex: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote signature by the validator if they + participated in consensus for the - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + associated block. + extension: + type: string + format: byte + description: >- + Vote extension provided by the application. Only + valid for precommit - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + messages. + extensionSignature: + type: string + format: byte + description: >- + Vote extension signature by the validator if + they participated in - If the embedded message type is well-known and has a custom JSON + consensus for the associated block. - representation, that representation will be embedded adding a - field + Only valid for precommit messages. + description: >- + Vote represents a prevote or precommit vote from + validators for - `value` which holds the custom JSON in addition to the `@type` + consensus. + totalVotingPower: + type: string + format: int64 + validatorPower: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + lightClientAttackEvidence: + type: object + properties: + conflictingBlock: + type: object + properties: + signedHeader: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, - field. Example (for message [google.protobuf.Duration][]): + including all blockchain data structures + and the rules of the application's - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is the app specific metadata of the NFT class. Optional - description: Class defines the class of the nft type. - description: class defines the class of the nft type. + state transition machine. + chainId: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + lastBlockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + lastCommitHash: + type: string + format: byte + description: >- + commit from validators from the last + block + title: hashes of block data + dataHash: + type: string + format: byte + title: transactions + validatorsHash: + type: string + format: byte + description: validators for the current block + title: >- + hashes from the app output from the prev + block + nextValidatorsHash: + type: string + format: byte + title: validators for the next block + consensusHash: + type: string + format: byte + title: consensus params for current block + appHash: + type: string + format: byte + title: state after txs from the previous block + lastResultsHash: + type: string + format: byte + title: >- + root hash of all results from the txs + from the previous block + evidenceHash: + type: string + format: byte + description: evidence included in the block + title: consensus info + proposerAddress: + type: string + format: byte + title: original proposer of the block + description: >- + Header defines the structure of a block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + blockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + blockIdFlag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: >- + - BLOCK_ID_FLAG_UNKNOWN: indicates an + error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil + title: >- + BlockIdFlag indicates which BlockID the + signature is for + validatorAddress: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + validatorSet: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pubKey: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + votingPower: + type: string + format: int64 + proposerPriority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pubKey: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Validators + votingPower: + type: string + format: int64 + proposerPriority: + type: string + format: int64 + totalVotingPower: + type: string + format: int64 + commonHeight: + type: string + format: int64 + byzantineValidators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pubKey: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Validators + votingPower: + type: string + format: int64 + proposerPriority: + type: string + format: int64 + totalVotingPower: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + lastCommit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + blockId: + type: object + properties: + hash: + type: string + format: byte + partSetHeader: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + blockIdFlag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + description: |- + - BLOCK_ID_FLAG_UNKNOWN: indicates an error condition + - BLOCK_ID_FLAG_ABSENT: the vote was not received + - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority + - BLOCK_ID_FLAG_NIL: voted for nil + title: BlockIdFlag indicates which BlockID the signature is for + validatorAddress: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. pagination: - description: pagination defines the pagination in the response. + description: pagination defines a pagination for the response. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -78482,31 +76168,107 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - title: QueryClassesResponse is the response type for the Query/Classes RPC method - cosmos.nft.v1beta1.QueryNFTResponse: + description: >- + GetBlockWithTxsResponse is the response type for the + Service.GetBlockWithTxs + + method. + cosmos.tx.v1beta1.GetTxResponse: type: object properties: - nft: + tx: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: tx is the queried transaction. + txResponse: + description: tx_response is the queried TxResponses. type: object properties: - class_id: - type: string - title: >- - class_id associated with the NFT, similar to the contract address - of ERC721 - id: + height: type: string - title: id is a unique identifier of the NFT - uri: + format: int64 + title: The block height + txhash: type: string - title: uri for the NFT metadata stored off chain - uri_hash: + description: The transaction hash. + codespace: type: string - title: uri_hash is a hash of the document pointed by uri + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. data: + type: string + description: Result bytes, if any. + rawLog: + type: string + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + logs: + type: array + items: + type: object + properties: + msgIndex: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the key + and value are + + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where all the + attributes + + contain key/value pairs that are strings instead of raw + bytes. + description: >- + Events contains a slice of Event objects that were emitted + during some + + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx ABCI + message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gasWanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gasUsed: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + description: The request transaction bytes. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -78554,155 +76316,167 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used + type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} + timestamp: + type: string description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: + Time of the previous block. For heights > 1, it's the weighted + median of - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + the timestamps of the valid votes in the block.LastCommit. For + height == 1, - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + it's genesis time. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + title: nondeterministic + description: >- + EventAttribute is a single key-value pair, associated with + an event. + description: >- + Event allows application developers to attach additional + information to - If the embedded message type is well-known and has a custom JSON + ResponseFinalizeBlock and ResponseCheckTx. - representation, that representation will be embedded adding a - field + Later, transactions may be queried using these events. + description: >- + Events defines all the events emitted by processing a transaction. + Note, - `value` which holds the custom JSON in addition to the `@type` + these events include those emitted by processing all the messages + and those - field. Example (for message [google.protobuf.Duration][]): + emitted from the ante. Whereas Logs contains the events, with - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is an app specific data of the NFT. Optional - description: NFT defines the NFT. - title: owner is the owner address of the nft - title: QueryNFTResponse is the response type for the Query/NFT RPC method - cosmos.nft.v1beta1.QueryNFTsResponse: + additional metadata, emitted only by processing the messages. + description: GetTxResponse is the response type for the Service.GetTx method. + cosmos.tx.v1beta1.GetTxsEventResponse: type: object properties: - nfts: + txs: + type: array + items: + type: object + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: txs is the list of queried transactions. + txResponses: type: array items: type: object properties: - class_id: - type: string - title: >- - class_id associated with the NFT, similar to the contract - address of ERC721 - id: + height: type: string - title: id is a unique identifier of the NFT - uri: + format: int64 + title: The block height + txhash: type: string - title: uri for the NFT metadata stored off chain - uri_hash: + description: The transaction hash. + codespace: type: string - title: uri_hash is a hash of the document pointed by uri + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. data: + type: string + description: Result bytes, if any. + rawLog: + type: string + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + logs: + type: array + items: + type: object + properties: + msgIndex: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the + key and value are + + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where all + the attributes + + contain key/value pairs that are strings instead of raw + bytes. + description: >- + Events contains a slice of Event objects that were emitted + during some + + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx + ABCI message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gasWanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gasUsed: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + description: The request transaction bytes. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -78744,143 +76518,87 @@ definitions: URL, or have them precompiled into a binary to avoid any lookup. Therefore, binary compatibility needs to be preserved on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' + breaking changes.) - in the type URL, for example "foo.bar.com/x/y.z" will yield type + Note: this functionality is not currently available in the + official - name "y.z". + protobuf release, and it is not used for type URLs beginning + with + type.googleapis.com. As of May 2023, there are no widely + used type server - JSON + implementations and no plans to implement one. - The JSON representation of an `Any` value uses the regular + Schemes other than `http`, `https` (or the empty scheme) + might be - representation of the deserialized, embedded message, with an + used with implementation specific semantics. + additionalProperties: {} + timestamp: + type: string + description: >- + Time of the previous block. For heights > 1, it's the weighted + median of - additional field `@type` which contains the type URL. Example: + the timestamps of the valid votes in the block.LastCommit. For + height == 1, - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + it's genesis time. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + title: nondeterministic + description: >- + EventAttribute is a single key-value pair, associated + with an event. + description: >- + Event allows application developers to attach additional + information to - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + ResponseFinalizeBlock and ResponseCheckTx. - If the embedded message type is well-known and has a custom JSON + Later, transactions may be queried using these events. + description: >- + Events defines all the events emitted by processing a + transaction. Note, - representation, that representation will be embedded adding a - field + these events include those emitted by processing all the + messages and those - `value` which holds the custom JSON in addition to the `@type` + emitted from the ante. Whereas Logs contains the events, with - field. Example (for message [google.protobuf.Duration][]): + additional metadata, emitted only by processing the messages. + description: >- + TxResponse defines a structure containing relevant tx data and + metadata. The - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is an app specific data of the NFT. Optional - description: NFT defines the NFT. - title: NFT defines the NFT + tags are stringified and the log is JSON decoded. + description: tx_responses is the list of queried TxResponses. pagination: - description: pagination defines the pagination in the response. + description: |- + pagination defines a pagination for the response. + Deprecated post v0.46.x: use total instead. type: object properties: - next_key: + nextKey: type: string format: byte description: |- @@ -78895,775 +76613,395 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - title: QueryNFTsResponse is the response type for the Query/NFTs RPC methods - cosmos.nft.v1beta1.QueryOwnerResponse: - type: object - properties: - owner: - type: string - title: owner is the owner address of the nft - title: QueryOwnerResponse is the response type for the Query/Owner RPC method - cosmos.nft.v1beta1.QuerySupplyResponse: - type: object - properties: - amount: - type: string - format: uint64 - title: amount is the number of all NFTs from the given class - title: QuerySupplyResponse is the response type for the Query/Supply RPC method - cosmos.group.v1.GroupInfo: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata to attached to the group. - - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#group-1 - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership structure - that - - would break existing proposals. Whenever any members weight is - changed, - - or any member is added or removed this version is incremented and will - - cause proposals based on older versions of this group to fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: created_at is a timestamp specifying when a group was created. - description: GroupInfo represents the high-level on-chain information for a group. - cosmos.group.v1.GroupMember: - type: object - properties: - group_id: + total: type: string format: uint64 - description: group_id is the unique ID of the group. - member: - description: member is the member data. - type: object - properties: - address: - type: string - description: address is the member's account address. - weight: - type: string - description: >- - weight is the member's voting weight that should be greater than - 0. - metadata: - type: string - description: metadata is any arbitrary metadata attached to the member. - added_at: - type: string - format: date-time - description: added_at is a timestamp specifying when a member was added. - description: GroupMember represents the relationship between a group and a member. - cosmos.group.v1.GroupPolicyInfo: + title: total is total number of results available + description: |- + GetTxsEventResponse is the response type for the Service.TxsByEvents + RPC method. + cosmos.tx.v1beta1.ModeInfo: type: object properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - title: |- - metadata is any arbitrary metadata attached to the group policy. - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's GroupPolicyInfo - structure that - - would create a different result on a running proposal. - decision_policy: + single: + title: single represents a single signer type: object properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: + mode: + title: mode is the signing mode of the single signer type: string - format: byte + enum: + - SIGN_MODE_UNSPECIFIED + - SIGN_MODE_DIRECT + - SIGN_MODE_TEXTUAL + - SIGN_MODE_DIRECT_AUX + - SIGN_MODE_LEGACY_AMINO_JSON + - SIGN_MODE_EIP_191 + default: SIGN_MODE_UNSPECIFIED description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - JSON - + SignMode represents a signing mode with its own security + guarantees. - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + This enum should be considered a registry of all known sign modes - additional field `@type` which contains the type URL. Example: + in the Cosmos ecosystem. Apps are not expected to support all + known - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + sign modes. Apps that would like to support custom sign modes are - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + encouraged to open a small PR against this file to add a new case - If the embedded message type is well-known and has a custom JSON + to this SignMode enum describing their sign mode so that different - representation, that representation will be embedded adding a field + apps have a consistent version of this enum. - `value` which holds the custom JSON in addition to the `@type` + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be + rejected. + - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is + verified with raw bytes from Tx. + - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some + human-readable textual representation on top of the binary + representation - field. Example (for message [google.protobuf.Duration][]): + from SIGN_MODE_DIRECT. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: created_at is a timestamp specifying when a group policy was created. - description: >- - GroupPolicyInfo represents the high-level on-chain information for a group - policy. - cosmos.group.v1.Member: - type: object - properties: - address: - type: string - description: address is the member's account address. - weight: - type: string - description: weight is the member's voting weight that should be greater than 0. - metadata: - type: string - description: metadata is any arbitrary metadata attached to the member. - added_at: - type: string - format: date-time - description: added_at is a timestamp specifying when a member was added. - description: |- - Member represents a group member with an account address, - non-zero weight, metadata and added_at timestamp. - cosmos.group.v1.Proposal: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique id of the proposal. - group_policy_address: - type: string - description: group_policy_address is the account address of group policy. - metadata: - type: string - title: |- - metadata is any arbitrary metadata attached to the proposal. - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#proposal-4 - proposers: - type: array - items: - type: string - description: proposers are the account addresses of the proposers. - submit_time: - type: string - format: date-time - description: submit_time is a timestamp specifying when a proposal was submitted. - group_version: - type: string - format: uint64 - description: |- - group_version tracks the version of the group at proposal submission. - This field is here for informational purposes only. - group_policy_version: - type: string - format: uint64 - description: >- - group_policy_version tracks the version of the group policy at - proposal submission. - When a decision policy is changed, existing proposals from previous - policy + Since: cosmos-sdk 0.50 + - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses + SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode + does not - versions will become invalid with the `ABORTED` status. + require signers signing over other signers' `signer_info`. - This field is here for informational purposes only. - status: - description: >- - status represents the high level position in the life cycle of the - proposal. Initial value is Submitted. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_SUBMITTED - - PROPOSAL_STATUS_ACCEPTED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_ABORTED - - PROPOSAL_STATUS_WITHDRAWN - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result contains the sums of all weighted votes for this - proposal for each vote option. It is empty at submission, and only + Since: cosmos-sdk 0.46 + - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses + Amino JSON and will be removed in the future. + - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos + SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 - populated after tallying, at voting period end or at proposal - execution, - whichever happens first. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - voting_period_end: - type: string - format: date-time - description: >- - voting_period_end is the timestamp before which voting must be done. + Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum + variant, - Unless a successful MsgExec is called before (to execute a proposal - whose + but is not implemented on the SDK by default. To enable EIP-191, + you need - tally is successful before the voting period ends), tallying will be - done + to pass a custom `TxConfig` that has an implementation of - at this point, and the `final_tally_result`and `status` fields will be + `SignModeHandler` for EIP-191. The SDK may decide to fully support - accordingly updated. - executor_result: - description: >- - executor_result is the final result of the proposal execution. Initial - value is NotRun. - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - messages: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + EIP-191 in the future. - protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + Since: cosmos-sdk 0.45.2 + multi: + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi' + title: multi represents a nested multisig signer + description: ModeInfo describes the signing mode of a single or nested multisig signer. + cosmos.tx.v1beta1.ModeInfo.Multi: + type: object + properties: + bitarray: + title: bitarray specifies which keys within the multisig are signing + type: object + properties: + extraBitsStored: + type: integer + format: int64 + elems: + type: string + format: byte + description: >- + CompactBitArray is an implementation of a space efficient bit array. - the fully qualified name of the type (as in + This is used to ensure that the encoded data takes up a minimal amount + of - `path/google.protobuf.Duration`). The name should be in a - canonical form + space after proto encoding. - (e.g., leading "." is not accepted). + This is not thread safe, and is not intended for concurrent usage. + modeInfos: + type: array + items: + type: object + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' + title: |- + mode_infos is the corresponding modes of the signers of the multisig + which could include nested multisig public keys + title: Multi is the mode info for a multisig public key + cosmos.tx.v1beta1.ModeInfo.Single: + type: object + properties: + mode: + title: mode is the signing mode of the single signer + type: string + enum: + - SIGN_MODE_UNSPECIFIED + - SIGN_MODE_DIRECT + - SIGN_MODE_TEXTUAL + - SIGN_MODE_DIRECT_AUX + - SIGN_MODE_LEGACY_AMINO_JSON + - SIGN_MODE_EIP_191 + default: SIGN_MODE_UNSPECIFIED + description: >- + SignMode represents a signing mode with its own security guarantees. - In practice, teams usually precompile into the binary all types - that they + This enum should be considered a registry of all known sign modes - expect it to use in the context of Any. However, for URLs which - use the + in the Cosmos ecosystem. Apps are not expected to support all known - scheme `http`, `https`, or no scheme, one can optionally set up - a type + sign modes. Apps that would like to support custom sign modes are - server that maps type URLs to message definitions as follows: + encouraged to open a small PR against this file to add a new case + to this SignMode enum describing their sign mode so that different - * If no scheme is provided, `https` is assumed. + apps have a consistent version of this enum. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be + rejected. + - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is + verified with raw bytes from Tx. + - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some + human-readable textual representation on top of the binary + representation - Note: this functionality is not currently available in the - official + from SIGN_MODE_DIRECT. - protobuf release, and it is not used for type URLs beginning - with - type.googleapis.com. + Since: cosmos-sdk 0.50 + - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses + SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does + not + require signers signing over other signers' `signer_info`. - Schemes other than `http`, `https` (or the empty scheme) might - be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + Since: cosmos-sdk 0.46 + - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses + Amino JSON and will be removed in the future. + - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos + SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 - URL that describes the type of the serialized message. + Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant, - Protobuf library provides support to pack/unpack Any values in the - form + but is not implemented on the SDK by default. To enable EIP-191, you + need - of utility functions or additional generated methods of the Any - type. + to pass a custom `TxConfig` that has an implementation of + `SignModeHandler` for EIP-191. The SDK may decide to fully support - Example 1: Pack and unpack a message in C++. + EIP-191 in the future. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - Example 2: Pack and unpack a message in Java. + Since: cosmos-sdk 0.45.2 + title: |- + Single is the mode info for a single signer. It is structured as a message + to allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the + future + cosmos.tx.v1beta1.OrderBy: + type: string + enum: + - ORDER_BY_UNSPECIFIED + - ORDER_BY_ASC + - ORDER_BY_DESC + default: ORDER_BY_UNSPECIFIED + description: >- + - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting + order. OrderBy defaults - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + to ASC in this case. + - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order + - ORDER_BY_DESC: ORDER_BY_DESC defines descending order + title: OrderBy defines the sorting order + cosmos.tx.v1beta1.SignerInfo: + type: object + properties: + publicKey: + description: >- + public_key is the public key of the signer. It is optional for + accounts - Example 3: Pack and unpack a message in Python. + that already exist in state. If unset, the verifier can use the + required \ - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + signer address for this position and lookup the public key. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - Example 4: Pack and unpack a message in Go + protocol buffer message. This string must contain at least - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + one "/" character. The last segment of the URL's path must + represent - The pack methods provided by protobuf library will by default use + the fully qualified name of the type (as in - 'type.googleapis.com/full.type.name' as the type URL and the unpack + `path/google.protobuf.Duration`). The name should be in a + canonical form - methods only use the fully qualified type name after the last '/' + (e.g., leading "." is not accepted). - in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + In practice, teams usually precompile into the binary all types + that they + expect it to use in the context of Any. However, for URLs which + use the - JSON + scheme `http`, `https`, or no scheme, one can optionally set up a + type + server that maps type URLs to message definitions as follows: - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + * If no scheme is provided, `https` is assumed. - additional field `@type` which contains the type URL. Example: + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + Note: this functionality is not currently available in the + official - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + protobuf release, and it is not used for type URLs beginning with - If the embedded message type is well-known and has a custom JSON + type.googleapis.com. As of May 2023, there are no widely used type + server - representation, that representation will be embedded adding a field + implementations and no plans to implement one. - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + Schemes other than `http`, `https` (or the empty scheme) might be - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of `sdk.Msg`s that will be executed if the proposal - passes. - title: - type: string - description: 'Since: cosmos-sdk 0.47' - title: title is the title of the proposal - summary: + used with implementation specific semantics. + additionalProperties: {} + modeInfo: + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' + title: |- + mode_info describes the signing mode of the signer and is a nested + structure to support nested multisig pubkey's + sequence: type: string - description: 'Since: cosmos-sdk 0.47' - title: summary is a short summary of the proposal - description: >- - Proposal defines a group proposal. Any member of a group can submit a - proposal - - for a group policy to decide upon. + format: uint64 + description: >- + sequence is the sequence of the account, which describes the - A proposal consists of a set of `sdk.Msg`s that will be executed if the - proposal + number of committed transactions signed by a given address. It is used + to - passes as well as some optional metadata associated with the proposal. - cosmos.group.v1.ProposalExecutorResult: - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED + prevent replay attacks. description: |- - ProposalExecutorResult defines types of proposal executor results. - - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED: An empty value is not allowed. - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN: We have not yet run the executor. - - PROPOSAL_EXECUTOR_RESULT_SUCCESS: The executor was successful and proposed action updated state. - - PROPOSAL_EXECUTOR_RESULT_FAILURE: The executor returned an error and proposed action didn't update state. - cosmos.group.v1.ProposalStatus: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_SUBMITTED - - PROPOSAL_STATUS_ACCEPTED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_ABORTED - - PROPOSAL_STATUS_WITHDRAWN - default: PROPOSAL_STATUS_UNSPECIFIED + SignerInfo describes the public key and signing mode of a single top-level + signer. + cosmos.tx.v1beta1.SimulateRequest: + type: object + properties: + tx: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: |- + tx is the transaction to simulate. + Deprecated. Send raw tx bytes instead. + txBytes: + type: string + format: byte + description: tx_bytes is the raw transaction. description: |- - ProposalStatus defines proposal statuses. - - - PROPOSAL_STATUS_UNSPECIFIED: An empty value is invalid and not allowed. - - PROPOSAL_STATUS_SUBMITTED: Initial status of a proposal when submitted. - - PROPOSAL_STATUS_ACCEPTED: Final status of a proposal when the final tally is done and the outcome - passes the group policy's decision policy. - - PROPOSAL_STATUS_REJECTED: Final status of a proposal when the final tally is done and the outcome - is rejected by the group policy's decision policy. - - PROPOSAL_STATUS_ABORTED: Final status of a proposal when the group policy is modified before the - final tally. - - PROPOSAL_STATUS_WITHDRAWN: A proposal can be withdrawn before the voting start time by the owner. - When this happens the final status is Withdrawn. - cosmos.group.v1.QueryGroupInfoResponse: + SimulateRequest is the request type for the Service.Simulate + RPC method. + cosmos.tx.v1beta1.SimulateResponse: type: object properties: - info: - description: info is the GroupInfo of the group. + gasInfo: + description: gas_info is the information about gas used in the simulation. type: object properties: - id: + gasWanted: type: string format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata to attached to the group. - - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#group-1 - version: + description: >- + GasWanted is the maximum units of work we allow this tx to + perform. + gasUsed: type: string format: uint64 - title: >- - version is used to track changes to a group's membership structure - that + description: GasUsed is the amount of gas actually consumed. + result: + description: result is the result of the simulation. + type: object + properties: + data: + type: string + format: byte + description: >- + Data is any data returned from message or handler execution. It + MUST be - would break existing proposals. Whenever any members weight is - changed, + length prefixed in order to separate data from multiple message + executions. - or any member is added or removed this version is incremented and - will + Deprecated. This field is still populated, but prefer msg_response + instead - cause proposals based on older versions of this group to fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: + because it also contains the Msg response typeURL. + log: type: string - format: date-time - description: created_at is a timestamp specifying when a group was created. - description: QueryGroupInfoResponse is the Query/GroupInfo response type. - cosmos.group.v1.QueryGroupMembersResponse: - type: object - properties: - members: - type: array - items: - type: object - properties: - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - member: - description: member is the member data. + description: >- + Log contains the log information from message or handler + execution. + events: + type: array + items: type: object properties: - address: - type: string - description: address is the member's account address. - weight: - type: string - description: >- - weight is the member's voting weight that should be greater - than 0. - metadata: - type: string - description: metadata is any arbitrary metadata attached to the member. - added_at: + type: type: string - format: date-time - description: added_at is a timestamp specifying when a member was added. - description: >- - GroupMember represents the relationship between a group and a - member. - description: members are the members of the group with given group_id. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryGroupMembersResponse is the Query/GroupMembersResponse response type. - cosmos.group.v1.QueryGroupPoliciesByAdminResponse: - type: object - properties: - group_policies: - type: array - items: - type: object - properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the group policy. + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + title: nondeterministic + description: >- + EventAttribute is a single key-value pair, associated with + an event. + description: >- + Event allows application developers to attach additional + information to - the recommended format of the metadata is to be found here: + ResponseFinalizeBlock and ResponseCheckTx. - https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's GroupPolicyInfo - structure that + Later, transactions may be queried using these events. + description: >- + Events contains a slice of Event objects that were emitted during + message - would create a different result on a running proposal. - decision_policy: + or handler execution. + msgResponses: + type: array + items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -79713,19 +77051,17 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -79763,7 +77099,7 @@ definitions: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -79773,7 +77109,7 @@ definitions: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -79802,6 +77138,7 @@ definitions: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -79830,80 +77167,51 @@ definitions: field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy was - created. - description: >- - GroupPolicyInfo represents the high-level on-chain information for a - group policy. - description: group_policies are the group policies info with provided admin. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin - response type. - cosmos.group.v1.QueryGroupPoliciesByGroupResponse: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + msg_responses contains the Msg handler responses type packed in + Anys. + description: |- + SimulateResponse is the response type for the + Service.SimulateRPC method. + cosmos.tx.v1beta1.Tip: type: object properties: - group_policies: + amount: type: array items: type: object properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: + denom: type: string - title: >- - metadata is any arbitrary metadata attached to the group policy. - - the recommended format of the metadata is to be found here: - - https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 - version: + amount: type: string - format: uint64 - description: >- - version is used to track changes to a group's GroupPolicyInfo - structure that + description: |- + Coin defines a token with a denomination and an amount. - would create a different result on a running proposal. - decision_policy: + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: amount is the amount of the tip + tipper: + type: string + title: tipper is the address of the account paying for the tip + description: Tip is the tip used for meta-transactions. + cosmos.tx.v1beta1.Tx: + type: object + properties: + body: + title: body is the processable content of the transaction + type: object + properties: + messages: + type: array + items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -79953,19 +77261,17 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -80003,7 +77309,7 @@ definitions: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -80013,7 +77319,7 @@ definitions: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -80042,6 +77348,7 @@ definitions: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -80074,580 +77381,282 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy was - created. - description: >- - GroupPolicyInfo represents the high-level on-chain information for a - group policy. - description: >- - group_policies are the group policies info associated with the - provided group. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup - response type. - cosmos.group.v1.QueryGroupPolicyInfoResponse: - type: object - properties: - info: - type: object - properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - title: |- - metadata is any arbitrary metadata attached to the group policy. - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#decision-policy-1 - version: - type: string - format: uint64 description: >- - version is used to track changes to a group's GroupPolicyInfo - structure that + messages is a list of messages to be executed. The required + signers of - would create a different result on a running proposal. - decision_policy: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + those messages define the number and order of elements in + AuthInfo's - protocol buffer message. This string must contain at least + signer_infos and Tx's signatures. Each required signer address is + added to - one "/" character. The last segment of the URL's path must - represent + the list only the first time it occurs. - the fully qualified name of the type (as in + By convention, the first required signer (usually from the first + message) - `path/google.protobuf.Duration`). The name should be in a - canonical form + is referred to as the primary signer and pays the fee for the + whole - (e.g., leading "." is not accepted). + transaction. + memo: + type: string + description: >- + memo is any arbitrary note/comment to be added to the transaction. + WARNING: in clients, any publicly exposed text should not be + called memo, - In practice, teams usually precompile into the binary all - types that they + but should be called `note` instead (see - expect it to use in the context of Any. However, for URLs - which use the + https://github.com/cosmos/cosmos-sdk/issues/9122). + timeoutHeight: + type: string + format: uint64 + description: >- + timeout_height is the block height after which this transaction + will not - scheme `http`, `https`, or no scheme, one can optionally set - up a type + be processed by the chain. + unordered: + type: boolean + description: >- + unordered, when set to true, indicates that the transaction + signer(s) - server that maps type URLs to message definitions as follows: + intend for the transaction to be evaluated and executed in an + un-ordered + fashion. Specifically, the account's nonce will NOT be checked or - * If no scheme is provided, `https` is assumed. + incremented, which allows for fire-and-forget as well as + concurrent - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + transaction execution. - Note: this functionality is not currently available in the - official - protobuf release, and it is not used for type URLs beginning - with + Note, when set to true, the existing 'timeout_timestamp' value + must - type.googleapis.com. + be set and will be used to correspond to a timestamp in which the + transaction is deemed + valid. - Schemes other than `http`, `https` (or the empty scheme) might - be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + When true, the sequence value MUST be 0, and any transaction with + unordered=true and a non-zero sequence value will - URL that describes the type of the serialized message. + be rejected. + External services that make assumptions about sequence values may + need to be updated because of this. + timeoutTimestamp: + type: string + format: date-time + description: >- + timeout_timestamp is the block time after which this transaction + will not - Protobuf library provides support to pack/unpack Any values in the - form + be processed by the chain. - of utility functions or additional generated methods of the Any - type. + Note, if unordered=true this value MUST be set - Example 1: Pack and unpack a message in C++. + and will act as a short-lived TTL in which the transaction is + deemed valid - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + and kept in memory to prevent duplicates. + extensionOptions: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - Example 2: Pack and unpack a message in Java. + protocol buffer message. This string must contain at least - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + one "/" character. The last segment of the URL's path must + represent - Example 3: Pack and unpack a message in Python. + the fully qualified name of the type (as in - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + `path/google.protobuf.Duration`). The name should be in a + canonical form - Example 4: Pack and unpack a message in Go + (e.g., leading "." is not accepted). - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - The pack methods provided by protobuf library will by default use + In practice, teams usually precompile into the binary all + types that they - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + expect it to use in the context of Any. However, for URLs + which use the - methods only use the fully qualified type name after the last '/' + scheme `http`, `https`, or no scheme, one can optionally set + up a type - in the type URL, for example "foo.bar.com/x/y.z" will yield type + server that maps type URLs to message definitions as + follows: - name "y.z". + * If no scheme is provided, `https` is assumed. - JSON + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + Note: this functionality is not currently available in the + official - The JSON representation of an `Any` value uses the regular + protobuf release, and it is not used for type URLs beginning + with - representation of the deserialized, embedded message, with an + type.googleapis.com. As of May 2023, there are no widely + used type server - additional field `@type` which contains the type URL. Example: + implementations and no plans to implement one. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + Schemes other than `http`, `https` (or the empty scheme) + might be - If the embedded message type is well-known and has a custom JSON + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - representation, that representation will be embedded adding a - field + URL that describes the type of the serialized message. - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + Protobuf library provides support to pack/unpack Any values in + the form - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy was - created. - description: >- - GroupPolicyInfo represents the high-level on-chain information for a - group policy. - description: QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type. - cosmos.group.v1.QueryGroupsByAdminResponse: - type: object - properties: - groups: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata to attached to the group. + of utility functions or additional generated methods of the Any + type. - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#group-1 - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership - structure that - would break existing proposals. Whenever any members weight is - changed, + Example 1: Pack and unpack a message in C++. - or any member is added or removed this version is incremented - and will + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - cause proposals based on older versions of this group to fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: created_at is a timestamp specifying when a group was created. - description: >- - GroupInfo represents the high-level on-chain information for a - group. - description: groups are the groups info with the provided admin. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + Example 2: Pack and unpack a message in Java. - was set, its value is undefined otherwise - description: >- - QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response - type. - cosmos.group.v1.QueryGroupsByMemberResponse: - type: object - properties: - groups: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata to attached to the group. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#group-1 - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership - structure that + Example 3: Pack and unpack a message in Python. - would break existing proposals. Whenever any members weight is - changed, + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - or any member is added or removed this version is incremented - and will + Example 4: Pack and unpack a message in Go - cause proposals based on older versions of this group to fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: created_at is a timestamp specifying when a group was created. - description: >- - GroupInfo represents the high-level on-chain information for a - group. - description: groups are the groups info with the provided group member. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - was set, its value is undefined otherwise - description: QueryGroupsByMemberResponse is the Query/GroupsByMember response type. - cosmos.group.v1.QueryGroupsResponse: - type: object - properties: - groups: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - title: >- - metadata is any arbitrary metadata to attached to the group. + The pack methods provided by protobuf library will by default + use - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#group-1 - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership - structure that + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' - would break existing proposals. Whenever any members weight is - changed, + in the type URL, for example "foo.bar.com/x/y.z" will yield type - or any member is added or removed this version is incremented - and will + name "y.z". - cause proposals based on older versions of this group to fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: created_at is a timestamp specifying when a group was created. - description: >- - GroupInfo represents the high-level on-chain information for a - group. - description: '`groups` is all the groups present in state.' - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - was set, its value is undefined otherwise - description: |- - QueryGroupsResponse is the Query/Groups response type. + JSON - Since: cosmos-sdk 0.47.1 - cosmos.group.v1.QueryProposalResponse: - type: object - properties: - proposal: - description: proposal is the proposal info. - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique id of the proposal. - group_policy_address: - type: string - description: group_policy_address is the account address of group policy. - metadata: - type: string - title: |- - metadata is any arbitrary metadata attached to the proposal. - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#proposal-4 - proposers: - type: array - items: - type: string - description: proposers are the account addresses of the proposers. - submit_time: - type: string - format: date-time - description: >- - submit_time is a timestamp specifying when a proposal was - submitted. - group_version: - type: string - format: uint64 - description: >- - group_version tracks the version of the group at proposal - submission. + ==== - This field is here for informational purposes only. - group_policy_version: - type: string - format: uint64 - description: >- - group_policy_version tracks the version of the group policy at - proposal submission. + The JSON representation of an `Any` value uses the regular - When a decision policy is changed, existing proposals from - previous policy + representation of the deserialized, embedded message, with an - versions will become invalid with the `ABORTED` status. + additional field `@type` which contains the type URL. Example: - This field is here for informational purposes only. - status: - description: >- - status represents the high level position in the life cycle of the - proposal. Initial value is Submitted. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_SUBMITTED - - PROPOSAL_STATUS_ACCEPTED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_ABORTED - - PROPOSAL_STATUS_WITHDRAWN - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result contains the sums of all weighted votes for - this + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - proposal for each vote option. It is empty at submission, and only + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - populated after tallying, at voting period end or at proposal - execution, + If the embedded message type is well-known and has a custom JSON - whichever happens first. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - voting_period_end: - type: string - format: date-time - description: >- - voting_period_end is the timestamp before which voting must be - done. + representation, that representation will be embedded adding a + field - Unless a successful MsgExec is called before (to execute a - proposal whose + `value` which holds the custom JSON in addition to the `@type` - tally is successful before the voting period ends), tallying will - be done + field. Example (for message [google.protobuf.Duration][]): - at this point, and the `final_tally_result`and `status` fields - will be + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + extension_options are arbitrary options that can be added by + chains - accordingly updated. - executor_result: - description: >- - executor_result is the final result of the proposal execution. - Initial value is NotRun. - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - messages: + when the default options are not sufficient. If any of these are + present + + and can't be handled, the transaction will be rejected + nonCriticalExtensionOptions: type: array items: type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -80697,19 +77706,17 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely + used type server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + additionalProperties: {} description: >- `Any` contains an arbitrary serialized protocol buffer message along with a @@ -80747,7 +77754,7 @@ definitions: foo = any.unpack(Foo.getDefaultInstance()); } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() @@ -80757,7 +77764,7 @@ definitions: any.Unpack(foo) ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := anypb.New(foo) @@ -80786,6 +77793,7 @@ definitions: JSON + ==== The JSON representation of an `Any` value uses the regular @@ -80818,1349 +77826,806 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - description: >- - messages is a list of `sdk.Msg`s that will be executed if the - proposal passes. - title: - type: string - description: 'Since: cosmos-sdk 0.47' - title: title is the title of the proposal - summary: - type: string - description: 'Since: cosmos-sdk 0.47' - title: summary is a short summary of the proposal - description: QueryProposalResponse is the Query/Proposal response type. - cosmos.group.v1.QueryProposalsByGroupPolicyResponse: + title: >- + extension_options are arbitrary options that can be added by + chains + + when the default options are not sufficient. If any of these are + present + + and can't be handled, they will be ignored + description: TxBody is the body of a transaction that all signers sign over. + authInfo: + $ref: '#/definitions/cosmos.tx.v1beta1.AuthInfo' + title: |- + auth_info is the authorization related content of the transaction, + specifically signers, signer modes and fee + signatures: + type: array + items: + type: string + format: byte + description: >- + signatures is a list of signatures that matches the length and order + of + + AuthInfo's signer_infos to allow connecting signature meta information + like + + public key and signing mode by position. + description: Tx is the standard type used for broadcasting transactions. + cosmos.tx.v1beta1.TxBody: type: object properties: - proposals: + messages: type: array items: type: object properties: - id: - type: string - format: uint64 - description: id is the unique id of the proposal. - group_policy_address: - type: string - description: group_policy_address is the account address of group policy. - metadata: - type: string - title: |- - metadata is any arbitrary metadata attached to the proposal. - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#proposal-4 - proposers: - type: array - items: - type: string - description: proposers are the account addresses of the proposers. - submit_time: - type: string - format: date-time - description: >- - submit_time is a timestamp specifying when a proposal was - submitted. - group_version: - type: string - format: uint64 - description: >- - group_version tracks the version of the group at proposal - submission. - - This field is here for informational purposes only. - group_policy_version: - type: string - format: uint64 - description: >- - group_policy_version tracks the version of the group policy at - proposal submission. - - When a decision policy is changed, existing proposals from - previous policy - - versions will become invalid with the `ABORTED` status. - - This field is here for informational purposes only. - status: - description: >- - status represents the high level position in the life cycle of - the proposal. Initial value is Submitted. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_SUBMITTED - - PROPOSAL_STATUS_ACCEPTED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_ABORTED - - PROPOSAL_STATUS_WITHDRAWN - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result contains the sums of all weighted votes for - this - - proposal for each vote option. It is empty at submission, and - only - - populated after tallying, at voting period end or at proposal - execution, - - whichever happens first. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - voting_period_end: + '@type': type: string - format: date-time description: >- - voting_period_end is the timestamp before which voting must be - done. - - Unless a successful MsgExec is called before (to execute a - proposal whose - - tally is successful before the voting period ends), tallying - will be done - - at this point, and the `final_tally_result`and `status` fields - will be + A URL/resource name that uniquely identifies the type of the + serialized - accordingly updated. - executor_result: - description: >- - executor_result is the final result of the proposal execution. - Initial value is NotRun. - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - messages: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + protocol buffer message. This string must contain at least - protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must + represent - one "/" character. The last segment of the URL's path must - represent + the fully qualified name of the type (as in - the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in a + canonical form - `path/google.protobuf.Duration`). The name should be in a - canonical form + (e.g., leading "." is not accepted). - (e.g., leading "." is not accepted). + In practice, teams usually precompile into the binary all types + that they - In practice, teams usually precompile into the binary all - types that they + expect it to use in the context of Any. However, for URLs which + use the - expect it to use in the context of Any. However, for URLs - which use the + scheme `http`, `https`, or no scheme, one can optionally set up + a type - scheme `http`, `https`, or no scheme, one can optionally - set up a type + server that maps type URLs to message definitions as follows: - server that maps type URLs to message definitions as - follows: + * If no scheme is provided, `https` is assumed. - * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + Note: this functionality is not currently available in the + official - Note: this functionality is not currently available in the - official + protobuf release, and it is not used for type URLs beginning + with - protobuf release, and it is not used for type URLs - beginning with + type.googleapis.com. As of May 2023, there are no widely used + type server - type.googleapis.com. + implementations and no plans to implement one. - Schemes other than `http`, `https` (or the empty scheme) - might be + Schemes other than `http`, `https` (or the empty scheme) might + be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in - the form + Protobuf library provides support to pack/unpack Any values in the + form - of utility functions or additional generated methods of the - Any type. + of utility functions or additional generated methods of the Any + type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - The pack methods provided by protobuf library will by default - use + The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + 'type.googleapis.com/full.type.name' as the type URL and the unpack - methods only use the fully qualified type name after the last - '/' + methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + name "y.z". - JSON + JSON + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + additional field `@type` which contains the type URL. Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom - JSON + If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a - field + representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` + `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of `sdk.Msg`s that will be executed if the - proposal passes. - title: - type: string - description: 'Since: cosmos-sdk 0.47' - title: title is the title of the proposal - summary: - type: string - description: 'Since: cosmos-sdk 0.47' - title: summary is a short summary of the proposal - description: >- - Proposal defines a group proposal. Any member of a group can submit - a proposal + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of messages to be executed. The required signers of - for a group policy to decide upon. + those messages define the number and order of elements in AuthInfo's - A proposal consists of a set of `sdk.Msg`s that will be executed if - the proposal + signer_infos and Tx's signatures. Each required signer address is + added to - passes as well as some optional metadata associated with the - proposal. - description: proposals are the proposals with given group policy. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + the list only the first time it occurs. - was set, its value is undefined otherwise - description: >- - QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy - response type. - cosmos.group.v1.QueryTallyResultResponse: - type: object - properties: - tally: - description: tally defines the requested tally. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - description: QueryTallyResultResponse is the Query/TallyResult response type. - cosmos.group.v1.QueryVoteByProposalVoterResponse: - type: object - properties: - vote: - description: vote is the vote with given proposal_id and voter. - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the vote. + By convention, the first required signer (usually from the first + message) - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#vote-2 - submit_time: - type: string - format: date-time - description: submit_time is the timestamp when the vote was submitted. - title: Vote represents a vote for a proposal.string metadata - description: >- - QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response - type. - cosmos.group.v1.QueryVotesByProposalResponse: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the vote. + is referred to as the primary signer and pays the fee for the whole - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#vote-2 - submit_time: - type: string - format: date-time - description: submit_time is the timestamp when the vote was submitted. - title: Vote represents a vote for a proposal.string metadata - description: votes are the list of votes for given proposal_id. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + transaction. + memo: + type: string + description: >- + memo is any arbitrary note/comment to be added to the transaction. - was set, its value is undefined otherwise - description: QueryVotesByProposalResponse is the Query/VotesByProposal response type. - cosmos.group.v1.QueryVotesByVoterResponse: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the vote. + WARNING: in clients, any publicly exposed text should not be called + memo, - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#vote-2 - submit_time: - type: string - format: date-time - description: submit_time is the timestamp when the vote was submitted. - title: Vote represents a vote for a proposal.string metadata - description: votes are the list of votes by given voter. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + but should be called `note` instead (see - was set, its value is undefined otherwise - description: QueryVotesByVoterResponse is the Query/VotesByVoter response type. - cosmos.group.v1.TallyResult: - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - description: TallyResult represents the sum of weighted votes for each vote option. - cosmos.group.v1.Vote: - type: object - properties: - proposal_id: + https://github.com/cosmos/cosmos-sdk/issues/9122). + timeoutHeight: type: string format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - title: >- - metadata is any arbitrary metadata attached to the vote. + description: >- + timeout_height is the block height after which this transaction will + not - the recommended format of the metadata is to be found here: - https://docs.cosmos.network/v0.47/modules/group#vote-2 - submit_time: - type: string - format: date-time - description: submit_time is the timestamp when the vote was submitted. - title: Vote represents a vote for a proposal.string metadata - cosmos.group.v1.VoteOption: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: |- - VoteOption enumerates the valid vote options for a given proposal. + be processed by the chain. + unordered: + type: boolean + description: >- + unordered, when set to true, indicates that the transaction signer(s) - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines an unspecified vote option which will - return an error. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - cosmos.circuit.v1.AccountResponse: - type: object - properties: - permission: - type: object - properties: - level: - description: level is the level of permissions granted to this account. - type: string - enum: - - LEVEL_NONE_UNSPECIFIED - - LEVEL_SOME_MSGS - - LEVEL_ALL_MSGS - - LEVEL_SUPER_ADMIN - default: LEVEL_NONE_UNSPECIFIED - limit_type_urls: - type: array - items: - type: string - description: >- - limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of - Msg type + intend for the transaction to be evaluated and executed in an + un-ordered - URLs that the account can trip. It is an error to use - limit_type_urls with + fashion. Specifically, the account's nonce will NOT be checked or - a level other than LEVEL_SOME_MSGS. - description: |- - Permissions are the permissions that an account has to trip - or reset the circuit breaker. - description: AccountResponse is the response type for the Query/Account RPC method. - cosmos.circuit.v1.AccountsResponse: - type: object - properties: - accounts: - type: array - items: - type: object - properties: - address: - type: string - permissions: - type: object - properties: - level: - description: level is the level of permissions granted to this account. - type: string - enum: - - LEVEL_NONE_UNSPECIFIED - - LEVEL_SOME_MSGS - - LEVEL_ALL_MSGS - - LEVEL_SUPER_ADMIN - default: LEVEL_NONE_UNSPECIFIED - limit_type_urls: - type: array - items: - type: string - description: >- - limit_type_urls is used with LEVEL_SOME_MSGS to limit the - lists of Msg type + incremented, which allows for fire-and-forget as well as concurrent - URLs that the account can trip. It is an error to use - limit_type_urls with + transaction execution. - a level other than LEVEL_SOME_MSGS. - description: |- - Permissions are the permissions that an account has to trip - or reset the circuit breaker. - title: >- - GenesisAccountPermissions is the account permissions for the circuit - breaker in genesis - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - was set, its value is undefined otherwise - description: AccountsResponse is the response type for the Query/Accounts RPC method. - cosmos.circuit.v1.DisabledListResponse: - type: object - properties: - disabled_list: - type: array - items: - type: string - description: >- - DisabledListResponse is the response type for the Query/DisabledList RPC - method. - cosmos.circuit.v1.GenesisAccountPermissions: - type: object - properties: - address: - type: string - permissions: - type: object - properties: - level: - description: level is the level of permissions granted to this account. - type: string - enum: - - LEVEL_NONE_UNSPECIFIED - - LEVEL_SOME_MSGS - - LEVEL_ALL_MSGS - - LEVEL_SUPER_ADMIN - default: LEVEL_NONE_UNSPECIFIED - limit_type_urls: - type: array - items: - type: string - description: >- - limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of - Msg type + Note, when set to true, the existing 'timeout_timestamp' value must - URLs that the account can trip. It is an error to use - limit_type_urls with + be set and will be used to correspond to a timestamp in which the + transaction is deemed - a level other than LEVEL_SOME_MSGS. - description: |- - Permissions are the permissions that an account has to trip - or reset the circuit breaker. - title: >- - GenesisAccountPermissions is the account permissions for the circuit - breaker in genesis - cosmos.circuit.v1.Permissions: - type: object - properties: - level: - description: level is the level of permissions granted to this account. + valid. + + + When true, the sequence value MUST be 0, and any transaction with + unordered=true and a non-zero sequence value will + + be rejected. + + External services that make assumptions about sequence values may need + to be updated because of this. + timeoutTimestamp: type: string - enum: - - LEVEL_NONE_UNSPECIFIED - - LEVEL_SOME_MSGS - - LEVEL_ALL_MSGS - - LEVEL_SUPER_ADMIN - default: LEVEL_NONE_UNSPECIFIED - limit_type_urls: - type: array - items: - type: string + format: date-time description: >- - limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of Msg - type + timeout_timestamp is the block time after which this transaction will + not - URLs that the account can trip. It is an error to use limit_type_urls - with + be processed by the chain. - a level other than LEVEL_SOME_MSGS. - description: |- - Permissions are the permissions that an account has to trip - or reset the circuit breaker. - cosmos.circuit.v1.Permissions.Level: - type: string - enum: - - LEVEL_NONE_UNSPECIFIED - - LEVEL_SOME_MSGS - - LEVEL_ALL_MSGS - - LEVEL_SUPER_ADMIN - default: LEVEL_NONE_UNSPECIFIED - description: |- - Level is the permission level. - - LEVEL_NONE_UNSPECIFIED: LEVEL_NONE_UNSPECIFIED indicates that the account will have no circuit - breaker permissions. - - LEVEL_SOME_MSGS: LEVEL_SOME_MSGS indicates that the account will have permission to - trip or reset the circuit breaker for some Msg type URLs. If this level - is chosen, a non-empty list of Msg type URLs must be provided in - limit_type_urls. - - LEVEL_ALL_MSGS: LEVEL_ALL_MSGS indicates that the account can trip or reset the circuit - breaker for Msg's of all type URLs. - - LEVEL_SUPER_ADMIN: LEVEL_SUPER_ADMIN indicates that the account can take all circuit breaker - actions and can grant permissions to other accounts. - cosmos.consensus.v1.QueryParamsResponse: - type: object - properties: - params: - description: >- - params are the tendermint consensus params stored in the consensus - module. + Note, if unordered=true this value MUST be set - Please note that `params.version` is not populated in this response, - it is + and will act as a short-lived TTL in which the transaction is deemed + valid - tracked separately in the x/upgrade module. - type: object - properties: - block: - type: object - properties: - max_bytes: - type: string - format: int64 - title: |- - Max block size, in bytes. - Note: must be greater than 0 - max_gas: - type: string - format: int64 - title: |- - Max gas per block. - Note: must be greater or equal to -1 - description: BlockParams contains limits on the block size. - evidence: - type: object - properties: - max_age_num_blocks: - type: string - format: int64 - description: >- - Max age of evidence, in blocks. + and kept in memory to prevent duplicates. + extensionOptions: + type: array + items: + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must + represent - The basic formula for calculating this is: MaxAgeDuration / - {average block + the fully qualified name of the type (as in - time}. - max_age_duration: - type: string - description: >- - Max age of evidence, in time. + `path/google.protobuf.Duration`). The name should be in a + canonical form + (e.g., leading "." is not accepted). - It should correspond with an app's "unbonding period" or other - similar - mechanism for handling [Nothing-At-Stake + In practice, teams usually precompile into the binary all types + that they - attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). - max_bytes: - type: string - format: int64 - title: >- - This sets the maximum size of total evidence in bytes that can - be committed in a single block. + expect it to use in the context of Any. However, for URLs which + use the - and should fall comfortably under the max block bytes. + scheme `http`, `https`, or no scheme, one can optionally set up + a type - Default is 1048576 or 1MB - description: EvidenceParams determine how we handle evidence of malfeasance. - validator: - type: object - properties: - pub_key_types: - type: array - items: - type: string - description: |- - ValidatorParams restrict the public key types validators can use. - NOTE: uses ABCI pubkey naming, not Amino names. - version: - type: object - properties: - app: - type: string - format: uint64 - description: VersionParams contains the ABCI application version. - abci: - type: object - properties: - vote_extensions_enable_height: - type: string - format: int64 - description: >- - vote_extensions_enable_height configures the first height - during which + server that maps type URLs to message definitions as follows: - vote extensions will be enabled. During this specified height, - and for all - subsequent heights, precommit messages that do not contain - valid extension data + * If no scheme is provided, `https` is assumed. - will be considered invalid. Prior to this height, vote - extensions will not + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - be used or accepted by validators on the network. + Note: this functionality is not currently available in the + official + protobuf release, and it is not used for type URLs beginning + with - Once enabled, vote extensions will be created by the - application in ExtendVote, + type.googleapis.com. As of May 2023, there are no widely used + type server - passed to the application for validation in - VerifyVoteExtension and given + implementations and no plans to implement one. - to the application to use when proposing a block during - PrepareProposal. - description: >- - ABCIParams configure functionality specific to the Application - Blockchain Interface. - description: >- - QueryParamsResponse defines the response type for querying x/consensus - parameters. - tendermint.types.ABCIParams: - type: object - properties: - vote_extensions_enable_height: - type: string - format: int64 - description: >- - vote_extensions_enable_height configures the first height during which - vote extensions will be enabled. During this specified height, and for - all + Schemes other than `http`, `https` (or the empty scheme) might + be - subsequent heights, precommit messages that do not contain valid - extension data + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a - will be considered invalid. Prior to this height, vote extensions will - not + URL that describes the type of the serialized message. - be used or accepted by validators on the network. + Protobuf library provides support to pack/unpack Any values in the + form - Once enabled, vote extensions will be created by the application in - ExtendVote, + of utility functions or additional generated methods of the Any + type. - passed to the application for validation in VerifyVoteExtension and - given - to the application to use when proposing a block during - PrepareProposal. - description: >- - ABCIParams configure functionality specific to the Application Blockchain - Interface. - tendermint.types.BlockParams: - type: object - properties: - max_bytes: - type: string - format: int64 - title: |- - Max block size, in bytes. - Note: must be greater than 0 - max_gas: - type: string - format: int64 - title: |- - Max gas per block. - Note: must be greater or equal to -1 - description: BlockParams contains limits on the block size. - tendermint.types.ConsensusParams: - type: object - properties: - block: - type: object - properties: - max_bytes: - type: string - format: int64 - title: |- - Max block size, in bytes. - Note: must be greater than 0 - max_gas: - type: string - format: int64 - title: |- - Max gas per block. - Note: must be greater or equal to -1 - description: BlockParams contains limits on the block size. - evidence: - type: object - properties: - max_age_num_blocks: - type: string - format: int64 - description: >- - Max age of evidence, in blocks. + Example 1: Pack and unpack a message in C++. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - The basic formula for calculating this is: MaxAgeDuration / - {average block + Example 2: Pack and unpack a message in Java. - time}. - max_age_duration: - type: string - description: >- - Max age of evidence, in time. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + Example 3: Pack and unpack a message in Python. - It should correspond with an app's "unbonding period" or other - similar + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - mechanism for handling [Nothing-At-Stake + Example 4: Pack and unpack a message in Go - attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). - max_bytes: - type: string - format: int64 - title: >- - This sets the maximum size of total evidence in bytes that can be - committed in a single block. + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } - and should fall comfortably under the max block bytes. + The pack methods provided by protobuf library will by default use - Default is 1048576 or 1MB - description: EvidenceParams determine how we handle evidence of malfeasance. - validator: - type: object - properties: - pub_key_types: - type: array - items: - type: string - description: |- - ValidatorParams restrict the public key types validators can use. - NOTE: uses ABCI pubkey naming, not Amino names. - version: - type: object - properties: - app: - type: string - format: uint64 - description: VersionParams contains the ABCI application version. - abci: - type: object - properties: - vote_extensions_enable_height: - type: string - format: int64 - description: >- - vote_extensions_enable_height configures the first height during - which + 'type.googleapis.com/full.type.name' as the type URL and the unpack - vote extensions will be enabled. During this specified height, and - for all + methods only use the fully qualified type name after the last '/' - subsequent heights, precommit messages that do not contain valid - extension data + in the type URL, for example "foo.bar.com/x/y.z" will yield type - will be considered invalid. Prior to this height, vote extensions - will not + name "y.z". - be used or accepted by validators on the network. + JSON - Once enabled, vote extensions will be created by the application - in ExtendVote, + ==== - passed to the application for validation in VerifyVoteExtension - and given + The JSON representation of an `Any` value uses the regular - to the application to use when proposing a block during - PrepareProposal. - description: >- - ABCIParams configure functionality specific to the Application - Blockchain Interface. - description: |- - ConsensusParams contains consensus critical parameters that determine the - validity of blocks. - tendermint.types.EvidenceParams: - type: object - properties: - max_age_num_blocks: - type: string - format: int64 - description: >- - Max age of evidence, in blocks. + representation of the deserialized, embedded message, with an + additional field `@type` which contains the type URL. Example: - The basic formula for calculating this is: MaxAgeDuration / {average - block + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - time}. - max_age_duration: - type: string - description: >- - Max age of evidence, in time. + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + If the embedded message type is well-known and has a custom JSON - It should correspond with an app's "unbonding period" or other similar + representation, that representation will be embedded adding a field - mechanism for handling [Nothing-At-Stake + `value` which holds the custom JSON in addition to the `@type` - attacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed). - max_bytes: - type: string - format: int64 + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } title: >- - This sets the maximum size of total evidence in bytes that can be - committed in a single block. + extension_options are arbitrary options that can be added by chains - and should fall comfortably under the max block bytes. + when the default options are not sufficient. If any of these are + present - Default is 1048576 or 1MB - description: EvidenceParams determine how we handle evidence of malfeasance. - tendermint.types.ValidatorParams: - type: object - properties: - pub_key_types: - type: array - items: - type: string - description: |- - ValidatorParams restrict the public key types validators can use. - NOTE: uses ABCI pubkey naming, not Amino names. - tendermint.types.VersionParams: - type: object - properties: - app: - type: string - format: uint64 - description: VersionParams contains the ABCI application version. - cosmos.app.v1alpha1.Config: - type: object - properties: - modules: + and can't be handled, the transaction will be rejected + nonCriticalExtensionOptions: type: array items: type: object properties: - name: + '@type': type: string description: >- - name is the unique name of the module within the app. It should - be a name + A URL/resource name that uniquely identifies the type of the + serialized - that persists between different versions of a module so that - modules + protocol buffer message. This string must contain at least - can be smoothly upgraded to new versions. + one "/" character. The last segment of the URL's path must + represent + the fully qualified name of the type (as in - For example, for the module cosmos.bank.module.v1.Module, we may - chose + `path/google.protobuf.Duration`). The name should be in a + canonical form - to simply name the module "bank" in the app. When we upgrade to + (e.g., leading "." is not accepted). - cosmos.bank.module.v2.Module, the app-specific name "bank" stays - the same - and the framework knows that the v2 module should receive all - the same state + In practice, teams usually precompile into the binary all types + that they - that the v1 module had. Note: modules should provide info on - which versions + expect it to use in the context of Any. However, for URLs which + use the - they can migrate from in the ModuleDescriptor.can_migration_from - field. - config: - description: >- - config is the config object for the module. Module config - messages should + scheme `http`, `https`, or no scheme, one can optionally set up + a type - define a ModuleDescriptor using the - cosmos.app.v1alpha1.is_module extension. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + server that maps type URLs to message definitions as follows: - protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + * If no scheme is provided, `https` is assumed. - the fully qualified name of the type (as in + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - `path/google.protobuf.Duration`). The name should be in a - canonical form + Note: this functionality is not currently available in the + official - (e.g., leading "." is not accepted). + protobuf release, and it is not used for type URLs beginning + with + type.googleapis.com. As of May 2023, there are no widely used + type server - In practice, teams usually precompile into the binary all - types that they + implementations and no plans to implement one. - expect it to use in the context of Any. However, for URLs - which use the - scheme `http`, `https`, or no scheme, one can optionally set - up a type + Schemes other than `http`, `https` (or the empty scheme) might + be - server that maps type URLs to message definitions as - follows: + used with implementation specific semantics. + additionalProperties: {} + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + URL that describes the type of the serialized message. - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + Protobuf library provides support to pack/unpack Any values in the + form - Note: this functionality is not currently available in the - official + of utility functions or additional generated methods of the Any + type. - protobuf release, and it is not used for type URLs beginning - with - type.googleapis.com. + Example 1: Pack and unpack a message in C++. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Schemes other than `http`, `https` (or the empty scheme) - might be + Example 2: Pack and unpack a message in Java. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - golang_bindings: - type: array - items: - type: object - properties: - interface_type: - type: string - title: >- - interface_type is the interface type which will be bound - to a specific implementation type - implementation: - type: string - title: >- - implementation is the implementing type which will be - supplied when an input of type interface is requested - description: >- - GolangBinding is an explicit interface type to implementing - type binding for dependency injection. - description: >- - golang_bindings specifies explicit interface to implementation - type bindings which + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an - depinject uses to resolve interface inputs to provider - functions. The scope of this + additional field `@type` which contains the type URL. Example: - field's configuration is module specific. - description: ModuleConfig is a module configuration for an app. - description: modules are the module configurations for the app. - golang_bindings: - type: array - items: - type: object - properties: - interface_type: - type: string - title: >- - interface_type is the interface type which will be bound to a - specific implementation type - implementation: - type: string - title: >- - implementation is the implementing type which will be supplied - when an input of type interface is requested - description: >- - GolangBinding is an explicit interface type to implementing type - binding for dependency injection. - description: >- - golang_bindings specifies explicit interface to implementation type - bindings which + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - depinject uses to resolve interface inputs to provider functions. The - scope of this + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - field's configuration is global (not module specific). - description: >- - Config represents the configuration for a Cosmos SDK ABCI app. + If the embedded message type is well-known and has a custom JSON - It is intended that all state machine logic including the version of + representation, that representation will be embedded adding a field - baseapp and tx handlers (and possibly even Tendermint) that an app needs + `value` which holds the custom JSON in addition to the `@type` - can be described in a config object. For compatibility, the framework - should + field. Example (for message [google.protobuf.Duration][]): - allow a mixture of declarative and imperative app wiring, however, apps + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + extension_options are arbitrary options that can be added by chains - that strive for the maximum ease of maintainability should be able to - describe + when the default options are not sufficient. If any of these are + present - their state machine with a config object alone. - cosmos.app.v1alpha1.GolangBinding: + and can't be handled, they will be ignored + description: TxBody is the body of a transaction that all signers sign over. + cosmos.tx.v1beta1.TxDecodeAminoRequest: type: object properties: - interface_type: + aminoBinary: type: string - title: >- - interface_type is the interface type which will be bound to a specific - implementation type - implementation: + format: byte + description: |- + TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino + RPC method. + cosmos.tx.v1beta1.TxDecodeAminoResponse: + type: object + properties: + aminoJson: type: string - title: >- - implementation is the implementing type which will be supplied when an - input of type interface is requested - description: >- - GolangBinding is an explicit interface type to implementing type binding - for dependency injection. - cosmos.app.v1alpha1.ModuleConfig: + description: |- + TxDecodeAminoResponse is the response type for the Service.TxDecodeAmino + RPC method. + cosmos.tx.v1beta1.TxDecodeRequest: + type: object + properties: + txBytes: + type: string + format: byte + description: tx_bytes is the raw transaction. + description: |- + TxDecodeRequest is the request type for the Service.TxDecode + RPC method. + cosmos.tx.v1beta1.TxDecodeResponse: + type: object + properties: + tx: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: tx is the decoded transaction. + description: |- + TxDecodeResponse is the response type for the + Service.TxDecode method. + cosmos.tx.v1beta1.TxEncodeAminoRequest: + type: object + properties: + aminoJson: + type: string + description: |- + TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino + RPC method. + cosmos.tx.v1beta1.TxEncodeAminoResponse: + type: object + properties: + aminoBinary: + type: string + format: byte + description: |- + TxEncodeAminoResponse is the response type for the Service.TxEncodeAmino + RPC method. + cosmos.tx.v1beta1.TxEncodeRequest: + type: object + properties: + tx: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: tx is the transaction to encode. + description: |- + TxEncodeRequest is the request type for the Service.TxEncode + RPC method. + cosmos.tx.v1beta1.TxEncodeResponse: + type: object + properties: + txBytes: + type: string + format: byte + description: tx_bytes is the encoded transaction bytes. + description: |- + TxEncodeResponse is the response type for the + Service.TxEncode method. + tendermint.abci.Event: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + title: nondeterministic + description: EventAttribute is a single key-value pair, associated with an event. + description: |- + Event allows application developers to attach additional information to + ResponseFinalizeBlock and ResponseCheckTx. + Later, transactions may be queried using these events. + tendermint.abci.EventAttribute: + type: object + properties: + key: + type: string + value: + type: string + index: + type: boolean + title: nondeterministic + description: EventAttribute is a single key-value pair, associated with an event. + cosmos.upgrade.v1beta1.ModuleVersion: + type: object + properties: + name: + type: string + title: name of the app module + version: + type: string + format: uint64 + title: consensus version of the app module + description: ModuleVersion specifies a module and its consensus version. + cosmos.upgrade.v1beta1.Plan: type: object properties: name: type: string description: >- - name is the unique name of the module within the app. It should be a - name - - that persists between different versions of a module so that modules + Sets the name for the upgrade. This name will be used by the upgraded - can be smoothly upgraded to new versions. + version of the software to apply any special "on-upgrade" commands + during + the first BeginBlock method after the upgrade is applied. It is also + used - For example, for the module cosmos.bank.module.v1.Module, we may chose + to detect whether a software version can handle a given upgrade. If no - to simply name the module "bank" in the app. When we upgrade to + upgrade handler with this name has been set in the software, it will + be - cosmos.bank.module.v2.Module, the app-specific name "bank" stays the - same + assumed that the software is out-of-date when the upgrade Time or + Height is - and the framework knows that the v2 module should receive all the same - state + reached and the software will exit. + time: + type: string + format: date-time + description: >- + Deprecated: Time based upgrades have been deprecated. Time based + upgrade logic - that the v1 module had. Note: modules should provide info on which - versions + has been removed from the SDK. - they can migrate from in the ModuleDescriptor.can_migration_from - field. - config: + If this field is not empty, an error will be thrown. + height: + type: string + format: int64 + description: The height at which the upgrade must be performed. + info: + type: string + title: |- + Any application specific upgrade info to be included on-chain + such as a git commit that validators could automatically upgrade to + upgradedClientState: description: >- - config is the config object for the module. Module config messages - should + Deprecated: UpgradedClientState field has been deprecated. IBC upgrade + logic has been - define a ModuleDescriptor using the cosmos.app.v1alpha1.is_module - extension. + moved to the IBC module in the sub module 02-client. + + If this field is not empty, an error will be thrown. type: object properties: - type_url: + '@type': type: string description: >- A URL/resource name that uniquely identifies the type of the @@ -82206,211 +78671,193 @@ definitions: protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. As of May 2023, there are no widely used type + server + + implementations and no plans to implement one. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - golang_bindings: - type: array - items: - type: object - properties: - interface_type: - type: string - title: >- - interface_type is the interface type which will be bound to a - specific implementation type - implementation: - type: string - title: >- - implementation is the implementing type which will be supplied - when an input of type interface is requested - description: >- - GolangBinding is an explicit interface type to implementing type - binding for dependency injection. - description: >- - golang_bindings specifies explicit interface to implementation type - bindings which - - depinject uses to resolve interface inputs to provider functions. The - scope of this + additionalProperties: {} + description: >- + Plan specifies information about a planned upgrade and when it should + occur. + cosmos.upgrade.v1beta1.QueryAppliedPlanResponse: + type: object + properties: + height: + type: string + format: int64 + description: height is the block height at which the plan was applied. + description: >- + QueryAppliedPlanResponse is the response type for the Query/AppliedPlan + RPC - field's configuration is module specific. - description: ModuleConfig is a module configuration for an app. - cosmos.app.v1alpha1.QueryConfigResponse: + method. + cosmos.upgrade.v1beta1.QueryAuthorityResponse: type: object properties: - config: - description: config is the current app config. + address: + type: string + title: QueryAuthorityResponse is the response type for Query/Authority + cosmos.upgrade.v1beta1.QueryCurrentPlanResponse: + type: object + properties: + plan: + description: plan is the current upgrade plan. type: object properties: - modules: - type: array - items: - type: object - properties: - name: - type: string - description: >- - name is the unique name of the module within the app. It - should be a name + name: + type: string + description: >- + Sets the name for the upgrade. This name will be used by the + upgraded - that persists between different versions of a module so that - modules + version of the software to apply any special "on-upgrade" commands + during - can be smoothly upgraded to new versions. + the first BeginBlock method after the upgrade is applied. It is + also used + to detect whether a software version can handle a given upgrade. + If no - For example, for the module cosmos.bank.module.v1.Module, we - may chose + upgrade handler with this name has been set in the software, it + will be - to simply name the module "bank" in the app. When we upgrade - to + assumed that the software is out-of-date when the upgrade Time or + Height is - cosmos.bank.module.v2.Module, the app-specific name "bank" - stays the same + reached and the software will exit. + time: + type: string + format: date-time + description: >- + Deprecated: Time based upgrades have been deprecated. Time based + upgrade logic - and the framework knows that the v2 module should receive - all the same state + has been removed from the SDK. - that the v1 module had. Note: modules should provide info on - which versions + If this field is not empty, an error will be thrown. + height: + type: string + format: int64 + description: The height at which the upgrade must be performed. + info: + type: string + title: >- + Any application specific upgrade info to be included on-chain - they can migrate from in the - ModuleDescriptor.can_migration_from field. - config: - description: >- - config is the config object for the module. Module config - messages should + such as a git commit that validators could automatically upgrade + to + upgradedClientState: + description: >- + Deprecated: UpgradedClientState field has been deprecated. IBC + upgrade logic has been - define a ModuleDescriptor using the - cosmos.app.v1alpha1.is_module extension. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + moved to the IBC module in the sub module 02-client. - protocol buffer message. This string must contain at - least + If this field is not empty, an error will be thrown. + type: object + properties: + '@type': + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - one "/" character. The last segment of the URL's path - must represent + protocol buffer message. This string must contain at least - the fully qualified name of the type (as in + one "/" character. The last segment of the URL's path must + represent - `path/google.protobuf.Duration`). The name should be in - a canonical form + the fully qualified name of the type (as in - (e.g., leading "." is not accepted). + `path/google.protobuf.Duration`). The name should be in a + canonical form + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they - expect it to use in the context of Any. However, for - URLs which use the + In practice, teams usually precompile into the binary all + types that they - scheme `http`, `https`, or no scheme, one can optionally - set up a type + expect it to use in the context of Any. However, for URLs + which use the - server that maps type URLs to message definitions as - follows: + scheme `http`, `https`, or no scheme, one can optionally set + up a type + server that maps type URLs to message definitions as follows: - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * If no scheme is provided, `https` is assumed. - Note: this functionality is not currently available in - the official + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - protobuf release, and it is not used for type URLs - beginning with + Note: this functionality is not currently available in the + official - type.googleapis.com. + protobuf release, and it is not used for type URLs beginning + with + type.googleapis.com. As of May 2023, there are no widely used + type server - Schemes other than `http`, `https` (or the empty scheme) - might be + implementations and no plans to implement one. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - golang_bindings: - type: array - items: - type: object - properties: - interface_type: - type: string - title: >- - interface_type is the interface type which will be - bound to a specific implementation type - implementation: - type: string - title: >- - implementation is the implementing type which will be - supplied when an input of type interface is requested - description: >- - GolangBinding is an explicit interface type to - implementing type binding for dependency injection. - description: >- - golang_bindings specifies explicit interface to - implementation type bindings which - depinject uses to resolve interface inputs to provider - functions. The scope of this + Schemes other than `http`, `https` (or the empty scheme) might + be - field's configuration is module specific. - description: ModuleConfig is a module configuration for an app. - description: modules are the module configurations for the app. - golang_bindings: - type: array - items: - type: object - properties: - interface_type: - type: string - title: >- - interface_type is the interface type which will be bound to - a specific implementation type - implementation: - type: string - title: >- - implementation is the implementing type which will be - supplied when an input of type interface is requested - description: >- - GolangBinding is an explicit interface type to implementing type - binding for dependency injection. - description: >- - golang_bindings specifies explicit interface to implementation - type bindings which + used with implementation specific semantics. + additionalProperties: {} + description: >- + QueryCurrentPlanResponse is the response type for the Query/CurrentPlan + RPC - depinject uses to resolve interface inputs to provider functions. - The scope of this + method. + cosmos.upgrade.v1beta1.QueryModuleVersionsResponse: + type: object + properties: + moduleVersions: + type: array + items: + type: object + properties: + name: + type: string + title: name of the app module + version: + type: string + format: uint64 + title: consensus version of the app module + description: ModuleVersion specifies a module and its consensus version. + description: >- + module_versions is a list of module names with their consensus + versions. + description: >- + QueryModuleVersionsResponse is the response type for the + Query/ModuleVersions - field's configuration is global (not module specific). - description: QueryConfigRequest is the Query/Config response type. + RPC method. + cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse: + type: object + properties: + upgradedConsensusState: + type: string + format: byte + description: >- + QueryUpgradedConsensusStateResponse is the response type for the + Query/UpgradedConsensusState + + RPC method. diff --git a/go/inventory/v1/node.go b/go/inventory/v1/node.go index 8f37bc37..b6e22641 100644 --- a/go/inventory/v1/node.go +++ b/go/inventory/v1/node.go @@ -5,10 +5,11 @@ func (nd *NodeCapabilities) Dup() NodeCapabilities { StorageClasses: make([]string, 0, len(nd.StorageClasses)), InterconnectResourceName: nd.InterconnectResourceName, InterconnectFabric: nd.InterconnectFabric, - NCCLHCAPrefix: nd.NCCLHCAPrefix, + NCCLHCAPrefixes: make([]string, 0, len(nd.NCCLHCAPrefixes)), } res.StorageClasses = append(res.StorageClasses, nd.StorageClasses...) + res.NCCLHCAPrefixes = append(res.NCCLHCAPrefixes, nd.NCCLHCAPrefixes...) return res } diff --git a/go/inventory/v1/node.pb.go b/go/inventory/v1/node.pb.go index 6c961d28..8ad81fb5 100644 --- a/go/inventory/v1/node.pb.go +++ b/go/inventory/v1/node.pb.go @@ -38,11 +38,13 @@ type NodeCapabilities struct { // declare `interconnect: true`. Derived from // /sys/class/infiniband//ports/1/link_layer on the host node. InterconnectFabric string `protobuf:"bytes,3,opt,name=interconnect_fabric,json=interconnectFabric,proto3" json:"interconnect_fabric,omitempty" yaml:"interconnect_fabric,omitempty"` - // NCCL IB HCA prefix - the common device-name prefix under - // /sys/class/infiniband (e.g. "mlx5"). Same key for IB and RoCE since - // NCCL uses the IB verbs API for both. Injected by the provider as - // NCCL_IB_HCA when scheduling GPU interconnect workloads. - NCCLHCAPrefix string `protobuf:"bytes,4,opt,name=nccl_hca_prefix,json=ncclHcaPrefix,proto3" json:"nccl_hca_prefix,omitempty" yaml:"nccl_hca_prefix,omitempty"` + // NCCL HCA device-name prefixes present on this node, one per distinct + // family (e.g. ["mlx5"], or ["mlx5","bnxt_re"] on a mixed-vendor host). + // Same key for IB and RoCE since NCCL uses the IB verbs API for both. + // Joined with commas and injected as NCCL_IB_HCA when scheduling GPU + // interconnect workloads — NCCL accepts comma-separated device prefixes + // natively. Discovered from /sys/class/infiniband/ on the host. + NCCLHCAPrefixes []string `protobuf:"bytes,4,rep,name=nccl_hca_prefixes,json=ncclHcaPrefixes,proto3" json:"nccl_hca_prefixes,omitempty" yaml:"nccl_hca_prefixes,omitempty"` } func (m *NodeCapabilities) Reset() { *m = NodeCapabilities{} } @@ -99,11 +101,11 @@ func (m *NodeCapabilities) GetInterconnectFabric() string { return "" } -func (m *NodeCapabilities) GetNCCLHCAPrefix() string { +func (m *NodeCapabilities) GetNCCLHCAPrefixes() []string { if m != nil { - return m.NCCLHCAPrefix + return m.NCCLHCAPrefixes } - return "" + return nil } // Node reports node inventory details @@ -175,40 +177,40 @@ func init() { func init() { proto.RegisterFile("akash/inventory/v1/node.proto", fileDescriptor_5f97c0fb35079221) } var fileDescriptor_5f97c0fb35079221 = []byte{ - // 521 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xbf, 0x6b, 0xdb, 0x40, - 0x18, 0xb5, 0x12, 0x53, 0xf0, 0xe5, 0x27, 0x97, 0x52, 0x54, 0x97, 0xe8, 0xdc, 0xc3, 0x43, 0xa0, - 0x45, 0x26, 0x0e, 0x5d, 0xda, 0xa1, 0xd4, 0x82, 0x92, 0x42, 0x31, 0x45, 0xdd, 0xba, 0x88, 0xf3, - 0xf9, 0x22, 0x1f, 0xb6, 0x74, 0x42, 0xa7, 0x9a, 0xba, 0x7b, 0xf7, 0xfc, 0x2b, 0xdd, 0xba, 0x75, - 0xcd, 0x98, 0xb1, 0xd3, 0x51, 0xe4, 0x4d, 0xa3, 0xfe, 0x82, 0xe2, 0x93, 0xe3, 0x48, 0x8e, 0x0d, - 0xdd, 0x8e, 0xf7, 0xde, 0xbd, 0xf7, 0xe0, 0xfb, 0x3e, 0x70, 0x4a, 0xc6, 0x44, 0x8e, 0x3a, 0x3c, - 0x9c, 0xb2, 0x30, 0x11, 0xf1, 0xac, 0x33, 0x3d, 0xef, 0x84, 0x62, 0xc8, 0xec, 0x28, 0x16, 0x89, - 0x80, 0x50, 0xd3, 0xf6, 0x8a, 0xb6, 0xa7, 0xe7, 0xcd, 0xc7, 0xbe, 0xf0, 0x85, 0xa6, 0x3b, 0x8b, - 0x57, 0xa1, 0x6c, 0xe2, 0x0d, 0x46, 0x31, 0x93, 0xe2, 0x6b, 0x4c, 0x99, 0x2c, 0x34, 0xf8, 0x77, - 0x1d, 0x1c, 0xf7, 0xc5, 0x90, 0x39, 0x24, 0x22, 0x03, 0x3e, 0xe1, 0x09, 0x67, 0x12, 0x8e, 0xc0, - 0x91, 0x4c, 0x44, 0x4c, 0x7c, 0xe6, 0xd1, 0x09, 0x91, 0x92, 0x49, 0xd3, 0x68, 0xed, 0x9e, 0x35, - 0x7a, 0x6f, 0x53, 0x85, 0x0e, 0x3f, 0x17, 0x94, 0x53, 0x30, 0x99, 0x42, 0xeb, 0xe2, 0x5c, 0xa1, - 0x27, 0x33, 0x12, 0x4c, 0x5e, 0xe3, 0x35, 0x02, 0xbb, 0x87, 0xb2, 0xf2, 0x19, 0xfe, 0x34, 0x40, - 0x93, 0x87, 0x09, 0x8b, 0xa9, 0x08, 0x43, 0x46, 0x13, 0xef, 0xae, 0x9f, 0x17, 0x92, 0x80, 0x99, - 0x3b, 0x2d, 0xe3, 0xac, 0xd1, 0x93, 0xa9, 0x42, 0xe6, 0x87, 0x92, 0xca, 0x5d, 0x8a, 0xfa, 0x24, - 0x60, 0x99, 0x42, 0xed, 0xed, 0x0e, 0x2f, 0x45, 0xc0, 0x13, 0x16, 0x44, 0xc9, 0x2c, 0x57, 0xe8, - 0x45, 0x51, 0xea, 0x7f, 0xd4, 0xd8, 0x35, 0xf9, 0x96, 0x40, 0x78, 0x6d, 0x80, 0x93, 0x8a, 0xc7, - 0x15, 0x19, 0xc4, 0x9c, 0x9a, 0xbb, 0xba, 0xac, 0x97, 0x2a, 0x04, 0xcb, 0x65, 0xdf, 0x6b, 0x36, - 0x53, 0xe8, 0x74, 0xc3, 0xa7, 0x4a, 0xbf, 0xf6, 0x86, 0x7e, 0xeb, 0x32, 0xec, 0x42, 0xfe, 0xc0, - 0x1c, 0x7e, 0x07, 0x47, 0x21, 0xa5, 0x13, 0x6f, 0x44, 0x89, 0x17, 0xc5, 0xec, 0x8a, 0x7f, 0x33, - 0xeb, 0xba, 0x8d, 0x9b, 0x2a, 0x74, 0xd0, 0x77, 0x9c, 0x8f, 0x97, 0xce, 0xbb, 0x4f, 0x9a, 0xc8, - 0x14, 0x7a, 0xba, 0xa6, 0xad, 0x94, 0x68, 0x15, 0x25, 0xb6, 0x4a, 0xb0, 0x7b, 0xb0, 0xe0, 0x2e, - 0x29, 0x29, 0xfc, 0xf0, 0xaf, 0x1d, 0x50, 0x5f, 0x6c, 0x10, 0xbc, 0x00, 0x75, 0x3d, 0x34, 0x43, - 0x27, 0xa3, 0x54, 0xa1, 0xfa, 0x72, 0x40, 0x1a, 0xcf, 0x15, 0xda, 0x5b, 0x7a, 0x93, 0x80, 0x61, - 0x57, 0x83, 0x50, 0x82, 0xc6, 0x6a, 0x25, 0xf5, 0xb8, 0xf7, 0xba, 0xcf, 0xed, 0x87, 0x1b, 0x6e, - 0x2f, 0x12, 0xee, 0xa6, 0x20, 0x7b, 0xdd, 0x1b, 0x85, 0x6a, 0xa9, 0x42, 0x8d, 0x15, 0x94, 0x29, - 0x74, 0x6f, 0x94, 0x2b, 0x74, 0x5c, 0x44, 0xad, 0x20, 0xec, 0xde, 0xd3, 0xf0, 0x87, 0x01, 0xf6, - 0x69, 0x69, 0xe1, 0xf5, 0xe8, 0xf6, 0xba, 0xed, 0x6d, 0xc1, 0xe5, 0xe3, 0xe8, 0xbd, 0x59, 0x66, - 0xef, 0x97, 0xd1, 0x4c, 0xa1, 0x8a, 0x63, 0xae, 0xd0, 0x49, 0xd1, 0xa0, 0x8c, 0x62, 0xb7, 0x22, - 0xea, 0xbd, 0xba, 0x49, 0x2d, 0xe3, 0x36, 0xb5, 0x8c, 0xbf, 0xa9, 0x65, 0x5c, 0xcf, 0xad, 0xda, - 0xed, 0xdc, 0xaa, 0xfd, 0x99, 0x5b, 0xb5, 0x2f, 0xcf, 0xa2, 0xb1, 0x6f, 0x93, 0x71, 0x62, 0x0f, - 0xd9, 0xb4, 0xe3, 0x8b, 0xca, 0x0d, 0x0f, 0x1e, 0xe9, 0xd3, 0xbd, 0xf8, 0x17, 0x00, 0x00, 0xff, - 0xff, 0x79, 0x09, 0x7e, 0x8d, 0x29, 0x04, 0x00, 0x00, + // 527 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x4f, 0x6b, 0x13, 0x41, + 0x1c, 0xcd, 0xb4, 0x41, 0xc8, 0xa4, 0x34, 0x75, 0x2a, 0xb2, 0xa4, 0x74, 0xa7, 0x0e, 0x39, 0x14, + 0x94, 0x0d, 0x4d, 0xf1, 0xa2, 0x07, 0x31, 0x01, 0xa9, 0x20, 0x41, 0xd6, 0x8b, 0x78, 0x59, 0x26, + 0x93, 0x69, 0x32, 0x24, 0xbb, 0x13, 0x76, 0xd6, 0x60, 0xee, 0x7a, 0xef, 0x57, 0xf1, 0xe6, 0x47, + 0x28, 0x9e, 0x7a, 0xf4, 0x34, 0xc8, 0xe6, 0xb6, 0xc7, 0x7c, 0x02, 0xc9, 0x6c, 0x92, 0xee, 0xe6, + 0x8f, 0xf4, 0xb6, 0xbc, 0xf7, 0xe6, 0xfd, 0x1e, 0xfb, 0x7e, 0x3f, 0x78, 0x4a, 0x07, 0x54, 0xf5, + 0xeb, 0x22, 0x18, 0xf3, 0x20, 0x92, 0xe1, 0xa4, 0x3e, 0xbe, 0xa8, 0x07, 0xb2, 0xcb, 0x9d, 0x51, + 0x28, 0x23, 0x89, 0x90, 0xa1, 0x9d, 0x15, 0xed, 0x8c, 0x2f, 0xaa, 0x4f, 0x7a, 0xb2, 0x27, 0x0d, + 0x5d, 0x9f, 0x7f, 0xa5, 0xca, 0x2a, 0xd9, 0x62, 0x14, 0x72, 0x25, 0xbf, 0x86, 0x8c, 0xab, 0x54, + 0x43, 0x7e, 0x17, 0xe1, 0x51, 0x5b, 0x76, 0x79, 0x8b, 0x8e, 0x68, 0x47, 0x0c, 0x45, 0x24, 0xb8, + 0x42, 0x7d, 0x58, 0x51, 0x91, 0x0c, 0x69, 0x8f, 0x7b, 0x6c, 0x48, 0x95, 0xe2, 0xca, 0x02, 0x67, + 0xfb, 0xe7, 0xa5, 0xe6, 0x9b, 0x58, 0xe3, 0xc3, 0x4f, 0x29, 0xd5, 0x4a, 0x99, 0x44, 0xe3, 0x75, + 0xf1, 0x4c, 0xe3, 0xa7, 0x13, 0xea, 0x0f, 0x5f, 0x91, 0x35, 0x82, 0xb8, 0x87, 0x2a, 0xf7, 0x18, + 0xfd, 0x04, 0xb0, 0x2a, 0x82, 0x88, 0x87, 0x4c, 0x06, 0x01, 0x67, 0x91, 0xb7, 0xcc, 0xe7, 0x05, + 0xd4, 0xe7, 0xd6, 0xde, 0x19, 0x38, 0x2f, 0x35, 0x55, 0xac, 0xb1, 0xf5, 0x3e, 0xa3, 0x72, 0x17, + 0xa2, 0x36, 0xf5, 0x79, 0xa2, 0x71, 0x6d, 0xb7, 0xc3, 0x0b, 0xe9, 0x8b, 0x88, 0xfb, 0xa3, 0x68, + 0x32, 0xd3, 0xf8, 0x79, 0x1a, 0xea, 0x21, 0x6a, 0xe2, 0x5a, 0x62, 0xc7, 0x40, 0x74, 0x03, 0xe0, + 0x71, 0xce, 0xe3, 0x9a, 0x76, 0x42, 0xc1, 0xac, 0x7d, 0x13, 0xd6, 0x8b, 0x35, 0x46, 0xd9, 0xb0, + 0xef, 0x0c, 0x9b, 0x68, 0x7c, 0xba, 0xe5, 0x51, 0x2e, 0x5f, 0x6d, 0x4b, 0xbe, 0x75, 0x19, 0x71, + 0x91, 0xd8, 0x30, 0x47, 0xdf, 0x01, 0x7c, 0x1c, 0x30, 0x36, 0xf4, 0xfa, 0x8c, 0x7a, 0xa3, 0x90, + 0x5f, 0x8b, 0x6f, 0x5c, 0x59, 0x45, 0xd3, 0xd9, 0xe7, 0x58, 0xe3, 0x4a, 0xbb, 0xd5, 0xfa, 0x70, + 0xd5, 0x7a, 0xfb, 0x71, 0x41, 0x25, 0x1a, 0x9f, 0x6c, 0xe8, 0x73, 0x59, 0x48, 0x9a, 0xe5, 0x3f, + 0x22, 0xe2, 0x56, 0xe6, 0xec, 0x15, 0xa3, 0x4b, 0x57, 0xf2, 0x6b, 0x0f, 0x16, 0xe7, 0xcb, 0x84, + 0x2e, 0x61, 0xd1, 0xf4, 0x07, 0xcc, 0x2f, 0xc1, 0xb1, 0xc6, 0xc5, 0x45, 0x57, 0x06, 0x9f, 0x69, + 0x5c, 0x5e, 0xf8, 0x53, 0x9f, 0x13, 0xd7, 0x80, 0x48, 0xc1, 0xd2, 0x6a, 0x3b, 0x4d, 0xf3, 0xe5, + 0xc6, 0x33, 0x67, 0x73, 0xd9, 0x9d, 0xf9, 0x84, 0x65, 0x21, 0xaa, 0xd9, 0xb8, 0xd5, 0xb8, 0x10, + 0x6b, 0x5c, 0x5a, 0x41, 0x89, 0xc6, 0xf7, 0x46, 0x33, 0x8d, 0x8f, 0xd2, 0x51, 0x2b, 0x88, 0xb8, + 0xf7, 0x34, 0xfa, 0x01, 0xe0, 0x01, 0xcb, 0xec, 0xbe, 0x69, 0xb1, 0xdc, 0xa8, 0xed, 0x1a, 0x9c, + 0xbd, 0x93, 0xe6, 0xeb, 0xc5, 0xec, 0x83, 0x2c, 0x9a, 0x68, 0x9c, 0x73, 0x9c, 0x69, 0x7c, 0x9c, + 0x26, 0xc8, 0xa2, 0xc4, 0xcd, 0x89, 0x9a, 0x2f, 0x6f, 0x63, 0x1b, 0xdc, 0xc5, 0x36, 0xf8, 0x1b, + 0xdb, 0xe0, 0x66, 0x6a, 0x17, 0xee, 0xa6, 0x76, 0xe1, 0xcf, 0xd4, 0x2e, 0x7c, 0x39, 0x19, 0x0d, + 0x7a, 0x0e, 0x1d, 0x44, 0x4e, 0x97, 0x8f, 0xeb, 0x3d, 0x99, 0x3b, 0xe7, 0xce, 0x23, 0x73, 0xc5, + 0x97, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x46, 0xa6, 0x1e, 0xe3, 0x34, 0x04, 0x00, 0x00, } func (m *NodeCapabilities) Marshal() (dAtA []byte, err error) { @@ -231,12 +233,14 @@ func (m *NodeCapabilities) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.NCCLHCAPrefix) > 0 { - i -= len(m.NCCLHCAPrefix) - copy(dAtA[i:], m.NCCLHCAPrefix) - i = encodeVarintNode(dAtA, i, uint64(len(m.NCCLHCAPrefix))) - i-- - dAtA[i] = 0x22 + if len(m.NCCLHCAPrefixes) > 0 { + for iNdEx := len(m.NCCLHCAPrefixes) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.NCCLHCAPrefixes[iNdEx]) + copy(dAtA[i:], m.NCCLHCAPrefixes[iNdEx]) + i = encodeVarintNode(dAtA, i, uint64(len(m.NCCLHCAPrefixes[iNdEx]))) + i-- + dAtA[i] = 0x22 + } } if len(m.InterconnectFabric) > 0 { i -= len(m.InterconnectFabric) @@ -345,9 +349,11 @@ func (m *NodeCapabilities) Size() (n int) { if l > 0 { n += 1 + l + sovNode(uint64(l)) } - l = len(m.NCCLHCAPrefix) - if l > 0 { - n += 1 + l + sovNode(uint64(l)) + if len(m.NCCLHCAPrefixes) > 0 { + for _, s := range m.NCCLHCAPrefixes { + l = len(s) + n += 1 + l + sovNode(uint64(l)) + } } return n } @@ -502,7 +508,7 @@ func (m *NodeCapabilities) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NCCLHCAPrefix", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field NCCLHCAPrefixes", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -530,7 +536,7 @@ func (m *NodeCapabilities) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.NCCLHCAPrefix = string(dAtA[iNdEx:postIndex]) + m.NCCLHCAPrefixes = append(m.NCCLHCAPrefixes, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex diff --git a/go/inventory/v1/node_test.go b/go/inventory/v1/node_test.go index 81cd062a..d4a5bb97 100644 --- a/go/inventory/v1/node_test.go +++ b/go/inventory/v1/node_test.go @@ -11,7 +11,7 @@ func TestNodeCapabilities_Dup_PreservesInterconnectFields(t *testing.T) { StorageClasses: []string{"beta3", "default"}, InterconnectResourceName: "rdma/rdma_shared_device_ib", InterconnectFabric: "infiniband", - NCCLHCAPrefix: "mlx5", + NCCLHCAPrefixes: []string{"mlx5", "bnxt_re"}, } got := src.Dup() @@ -19,13 +19,15 @@ func TestNodeCapabilities_Dup_PreservesInterconnectFields(t *testing.T) { require.Equal(t, src.StorageClasses, got.StorageClasses) require.Equal(t, "rdma/rdma_shared_device_ib", got.InterconnectResourceName) require.Equal(t, "infiniband", got.InterconnectFabric) - require.Equal(t, "mlx5", got.NCCLHCAPrefix) + require.Equal(t, []string{"mlx5", "bnxt_re"}, got.NCCLHCAPrefixes) // mutating dup must not affect the source (Dup is a deep copy) got.StorageClasses[0] = "mutated" got.InterconnectResourceName = "rdma/rdma_shared_device_eth" + got.NCCLHCAPrefixes[0] = "mutated" require.Equal(t, "beta3", src.StorageClasses[0]) require.Equal(t, "rdma/rdma_shared_device_ib", src.InterconnectResourceName) + require.Equal(t, "mlx5", src.NCCLHCAPrefixes[0]) } func TestNodeCapabilities_Dup_ZeroValueInterconnect(t *testing.T) { @@ -38,5 +40,5 @@ func TestNodeCapabilities_Dup_ZeroValueInterconnect(t *testing.T) { require.Empty(t, got.InterconnectResourceName) require.Empty(t, got.InterconnectFabric) - require.Empty(t, got.NCCLHCAPrefix) + require.Empty(t, got.NCCLHCAPrefixes) } diff --git a/go/sdl/gpu.go b/go/sdl/gpu.go index 1caa7dc6..860dc0a3 100644 --- a/go/sdl/gpu.go +++ b/go/sdl/gpu.go @@ -38,32 +38,32 @@ type gpuVendor struct { type v2GPUAttributes types.Attributes -// GPUAttributeInterconnect is the on-chain GPU-attribute key emitted when -// an SDL compute profile declares gpu.attributes.interconnect: true. -// Providers advertising GPU-interconnect-capable hardware match this -// attribute via the standard GPU MatchResourcesRequirements path. The -// fabric (InfiniBand vs RoCE) is hidden from the SDL surface; the -// provider picks whichever it has. -const GPUAttributeInterconnect = "interconnect" - // GPUAttributeInterconnectGroup is the on-chain GPU-attribute key emitted -// when an SDL compute profile declares gpu.attributes.interconnect_group: -// . Carries the peer-group label all the way into the on-chain -// Resources.GPU.attributes so the provider's bid engine can enforce -// per-group node separation at fit time (Service.InterconnectGroup -// off-chain alone would leave the bid step blind). The value is also -// lifted into Service.InterconnectGroup so the workload builder's pod -// anti-affinity rule keys off the same string. -const GPUAttributeInterconnectGroup = "interconnect_group" +// for every interconnect-enabled resource. Its presence (regardless of +// value) signals "this resource wants GPU interconnect"; its value is the +// peer-group label the provider's bid engine uses to enforce per-group +// node separation. Path-separated key matches the existing +// `capabilities/gpu-interconnect/fabric/...` convention. +// +// Replaces the rc4 pair (`interconnect=true` + `interconnect_group=`) +// with a single key. See docs/sdl-interconnect-spec.md. +const GPUAttributeInterconnectGroup = "interconnect/group" + +// InterconnectGroupAuto is the reserved group name the SDL parser assigns +// to every `interconnect: []` resource within one placement. Tenants +// cannot write this name explicitly under `interconnect: { group: ... }`. +const InterconnectGroupAuto = "auto" type v2ResourceGPU struct { Units gpuQuantity `yaml:"units" json:"units"` Attributes v2GPUAttributes `yaml:"attributes,omitempty" json:"attributes,omitempty"` - // InterconnectGroup carries the parsed gpu.attributes.interconnect_group - // value. The same value is also present in Attributes (as - // GPUAttributeInterconnectGroup); this field exists so the - // higher-level manifest builder can route it to + // InterconnectGroup carries the parsed group name from + // gpu.attributes.interconnect (the implicit `[]` form resolves to + // the literal "auto", the explicit `{group: }` form carries + // the tenant-chosen name). The same value is also present in + // Attributes under the GPUAttributeInterconnectGroup key; this + // field exists so the higher-level manifest builder can route it to // Service.InterconnectGroup without re-walking the slice. InterconnectGroup string `yaml:"-" json:"-"` } @@ -86,12 +86,11 @@ func (sdl *v2ResourceGPU) UnmarshalYAML(node *yaml.Node) error { } } - // Lift the interconnect_group attribute value into the dedicated + // Lift the interconnect/group attribute value into the dedicated // InterconnectGroup field for downstream manifest builders, but KEEP // it in the attributes slice — the provider's bid engine consumes the - // on-chain Resources.GPU.Attributes and needs interconnect_group - // present there to enforce per-group node separation during - // reservation. + // on-chain Resources.GPU.Attributes and needs the group key present + // there to enforce per-group node separation during reservation. if len(res.Attributes) > 0 { for _, a := range res.Attributes { if a.Key == GPUAttributeInterconnectGroup { @@ -101,7 +100,7 @@ func (sdl *v2ResourceGPU) UnmarshalYAML(node *yaml.Node) error { } // v2GPUAttributes.UnmarshalYAML defers Validate to here so the - // final attribute slice (including the interconnect_group key, + // final attribute slice (including the interconnect/group key, // which matches the on-chain attribute key regex) gets one // validate pass. final := types.Attributes(res.Attributes) @@ -114,20 +113,16 @@ func (sdl *v2ResourceGPU) UnmarshalYAML(node *yaml.Node) error { return fmt.Errorf("sdl: GPU attributes must be present if units > 0") } - // CS-5 invariant, enforced here so the SDL fails fast: interconnect - // and interconnect_group are nonsense without an actual GPU to attach - // an HCA to. A profile declaring interconnect: true or - // interconnect_group: with gpu.units == 0 would otherwise be - // classified as interconnect-enabled by downstream validation passes + // CS-5 invariant, enforced here so the SDL fails fast: any + // `interconnect:` opt-in is nonsense without an actual GPU to attach + // an HCA to. A profile opting in with gpu.units == 0 would otherwise + // be classified as interconnect-enabled by downstream validation passes // and the provider's reservation logic, then rejected much later (or, - // worse, treated as a misconfiguration). Reject up front. - if res.Units == 0 { - if gpuAttributesHaveInterconnect(res.Attributes) { - return fmt.Errorf("sdl: gpu.attributes.interconnect cannot be set when gpu.units == 0") - } - if res.InterconnectGroup != "" { - return fmt.Errorf("sdl: gpu.attributes.interconnect_group=%q cannot be set when gpu.units == 0", res.InterconnectGroup) - } + // worse, treated as a misconfiguration). Reject up front. Since the + // group key is now the sole opt-in signal, checking InterconnectGroup + // alone covers both implicit and explicit forms. + if res.Units == 0 && res.InterconnectGroup != "" { + return fmt.Errorf("sdl: gpu.attributes.interconnect cannot be set when gpu.units == 0 (group=%q)", res.InterconnectGroup) } *sdl = res @@ -139,7 +134,6 @@ func (sdl *v2GPUAttributes) UnmarshalYAML(node *yaml.Node) error { var res types.Attributes var vendor *gpuVendor - interconnectEnabled := false interconnectGroup := "" for i := 0; i < len(node.Content); i += 2 { @@ -149,24 +143,37 @@ func (sdl *v2GPUAttributes) UnmarshalYAML(node *yaml.Node) error { return err } case "interconnect": - // gpu.attributes.interconnect: bool (default false). When - // true, emit an on-chain GPU attribute so providers - // advertising GPU-interconnect-capable hardware can be - // matched. Fabric (IB vs RoCE) is hidden from the SDL — - // provider picks whichever it has. - var ic bool - if err := node.Content[i+1].Decode(&ic); err != nil { - return fmt.Errorf("sdl: invalid value for gpu.attributes.interconnect: %w", err) - } - interconnectEnabled = ic - case "interconnect_group": - // gpu.attributes.interconnect_group: string (peer group - // name). Emitted as an on-chain GPU attribute alongside - // `interconnect=true` so the provider's bid engine can - // track per-group node claims. Also lifted to - // v2ResourceGPU.InterconnectGroup for the manifest builder. - if err := node.Content[i+1].Decode(&interconnectGroup); err != nil { - return fmt.Errorf("sdl: invalid value for gpu.attributes.interconnect_group: %w", err) + // gpu.attributes.interconnect accepts two forms: + // - empty sequence `[]` → implicit group, named `auto` + // - mapping `{group: }` → explicit named group + // Bare boolean and other shapes are rejected. The group + // string (whether the literal "auto" sentinel or the + // tenant-chosen name) becomes the on-chain + // `interconnect/group` attribute value, which is the sole + // opt-in signal — no separate "interconnect=true" marker. + val := node.Content[i+1] + switch val.Kind { + case yaml.SequenceNode: + if len(val.Content) != 0 { + return fmt.Errorf("sdl: gpu.attributes.interconnect: only the empty sequence form `[]` is accepted; use `{group: }` for explicit groups") + } + interconnectGroup = InterconnectGroupAuto + case yaml.MappingNode: + var m struct { + Group string `yaml:"group"` + } + if err := val.Decode(&m); err != nil { + return fmt.Errorf("sdl: invalid value for gpu.attributes.interconnect: %w", err) + } + if m.Group == "" { + return fmt.Errorf("sdl: gpu.attributes.interconnect: `group` is required when using the mapping form") + } + if m.Group == InterconnectGroupAuto { + return fmt.Errorf("sdl: gpu.attributes.interconnect.group: %q is a reserved name (parser auto-assigns it to `interconnect: []` resources); pick a different name", InterconnectGroupAuto) + } + interconnectGroup = m.Group + default: + return fmt.Errorf("sdl: gpu.attributes.interconnect: expected `[]` or `{group: }`; bare scalar (including `true`/`false`) is no longer accepted") } default: return fmt.Errorf("sdl: unsupported attribute (%s) for GPU resource", node.Content[i].Value) @@ -193,19 +200,12 @@ func (sdl *v2GPUAttributes) UnmarshalYAML(node *yaml.Node) error { }) } - if interconnectEnabled { - res = append(res, types.Attribute{ - Key: GPUAttributeInterconnect, - Value: "true", - }) - } - - // Emit interconnect_group directly as an on-chain GPU attribute. The - // provider's reservation Adjust step reads this to enforce per-group - // node separation; the parent v2ResourceGPU.UnmarshalYAML also lifts - // the value into v2ResourceGPU.InterconnectGroup so the manifest - // builder can route it to Service.InterconnectGroup for the off-chain - // workload builder. + // Emit `interconnect/group = ` as the sole opt-in signal — no + // separate boolean marker. The provider's bid engine reads this key + // during reservation Adjust to enforce per-group node separation; the + // parent v2ResourceGPU.UnmarshalYAML lifts the value into + // v2ResourceGPU.InterconnectGroup so the manifest builder can route it + // to Service.InterconnectGroup for the off-chain workload builder. if interconnectGroup != "" { res = append(res, types.Attribute{ Key: GPUAttributeInterconnectGroup, diff --git a/go/sdl/interconnect_gpu_test.go b/go/sdl/interconnect_gpu_test.go index d40dfb50..6b9d35b3 100644 --- a/go/sdl/interconnect_gpu_test.go +++ b/go/sdl/interconnect_gpu_test.go @@ -7,74 +7,38 @@ import ( "gopkg.in/yaml.v3" ) -// CS-2: gpu.attributes.interconnect: true flows to on-chain Resources.GPU.attributes -// as a free-form key=value pair, while interconnect: false (or unset) is absent. -func TestV2ResourceGPU_InterconnectFlag(t *testing.T) { - tests := []struct { - name string - yaml string - expectInterconnectAttr bool - expectGroup string - }{ - { - name: "interconnect true emits attribute", - yaml: `units: 1 -attributes: - vendor: - nvidia: - - model: a100 - interconnect: true`, - expectInterconnectAttr: true, - expectGroup: "", - }, - { - name: "interconnect false does not emit attribute", - yaml: `units: 1 +// AKT-492: `gpu.attributes.interconnect: []` parses as an implicit group +// named `auto`, surfaced on Resources.GPU.Attributes and lifted to the +// off-chain v2ResourceGPU.InterconnectGroup field. No separate +// `interconnect=true` marker is emitted — the group key alone is the +// opt-in signal. +func TestV2ResourceGPU_InterconnectImplicitAuto(t *testing.T) { + yamlSrc := `units: 1 attributes: vendor: nvidia: - model: a100 - interconnect: false`, - expectInterconnectAttr: false, - expectGroup: "", - }, - { - name: "no interconnect key behaves like interconnect false", - yaml: `units: 1 -attributes: - vendor: - nvidia: - - model: a100`, - expectInterconnectAttr: false, - expectGroup: "", - }, - } + interconnect: []` - for _, tc := range tests { - t.Run(tc.name, func(t *testing.T) { - var gpu v2ResourceGPU - require.NoError(t, yaml.Unmarshal([]byte(tc.yaml), &gpu)) - - hasInterconnect := false - for _, a := range gpu.Attributes { - if a.Key == GPUAttributeInterconnect && a.Value == "true" { - hasInterconnect = true - } - } - require.Equal(t, tc.expectInterconnectAttr, hasInterconnect, - "unexpected presence of on-chain interconnect=true attribute") - require.Equal(t, tc.expectGroup, gpu.InterconnectGroup) - }) + var gpu v2ResourceGPU + require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) + + require.Equal(t, InterconnectGroupAuto, gpu.InterconnectGroup, + "implicit `interconnect: []` must lift to the literal `auto` group name") + + keys := map[string]string{} + for _, a := range gpu.Attributes { + keys[a.Key] = a.Value } + require.Equal(t, "auto", keys[GPUAttributeInterconnectGroup], + "on-chain interconnect/group must be the literal `auto`") } -// AKT-443: interconnect_group flows end-to-end. It appears in the on-chain GPU -// attribute slice (so the provider's bid engine can enforce per-group -// node separation during reservation) AND is lifted onto -// v2ResourceGPU.InterconnectGroup for the manifest builder to route into -// Service.InterconnectGroup (so the workload builder can label pods for -// anti-affinity). Both consumers see the same value. -func TestV2ResourceGPU_InterconnectGroupOnChainAndOffChain(t *testing.T) { +// AKT-492: `gpu.attributes.interconnect: { group: pair0 }` parses as an +// explicit named group. The same string appears in the on-chain attribute +// slice (under the new `interconnect/group` key) and the off-chain +// v2ResourceGPU.InterconnectGroup field. +func TestV2ResourceGPU_InterconnectExplicitGroup(t *testing.T) { yamlSrc := `units: 8 attributes: vendor: @@ -82,36 +46,32 @@ attributes: - model: a100 ram: 80Gi interface: sxm - interconnect: true - interconnect_group: pair1` + interconnect: + group: pair1` var gpu v2ResourceGPU require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) - // Off-chain: dedicated field for the manifest builder. require.Equal(t, "pair1", gpu.InterconnectGroup, - "v2ResourceGPU.InterconnectGroup must hold the interconnect_group value") + "v2ResourceGPU.InterconnectGroup must hold the explicit group value") - // On-chain: present in the GPU attribute slice alongside interconnect=true. keys := map[string]string{} for _, a := range gpu.Attributes { keys[a.Key] = a.Value } - require.Equal(t, "true", keys[GPUAttributeInterconnect]) require.Equal(t, "pair1", keys[GPUAttributeInterconnectGroup], - "interconnect_group must appear in on-chain GPU attributes for bid-engine group tracking") + "on-chain interconnect/group must carry the explicit name") } -// AKT-443 (continued): omitting interconnect_group leaves both the field empty -// and the on-chain attribute absent — non-interconnect-group services produce -// the same byte-for-byte serialization they did before this feature. -func TestV2ResourceGPU_InterconnectGroupOmitted(t *testing.T) { +// AKT-492: omitting `interconnect` leaves the off-chain field empty and +// the on-chain key absent — non-interconnect deployments serialize the +// same as before this feature. +func TestV2ResourceGPU_InterconnectOmitted(t *testing.T) { yamlSrc := `units: 8 attributes: vendor: nvidia: - - model: a100 - interconnect: true` + - model: a100` var gpu v2ResourceGPU require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) @@ -119,63 +79,130 @@ attributes: require.Empty(t, gpu.InterconnectGroup) for _, a := range gpu.Attributes { require.NotEqual(t, GPUAttributeInterconnectGroup, a.Key, - "interconnect_group must not appear when SDL omits it") + "interconnect/group must not appear when SDL omits it") } } -// CodeRabbit follow-up: a profile with gpu.units == 0 that declares -// interconnect: true or interconnect_group: is a misconfiguration — there is no -// HCA to allocate, so the interconnect flags are meaningless. The parser must -// reject this fail-fast rather than letting downstream validation passes -// silently classify the profile as interconnect-enabled. +// AKT-492: bare scalar `interconnect: true` is the retired rc4 shape. +// The parser must reject it with a clear message rather than silently +// downgrading to "no opt-in" — a tenant migrating from rc4 should see +// the failure immediately. +func TestV2ResourceGPU_InterconnectBareBoolRejected(t *testing.T) { + yamlSrc := `units: 1 +attributes: + vendor: + nvidia: + - model: a100 + interconnect: true` + + var gpu v2ResourceGPU + err := yaml.Unmarshal([]byte(yamlSrc), &gpu) + require.Error(t, err) + require.Contains(t, err.Error(), "expected `[]` or `{group: }`") +} + +// AKT-492: the reserved group name `auto` cannot be written explicitly +// under `{group: ...}`. Tenants who want the implicit form must use the +// empty-sequence shape. +func TestV2ResourceGPU_InterconnectAutoNameReserved(t *testing.T) { + yamlSrc := `units: 1 +attributes: + vendor: + nvidia: + - model: a100 + interconnect: + group: auto` + + var gpu v2ResourceGPU + err := yaml.Unmarshal([]byte(yamlSrc), &gpu) + require.Error(t, err) + require.Contains(t, err.Error(), "reserved name") +} + +// AKT-492: `{group: ...}` must carry a non-empty group name; the empty +// mapping form is ambiguous (did the tenant mean implicit? Did they +// forget the name?) so the parser rejects it. +func TestV2ResourceGPU_InterconnectEmptyMappingRejected(t *testing.T) { + yamlSrc := `units: 1 +attributes: + vendor: + nvidia: + - model: a100 + interconnect: {}` + + var gpu v2ResourceGPU + err := yaml.Unmarshal([]byte(yamlSrc), &gpu) + require.Error(t, err) + require.Contains(t, err.Error(), "`group` is required") +} + +// AKT-492: any interconnect opt-in with gpu.units == 0 is rejected at +// parse time (CS-5). Since the group is the sole opt-in signal, this +// single guard covers both implicit and explicit forms. func TestV2ResourceGPU_InterconnectZeroUnitsRejected(t *testing.T) { - t.Run("interconnect true with zero units", func(t *testing.T) { + t.Run("implicit form with zero units", func(t *testing.T) { yamlSrc := `units: 0 attributes: vendor: nvidia: - model: a100 - interconnect: true` + interconnect: []` var gpu v2ResourceGPU err := yaml.Unmarshal([]byte(yamlSrc), &gpu) require.Error(t, err) - require.Contains(t, err.Error(), "gpu.attributes.interconnect cannot be set when gpu.units == 0") + require.Contains(t, err.Error(), "gpu.units == 0") }) - t.Run("interconnect_group with zero units", func(t *testing.T) { + t.Run("explicit form with zero units", func(t *testing.T) { yamlSrc := `units: 0 attributes: vendor: nvidia: - model: a100 - interconnect_group: pair1` + interconnect: + group: pair1` var gpu v2ResourceGPU err := yaml.Unmarshal([]byte(yamlSrc), &gpu) require.Error(t, err) - require.Contains(t, err.Error(), "interconnect_group") require.Contains(t, err.Error(), "gpu.units == 0") }) t.Run("zero units without interconnect is fine", func(t *testing.T) { - // Verifies the new guards don't accidentally break the existing - // path where a profile has gpu.units == 0 and no attributes at all - // (the parser leaves it alone). yamlSrc := `units: 0` var gpu v2ResourceGPU require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) }) } +// AKT-492: the rc4 flat `interconnect_group:` key is no longer a +// top-level SDL key — the group lives under `interconnect.group` now. +// Writing the old shape should error out under the parser's strict-key +// behavior. +func TestV2ResourceGPU_LegacyInterconnectGroupKeyRejected(t *testing.T) { + yamlSrc := `units: 1 +attributes: + vendor: + nvidia: + - model: a100 + interconnect: [] + interconnect_group: pair1` + + var gpu v2ResourceGPU + err := yaml.Unmarshal([]byte(yamlSrc), &gpu) + require.Error(t, err) + require.Contains(t, err.Error(), "unsupported attribute") +} + // CS-2: an unsupported attribute key under gpu.attributes still errors, // confirming the parser's strict-key behavior is preserved alongside the -// new interconnect_group handling. +// new interconnect shape. func TestV2GPUAttributes_UnsupportedKeyRejected(t *testing.T) { yamlSrc := `units: 1 attributes: vendor: nvidia: - model: a100 - interconnect: true + interconnect: [] bogus: yes` var gpu v2ResourceGPU diff --git a/go/sdl/interconnect_validation_test.go b/go/sdl/interconnect_validation_test.go index f99cea1a..eaf62a51 100644 --- a/go/sdl/interconnect_validation_test.go +++ b/go/sdl/interconnect_validation_test.go @@ -7,10 +7,11 @@ import ( "github.com/stretchr/testify/require" ) -// CS-5: parser-level cross-field validations for interconnect. +// AKT-492: parser-level cross-field validations for interconnect. // // Each test builds a full SDL via Read() — the same entry point the // CLI/provider use — so we exercise the real parse + validate pipeline. +// See docs/sdl-interconnect-spec.md for the rules being enforced. const sdlInterconnectFixtureHeader = `--- version: "2.0" @@ -63,18 +64,19 @@ deployment: ` } +// Rule 1: any interconnect opt-in requires the placement to require +// capabilities/gpu-interconnect=true. Tested here with the implicit +// form; the explicit form goes through the same code path. func TestSDL_Interconnect_Rule1_InterconnectRequiresPlacementCapability(t *testing.T) { - // Profiles declare gpu.attributes.interconnect: true but placement does NOT - // require capabilities/gpu-interconnect=true — rule 1 must reject. body := sdlBody( ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - interconnect: true`, + interconnect: []`, ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - interconnect: true`, + interconnect: []`, ` capabilities/gpu: nvidia`, ) @@ -90,11 +92,11 @@ func TestSDL_Interconnect_Rule1_PassesWhenPlacementRequiresInterconnect(t *testi ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - interconnect: true`, + interconnect: []`, ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - interconnect: true`, + interconnect: []`, ` capabilities/gpu-interconnect: "true"`, ) @@ -102,65 +104,68 @@ func TestSDL_Interconnect_Rule1_PassesWhenPlacementRequiresInterconnect(t *testi require.NoError(t, err) } -func TestSDL_Interconnect_Rule2_InterconnectGroupRequiresInterconnectOnSameProfile(t *testing.T) { +// Rule 2: the reserved group name `auto` cannot be written explicitly +// under `{group: ...}`. The parser rejects this at the per-profile +// UnmarshalYAML level — verified here through the full Read() pipeline. +func TestSDL_Interconnect_Rule2_AutoReservedName(t *testing.T) { body := sdlBody( - // head: interconnect: true + interconnect_group set (OK) ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - interconnect: true - interconnect_group: pair1`, - // worker: interconnect_group set but interconnect is NOT true — rule 2 must reject. + interconnect: + group: auto`, ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - interconnect_group: pair1`, + interconnect: + group: auto`, ` capabilities/gpu-interconnect: "true"`, ) _, err := Read([]byte(body)) require.Error(t, err) require.True(t, - strings.Contains(err.Error(), "interconnect_group") && strings.Contains(err.Error(), "interconnect: true"), + strings.Contains(err.Error(), "reserved name"), "unexpected error: %v", err) } -func TestSDL_Interconnect_Rule3_NoMixingExplicitAndImplicitGroup(t *testing.T) { +// Rule 3: within one placement, no mixing of implicit (`interconnect: []`) +// and explicit (`interconnect: { group: ... }`) opt-in forms. +func TestSDL_Interconnect_Rule3_NoMixingImplicitAndExplicit(t *testing.T) { body := sdlBody( - // head: interconnect: true with no interconnect_group (implicit __default__). + // head uses implicit form ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - interconnect: true`, - // worker: interconnect: true with interconnect_group explicitly set. - // Rule 3: cannot mix; reject. + interconnect: []`, + // worker uses explicit form — same placement, must reject ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - interconnect: true - interconnect_group: pair1`, + interconnect: + group: pair0`, ` capabilities/gpu-interconnect: "true"`, ) _, err := Read([]byte(body)) require.Error(t, err) require.True(t, - strings.Contains(err.Error(), "mixes explicit and implicit interconnect_group"), + strings.Contains(err.Error(), "mixes implicit") && strings.Contains(err.Error(), "explicit"), "unexpected error: %v", err) } +// Rule 3 (positive): every service uses the implicit form — accepted, +// both profiles end up in the shared `auto` group. func TestSDL_Interconnect_Rule3_AllImplicitOK(t *testing.T) { - // Simple head/worker with no interconnect_group on either profile — the implicit - // default group is fine. body := sdlBody( ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - interconnect: true`, + interconnect: []`, ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - interconnect: true`, + interconnect: []`, ` capabilities/gpu-interconnect: "true"`, ) @@ -168,18 +173,42 @@ func TestSDL_Interconnect_Rule3_AllImplicitOK(t *testing.T) { require.NoError(t, err) } +// Rule 3 (positive): every service uses the explicit form, sharing one +// named group — accepted. func TestSDL_Interconnect_Rule3_AllExplicitOK(t *testing.T) { body := sdlBody( ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - interconnect: true - interconnect_group: pair1`, + interconnect: + group: pair1`, ` units: 1 attributes: vendor: { nvidia: [{ model: a100 }] } - interconnect: true - interconnect_group: pair1`, + interconnect: + group: pair1`, + ` capabilities/gpu-interconnect: "true"`, + ) + + _, err := Read([]byte(body)) + require.NoError(t, err) +} + +// Rule 3 (positive): two explicit groups in one placement is fine — +// the no-mixing rule blocks implicit-vs-explicit, not multiple disjoint +// explicit groups. +func TestSDL_Interconnect_Rule3_TwoDisjointExplicitGroupsOK(t *testing.T) { + body := sdlBody( + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + interconnect: + group: pair0`, + ` units: 1 + attributes: + vendor: { nvidia: [{ model: a100 }] } + interconnect: + group: pair1`, ` capabilities/gpu-interconnect: "true"`, ) diff --git a/go/sdl/sdl-input.schema.yaml b/go/sdl/sdl-input.schema.yaml index 637a2c1b..b0dd97e2 100644 --- a/go/sdl/sdl-input.schema.yaml +++ b/go/sdl/sdl-input.schema.yaml @@ -271,21 +271,28 @@ properties: interconnect: description: | Opt this resource into GPU interconnect. - When true, the bid engine matches against - providers advertising - capabilities/gpu-interconnect and the - workload builder requests one HCA per GPU - unit (1:1). Fabric (InfiniBand vs RoCE) is + Accepts two forms: + - `[]` (empty sequence) — implicit group, + the parser auto-names it `auto` within + the placement. All services that opt in + with `[]` under one placement land in + the same `auto` group. + - `{ group: }` — explicit named + group. The name `auto` is reserved. + The bare boolean `true` is no longer + accepted. Fabric (InfiniBand vs RoCE) is chosen by the provider, not the SDL. - type: boolean - interconnect_group: - description: | - Peer-group label for multi-service NCCL - groups. All services sharing the same value - form one anti-affinity group: the provider - schedules them on distinct nodes. Implies - interconnect: true. - type: string + oneOf: + - type: array + maxItems: 0 + - additionalProperties: false + properties: + group: + type: string + minLength: 1 + required: + - group + type: object type: object units: oneOf: diff --git a/go/sdl/v2.go b/go/sdl/v2.go index f13f692a..35321291 100644 --- a/go/sdl/v2.go +++ b/go/sdl/v2.go @@ -541,69 +541,40 @@ func (sdl *v2) validate() error { } // validateInterconnect enforces the parser-level cross-field invariants -// for GPU interconnect (CS-5 in the implementation spec): +// for GPU interconnect (see docs/sdl-interconnect-spec.md): // -// 1. Any compute profile with gpu.attributes.interconnect: true must be -// used by a deployment whose placement requirements include -// capabilities/gpu-interconnect=true. -// 2. Any compute profile with gpu.attributes.interconnect_group set must -// also have gpu.attributes.interconnect: true on the same profile (a -// peer group label without an HCA is a misconfiguration). -// 3. Within one deployment, if any profile sets interconnect_group, -// every profile with gpu.attributes.interconnect: true in that -// deployment must set interconnect_group. No -// implicit-default-plus-explicit mixing within one deployment. +// 1. Any opt-in (implicit `[]` or explicit `{group: }`) on a +// compute profile must be used by a deployment whose placement +// requirements include capabilities/gpu-interconnect=true. +// 2. The reserved name `auto` may not be written explicitly under +// `interconnect: { group: ... }`. (Enforced at parse time in +// v2GPUAttributes.UnmarshalYAML.) +// 3. Within one placement, no mixing of implicit (`interconnect: []`, +// resolved to the `auto` group) and explicit (named) opt-ins. +// 4. `gpu.units == 0` with any interconnect opt-in is rejected. +// (Enforced at parse time in v2ResourceGPU.UnmarshalYAML.) // -// The provider relies on these guarantees: rule 1 means an -// interconnect-required workload always reaches an interconnect-capable -// provider; rule 2 keeps peer-group labels meaningful; rule 3 keeps the -// per-group anti-affinity rule unambiguous. +// The provider relies on rule 1 to guarantee that an interconnect-required +// workload always reaches an interconnect-capable provider, and on rule 3 +// to keep the per-group anti-affinity rule unambiguous (every service in +// a placement shares one group label vocabulary). // // Free function (not a method on v2) so v2_1's validate() can call it // against the same profile + deployment shape — v2.1 inherits the full // GPU interconnect SDL grammar from v2 and must enforce the identical // rules. func validateInterconnect(profiles v2profiles, deployments v2Deployments) error { - // Per-profile rule 2: interconnect_group ⇒ interconnect=true. - // - // The gpu.Units > 0 guard is defense-in-depth: v2ResourceGPU.UnmarshalYAML - // already rejects interconnect / interconnect_group with gpu.units == 0 - // at parse time, but if that parser path is ever bypassed we'd otherwise - // classify a zero-GPU profile as interconnect-enabled here and propagate - // InterconnectGroup into downstream manifest builders. - for profileName, compute := range profiles.Compute { - if compute.Resources == nil || compute.Resources.GPU == nil { - continue - } - gpu := compute.Resources.GPU - if gpu.Units == 0 { - continue - } - if gpu.InterconnectGroup != "" && !gpuAttributesHaveInterconnect(gpu.Attributes) { - return fmt.Errorf( - "%w: compute profile %q sets gpu.attributes.interconnect_group=%q but does not set gpu.attributes.interconnect: true", - errSDLInvalid, - profileName, - gpu.InterconnectGroup, - ) - } - } - - // Rules 1 and 3 are scoped to one deployment block. SDL v2 only has one - // deployment block (sdl.Deployments) so we treat the whole map as a - // single deployment for the purposes of these rules. - // - // Walk every (service, placement) and remember per service-deployment: - // - which profile it points at, - // - whether that profile has interconnect=true, - // - whether that profile has interconnect_group set. + // The parser sets gpu.InterconnectGroup to: + // - "" if no opt-in + // - InterconnectGroupAuto ("auto") for `interconnect: []` + // - tenant-chosen name for `interconnect: { group: }` + // Rule 2 (reserved name `auto`) and rule 4 (gpu.units==0) are enforced + // at parse time. This function enforces rules 1 and 3. type profUsage struct { - profileName string - hasInterconnect bool - group string + profileName string + group string // "" if non-interconnect } type placementUsage struct { - // indexed by service name usages []profUsage } usagesByPlacement := map[string]*placementUsage{} @@ -621,12 +592,10 @@ func validateInterconnect(profiles v2profiles, deployments v2Deployments) error usage := profUsage{ profileName: svcdepl.Profile, } - // Same defense-in-depth as the rule-2 loop above: an - // interconnect attribute or interconnect_group on a zero-GPU - // profile would be parser-rejected upstream, but treat it as - // "not interconnect" here just in case the parser is bypassed. + // Defense-in-depth: zero-GPU profile with an interconnect + // attribute is rejected at parse time. Treat as + // non-interconnect here if the parser is bypassed. if gpu != nil && gpu.Units > 0 { - usage.hasInterconnect = gpuAttributesHaveInterconnect(gpu.Attributes) usage.group = gpu.InterconnectGroup } @@ -637,10 +606,10 @@ func validateInterconnect(profiles v2profiles, deployments v2Deployments) error } pu.usages = append(pu.usages, usage) - // Rule 1: per-placement, if this profile has interconnect=true, - // the placement's requirements must include - // capabilities/gpu-interconnect=true. - if usage.hasInterconnect { + // Rule 1: any opt-in (group set) under a placement + // requires capabilities/gpu-interconnect=true on the + // placement's attributes. + if usage.group != "" { infra, ok := profiles.Placement[placementName] if !ok { continue // covered by earlier validate() loop @@ -658,47 +627,39 @@ func validateInterconnect(profiles v2profiles, deployments v2Deployments) error } } - // Rule 3: within one deployment block (= one placementUsage), if any - // profile sets interconnect_group, every profile with interconnect=true - // must set interconnect_group too. The spec's "deployment" scope is - // one sdl.Deployments, so we apply this rule per placement (each - // placement is what a tenant sees as one bid target / one set of - // leased pods). + // Rule 3: within one placement, no mixing of implicit (`auto`) and + // explicit (named) interconnect opt-ins. Either all opt-ins under a + // placement are implicit, or all are explicitly named. for placementName, pu := range usagesByPlacement { - anyGrouped := false + var firstImplicit, firstExplicit string for _, u := range pu.usages { - if u.group != "" { - anyGrouped = true - break + switch { + case u.group == "": + // non-interconnect — ignore + case u.group == InterconnectGroupAuto: + if firstImplicit == "" { + firstImplicit = u.profileName + } + default: + if firstExplicit == "" { + firstExplicit = u.profileName + } } } - if !anyGrouped { - continue - } - for _, u := range pu.usages { - if u.hasInterconnect && u.group == "" { - return fmt.Errorf( - "%w: placement %q mixes explicit and implicit interconnect_group: profile %q has gpu.attributes.interconnect: true but no interconnect_group, while another profile under the same placement sets interconnect_group", - errSDLInvalid, - placementName, - u.profileName, - ) - } + if firstImplicit != "" && firstExplicit != "" { + return fmt.Errorf( + "%w: placement %q mixes implicit `interconnect: []` (profile %q) and explicit `interconnect: { group: ... }` (profile %q); use one form across the placement", + errSDLInvalid, + placementName, + firstImplicit, + firstExplicit, + ) } } return nil } -func gpuAttributesHaveInterconnect(attrs v2GPUAttributes) bool { - for _, a := range attrs { - if a.Key == GPUAttributeInterconnect && a.Value == valueTrue { - return true - } - } - return false -} - func placementRequiresInterconnect(attrs v2PlacementAttributes) bool { for _, a := range attrs { if a.Key == "capabilities/gpu-interconnect" && a.Value == valueTrue { diff --git a/go/sdl/v2_1.go b/go/sdl/v2_1.go index 8efb8439..5e0880cd 100644 --- a/go/sdl/v2_1.go +++ b/go/sdl/v2_1.go @@ -342,9 +342,9 @@ func (sdl *v2_1) validate() error { } // v2.1 inherits the full GPU interconnect SDL grammar from v2 - // (gpu.attributes.interconnect and gpu.attributes.interconnect_group - // propagate to the manifest), so the cross-field validation rules - // must also apply. Without this, a v2.1 SDL could bypass the + // (gpu.attributes.interconnect's `[]` and `{group: }` forms + // both propagate to the manifest), so the cross-field validation + // rules must also apply. Without this, a v2.1 SDL could bypass the // placement + grouping invariants v2 enforces. if err := validateInterconnect(sdl.Profiles, sdl.Deployments); err != nil { return err diff --git a/proto/provider/akash/inventory/v1/node.proto b/proto/provider/akash/inventory/v1/node.proto index 4fe34783..be504f54 100644 --- a/proto/provider/akash/inventory/v1/node.proto +++ b/proto/provider/akash/inventory/v1/node.proto @@ -28,22 +28,25 @@ message NodeCapabilities { // GPU interconnect fabric type. "infiniband" or "roce". Internal / // informational — the SDL surface is fabric-agnostic; tenants only - // declare `interconnect: true`. Derived from - // /sys/class/infiniband//ports/1/link_layer on the host node. + // declare `interconnect: []` or `interconnect: { group: }`. + // Derived from /sys/class/infiniband//ports/1/link_layer on the + // host node. string interconnect_fabric = 3 [ (gogoproto.customname) = "InterconnectFabric", (gogoproto.jsontag) = "interconnect_fabric,omitempty", (gogoproto.moretags) = "yaml:\"interconnect_fabric,omitempty\"" ]; - // NCCL IB HCA prefix - the common device-name prefix under - // /sys/class/infiniband (e.g. "mlx5"). Same key for IB and RoCE since - // NCCL uses the IB verbs API for both. Injected by the provider as - // NCCL_IB_HCA when scheduling GPU interconnect workloads. - string nccl_hca_prefix = 4 [ - (gogoproto.customname) = "NCCLHCAPrefix", - (gogoproto.jsontag) = "nccl_hca_prefix,omitempty", - (gogoproto.moretags) = "yaml:\"nccl_hca_prefix,omitempty\"" + // NCCL HCA device-name prefixes present on this node, one per distinct + // family (e.g. ["mlx5"], or ["mlx5","bnxt_re"] on a mixed-vendor host). + // Same key for IB and RoCE since NCCL uses the IB verbs API for both. + // Joined with commas and injected as NCCL_IB_HCA when scheduling GPU + // interconnect workloads — NCCL accepts comma-separated device prefixes + // natively. Discovered from /sys/class/infiniband/ on the host. + repeated string nccl_hca_prefixes = 4 [ + (gogoproto.customname) = "NCCLHCAPrefixes", + (gogoproto.jsontag) = "nccl_hca_prefixes,omitempty", + (gogoproto.moretags) = "yaml:\"nccl_hca_prefixes,omitempty\"" ]; } diff --git a/testdata/sdl/input/v2.0/gpu-interconnect-group/input.yaml b/testdata/sdl/input/v2.0/gpu-interconnect-group/input.yaml index adc90160..88859ebe 100644 --- a/testdata/sdl/input/v2.0/gpu-interconnect-group/input.yaml +++ b/testdata/sdl/input/v2.0/gpu-interconnect-group/input.yaml @@ -1,8 +1,8 @@ # yaml-language-server: $schema=../../../../go/sdl/sdl-input.schema.yaml --- # Multi-service GPU interconnect peer group fixture. inference-head and inference-worker -# share the same interconnect_group label ("pair0"), which: -# - emits an `interconnect_group=pair0` attribute into each service's on-chain +# share the same explicit interconnect group label ("pair0"), which: +# - emits an `interconnect/group=pair0` attribute into each service's on-chain # Resources.GPU.Attributes (consumed by the provider's bid-engine # group-aware Adjust, AKT-443) # - lifts to Service.GPU interconnectGroup on the off-chain manifest (consumed by @@ -41,8 +41,8 @@ profiles: gpu: units: 1 attributes: - interconnect: true - interconnect_group: pair0 + interconnect: + group: pair0 vendor: nvidia: - model: a100 @@ -59,8 +59,8 @@ profiles: gpu: units: 1 attributes: - interconnect: true - interconnect_group: pair0 + interconnect: + group: pair0 vendor: nvidia: - model: a100 diff --git a/testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/group-specs.json b/testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/group-specs.json index 48ce6a19..15b3f8f9 100644 --- a/testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/group-specs.json +++ b/testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/group-specs.json @@ -47,11 +47,7 @@ }, "attributes": [ { - "key": "interconnect", - "value": "true" - }, - { - "key": "interconnect_group", + "key": "interconnect/group", "value": "pair0" }, { @@ -99,11 +95,7 @@ }, "attributes": [ { - "key": "interconnect", - "value": "true" - }, - { - "key": "interconnect_group", + "key": "interconnect/group", "value": "pair0" }, { diff --git a/testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/manifest.json b/testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/manifest.json index 5692ce86..71a89db8 100644 --- a/testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/manifest.json +++ b/testdata/sdl/output-fixtures/v2.0/gpu-interconnect-group/manifest.json @@ -34,11 +34,7 @@ }, "attributes": [ { - "key": "interconnect", - "value": "true" - }, - { - "key": "interconnect_group", + "key": "interconnect/group", "value": "pair0" }, { @@ -112,11 +108,7 @@ }, "attributes": [ { - "key": "interconnect", - "value": "true" - }, - { - "key": "interconnect_group", + "key": "interconnect/group", "value": "pair0" }, { diff --git a/ts/src/generated/protos/akash/inventory/v1/node.ts b/ts/src/generated/protos/akash/inventory/v1/node.ts index 1bbf1f4c..bacfa238 100644 --- a/ts/src/generated/protos/akash/inventory/v1/node.ts +++ b/ts/src/generated/protos/akash/inventory/v1/node.ts @@ -31,12 +31,14 @@ export interface NodeCapabilities { */ interconnectFabric: string; /** - * NCCL IB HCA prefix - the common device-name prefix under - * /sys/class/infiniband (e.g. "mlx5"). Same key for IB and RoCE since - * NCCL uses the IB verbs API for both. Injected by the provider as - * NCCL_IB_HCA when scheduling GPU interconnect workloads. + * NCCL HCA device-name prefixes present on this node, one per distinct + * family (e.g. ["mlx5"], or ["mlx5","bnxt_re"] on a mixed-vendor host). + * Same key for IB and RoCE since NCCL uses the IB verbs API for both. + * Joined with commas and injected as NCCL_IB_HCA when scheduling GPU + * interconnect workloads — NCCL accepts comma-separated device prefixes + * natively. Discovered from /sys/class/infiniband/ on the host. */ - ncclHcaPrefix: string; + ncclHcaPrefixes: string[]; } /** Node reports node inventory details */ @@ -47,7 +49,7 @@ export interface Node { } function createBaseNodeCapabilities(): NodeCapabilities { - return { storageClasses: [], interconnectResourceName: "", interconnectFabric: "", ncclHcaPrefix: "" }; + return { storageClasses: [], interconnectResourceName: "", interconnectFabric: "", ncclHcaPrefixes: [] }; } export const NodeCapabilities: MessageFns = { @@ -63,8 +65,8 @@ export const NodeCapabilities: MessageFns globalThis.String(e)) + : [], }; }, @@ -141,8 +145,8 @@ export const NodeCapabilities: MessageFns e) || []; message.interconnectResourceName = object.interconnectResourceName ?? ""; message.interconnectFabric = object.interconnectFabric ?? ""; - message.ncclHcaPrefix = object.ncclHcaPrefix ?? ""; + message.ncclHcaPrefixes = object.ncclHcaPrefixes?.map((e) => e) || []; return message; }, }; diff --git a/ts/src/sdl/manifest/generateManifest.ts b/ts/src/sdl/manifest/generateManifest.ts index c9f3acd5..f33d7263 100644 --- a/ts/src/sdl/manifest/generateManifest.ts +++ b/ts/src/sdl/manifest/generateManifest.ts @@ -28,6 +28,7 @@ import { parseStorageBytes, type SDLCompute, type SDLService, + resolveInterconnectGroup, transformGpuAttributes, } from "./manifestUtils.ts"; import { minWindowToDuration } from "./reclamationDuration.ts"; @@ -248,12 +249,14 @@ function buildManifestService( const params = buildParams(service); - // interconnect_group lives under gpu.attributes in the SDL but propagates to the - // off-chain manifest's Service.interconnectGroup field so the provider's workload - // builder can label pods for per-group anti-affinity. The same value is - // also emitted into Resources.GPU.Attributes by transformGpuAttributes; + // The interconnect group lives under gpu.attributes.interconnect (either + // `[]` for the implicit `auto` group or `{ group: }` for an + // explicit name) and propagates to the off-chain manifest's + // Service.interconnectGroup field so the provider's workload builder + // can label pods for per-group anti-affinity. The same value is also + // emitted into Resources.GPU.Attributes by transformGpuAttributes — // both consumers (bid engine vs. workload builder) see it. - const interconnectGroup = compute.resources.gpu?.attributes?.interconnect_group ?? ""; + const interconnectGroup = resolveInterconnectGroup(compute.resources.gpu?.attributes?.interconnect); return Service.fromPartial({ name, diff --git a/ts/src/sdl/manifest/manifestUtils.ts b/ts/src/sdl/manifest/manifestUtils.ts index 357912ca..bf246588 100644 --- a/ts/src/sdl/manifest/manifestUtils.ts +++ b/ts/src/sdl/manifest/manifestUtils.ts @@ -53,6 +53,30 @@ export function isIngress(proto: string, global: boolean, externalPort: number, return global && proto === "TCP" && effectivePort === 80; } +// INTERCONNECT_GROUP_AUTO is the reserved name the SDL parser assigns to +// every `interconnect: []` opt-in within one placement. Tenants cannot +// write it explicitly under `interconnect: { group: ... }` — mirrors +// `InterconnectGroupAuto` in go/sdl/gpu.go. +export const INTERCONNECT_GROUP_AUTO = "auto"; + +// resolveInterconnectGroup returns the group string the parser derives +// from gpu.attributes.interconnect: +// - empty sequence `[]` → INTERCONNECT_GROUP_AUTO ("auto") +// - mapping `{ group: }` → +// - anything else / absent → "" (non-interconnect) +// Both the on-chain attribute emitter and the off-chain manifest builder +// route through this helper so they agree on the resolved value. +export function resolveInterconnectGroup(interconnect: SDLGpuAttributes["interconnect"]): string { + if (Array.isArray(interconnect)) { + return interconnect.length === 0 ? INTERCONNECT_GROUP_AUTO : ""; + } + if (interconnect && typeof interconnect === "object" && "group" in interconnect) { + const g = (interconnect as { group?: unknown }).group; + return typeof g === "string" ? g : ""; + } + return ""; +} + export function transformGpuAttributes(attributes: SDLGpuAttributes): Attribute[] { const result: Attribute[] = []; @@ -75,15 +99,14 @@ export function transformGpuAttributes(attributes: SDLGpuAttributes): Attribute[ }); } - // interconnect + interconnect_group flow into on-chain Resources.GPU.Attributes so the - // provider's bid engine can match capability and enforce per-group node - // separation. Keep parity with the Go SDL parser in go/sdl/gpu.go — same - // key names, same value encoding ("true" for the boolean opt-in). - if (attributes.interconnect === true) { - result.push({ key: "interconnect", value: "true" }); - } - if (attributes.interconnect_group && attributes.interconnect_group.length > 0) { - result.push({ key: "interconnect_group", value: attributes.interconnect_group }); + // interconnect emits a single on-chain attribute `interconnect/group` — + // the group is the entire opt-in signal. Keep parity with the Go parser + // in go/sdl/gpu.go: empty sequence `[]` resolves to the reserved literal + // `auto`, the explicit mapping form `{ group: }` carries the + // tenant-chosen name. See docs/sdl-interconnect-spec.md. + const group = resolveInterconnectGroup(attributes.interconnect); + if (group !== "") { + result.push({ key: "interconnect/group", value: group }); } // Go SDL parser canonicalizes the slice via sort.Sort(res) before diff --git a/ts/src/sdl/validateSDL/validateSDL.spec.ts b/ts/src/sdl/validateSDL/validateSDL.spec.ts index 007ba2b9..af04ce2b 100644 --- a/ts/src/sdl/validateSDL/validateSDL.spec.ts +++ b/ts/src/sdl/validateSDL/validateSDL.spec.ts @@ -2226,24 +2226,25 @@ describe(validateSDL.name, () => { }); }); - // Mirrors the Go SDL parser's interconnect cross-field rules (go/sdl/v2.go - // validateInterconnect + go/sdl/gpu.go parse-time guards). Without these TS - // checks, tenants using @akashnetwork/chain-sdk could broadcast SDLs - // that the Go CLI would have rejected outright. + // Mirrors the Go SDL parser's interconnect cross-field rules + // (go/sdl/v2.go validateInterconnect + go/sdl/gpu.go parse-time + // guards). Without these TS checks, tenants using + // @akashnetwork/chain-sdk could broadcast SDLs that the Go CLI would + // have rejected outright. See docs/sdl-interconnect-spec.md. describe("GPU interconnect validation", () => { + type InterconnectShape = unknown[] | { group: string }; + function interconnectSetup(opts: { - interconnect?: boolean; - interconnectGroup?: string; + interconnect?: InterconnectShape; units?: number; placementRequiresInterconnect?: boolean; } = {}) { - const { interconnect, interconnectGroup, units = 1, placementRequiresInterconnect = true } = opts; + const { interconnect, units = 1, placementRequiresInterconnect = true } = opts; const placementAttrs: Record = {}; if (placementRequiresInterconnect) placementAttrs["capabilities/gpu-interconnect"] = "true"; const gpuAttrs: Record = { vendor: { nvidia: [{ model: "a100" }] } }; if (interconnect !== undefined) gpuAttrs.interconnect = interconnect; - if (interconnectGroup !== undefined) gpuAttrs.interconnect_group = interconnectGroup; return setup({ profiles: { @@ -2266,46 +2267,61 @@ describe(validateSDL.name, () => { }); } - it("accepts a valid interconnect profile under an interconnect-capable placement", () => { - const { validate } = interconnectSetup({ interconnect: true }); + it("accepts implicit `interconnect: []` under an interconnect-capable placement", () => { + const { validate } = interconnectSetup({ interconnect: [] }); + expect(validate()).toBeUndefined(); + }); + + it("accepts explicit `interconnect: { group: }` under an interconnect-capable placement", () => { + const { validate } = interconnectSetup({ interconnect: { group: "pair0" } }); expect(validate()).toBeUndefined(); }); - // units==0 + interconnect / interconnect_group is rejected by the schema-level + // units==0 + any interconnect opt-in is rejected by the schema-level // gpuAttributesRequireUnitsGt0 rule (any attribute present requires // units > 0), so the semantic validator never runs for that case. // Pinning the schema's behavior here so a future schema relaxation // doesn't silently open a hole. - it("rejects gpu.attributes.interconnect=true when gpu.units is 0 (schema-level)", () => { - const { validate } = interconnectSetup({ interconnect: true, units: 0 }); + it("rejects implicit `interconnect: []` when gpu.units is 0 (schema-level)", () => { + const { validate } = interconnectSetup({ interconnect: [], units: 0 }); expect(validate()).toContainEqual(expect.objectContaining({ schemaPath: expect.stringContaining("gpuAttributesRequireUnitsGt0"), })); }); - it("rejects gpu.attributes.interconnect_group when gpu.units is 0 (schema-level)", () => { - const { validate } = interconnectSetup({ interconnectGroup: "pair0", units: 0 }); + it("rejects explicit `interconnect: { group }` when gpu.units is 0 (schema-level)", () => { + const { validate } = interconnectSetup({ interconnect: { group: "pair0" }, units: 0 }); expect(validate()).toContainEqual(expect.objectContaining({ schemaPath: expect.stringContaining("gpuAttributesRequireUnitsGt0"), })); }); - it("rejects interconnect_group set without interconnect=true", () => { - const { validate } = interconnectSetup({ interconnectGroup: "pair0" }); + it("rejects bare boolean `interconnect: true` (retired rc4 shape) at schema layer", () => { + const { validate } = interconnectSetup({ interconnect: true as unknown as InterconnectShape }); + // The schema's `oneOf` doesn't match a bare boolean, so the + // semantic validator never runs. + expect(validate()).toContainEqual(expect.objectContaining({ + instancePath: expect.stringContaining("interconnect"), + })); + }); + + it("rejects the reserved name `auto` written explicitly", () => { + const { validate } = interconnectSetup({ interconnect: { group: "auto" } }); expect(validate()).toContainEqual(expect.objectContaining({ - message: expect.stringContaining(`sets gpu.attributes.interconnect_group="pair0" but does not set gpu.attributes.interconnect: true`), + message: expect.stringContaining(`"auto"`), })); }); - it("rejects interconnect=true under a placement that does not require capabilities/gpu-interconnect=true", () => { - const { validate } = interconnectSetup({ interconnect: true, placementRequiresInterconnect: false }); + it("rejects an interconnect opt-in under a placement that does not require capabilities/gpu-interconnect=true", () => { + const { validate } = interconnectSetup({ interconnect: [], placementRequiresInterconnect: false }); expect(validate()).toContainEqual(expect.objectContaining({ message: expect.stringContaining(`but placement does not require capabilities/gpu-interconnect=true`), })); }); - it("rejects implicit + explicit interconnect_group mixing within one placement", () => { - // Two profiles, both interconnect, but only one sets interconnect_group. + it("rejects mixing implicit and explicit forms within one placement (rule 3)", () => { + // Two profiles in one placement: one uses `[]`, the other uses + // `{ group: ... }`. Rule 3 must reject. const { validate } = setup({ services: { worker: { @@ -2323,8 +2339,7 @@ describe(validateSDL.name, () => { units: 1, attributes: { vendor: { nvidia: [{ model: "a100" }] }, - interconnect: true, - interconnect_group: "pair0", + interconnect: { group: "pair0" }, }, }, }, @@ -2338,8 +2353,7 @@ describe(validateSDL.name, () => { units: 1, attributes: { vendor: { nvidia: [{ model: "a100" }] }, - interconnect: true, - // interconnect_group intentionally omitted -> rule 3 violation + interconnect: [], }, }, }, @@ -2362,7 +2376,7 @@ describe(validateSDL.name, () => { }); expect(validate()).toContainEqual(expect.objectContaining({ - message: expect.stringContaining("mixes explicit and implicit interconnect_group"), + message: expect.stringContaining("mixes implicit"), })); }); }); diff --git a/ts/src/sdl/validateSDL/validateSDL.ts b/ts/src/sdl/validateSDL/validateSDL.ts index 983fb1c9..43a323c6 100644 --- a/ts/src/sdl/validateSDL/validateSDL.ts +++ b/ts/src/sdl/validateSDL/validateSDL.ts @@ -1,5 +1,6 @@ import type { ErrorMessages, ValidationError, ValidationFunction } from "../../utils/jsonSchemaValidation.ts"; import { dirname, getErrorLocation, humanizeErrors } from "../../utils/jsonSchemaValidation.ts"; +import { INTERCONNECT_GROUP_AUTO, resolveInterconnectGroup } from "../manifest/manifestUtils.ts"; import { castArray, stringToBoolean } from "../utils.ts"; import { schema as validationSDLSchema, type SDLInput, validate as validateSDLInput } from "./validateSDLInput.ts"; @@ -267,50 +268,55 @@ class SDLValidator { // YAML decoding has no schema layer above it. } - // Mirror the Go-side validateInterconnect in go/sdl/v2.go. Three cross-field - // rules the chain SDK enforces; TS must enforce them too so tenants - // using @akashnetwork/chain-sdk get the same fail-fast feedback as - // the Go CLI users (the chain doesn't validate SDL semantics). + // Mirror the Go-side validateInterconnect in go/sdl/v2.go. The TS + // SDK enforces the same cross-field rules so tenants using + // @akashnetwork/chain-sdk get the same fail-fast feedback as Go CLI + // users (the chain doesn't validate SDL semantics). See + // docs/sdl-interconnect-spec.md for the spec. // - // 1. A profile with gpu.attributes.interconnect=true must be used by a - // deployment whose placement requirements include - // capabilities/gpu-interconnect=true. - // 2. A profile with gpu.attributes.interconnect_group set must also have - // gpu.attributes.interconnect=true on the same profile. - // 3. Within one deployment (placement), if any profile sets - // interconnect_group, every interconnect=true profile under that placement must - // also set interconnect_group — no implicit-default-plus-explicit mixing. + // 1. Any opt-in (implicit `[]` or explicit `{ group: }`) + // requires the placement to require + // capabilities/gpu-interconnect="true". + // 2. The reserved name `auto` may not be written explicitly under + // `interconnect: { group: ... }`. (Rule 2 is enforced at the + // schema level via the JSON-schema oneOf, but checked here too + // for a friendlier error message.) + // 3. Within one placement, no mixing of implicit and explicit + // opt-in forms — either every service uses `[]` or every service + // uses a `{ group: ... }`. + // 4. (Schema-level) `gpu.units == 0` with any interconnect opt-in + // is rejected. #validateInterconnect() { const profiles = this.#sdl.profiles?.compute; const placements = this.#sdl.profiles?.placement; if (!profiles) return; - // Rule 2: interconnect_group ⇒ interconnect=true. Per-profile, units > 0 guard so - // the zero-GPU case is left to #validateGPU's error above (avoids - // duplicate complaints on the same profile). + // Rule 2: tenants cannot write `group: auto` under the explicit + // mapping form. The JSON schema's `oneOf` already rules this out at + // the structural level when the value is bare, but we surface a + // friendly error here. for (const [profileName, compute] of Object.entries(profiles)) { const gpu = compute?.resources?.gpu; if (!gpu || gpu.units === 0 || gpu.units === undefined) continue; - - if (gpu.attributes?.interconnect_group && gpu.attributes.interconnect !== true) { + const ic = gpu.attributes?.interconnect; + if (ic && typeof ic === "object" && !Array.isArray(ic) && (ic as { group?: unknown }).group === INTERCONNECT_GROUP_AUTO) { this.#errors.push({ - message: `Compute profile "${profileName}" sets gpu.attributes.interconnect_group="${gpu.attributes.interconnect_group}" but does not set gpu.attributes.interconnect: true.`, - instancePath: `/profiles/compute/${profileName}/resources/gpu/attributes.interconnect`, + message: `Compute profile "${profileName}" uses gpu.attributes.interconnect.group="${INTERCONNECT_GROUP_AUTO}", which is reserved (the parser auto-assigns it to "interconnect: []" resources). Pick a different group name.`, + instancePath: `/profiles/compute/${profileName}/resources/gpu/attributes/interconnect/group`, schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect", - keyword: "required", - params: { missingProperty: "interconnect" }, + keyword: "const", + params: { allowedValue: `non-${INTERCONNECT_GROUP_AUTO}` }, }); } } // Rules 1 + 3 are per-placement. Walk every (service, placement) and - // capture which profile each service uses, whether that profile has - // interconnect=true, and whether it sets interconnect_group. + // capture which profile each service uses and whether it opted into + // interconnect (implicit, explicit, or not at all). interface profileUsage { profileName: string; serviceName: string; - hasInterconnect: boolean; - group: string; + group: string; // "" if non-interconnect, INTERCONNECT_GROUP_AUTO for implicit, else explicit name } const usagesByPlacement = new Map(); @@ -322,24 +328,20 @@ class SDLValidator { const usage: profileUsage = { profileName: svcdepl.profile, serviceName, - hasInterconnect: false, group: "", }; if (gpu && gpu.units !== 0 && gpu.units !== undefined) { - usage.hasInterconnect = gpu.attributes?.interconnect === true; - usage.group = gpu.attributes?.interconnect_group ?? ""; + usage.group = resolveInterconnectGroup(gpu.attributes?.interconnect); } const bucket = usagesByPlacement.get(placementName) ?? []; bucket.push(usage); usagesByPlacement.set(placementName, bucket); - // Rule 1: a profile with interconnect=true must be deployed under a + // Rule 1: any interconnect opt-in must be deployed under a // placement whose attributes require capabilities/gpu-interconnect=true. - if (usage.hasInterconnect) { + if (usage.group !== "") { const placement = placements?.[placementName]; - // The placement attributes shape is `Record` - // in the schema; we look for the literal key/value pair. const attrs = (placement?.attributes ?? {}) as Record; const capability = attrs["capabilities/gpu-interconnect"]; const requiresInterconnect = capability === "true" || capability === true; @@ -356,22 +358,29 @@ class SDLValidator { } } - // Rule 3: per placement, if any profile sets interconnect_group then every - // interconnect=true profile under that placement must also set interconnect_group. + // Rule 3: within one placement, no mixing of implicit (`auto`) and + // explicit (named) opt-ins. Either form alone is fine; combining + // them is the failure mode this rule catches. for (const [placementName, usages] of usagesByPlacement.entries()) { - const anyGrouped = usages.some((u) => u.group !== ""); - if (!anyGrouped) continue; + let firstImplicit: string | undefined; + let firstExplicit: string | undefined; for (const u of usages) { - if (u.hasInterconnect && u.group === "") { - this.#errors.push({ - message: `Placement "${placementName}" mixes explicit and implicit interconnect_group: profile "${u.profileName}" has gpu.attributes.interconnect: true but no interconnect_group, while another profile under the same placement sets interconnect_group.`, - instancePath: `/profiles/compute/${u.profileName}/resources/gpu/attributes.interconnect_group`, - schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect_group", - keyword: "required", - params: { missingProperty: "interconnect_group" }, - }); + if (u.group === "") continue; + if (u.group === INTERCONNECT_GROUP_AUTO) { + firstImplicit ??= u.profileName; + } else { + firstExplicit ??= u.profileName; } } + if (firstImplicit !== undefined && firstExplicit !== undefined) { + this.#errors.push({ + message: `Placement "${placementName}" mixes implicit "interconnect: []" (profile "${firstImplicit}") and explicit "interconnect: { group: ... }" (profile "${firstExplicit}"); use one form across the placement.`, + instancePath: `/profiles/compute/${firstImplicit}/resources/gpu/attributes/interconnect`, + schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect", + keyword: "oneOf", + params: { passingSchemas: [] }, + }); + } } } diff --git a/ts/src/sdl/validateSDL/validateSDLInput.ts b/ts/src/sdl/validateSDL/validateSDLInput.ts index eabadc63..80987b98 100644 --- a/ts/src/sdl/validateSDL/validateSDLInput.ts +++ b/ts/src/sdl/validateSDL/validateSDLInput.ts @@ -89,24 +89,24 @@ export interface SDLInput { }; /** * Opt this resource into GPU interconnect. - * When true, the bid engine matches against - * providers advertising - * capabilities/gpu-interconnect and the - * workload builder requests one HCA per GPU - * unit (1:1). Fabric (InfiniBand vs RoCE) is + * Accepts two forms: + * - `[]` (empty sequence) — implicit group, + * the parser auto-names it `auto` within + * the placement. All services that opt in + * with `[]` under one placement land in + * the same `auto` group. + * - `{ group: }` — explicit named + * group. The name `auto` is reserved. + * The bare boolean `true` is no longer + * accepted. Fabric (InfiniBand vs RoCE) is * chosen by the provider, not the SDL. * */ - interconnect?: boolean; - /** - * Peer-group label for multi-service NCCL - * groups. All services sharing the same value - * form one anti-affinity group: the provider - * schedules them on distinct nodes. Implies - * interconnect: true. - * - */ - interconnect_group?: string; + interconnect?: + | unknown[] + | { + group: string; + }; }; units?: string | number; }; @@ -259,7 +259,7 @@ var require_ucs2length = __commonJS({ // var validate = validate27; var stdin_default = validate27; -var schema28 = { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "description": "Schema for Akash Stack Definition Language (SDL) YAML input files.\n\nNote: This schema validates structure only. Semantic validations (cross-references,\nunused endpoints, profile references, etc.) are performed at runtime by the Go parser.\nSee README.md for details.\n", "definitions": { "stringArrayOrNull": { "description": "String array or null value (used for command args and env vars)", "oneOf": [{ "items": { "type": "string" }, "type": "array" }, { "type": "null" }] }, "portNumber": { "description": "Valid TCP/UDP port number (1-65535)", "type": "integer", "minimum": 1, "maximum": 65535 }, "httpErrorCode": { "description": "HTTP error codes for proxy retry logic", "enum": ["error", "timeout", "500", "502", "503", "504", "403", "404", "429", "off"], "type": "string" }, "priceCoin": { "description": "Price definition with amount and denomination", "additionalProperties": false, "properties": { "amount": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Positive number as string" }, { "type": "number", "minimum": 0, "description": "Positive number" }] }, "denom": { "enum": ["uakt", "uact"], "type": "string" } }, "required": ["denom", "amount"], "type": "object" }, "storageRamClassMustNotBePersistent": { "description": "RAM storage class must not have persistent=true", "not": { "properties": { "class": { "const": "ram" }, "persistent": { "oneOf": [{ "const": true }, { "const": "true" }] } }, "required": ["class", "persistent"] } }, "storageNonRamClassRequiresPersistent": { "description": "Non-RAM storage classes (beta1, beta2, beta3, default) require persistent=true", "if": { "properties": { "class": { "enum": ["beta1", "beta2", "beta3", "default"] } }, "required": ["class"] }, "then": { "properties": { "persistent": { "oneOf": [{ "const": true }, { "const": "true" }] } }, "required": ["persistent"] } }, "storageAttributesValidation": { "description": "Storage attributes validation:\n1. RAM class must not be persistent\n2. Non-RAM classes (beta1, beta2, beta3, default) require persistent=true\n", "additionalProperties": false, "properties": { "class": { "type": "string" }, "persistent": { "oneOf": [{ "type": "boolean" }, { "type": "string" }] } }, "allOf": [{ "$ref": "#/definitions/storageRamClassMustNotBePersistent" }, { "$ref": "#/definitions/storageNonRamClassRequiresPersistent" }], "required": ["class", "persistent"], "type": "object" }, "storageVolume": { "description": "Storage volume definition with size and optional attributes", "additionalProperties": false, "properties": { "attributes": { "$ref": "#/definitions/storageAttributesValidation" }, "name": { "type": "string" }, "size": { "type": "string" } }, "required": ["size"], "type": "object" }, "absolutePath": { "description": "Absolute filesystem path starting with /", "type": "string", "minLength": 1, "pattern": "^/" }, "gpuUnitsGt0RequiresAttributes": { "description": "GPU units > 0 requires attributes to be present", "if": { "properties": { "units": { "oneOf": [{ "type": "number", "exclusiveMinimum": 0 }, { "type": "string", "not": { "pattern": "^0+(\\.0+)?$" } }] } }, "required": ["units"] }, "then": { "required": ["attributes"] } }, "gpuAttributesRequireUnitsGt0": { "description": "GPU attributes present requires units > 0", "if": { "required": ["attributes"] }, "then": { "properties": { "units": { "oneOf": [{ "type": "number", "exclusiveMinimum": 0 }, { "type": "string", "not": { "pattern": "^0+(\\.0+)?$" } }] } }, "required": ["units"] } }, "exposeToWithIpEnforcesGlobal": { "description": "Expose to with IP enforces global", "if": { "properties": { "ip": { "type": "string", "minLength": 1 } }, "required": ["ip"] }, "then": { "properties": { "global": { "const": true } }, "required": ["global"] } } }, "properties": { "deployment": { "additionalProperties": { "additionalProperties": { "additionalProperties": false, "properties": { "count": { "minimum": 1, "type": "integer" }, "profile": { "type": "string" } }, "required": ["profile", "count"], "type": "object" }, "type": "object" }, "type": "object" }, "endpoints": { "additionalProperties": false, "patternProperties": { "^[a-z]+[-_0-9a-z]+$": { "additionalProperties": false, "properties": { "kind": { "enum": ["ip"], "type": "string" } }, "required": ["kind"], "type": "object" } }, "type": "object" }, "include": { "description": "Optional list of files to include", "items": { "type": "string" }, "type": "array" }, "profiles": { "additionalProperties": false, "properties": { "compute": { "additionalProperties": { "additionalProperties": false, "properties": { "resources": { "additionalProperties": false, "properties": { "cpu": { "additionalProperties": false, "properties": { "attributes": { "type": "object" }, "units": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?[a-zA-Z]*$", "not": { "pattern": "^0+(\\.0+)?m?$" } }, { "type": "number", "exclusiveMinimum": 0 }] } }, "required": ["units"], "type": "object" }, "gpu": { "description": "GPU resource specification.\n- units defaults to 0 if omitted\n- Bidirectional validation: units > 0 requires attributes, and attributes require units > 0\n", "additionalProperties": false, "properties": { "attributes": { "additionalProperties": false, "properties": { "vendor": { "additionalProperties": false, "minProperties": 1, "properties": { "nvidia": { "oneOf": [{ "type": "array", "items": { "additionalProperties": false, "properties": { "interface": { "enum": ["pcie", "sxm"], "type": "string" }, "model": { "type": "string" }, "ram": { "type": "string" } }, "type": "object" } }, { "type": "null" }] } }, "type": "object" }, "interconnect": { "description": "Opt this resource into GPU interconnect.\nWhen true, the bid engine matches against\nproviders advertising\ncapabilities/gpu-interconnect and the\nworkload builder requests one HCA per GPU\nunit (1:1). Fabric (InfiniBand vs RoCE) is\nchosen by the provider, not the SDL.\n", "type": "boolean" }, "interconnect_group": { "description": "Peer-group label for multi-service NCCL\ngroups. All services sharing the same value\nform one anti-affinity group: the provider\nschedules them on distinct nodes. Implies\ninterconnect: true.\n", "type": "string" } }, "type": "object" }, "units": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "allOf": [{ "$ref": "#/definitions/gpuUnitsGt0RequiresAttributes" }, { "$ref": "#/definitions/gpuAttributesRequireUnitsGt0" }], "type": "object" }, "memory": { "additionalProperties": false, "properties": { "size": { "type": "string" } }, "required": ["size"], "type": "object" }, "storage": { "oneOf": [{ "$ref": "#/definitions/storageVolume" }, { "items": { "$ref": "#/definitions/storageVolume" }, "type": "array" }] } }, "required": ["cpu", "memory", "storage"], "type": "object" } }, "required": ["resources"], "type": "object" }, "type": "object" }, "placement": { "additionalProperties": { "additionalProperties": false, "properties": { "attributes": { "type": "object" }, "pricing": { "additionalProperties": { "$ref": "#/definitions/priceCoin" }, "type": "object" }, "signedBy": { "additionalProperties": false, "properties": { "allOf": { "items": { "type": "string" }, "type": "array" }, "anyOf": { "items": { "type": "string" }, "type": "array" } }, "type": "object" } }, "required": ["pricing"], "type": "object" }, "type": "object" } }, "required": ["compute", "placement"], "type": "object" }, "services": { "additionalProperties": { "properties": { "args": { "$ref": "#/definitions/stringArrayOrNull" }, "command": { "$ref": "#/definitions/stringArrayOrNull" }, "credentials": { "additionalProperties": false, "properties": { "email": { "type": "string", "minLength": 5 }, "host": { "type": "string", "minLength": 1 }, "password": { "type": "string", "minLength": 6 }, "username": { "type": "string", "minLength": 1 } }, "required": ["host", "username", "password"], "type": "object" }, "dependencies": { "items": { "additionalProperties": false, "properties": { "service": { "type": "string" } }, "type": "object" }, "type": "array" }, "env": { "$ref": "#/definitions/stringArrayOrNull" }, "expose": { "oneOf": [{ "type": "array", "items": { "additionalProperties": false, "properties": { "accept": { "items": { "type": "string" }, "type": "array" }, "as": { "$ref": "#/definitions/portNumber" }, "http_options": { "additionalProperties": false, "properties": { "max_body_size": { "type": "integer", "minimum": 0, "maximum": 104857600, "description": "Maximum body size in bytes (max 100 MB)" }, "next_cases": { "oneOf": [{ "type": "array", "items": { "$ref": "#/definitions/httpErrorCode" }, "contains": { "const": "off" }, "maxItems": 1, "minItems": 1 }, { "type": "array", "items": { "$ref": "#/definitions/httpErrorCode" }, "not": { "contains": { "const": "off" } } }] }, "next_timeout": { "type": "integer", "minimum": 0 }, "next_tries": { "type": "integer", "minimum": 0 }, "read_timeout": { "type": "integer", "minimum": 0, "maximum": 6e4, "description": "Read timeout in milliseconds (max 60 seconds)" }, "send_timeout": { "type": "integer", "minimum": 0, "maximum": 6e4, "description": "Send timeout in milliseconds (max 60 seconds)" } }, "type": "object" }, "port": { "$ref": "#/definitions/portNumber" }, "proto": { "enum": ["TCP", "UDP", "tcp", "udp"], "type": "string" }, "to": { "items": { "additionalProperties": false, "properties": { "global": { "type": "boolean" }, "ip": { "minLength": 1, "type": "string" }, "service": { "type": "string" } }, "allOf": [{ "$ref": "#/definitions/exposeToWithIpEnforcesGlobal" }], "type": "object" }, "type": "array" } }, "required": ["port"], "type": "object" } }, { "type": "null" }] }, "image": { "type": "string", "minLength": 1 }, "params": { "additionalProperties": false, "properties": { "storage": { "additionalProperties": { "additionalProperties": false, "properties": { "mount": { "$ref": "#/definitions/absolutePath" }, "readOnly": { "type": "boolean" } }, "type": "object" }, "type": "object" }, "permissions": { "additionalProperties": false, "properties": { "read": { "items": { "type": "string", "enum": ["deployment", "logs", "events"] }, "type": "array" } }, "type": "object" } }, "type": "object" } }, "required": ["image"], "type": "object", "additionalProperties": false }, "type": "object" }, "reclamation": { "description": "Deployment-level reclamation requirements (optional). When set, providers must offer a reclamation window meeting or exceeding the specified minimum to bid on this deployment.", "additionalProperties": false, "properties": { "min_window": { "type": "string", "pattern": "^[1-9][0-9]*(s|m|h)$", "description": 'Minimum reclamation window the tenant requires, as a whole number followed by a unit (s, m, or h). E.g. "1h", "24h", "720h".' } }, "required": ["min_window"], "type": "object" }, "version": { "description": "SDL version", "enum": ["2.0", "2.1"], "type": "string" } }, "required": ["version", "services", "profiles", "deployment"], "title": "Akash SDL Input Schema", "type": "object" }; +var schema28 = { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "description": "Schema for Akash Stack Definition Language (SDL) YAML input files.\n\nNote: This schema validates structure only. Semantic validations (cross-references,\nunused endpoints, profile references, etc.) are performed at runtime by the Go parser.\nSee README.md for details.\n", "definitions": { "stringArrayOrNull": { "description": "String array or null value (used for command args and env vars)", "oneOf": [{ "items": { "type": "string" }, "type": "array" }, { "type": "null" }] }, "portNumber": { "description": "Valid TCP/UDP port number (1-65535)", "type": "integer", "minimum": 1, "maximum": 65535 }, "httpErrorCode": { "description": "HTTP error codes for proxy retry logic", "enum": ["error", "timeout", "500", "502", "503", "504", "403", "404", "429", "off"], "type": "string" }, "priceCoin": { "description": "Price definition with amount and denomination", "additionalProperties": false, "properties": { "amount": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Positive number as string" }, { "type": "number", "minimum": 0, "description": "Positive number" }] }, "denom": { "enum": ["uakt", "uact"], "type": "string" } }, "required": ["denom", "amount"], "type": "object" }, "storageRamClassMustNotBePersistent": { "description": "RAM storage class must not have persistent=true", "not": { "properties": { "class": { "const": "ram" }, "persistent": { "oneOf": [{ "const": true }, { "const": "true" }] } }, "required": ["class", "persistent"] } }, "storageNonRamClassRequiresPersistent": { "description": "Non-RAM storage classes (beta1, beta2, beta3, default) require persistent=true", "if": { "properties": { "class": { "enum": ["beta1", "beta2", "beta3", "default"] } }, "required": ["class"] }, "then": { "properties": { "persistent": { "oneOf": [{ "const": true }, { "const": "true" }] } }, "required": ["persistent"] } }, "storageAttributesValidation": { "description": "Storage attributes validation:\n1. RAM class must not be persistent\n2. Non-RAM classes (beta1, beta2, beta3, default) require persistent=true\n", "additionalProperties": false, "properties": { "class": { "type": "string" }, "persistent": { "oneOf": [{ "type": "boolean" }, { "type": "string" }] } }, "allOf": [{ "$ref": "#/definitions/storageRamClassMustNotBePersistent" }, { "$ref": "#/definitions/storageNonRamClassRequiresPersistent" }], "required": ["class", "persistent"], "type": "object" }, "storageVolume": { "description": "Storage volume definition with size and optional attributes", "additionalProperties": false, "properties": { "attributes": { "$ref": "#/definitions/storageAttributesValidation" }, "name": { "type": "string" }, "size": { "type": "string" } }, "required": ["size"], "type": "object" }, "absolutePath": { "description": "Absolute filesystem path starting with /", "type": "string", "minLength": 1, "pattern": "^/" }, "gpuUnitsGt0RequiresAttributes": { "description": "GPU units > 0 requires attributes to be present", "if": { "properties": { "units": { "oneOf": [{ "type": "number", "exclusiveMinimum": 0 }, { "type": "string", "not": { "pattern": "^0+(\\.0+)?$" } }] } }, "required": ["units"] }, "then": { "required": ["attributes"] } }, "gpuAttributesRequireUnitsGt0": { "description": "GPU attributes present requires units > 0", "if": { "required": ["attributes"] }, "then": { "properties": { "units": { "oneOf": [{ "type": "number", "exclusiveMinimum": 0 }, { "type": "string", "not": { "pattern": "^0+(\\.0+)?$" } }] } }, "required": ["units"] } }, "exposeToWithIpEnforcesGlobal": { "description": "Expose to with IP enforces global", "if": { "properties": { "ip": { "type": "string", "minLength": 1 } }, "required": ["ip"] }, "then": { "properties": { "global": { "const": true } }, "required": ["global"] } } }, "properties": { "deployment": { "additionalProperties": { "additionalProperties": { "additionalProperties": false, "properties": { "count": { "minimum": 1, "type": "integer" }, "profile": { "type": "string" } }, "required": ["profile", "count"], "type": "object" }, "type": "object" }, "type": "object" }, "endpoints": { "additionalProperties": false, "patternProperties": { "^[a-z]+[-_0-9a-z]+$": { "additionalProperties": false, "properties": { "kind": { "enum": ["ip"], "type": "string" } }, "required": ["kind"], "type": "object" } }, "type": "object" }, "include": { "description": "Optional list of files to include", "items": { "type": "string" }, "type": "array" }, "profiles": { "additionalProperties": false, "properties": { "compute": { "additionalProperties": { "additionalProperties": false, "properties": { "resources": { "additionalProperties": false, "properties": { "cpu": { "additionalProperties": false, "properties": { "attributes": { "type": "object" }, "units": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?[a-zA-Z]*$", "not": { "pattern": "^0+(\\.0+)?m?$" } }, { "type": "number", "exclusiveMinimum": 0 }] } }, "required": ["units"], "type": "object" }, "gpu": { "description": "GPU resource specification.\n- units defaults to 0 if omitted\n- Bidirectional validation: units > 0 requires attributes, and attributes require units > 0\n", "additionalProperties": false, "properties": { "attributes": { "additionalProperties": false, "properties": { "vendor": { "additionalProperties": false, "minProperties": 1, "properties": { "nvidia": { "oneOf": [{ "type": "array", "items": { "additionalProperties": false, "properties": { "interface": { "enum": ["pcie", "sxm"], "type": "string" }, "model": { "type": "string" }, "ram": { "type": "string" } }, "type": "object" } }, { "type": "null" }] } }, "type": "object" }, "interconnect": { "description": "Opt this resource into GPU interconnect.\nAccepts two forms:\n - `[]` (empty sequence) \u2014 implicit group,\n the parser auto-names it `auto` within\n the placement. All services that opt in\n with `[]` under one placement land in\n the same `auto` group.\n - `{ group: }` \u2014 explicit named\n group. The name `auto` is reserved.\nThe bare boolean `true` is no longer\naccepted. Fabric (InfiniBand vs RoCE) is\nchosen by the provider, not the SDL.\n", "oneOf": [{ "type": "array", "maxItems": 0 }, { "additionalProperties": false, "properties": { "group": { "type": "string", "minLength": 1 } }, "required": ["group"], "type": "object" }] } }, "type": "object" }, "units": { "oneOf": [{ "type": "string" }, { "type": "number" }] } }, "allOf": [{ "$ref": "#/definitions/gpuUnitsGt0RequiresAttributes" }, { "$ref": "#/definitions/gpuAttributesRequireUnitsGt0" }], "type": "object" }, "memory": { "additionalProperties": false, "properties": { "size": { "type": "string" } }, "required": ["size"], "type": "object" }, "storage": { "oneOf": [{ "$ref": "#/definitions/storageVolume" }, { "items": { "$ref": "#/definitions/storageVolume" }, "type": "array" }] } }, "required": ["cpu", "memory", "storage"], "type": "object" } }, "required": ["resources"], "type": "object" }, "type": "object" }, "placement": { "additionalProperties": { "additionalProperties": false, "properties": { "attributes": { "type": "object" }, "pricing": { "additionalProperties": { "$ref": "#/definitions/priceCoin" }, "type": "object" }, "signedBy": { "additionalProperties": false, "properties": { "allOf": { "items": { "type": "string" }, "type": "array" }, "anyOf": { "items": { "type": "string" }, "type": "array" } }, "type": "object" } }, "required": ["pricing"], "type": "object" }, "type": "object" } }, "required": ["compute", "placement"], "type": "object" }, "services": { "additionalProperties": { "properties": { "args": { "$ref": "#/definitions/stringArrayOrNull" }, "command": { "$ref": "#/definitions/stringArrayOrNull" }, "credentials": { "additionalProperties": false, "properties": { "email": { "type": "string", "minLength": 5 }, "host": { "type": "string", "minLength": 1 }, "password": { "type": "string", "minLength": 6 }, "username": { "type": "string", "minLength": 1 } }, "required": ["host", "username", "password"], "type": "object" }, "dependencies": { "items": { "additionalProperties": false, "properties": { "service": { "type": "string" } }, "type": "object" }, "type": "array" }, "env": { "$ref": "#/definitions/stringArrayOrNull" }, "expose": { "oneOf": [{ "type": "array", "items": { "additionalProperties": false, "properties": { "accept": { "items": { "type": "string" }, "type": "array" }, "as": { "$ref": "#/definitions/portNumber" }, "http_options": { "additionalProperties": false, "properties": { "max_body_size": { "type": "integer", "minimum": 0, "maximum": 104857600, "description": "Maximum body size in bytes (max 100 MB)" }, "next_cases": { "oneOf": [{ "type": "array", "items": { "$ref": "#/definitions/httpErrorCode" }, "contains": { "const": "off" }, "maxItems": 1, "minItems": 1 }, { "type": "array", "items": { "$ref": "#/definitions/httpErrorCode" }, "not": { "contains": { "const": "off" } } }] }, "next_timeout": { "type": "integer", "minimum": 0 }, "next_tries": { "type": "integer", "minimum": 0 }, "read_timeout": { "type": "integer", "minimum": 0, "maximum": 6e4, "description": "Read timeout in milliseconds (max 60 seconds)" }, "send_timeout": { "type": "integer", "minimum": 0, "maximum": 6e4, "description": "Send timeout in milliseconds (max 60 seconds)" } }, "type": "object" }, "port": { "$ref": "#/definitions/portNumber" }, "proto": { "enum": ["TCP", "UDP", "tcp", "udp"], "type": "string" }, "to": { "items": { "additionalProperties": false, "properties": { "global": { "type": "boolean" }, "ip": { "minLength": 1, "type": "string" }, "service": { "type": "string" } }, "allOf": [{ "$ref": "#/definitions/exposeToWithIpEnforcesGlobal" }], "type": "object" }, "type": "array" } }, "required": ["port"], "type": "object" } }, { "type": "null" }] }, "image": { "type": "string", "minLength": 1 }, "params": { "additionalProperties": false, "properties": { "storage": { "additionalProperties": { "additionalProperties": false, "properties": { "mount": { "$ref": "#/definitions/absolutePath" }, "readOnly": { "type": "boolean" } }, "type": "object" }, "type": "object" }, "permissions": { "additionalProperties": false, "properties": { "read": { "items": { "type": "string", "enum": ["deployment", "logs", "events"] }, "type": "array" } }, "type": "object" } }, "type": "object" } }, "required": ["image"], "type": "object", "additionalProperties": false }, "type": "object" }, "reclamation": { "description": "Deployment-level reclamation requirements (optional). When set, providers must offer a reclamation window meeting or exceeding the specified minimum to bid on this deployment.", "additionalProperties": false, "properties": { "min_window": { "type": "string", "pattern": "^[1-9][0-9]*(s|m|h)$", "description": 'Minimum reclamation window the tenant requires, as a whole number followed by a unit (s, m, or h). E.g. "1h", "24h", "720h".' } }, "required": ["min_window"], "type": "object" }, "version": { "description": "SDL version", "enum": ["2.0", "2.1"], "type": "string" } }, "required": ["version", "services", "profiles", "deployment"], "title": "Akash SDL Input Schema", "type": "object" }; var schema35 = { "description": "Price definition with amount and denomination", "additionalProperties": false, "properties": { "amount": { "oneOf": [{ "type": "string", "pattern": "^[0-9]+(\\.[0-9]+)?$", "description": "Positive number as string" }, { "type": "number", "minimum": 0, "description": "Positive number" }] }, "denom": { "enum": ["uakt", "uact"], "type": "string" } }, "required": ["denom", "amount"], "type": "object" }; var schema40 = { "description": "HTTP error codes for proxy retry logic", "enum": ["error", "timeout", "500", "502", "503", "504", "403", "404", "429", "off"], "type": "string" }; var pattern4 = new RegExp("^[a-z]+[-_0-9a-z]+$", "u"); @@ -269,6 +269,7 @@ var pattern8 = new RegExp("^0+(\\.0+)?$", "u"); var pattern10 = new RegExp("^[0-9]+(\\.[0-9]+)?$", "u"); var pattern11 = new RegExp("^/", "u"); var pattern12 = new RegExp("^[1-9][0-9]*(s|m|h)$", "u"); +var func2 = require_ucs2length().default; function validate29(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; @@ -683,7 +684,6 @@ function validate28(data, { instancePath = "", parentData, parentDataProperty, r validate28.errors = vErrors; return errors === 0; } -var func2 = require_ucs2length().default; function validate27(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; @@ -1518,7 +1518,7 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data20 = data17.attributes; if (data20 && typeof data20 == "object" && !Array.isArray(data20)) { for (const key13 in data20) { - if (!(key13 === "vendor" || key13 === "interconnect" || key13 === "interconnect_group")) { + if (!(key13 === "vendor" || key13 === "interconnect")) { const err62 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key13 }, message: "must NOT have additional properties" }; if (vErrors === null) { vErrors = [err62]; @@ -1690,90 +1690,180 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } if (data20.interconnect !== void 0) { - if (typeof data20.interconnect !== "boolean") { - const err75 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/interconnect", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" }; + let data27 = data20.interconnect; + const _errs103 = errors; + let valid33 = false; + let passing4 = null; + const _errs104 = errors; + if (Array.isArray(data27)) { + if (data27.length > 0) { + const err75 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/interconnect", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect/oneOf/0/maxItems", keyword: "maxItems", params: { limit: 0 }, message: "must NOT have more than 0 items" }; + if (vErrors === null) { + vErrors = [err75]; + } else { + vErrors.push(err75); + } + errors++; + } + } else { + const err76 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/interconnect", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err75]; + vErrors = [err76]; } else { - vErrors.push(err75); + vErrors.push(err76); } errors++; } - } - if (data20.interconnect_group !== void 0) { - if (typeof data20.interconnect_group !== "string") { - const err76 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/interconnect_group", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect_group/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + var _valid6 = _errs104 === errors; + if (_valid6) { + valid33 = true; + passing4 = 0; + } + const _errs106 = errors; + if (data27 && typeof data27 == "object" && !Array.isArray(data27)) { + if (data27.group === void 0) { + const err77 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/interconnect", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect/oneOf/1/required", keyword: "required", params: { missingProperty: "group" }, message: "must have required property 'group'" }; + if (vErrors === null) { + vErrors = [err77]; + } else { + vErrors.push(err77); + } + errors++; + } + for (const key16 in data27) { + if (!(key16 === "group")) { + const err78 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/interconnect", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect/oneOf/1/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key16 }, message: "must NOT have additional properties" }; + if (vErrors === null) { + vErrors = [err78]; + } else { + vErrors.push(err78); + } + errors++; + } + } + if (data27.group !== void 0) { + let data28 = data27.group; + if (typeof data28 === "string") { + if (func2(data28) < 1) { + const err79 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/interconnect/group", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect/oneOf/1/properties/group/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; + if (vErrors === null) { + vErrors = [err79]; + } else { + vErrors.push(err79); + } + errors++; + } + } else { + const err80 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/interconnect/group", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect/oneOf/1/properties/group/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + if (vErrors === null) { + vErrors = [err80]; + } else { + vErrors.push(err80); + } + errors++; + } + } + } else { + const err81 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/interconnect", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect/oneOf/1/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err76]; + vErrors = [err81]; } else { - vErrors.push(err76); + vErrors.push(err81); + } + errors++; + } + var _valid6 = _errs106 === errors; + if (_valid6 && valid33) { + valid33 = false; + passing4 = [passing4, 1]; + } else { + if (_valid6) { + valid33 = true; + passing4 = 1; + } + } + if (!valid33) { + const err82 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes/interconnect", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/properties/interconnect/oneOf", keyword: "oneOf", params: { passingSchemas: passing4 }, message: "must match exactly one schema in oneOf" }; + if (vErrors === null) { + vErrors = [err82]; + } else { + vErrors.push(err82); } errors++; + } else { + errors = _errs103; + if (vErrors !== null) { + if (_errs103) { + vErrors.length = _errs103; + } else { + vErrors = null; + } + } } } } else { - const err77 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err83 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/attributes", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/attributes/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err77]; + vErrors = [err83]; } else { - vErrors.push(err77); + vErrors.push(err83); } errors++; } } if (data17.units !== void 0) { let data29 = data17.units; - const _errs107 = errors; - let valid33 = false; - let passing4 = null; - const _errs108 = errors; + const _errs112 = errors; + let valid35 = false; + let passing5 = null; + const _errs113 = errors; if (typeof data29 !== "string") { - const err78 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/units", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/units/oneOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err84 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/units", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/units/oneOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err78]; + vErrors = [err84]; } else { - vErrors.push(err78); + vErrors.push(err84); } errors++; } - var _valid6 = _errs108 === errors; - if (_valid6) { - valid33 = true; - passing4 = 0; + var _valid7 = _errs113 === errors; + if (_valid7) { + valid35 = true; + passing5 = 0; } - const _errs110 = errors; + const _errs115 = errors; if (!(typeof data29 == "number")) { - const err79 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/units", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/units/oneOf/1/type", keyword: "type", params: { type: "number" }, message: "must be number" }; + const err85 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/units", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/units/oneOf/1/type", keyword: "type", params: { type: "number" }, message: "must be number" }; if (vErrors === null) { - vErrors = [err79]; + vErrors = [err85]; } else { - vErrors.push(err79); + vErrors.push(err85); } errors++; } - var _valid6 = _errs110 === errors; - if (_valid6 && valid33) { - valid33 = false; - passing4 = [passing4, 1]; + var _valid7 = _errs115 === errors; + if (_valid7 && valid35) { + valid35 = false; + passing5 = [passing5, 1]; } else { - if (_valid6) { - valid33 = true; - passing4 = 1; + if (_valid7) { + valid35 = true; + passing5 = 1; } } - if (!valid33) { - const err80 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/units", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/units/oneOf", keyword: "oneOf", params: { passingSchemas: passing4 }, message: "must match exactly one schema in oneOf" }; + if (!valid35) { + const err86 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu/units", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/properties/units/oneOf", keyword: "oneOf", params: { passingSchemas: passing5 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err80]; + vErrors = [err86]; } else { - vErrors.push(err80); + vErrors.push(err86); } errors++; } else { - errors = _errs107; + errors = _errs112; if (vErrors !== null) { - if (_errs107) { - vErrors.length = _errs107; + if (_errs112) { + vErrors.length = _errs112; } else { vErrors = null; } @@ -1781,11 +1871,11 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } } else { - const err81 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err87 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/gpu", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/gpu/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err81]; + vErrors = [err87]; } else { - vErrors.push(err81); + vErrors.push(err87); } errors++; } @@ -1794,62 +1884,62 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data30 = data13.memory; if (data30 && typeof data30 == "object" && !Array.isArray(data30)) { if (data30.size === void 0) { - const err82 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/required", keyword: "required", params: { missingProperty: "size" }, message: "must have required property 'size'" }; + const err88 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/required", keyword: "required", params: { missingProperty: "size" }, message: "must have required property 'size'" }; if (vErrors === null) { - vErrors = [err82]; + vErrors = [err88]; } else { - vErrors.push(err82); + vErrors.push(err88); } errors++; } - for (const key16 in data30) { - if (!(key16 === "size")) { - const err83 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key16 }, message: "must NOT have additional properties" }; + for (const key17 in data30) { + if (!(key17 === "size")) { + const err89 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key17 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err83]; + vErrors = [err89]; } else { - vErrors.push(err83); + vErrors.push(err89); } errors++; } } if (data30.size !== void 0) { if (typeof data30.size !== "string") { - const err84 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory/size", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/properties/size/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err90 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory/size", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/properties/size/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err84]; + vErrors = [err90]; } else { - vErrors.push(err84); + vErrors.push(err90); } errors++; } } } else { - const err85 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err91 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/memory", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/memory/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err85]; + vErrors = [err91]; } else { - vErrors.push(err85); + vErrors.push(err91); } errors++; } } if (data13.storage !== void 0) { let data32 = data13.storage; - const _errs118 = errors; - let valid35 = false; - let passing5 = null; - const _errs119 = errors; + const _errs123 = errors; + let valid37 = false; + let passing6 = null; + const _errs124 = errors; if (!validate28(data32, { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage", parentData: data13, parentDataProperty: "storage", rootData })) { vErrors = vErrors === null ? validate28.errors : vErrors.concat(validate28.errors); errors = vErrors.length; } - var _valid7 = _errs119 === errors; - if (_valid7) { - valid35 = true; - passing5 = 0; + var _valid8 = _errs124 === errors; + if (_valid8) { + valid37 = true; + passing6 = 0; } - const _errs120 = errors; + const _errs125 = errors; if (Array.isArray(data32)) { const len2 = data32.length; for (let i2 = 0; i2 < len2; i2++) { @@ -1859,37 +1949,37 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } } else { - const err86 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/storage/oneOf/1/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err92 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/storage/oneOf/1/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err86]; + vErrors = [err92]; } else { - vErrors.push(err86); + vErrors.push(err92); } errors++; } - var _valid7 = _errs120 === errors; - if (_valid7 && valid35) { - valid35 = false; - passing5 = [passing5, 1]; + var _valid8 = _errs125 === errors; + if (_valid8 && valid37) { + valid37 = false; + passing6 = [passing6, 1]; } else { - if (_valid7) { - valid35 = true; - passing5 = 1; + if (_valid8) { + valid37 = true; + passing6 = 1; } } - if (!valid35) { - const err87 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/storage/oneOf", keyword: "oneOf", params: { passingSchemas: passing5 }, message: "must match exactly one schema in oneOf" }; + if (!valid37) { + const err93 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources/storage", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/properties/storage/oneOf", keyword: "oneOf", params: { passingSchemas: passing6 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err87]; + vErrors = [err93]; } else { - vErrors.push(err87); + vErrors.push(err93); } errors++; } else { - errors = _errs118; + errors = _errs123; if (vErrors !== null) { - if (_errs118) { - vErrors.length = _errs118; + if (_errs123) { + vErrors.length = _errs123; } else { vErrors = null; } @@ -1897,31 +1987,31 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } } else { - const err88 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err94 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1") + "/resources", schemaPath: "#/properties/profiles/properties/compute/additionalProperties/properties/resources/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err88]; + vErrors = [err94]; } else { - vErrors.push(err88); + vErrors.push(err94); } errors++; } } } else { - const err89 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/compute/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err95 = { instancePath: instancePath + "/profiles/compute/" + key8.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/compute/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err89]; + vErrors = [err95]; } else { - vErrors.push(err89); + vErrors.push(err95); } errors++; } } } else { - const err90 = { instancePath: instancePath + "/profiles/compute", schemaPath: "#/properties/profiles/properties/compute/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err96 = { instancePath: instancePath + "/profiles/compute", schemaPath: "#/properties/profiles/properties/compute/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err90]; + vErrors = [err96]; } else { - vErrors.push(err90); + vErrors.push(err96); } errors++; } @@ -1929,25 +2019,25 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data10.placement !== void 0) { let data34 = data10.placement; if (data34 && typeof data34 == "object" && !Array.isArray(data34)) { - for (const key17 in data34) { - let data35 = data34[key17]; + for (const key18 in data34) { + let data35 = data34[key18]; if (data35 && typeof data35 == "object" && !Array.isArray(data35)) { if (data35.pricing === void 0) { - const err91 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/placement/additionalProperties/required", keyword: "required", params: { missingProperty: "pricing" }, message: "must have required property 'pricing'" }; + const err97 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/placement/additionalProperties/required", keyword: "required", params: { missingProperty: "pricing" }, message: "must have required property 'pricing'" }; if (vErrors === null) { - vErrors = [err91]; + vErrors = [err97]; } else { - vErrors.push(err91); + vErrors.push(err97); } errors++; } - for (const key18 in data35) { - if (!(key18 === "attributes" || key18 === "pricing" || key18 === "signedBy")) { - const err92 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/placement/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key18 }, message: "must NOT have additional properties" }; + for (const key19 in data35) { + if (!(key19 === "attributes" || key19 === "pricing" || key19 === "signedBy")) { + const err98 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/placement/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key19 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err92]; + vErrors = [err98]; } else { - vErrors.push(err92); + vErrors.push(err98); } errors++; } @@ -1955,11 +2045,11 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data35.attributes !== void 0) { let data36 = data35.attributes; if (!(data36 && typeof data36 == "object" && !Array.isArray(data36))) { - const err93 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/attributes", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/attributes/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err99 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/attributes", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/attributes/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err93]; + vErrors = [err99]; } else { - vErrors.push(err93); + vErrors.push(err99); } errors++; } @@ -1967,111 +2057,111 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data35.pricing !== void 0) { let data37 = data35.pricing; if (data37 && typeof data37 == "object" && !Array.isArray(data37)) { - for (const key19 in data37) { - let data38 = data37[key19]; + for (const key20 in data37) { + let data38 = data37[key20]; if (data38 && typeof data38 == "object" && !Array.isArray(data38)) { if (data38.denom === void 0) { - const err94 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/required", keyword: "required", params: { missingProperty: "denom" }, message: "must have required property 'denom'" }; + const err100 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key20.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/required", keyword: "required", params: { missingProperty: "denom" }, message: "must have required property 'denom'" }; if (vErrors === null) { - vErrors = [err94]; + vErrors = [err100]; } else { - vErrors.push(err94); + vErrors.push(err100); } errors++; } if (data38.amount === void 0) { - const err95 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/required", keyword: "required", params: { missingProperty: "amount" }, message: "must have required property 'amount'" }; + const err101 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key20.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/required", keyword: "required", params: { missingProperty: "amount" }, message: "must have required property 'amount'" }; if (vErrors === null) { - vErrors = [err95]; + vErrors = [err101]; } else { - vErrors.push(err95); + vErrors.push(err101); } errors++; } - for (const key20 in data38) { - if (!(key20 === "amount" || key20 === "denom")) { - const err96 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key20 }, message: "must NOT have additional properties" }; + for (const key21 in data38) { + if (!(key21 === "amount" || key21 === "denom")) { + const err102 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key20.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key21 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err96]; + vErrors = [err102]; } else { - vErrors.push(err96); + vErrors.push(err102); } errors++; } } if (data38.amount !== void 0) { let data39 = data38.amount; - const _errs139 = errors; - let valid43 = false; - let passing6 = null; - const _errs140 = errors; + const _errs144 = errors; + let valid45 = false; + let passing7 = null; + const _errs145 = errors; if (typeof data39 === "string") { if (!pattern10.test(data39)) { - const err97 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/0/pattern", keyword: "pattern", params: { pattern: "^[0-9]+(\\.[0-9]+)?$" }, message: 'must match pattern "^[0-9]+(\\.[0-9]+)?$"' }; + const err103 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key20.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/0/pattern", keyword: "pattern", params: { pattern: "^[0-9]+(\\.[0-9]+)?$" }, message: 'must match pattern "^[0-9]+(\\.[0-9]+)?$"' }; if (vErrors === null) { - vErrors = [err97]; + vErrors = [err103]; } else { - vErrors.push(err97); + vErrors.push(err103); } errors++; } } else { - const err98 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err104 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key20.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/0/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err98]; + vErrors = [err104]; } else { - vErrors.push(err98); + vErrors.push(err104); } errors++; } - var _valid8 = _errs140 === errors; - if (_valid8) { - valid43 = true; - passing6 = 0; + var _valid9 = _errs145 === errors; + if (_valid9) { + valid45 = true; + passing7 = 0; } - const _errs142 = errors; + const _errs147 = errors; if (typeof data39 == "number") { if (data39 < 0 || isNaN(data39)) { - const err99 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/1/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; + const err105 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key20.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/1/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; if (vErrors === null) { - vErrors = [err99]; + vErrors = [err105]; } else { - vErrors.push(err99); + vErrors.push(err105); } errors++; } } else { - const err100 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/1/type", keyword: "type", params: { type: "number" }, message: "must be number" }; + const err106 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key20.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf/1/type", keyword: "type", params: { type: "number" }, message: "must be number" }; if (vErrors === null) { - vErrors = [err100]; + vErrors = [err106]; } else { - vErrors.push(err100); + vErrors.push(err106); } errors++; } - var _valid8 = _errs142 === errors; - if (_valid8 && valid43) { - valid43 = false; - passing6 = [passing6, 1]; + var _valid9 = _errs147 === errors; + if (_valid9 && valid45) { + valid45 = false; + passing7 = [passing7, 1]; } else { - if (_valid8) { - valid43 = true; - passing6 = 1; + if (_valid9) { + valid45 = true; + passing7 = 1; } } - if (!valid43) { - const err101 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf", keyword: "oneOf", params: { passingSchemas: passing6 }, message: "must match exactly one schema in oneOf" }; + if (!valid45) { + const err107 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key20.replace(/~/g, "~0").replace(/\//g, "~1") + "/amount", schemaPath: "#/definitions/priceCoin/properties/amount/oneOf", keyword: "oneOf", params: { passingSchemas: passing7 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err101]; + vErrors = [err107]; } else { - vErrors.push(err101); + vErrors.push(err107); } errors++; } else { - errors = _errs139; + errors = _errs144; if (vErrors !== null) { - if (_errs139) { - vErrors.length = _errs139; + if (_errs144) { + vErrors.length = _errs144; } else { vErrors = null; } @@ -2081,40 +2171,40 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data38.denom !== void 0) { let data40 = data38.denom; if (typeof data40 !== "string") { - const err102 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/denom", schemaPath: "#/definitions/priceCoin/properties/denom/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err108 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key20.replace(/~/g, "~0").replace(/\//g, "~1") + "/denom", schemaPath: "#/definitions/priceCoin/properties/denom/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err102]; + vErrors = [err108]; } else { - vErrors.push(err102); + vErrors.push(err108); } errors++; } if (!(data40 === "uakt" || data40 === "uact")) { - const err103 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1") + "/denom", schemaPath: "#/definitions/priceCoin/properties/denom/enum", keyword: "enum", params: { allowedValues: schema35.properties.denom.enum }, message: "must be equal to one of the allowed values" }; + const err109 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key20.replace(/~/g, "~0").replace(/\//g, "~1") + "/denom", schemaPath: "#/definitions/priceCoin/properties/denom/enum", keyword: "enum", params: { allowedValues: schema35.properties.denom.enum }, message: "must be equal to one of the allowed values" }; if (vErrors === null) { - vErrors = [err103]; + vErrors = [err109]; } else { - vErrors.push(err103); + vErrors.push(err109); } errors++; } } } else { - const err104 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key19.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err110 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing/" + key20.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/definitions/priceCoin/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err104]; + vErrors = [err110]; } else { - vErrors.push(err104); + vErrors.push(err110); } errors++; } } } else { - const err105 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/pricing/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err111 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/pricing", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/pricing/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err105]; + vErrors = [err111]; } else { - vErrors.push(err105); + vErrors.push(err111); } errors++; } @@ -2122,13 +2212,13 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data35.signedBy !== void 0) { let data41 = data35.signedBy; if (data41 && typeof data41 == "object" && !Array.isArray(data41)) { - for (const key21 in data41) { - if (!(key21 === "allOf" || key21 === "anyOf")) { - const err106 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key21 }, message: "must NOT have additional properties" }; + for (const key22 in data41) { + if (!(key22 === "allOf" || key22 === "anyOf")) { + const err112 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key22 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err106]; + vErrors = [err112]; } else { - vErrors.push(err106); + vErrors.push(err112); } errors++; } @@ -2139,21 +2229,21 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r const len3 = data42.length; for (let i3 = 0; i3 < len3; i3++) { if (typeof data42[i3] !== "string") { - const err107 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/allOf/" + i3, schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/allOf/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err113 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/allOf/" + i3, schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/allOf/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err107]; + vErrors = [err113]; } else { - vErrors.push(err107); + vErrors.push(err113); } errors++; } } } else { - const err108 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/allOf", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/allOf/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err114 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/allOf", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/allOf/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err108]; + vErrors = [err114]; } else { - vErrors.push(err108); + vErrors.push(err114); } errors++; } @@ -2164,61 +2254,61 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r const len4 = data44.length; for (let i4 = 0; i4 < len4; i4++) { if (typeof data44[i4] !== "string") { - const err109 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/anyOf/" + i4, schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/anyOf/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err115 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/anyOf/" + i4, schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/anyOf/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err109]; + vErrors = [err115]; } else { - vErrors.push(err109); + vErrors.push(err115); } errors++; } } } else { - const err110 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/anyOf", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/anyOf/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err116 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy/anyOf", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/properties/anyOf/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err110]; + vErrors = [err116]; } else { - vErrors.push(err110); + vErrors.push(err116); } errors++; } } } else { - const err111 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err117 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1") + "/signedBy", schemaPath: "#/properties/profiles/properties/placement/additionalProperties/properties/signedBy/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err111]; + vErrors = [err117]; } else { - vErrors.push(err111); + vErrors.push(err117); } errors++; } } } else { - const err112 = { instancePath: instancePath + "/profiles/placement/" + key17.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/placement/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err118 = { instancePath: instancePath + "/profiles/placement/" + key18.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/profiles/properties/placement/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err112]; + vErrors = [err118]; } else { - vErrors.push(err112); + vErrors.push(err118); } errors++; } } } else { - const err113 = { instancePath: instancePath + "/profiles/placement", schemaPath: "#/properties/profiles/properties/placement/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err119 = { instancePath: instancePath + "/profiles/placement", schemaPath: "#/properties/profiles/properties/placement/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err113]; + vErrors = [err119]; } else { - vErrors.push(err113); + vErrors.push(err119); } errors++; } } } else { - const err114 = { instancePath: instancePath + "/profiles", schemaPath: "#/properties/profiles/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err120 = { instancePath: instancePath + "/profiles", schemaPath: "#/properties/profiles/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err114]; + vErrors = [err120]; } else { - vErrors.push(err114); + vErrors.push(err120); } errors++; } @@ -2226,95 +2316,95 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data.services !== void 0) { let data46 = data.services; if (data46 && typeof data46 == "object" && !Array.isArray(data46)) { - for (const key22 in data46) { - let data47 = data46[key22]; + for (const key23 in data46) { + let data47 = data46[key23]; if (data47 && typeof data47 == "object" && !Array.isArray(data47)) { if (data47.image === void 0) { - const err115 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/required", keyword: "required", params: { missingProperty: "image" }, message: "must have required property 'image'" }; + const err121 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/required", keyword: "required", params: { missingProperty: "image" }, message: "must have required property 'image'" }; if (vErrors === null) { - vErrors = [err115]; + vErrors = [err121]; } else { - vErrors.push(err115); + vErrors.push(err121); } errors++; } - for (const key23 in data47) { - if (!(key23 === "args" || key23 === "command" || key23 === "credentials" || key23 === "dependencies" || key23 === "env" || key23 === "expose" || key23 === "image" || key23 === "params")) { - const err116 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key23 }, message: "must NOT have additional properties" }; + for (const key24 in data47) { + if (!(key24 === "args" || key24 === "command" || key24 === "credentials" || key24 === "dependencies" || key24 === "env" || key24 === "expose" || key24 === "image" || key24 === "params")) { + const err122 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key24 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err116]; + vErrors = [err122]; } else { - vErrors.push(err116); + vErrors.push(err122); } errors++; } } if (data47.args !== void 0) { let data48 = data47.args; - const _errs165 = errors; - let valid52 = false; - let passing7 = null; - const _errs166 = errors; + const _errs170 = errors; + let valid54 = false; + let passing8 = null; + const _errs171 = errors; if (Array.isArray(data48)) { const len5 = data48.length; for (let i5 = 0; i5 < len5; i5++) { if (typeof data48[i5] !== "string") { - const err117 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/args/" + i5, schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err123 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/args/" + i5, schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err117]; + vErrors = [err123]; } else { - vErrors.push(err117); + vErrors.push(err123); } errors++; } } } else { - const err118 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/args", schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err124 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/args", schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err118]; + vErrors = [err124]; } else { - vErrors.push(err118); + vErrors.push(err124); } errors++; } - var _valid9 = _errs166 === errors; - if (_valid9) { - valid52 = true; - passing7 = 0; + var _valid10 = _errs171 === errors; + if (_valid10) { + valid54 = true; + passing8 = 0; } - const _errs170 = errors; + const _errs175 = errors; if (data48 !== null) { - const err119 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/args", schemaPath: "#/definitions/stringArrayOrNull/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; + const err125 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/args", schemaPath: "#/definitions/stringArrayOrNull/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; if (vErrors === null) { - vErrors = [err119]; + vErrors = [err125]; } else { - vErrors.push(err119); + vErrors.push(err125); } errors++; } - var _valid9 = _errs170 === errors; - if (_valid9 && valid52) { - valid52 = false; - passing7 = [passing7, 1]; + var _valid10 = _errs175 === errors; + if (_valid10 && valid54) { + valid54 = false; + passing8 = [passing8, 1]; } else { - if (_valid9) { - valid52 = true; - passing7 = 1; + if (_valid10) { + valid54 = true; + passing8 = 1; } } - if (!valid52) { - const err120 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/args", schemaPath: "#/definitions/stringArrayOrNull/oneOf", keyword: "oneOf", params: { passingSchemas: passing7 }, message: "must match exactly one schema in oneOf" }; + if (!valid54) { + const err126 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/args", schemaPath: "#/definitions/stringArrayOrNull/oneOf", keyword: "oneOf", params: { passingSchemas: passing8 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err120]; + vErrors = [err126]; } else { - vErrors.push(err120); + vErrors.push(err126); } errors++; } else { - errors = _errs165; + errors = _errs170; if (vErrors !== null) { - if (_errs165) { - vErrors.length = _errs165; + if (_errs170) { + vErrors.length = _errs170; } else { vErrors = null; } @@ -2323,70 +2413,70 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } if (data47.command !== void 0) { let data50 = data47.command; - const _errs174 = errors; - let valid56 = false; - let passing8 = null; - const _errs175 = errors; + const _errs179 = errors; + let valid58 = false; + let passing9 = null; + const _errs180 = errors; if (Array.isArray(data50)) { const len6 = data50.length; for (let i6 = 0; i6 < len6; i6++) { if (typeof data50[i6] !== "string") { - const err121 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/command/" + i6, schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err127 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/command/" + i6, schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err121]; + vErrors = [err127]; } else { - vErrors.push(err121); + vErrors.push(err127); } errors++; } } } else { - const err122 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/command", schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err128 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/command", schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err122]; + vErrors = [err128]; } else { - vErrors.push(err122); + vErrors.push(err128); } errors++; } - var _valid10 = _errs175 === errors; - if (_valid10) { - valid56 = true; - passing8 = 0; + var _valid11 = _errs180 === errors; + if (_valid11) { + valid58 = true; + passing9 = 0; } - const _errs179 = errors; + const _errs184 = errors; if (data50 !== null) { - const err123 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/command", schemaPath: "#/definitions/stringArrayOrNull/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; + const err129 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/command", schemaPath: "#/definitions/stringArrayOrNull/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; if (vErrors === null) { - vErrors = [err123]; + vErrors = [err129]; } else { - vErrors.push(err123); + vErrors.push(err129); } errors++; } - var _valid10 = _errs179 === errors; - if (_valid10 && valid56) { - valid56 = false; - passing8 = [passing8, 1]; + var _valid11 = _errs184 === errors; + if (_valid11 && valid58) { + valid58 = false; + passing9 = [passing9, 1]; } else { - if (_valid10) { - valid56 = true; - passing8 = 1; + if (_valid11) { + valid58 = true; + passing9 = 1; } } - if (!valid56) { - const err124 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/command", schemaPath: "#/definitions/stringArrayOrNull/oneOf", keyword: "oneOf", params: { passingSchemas: passing8 }, message: "must match exactly one schema in oneOf" }; + if (!valid58) { + const err130 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/command", schemaPath: "#/definitions/stringArrayOrNull/oneOf", keyword: "oneOf", params: { passingSchemas: passing9 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err124]; + vErrors = [err130]; } else { - vErrors.push(err124); + vErrors.push(err130); } errors++; } else { - errors = _errs174; + errors = _errs179; if (vErrors !== null) { - if (_errs174) { - vErrors.length = _errs174; + if (_errs179) { + vErrors.length = _errs179; } else { vErrors = null; } @@ -2397,39 +2487,39 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data52 = data47.credentials; if (data52 && typeof data52 == "object" && !Array.isArray(data52)) { if (data52.host === void 0) { - const err125 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/required", keyword: "required", params: { missingProperty: "host" }, message: "must have required property 'host'" }; + const err131 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/required", keyword: "required", params: { missingProperty: "host" }, message: "must have required property 'host'" }; if (vErrors === null) { - vErrors = [err125]; + vErrors = [err131]; } else { - vErrors.push(err125); + vErrors.push(err131); } errors++; } if (data52.username === void 0) { - const err126 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/required", keyword: "required", params: { missingProperty: "username" }, message: "must have required property 'username'" }; + const err132 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/required", keyword: "required", params: { missingProperty: "username" }, message: "must have required property 'username'" }; if (vErrors === null) { - vErrors = [err126]; + vErrors = [err132]; } else { - vErrors.push(err126); + vErrors.push(err132); } errors++; } if (data52.password === void 0) { - const err127 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/required", keyword: "required", params: { missingProperty: "password" }, message: "must have required property 'password'" }; + const err133 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/required", keyword: "required", params: { missingProperty: "password" }, message: "must have required property 'password'" }; if (vErrors === null) { - vErrors = [err127]; + vErrors = [err133]; } else { - vErrors.push(err127); + vErrors.push(err133); } errors++; } - for (const key24 in data52) { - if (!(key24 === "email" || key24 === "host" || key24 === "password" || key24 === "username")) { - const err128 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key24 }, message: "must NOT have additional properties" }; + for (const key25 in data52) { + if (!(key25 === "email" || key25 === "host" || key25 === "password" || key25 === "username")) { + const err134 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key25 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err128]; + vErrors = [err134]; } else { - vErrors.push(err128); + vErrors.push(err134); } errors++; } @@ -2438,20 +2528,20 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data53 = data52.email; if (typeof data53 === "string") { if (func2(data53) < 5) { - const err129 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/email", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/email/minLength", keyword: "minLength", params: { limit: 5 }, message: "must NOT have fewer than 5 characters" }; + const err135 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/email", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/email/minLength", keyword: "minLength", params: { limit: 5 }, message: "must NOT have fewer than 5 characters" }; if (vErrors === null) { - vErrors = [err129]; + vErrors = [err135]; } else { - vErrors.push(err129); + vErrors.push(err135); } errors++; } } else { - const err130 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/email", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/email/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err136 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/email", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/email/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err130]; + vErrors = [err136]; } else { - vErrors.push(err130); + vErrors.push(err136); } errors++; } @@ -2460,20 +2550,20 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data54 = data52.host; if (typeof data54 === "string") { if (func2(data54) < 1) { - const err131 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/host", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/host/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; + const err137 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/host", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/host/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; if (vErrors === null) { - vErrors = [err131]; + vErrors = [err137]; } else { - vErrors.push(err131); + vErrors.push(err137); } errors++; } } else { - const err132 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/host", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/host/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err138 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/host", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/host/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err132]; + vErrors = [err138]; } else { - vErrors.push(err132); + vErrors.push(err138); } errors++; } @@ -2482,20 +2572,20 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data55 = data52.password; if (typeof data55 === "string") { if (func2(data55) < 6) { - const err133 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/password", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/password/minLength", keyword: "minLength", params: { limit: 6 }, message: "must NOT have fewer than 6 characters" }; + const err139 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/password", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/password/minLength", keyword: "minLength", params: { limit: 6 }, message: "must NOT have fewer than 6 characters" }; if (vErrors === null) { - vErrors = [err133]; + vErrors = [err139]; } else { - vErrors.push(err133); + vErrors.push(err139); } errors++; } } else { - const err134 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/password", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/password/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err140 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/password", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/password/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err134]; + vErrors = [err140]; } else { - vErrors.push(err134); + vErrors.push(err140); } errors++; } @@ -2504,30 +2594,30 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data56 = data52.username; if (typeof data56 === "string") { if (func2(data56) < 1) { - const err135 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/username", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/username/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; + const err141 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/username", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/username/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; if (vErrors === null) { - vErrors = [err135]; + vErrors = [err141]; } else { - vErrors.push(err135); + vErrors.push(err141); } errors++; } } else { - const err136 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/username", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/username/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err142 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials/username", schemaPath: "#/properties/services/additionalProperties/properties/credentials/properties/username/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err136]; + vErrors = [err142]; } else { - vErrors.push(err136); + vErrors.push(err142); } errors++; } } } else { - const err137 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err143 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/credentials", schemaPath: "#/properties/services/additionalProperties/properties/credentials/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err137]; + vErrors = [err143]; } else { - vErrors.push(err137); + vErrors.push(err143); } errors++; } @@ -2539,114 +2629,114 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r for (let i7 = 0; i7 < len7; i7++) { let data58 = data57[i7]; if (data58 && typeof data58 == "object" && !Array.isArray(data58)) { - for (const key25 in data58) { - if (!(key25 === "service")) { - const err138 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies/" + i7, schemaPath: "#/properties/services/additionalProperties/properties/dependencies/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key25 }, message: "must NOT have additional properties" }; + for (const key26 in data58) { + if (!(key26 === "service")) { + const err144 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies/" + i7, schemaPath: "#/properties/services/additionalProperties/properties/dependencies/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key26 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err138]; + vErrors = [err144]; } else { - vErrors.push(err138); + vErrors.push(err144); } errors++; } } if (data58.service !== void 0) { if (typeof data58.service !== "string") { - const err139 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies/" + i7 + "/service", schemaPath: "#/properties/services/additionalProperties/properties/dependencies/items/properties/service/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err145 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies/" + i7 + "/service", schemaPath: "#/properties/services/additionalProperties/properties/dependencies/items/properties/service/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err139]; + vErrors = [err145]; } else { - vErrors.push(err139); + vErrors.push(err145); } errors++; } } } else { - const err140 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies/" + i7, schemaPath: "#/properties/services/additionalProperties/properties/dependencies/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err146 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies/" + i7, schemaPath: "#/properties/services/additionalProperties/properties/dependencies/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err140]; + vErrors = [err146]; } else { - vErrors.push(err140); + vErrors.push(err146); } errors++; } } } else { - const err141 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies", schemaPath: "#/properties/services/additionalProperties/properties/dependencies/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err147 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/dependencies", schemaPath: "#/properties/services/additionalProperties/properties/dependencies/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err141]; + vErrors = [err147]; } else { - vErrors.push(err141); + vErrors.push(err147); } errors++; } } if (data47.env !== void 0) { let data60 = data47.env; - const _errs201 = errors; - let valid64 = false; - let passing9 = null; - const _errs202 = errors; + const _errs206 = errors; + let valid66 = false; + let passing10 = null; + const _errs207 = errors; if (Array.isArray(data60)) { const len8 = data60.length; for (let i8 = 0; i8 < len8; i8++) { if (typeof data60[i8] !== "string") { - const err142 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/env/" + i8, schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err148 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/env/" + i8, schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err142]; + vErrors = [err148]; } else { - vErrors.push(err142); + vErrors.push(err148); } errors++; } } } else { - const err143 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/env", schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err149 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/env", schemaPath: "#/definitions/stringArrayOrNull/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err143]; + vErrors = [err149]; } else { - vErrors.push(err143); + vErrors.push(err149); } errors++; } - var _valid11 = _errs202 === errors; - if (_valid11) { - valid64 = true; - passing9 = 0; + var _valid12 = _errs207 === errors; + if (_valid12) { + valid66 = true; + passing10 = 0; } - const _errs206 = errors; + const _errs211 = errors; if (data60 !== null) { - const err144 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/env", schemaPath: "#/definitions/stringArrayOrNull/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; + const err150 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/env", schemaPath: "#/definitions/stringArrayOrNull/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; if (vErrors === null) { - vErrors = [err144]; + vErrors = [err150]; } else { - vErrors.push(err144); + vErrors.push(err150); } errors++; } - var _valid11 = _errs206 === errors; - if (_valid11 && valid64) { - valid64 = false; - passing9 = [passing9, 1]; + var _valid12 = _errs211 === errors; + if (_valid12 && valid66) { + valid66 = false; + passing10 = [passing10, 1]; } else { - if (_valid11) { - valid64 = true; - passing9 = 1; + if (_valid12) { + valid66 = true; + passing10 = 1; } } - if (!valid64) { - const err145 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/env", schemaPath: "#/definitions/stringArrayOrNull/oneOf", keyword: "oneOf", params: { passingSchemas: passing9 }, message: "must match exactly one schema in oneOf" }; + if (!valid66) { + const err151 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/env", schemaPath: "#/definitions/stringArrayOrNull/oneOf", keyword: "oneOf", params: { passingSchemas: passing10 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err145]; + vErrors = [err151]; } else { - vErrors.push(err145); + vErrors.push(err151); } errors++; } else { - errors = _errs201; + errors = _errs206; if (vErrors !== null) { - if (_errs201) { - vErrors.length = _errs201; + if (_errs206) { + vErrors.length = _errs206; } else { vErrors = null; } @@ -2655,31 +2745,31 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } if (data47.expose !== void 0) { let data62 = data47.expose; - const _errs209 = errors; - let valid67 = false; - let passing10 = null; - const _errs210 = errors; + const _errs214 = errors; + let valid69 = false; + let passing11 = null; + const _errs215 = errors; if (Array.isArray(data62)) { const len9 = data62.length; for (let i9 = 0; i9 < len9; i9++) { let data63 = data62[i9]; if (data63 && typeof data63 == "object" && !Array.isArray(data63)) { if (data63.port === void 0) { - const err146 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/required", keyword: "required", params: { missingProperty: "port" }, message: "must have required property 'port'" }; + const err152 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/required", keyword: "required", params: { missingProperty: "port" }, message: "must have required property 'port'" }; if (vErrors === null) { - vErrors = [err146]; + vErrors = [err152]; } else { - vErrors.push(err146); + vErrors.push(err152); } errors++; } - for (const key26 in data63) { - if (!(key26 === "accept" || key26 === "as" || key26 === "http_options" || key26 === "port" || key26 === "proto" || key26 === "to")) { - const err147 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key26 }, message: "must NOT have additional properties" }; + for (const key27 in data63) { + if (!(key27 === "accept" || key27 === "as" || key27 === "http_options" || key27 === "port" || key27 === "proto" || key27 === "to")) { + const err153 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key27 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err147]; + vErrors = [err153]; } else { - vErrors.push(err147); + vErrors.push(err153); } errors++; } @@ -2690,21 +2780,21 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r const len10 = data64.length; for (let i10 = 0; i10 < len10; i10++) { if (typeof data64[i10] !== "string") { - const err148 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/accept/" + i10, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/accept/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err154 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/accept/" + i10, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/accept/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err148]; + vErrors = [err154]; } else { - vErrors.push(err148); + vErrors.push(err154); } errors++; } } } else { - const err149 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/accept", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/accept/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err155 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/accept", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/accept/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err149]; + vErrors = [err155]; } else { - vErrors.push(err149); + vErrors.push(err155); } errors++; } @@ -2712,30 +2802,30 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data63.as !== void 0) { let data66 = data63.as; if (!(typeof data66 == "number" && (!(data66 % 1) && !isNaN(data66)))) { - const err150 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/as", schemaPath: "#/definitions/portNumber/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + const err156 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/as", schemaPath: "#/definitions/portNumber/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err150]; + vErrors = [err156]; } else { - vErrors.push(err150); + vErrors.push(err156); } errors++; } if (typeof data66 == "number") { if (data66 > 65535 || isNaN(data66)) { - const err151 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/as", schemaPath: "#/definitions/portNumber/maximum", keyword: "maximum", params: { comparison: "<=", limit: 65535 }, message: "must be <= 65535" }; + const err157 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/as", schemaPath: "#/definitions/portNumber/maximum", keyword: "maximum", params: { comparison: "<=", limit: 65535 }, message: "must be <= 65535" }; if (vErrors === null) { - vErrors = [err151]; + vErrors = [err157]; } else { - vErrors.push(err151); + vErrors.push(err157); } errors++; } if (data66 < 1 || isNaN(data66)) { - const err152 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/as", schemaPath: "#/definitions/portNumber/minimum", keyword: "minimum", params: { comparison: ">=", limit: 1 }, message: "must be >= 1" }; + const err158 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/as", schemaPath: "#/definitions/portNumber/minimum", keyword: "minimum", params: { comparison: ">=", limit: 1 }, message: "must be >= 1" }; if (vErrors === null) { - vErrors = [err152]; + vErrors = [err158]; } else { - vErrors.push(err152); + vErrors.push(err158); } errors++; } @@ -2744,13 +2834,13 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data63.http_options !== void 0) { let data67 = data63.http_options; if (data67 && typeof data67 == "object" && !Array.isArray(data67)) { - for (const key27 in data67) { - if (!(key27 === "max_body_size" || key27 === "next_cases" || key27 === "next_timeout" || key27 === "next_tries" || key27 === "read_timeout" || key27 === "send_timeout")) { - const err153 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key27 }, message: "must NOT have additional properties" }; + for (const key28 in data67) { + if (!(key28 === "max_body_size" || key28 === "next_cases" || key28 === "next_timeout" || key28 === "next_tries" || key28 === "read_timeout" || key28 === "send_timeout")) { + const err159 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key28 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err153]; + vErrors = [err159]; } else { - vErrors.push(err153); + vErrors.push(err159); } errors++; } @@ -2758,30 +2848,30 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data67.max_body_size !== void 0) { let data68 = data67.max_body_size; if (!(typeof data68 == "number" && (!(data68 % 1) && !isNaN(data68)))) { - const err154 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/max_body_size", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/max_body_size/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + const err160 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/max_body_size", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/max_body_size/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err154]; + vErrors = [err160]; } else { - vErrors.push(err154); + vErrors.push(err160); } errors++; } if (typeof data68 == "number") { if (data68 > 104857600 || isNaN(data68)) { - const err155 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/max_body_size", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/max_body_size/maximum", keyword: "maximum", params: { comparison: "<=", limit: 104857600 }, message: "must be <= 104857600" }; + const err161 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/max_body_size", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/max_body_size/maximum", keyword: "maximum", params: { comparison: "<=", limit: 104857600 }, message: "must be <= 104857600" }; if (vErrors === null) { - vErrors = [err155]; + vErrors = [err161]; } else { - vErrors.push(err155); + vErrors.push(err161); } errors++; } if (data68 < 0 || isNaN(data68)) { - const err156 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/max_body_size", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/max_body_size/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; + const err162 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/max_body_size", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/max_body_size/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; if (vErrors === null) { - vErrors = [err156]; + vErrors = [err162]; } else { - vErrors.push(err156); + vErrors.push(err162); } errors++; } @@ -2789,26 +2879,26 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } if (data67.next_cases !== void 0) { let data69 = data67.next_cases; - const _errs228 = errors; - let valid75 = false; - let passing11 = null; - const _errs229 = errors; + const _errs233 = errors; + let valid77 = false; + let passing12 = null; + const _errs234 = errors; if (Array.isArray(data69)) { if (data69.length > 1) { - const err157 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/maxItems", keyword: "maxItems", params: { limit: 1 }, message: "must NOT have more than 1 items" }; + const err163 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/maxItems", keyword: "maxItems", params: { limit: 1 }, message: "must NOT have more than 1 items" }; if (vErrors === null) { - vErrors = [err157]; + vErrors = [err163]; } else { - vErrors.push(err157); + vErrors.push(err163); } errors++; } if (data69.length < 1) { - const err158 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/minItems", keyword: "minItems", params: { limit: 1 }, message: "must NOT have fewer than 1 items" }; + const err164 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/minItems", keyword: "minItems", params: { limit: 1 }, message: "must NOT have fewer than 1 items" }; if (vErrors === null) { - vErrors = [err158]; + vErrors = [err164]; } else { - vErrors.push(err158); + vErrors.push(err164); } errors++; } @@ -2816,129 +2906,129 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r for (let i11 = 0; i11 < len11; i11++) { let data70 = data69[i11]; if (typeof data70 !== "string") { - const err159 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i11, schemaPath: "#/definitions/httpErrorCode/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err165 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i11, schemaPath: "#/definitions/httpErrorCode/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err159]; + vErrors = [err165]; } else { - vErrors.push(err159); + vErrors.push(err165); } errors++; } if (!(data70 === "error" || data70 === "timeout" || data70 === "500" || data70 === "502" || data70 === "503" || data70 === "504" || data70 === "403" || data70 === "404" || data70 === "429" || data70 === "off")) { - const err160 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i11, schemaPath: "#/definitions/httpErrorCode/enum", keyword: "enum", params: { allowedValues: schema40.enum }, message: "must be equal to one of the allowed values" }; + const err166 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i11, schemaPath: "#/definitions/httpErrorCode/enum", keyword: "enum", params: { allowedValues: schema40.enum }, message: "must be equal to one of the allowed values" }; if (vErrors === null) { - vErrors = [err160]; + vErrors = [err166]; } else { - vErrors.push(err160); + vErrors.push(err166); } errors++; } } - const _errs234 = errors; + const _errs239 = errors; const len12 = data69.length; for (let i12 = 0; i12 < len12; i12++) { - const _errs235 = errors; + const _errs240 = errors; if ("off" !== data69[i12]) { - const err161 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i12, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/contains/const", keyword: "const", params: { allowedValue: "off" }, message: "must be equal to constant" }; + const err167 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i12, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/contains/const", keyword: "const", params: { allowedValue: "off" }, message: "must be equal to constant" }; if (vErrors === null) { - vErrors = [err161]; + vErrors = [err167]; } else { - vErrors.push(err161); + vErrors.push(err167); } errors++; } - var valid79 = _errs235 === errors; - if (valid79) { + var valid81 = _errs240 === errors; + if (valid81) { break; } } - if (!valid79) { - const err162 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/contains", keyword: "contains", params: { minContains: 1 }, message: "must contain at least 1 valid item(s)" }; + if (!valid81) { + const err168 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/contains", keyword: "contains", params: { minContains: 1 }, message: "must contain at least 1 valid item(s)" }; if (vErrors === null) { - vErrors = [err162]; + vErrors = [err168]; } else { - vErrors.push(err162); + vErrors.push(err168); } errors++; } else { - errors = _errs234; + errors = _errs239; if (vErrors !== null) { - if (_errs234) { - vErrors.length = _errs234; + if (_errs239) { + vErrors.length = _errs239; } else { vErrors = null; } } } } else { - const err163 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err169 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err163]; + vErrors = [err169]; } else { - vErrors.push(err163); + vErrors.push(err169); } errors++; } - var _valid13 = _errs229 === errors; - if (_valid13) { - valid75 = true; - passing11 = 0; + var _valid14 = _errs234 === errors; + if (_valid14) { + valid77 = true; + passing12 = 0; } - const _errs236 = errors; - const _errs238 = errors; - const _errs239 = errors; + const _errs241 = errors; + const _errs243 = errors; + const _errs244 = errors; if (Array.isArray(data69)) { - const _errs240 = errors; + const _errs245 = errors; const len13 = data69.length; for (let i13 = 0; i13 < len13; i13++) { - const _errs241 = errors; + const _errs246 = errors; if ("off" !== data69[i13]) { - const err164 = {}; + const err170 = {}; if (vErrors === null) { - vErrors = [err164]; + vErrors = [err170]; } else { - vErrors.push(err164); + vErrors.push(err170); } errors++; } - var valid81 = _errs241 === errors; - if (valid81) { + var valid83 = _errs246 === errors; + if (valid83) { break; } } - if (!valid81) { - const err165 = {}; + if (!valid83) { + const err171 = {}; if (vErrors === null) { - vErrors = [err165]; + vErrors = [err171]; } else { - vErrors.push(err165); + vErrors.push(err171); } errors++; } else { - errors = _errs240; + errors = _errs245; if (vErrors !== null) { - if (_errs240) { - vErrors.length = _errs240; + if (_errs245) { + vErrors.length = _errs245; } else { vErrors = null; } } } } - var valid80 = _errs239 === errors; - if (valid80) { - const err166 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/1/not", keyword: "not", params: {}, message: "must NOT be valid" }; + var valid82 = _errs244 === errors; + if (valid82) { + const err172 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/1/not", keyword: "not", params: {}, message: "must NOT be valid" }; if (vErrors === null) { - vErrors = [err166]; + vErrors = [err172]; } else { - vErrors.push(err166); + vErrors.push(err172); } errors++; } else { - errors = _errs238; + errors = _errs243; if (vErrors !== null) { - if (_errs238) { - vErrors.length = _errs238; + if (_errs243) { + vErrors.length = _errs243; } else { vErrors = null; } @@ -2949,56 +3039,56 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r for (let i14 = 0; i14 < len14; i14++) { let data73 = data69[i14]; if (typeof data73 !== "string") { - const err167 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i14, schemaPath: "#/definitions/httpErrorCode/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err173 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i14, schemaPath: "#/definitions/httpErrorCode/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err167]; + vErrors = [err173]; } else { - vErrors.push(err167); + vErrors.push(err173); } errors++; } if (!(data73 === "error" || data73 === "timeout" || data73 === "500" || data73 === "502" || data73 === "503" || data73 === "504" || data73 === "403" || data73 === "404" || data73 === "429" || data73 === "off")) { - const err168 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i14, schemaPath: "#/definitions/httpErrorCode/enum", keyword: "enum", params: { allowedValues: schema40.enum }, message: "must be equal to one of the allowed values" }; + const err174 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases/" + i14, schemaPath: "#/definitions/httpErrorCode/enum", keyword: "enum", params: { allowedValues: schema40.enum }, message: "must be equal to one of the allowed values" }; if (vErrors === null) { - vErrors = [err168]; + vErrors = [err174]; } else { - vErrors.push(err168); + vErrors.push(err174); } errors++; } } } else { - const err169 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/1/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err175 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf/1/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err169]; + vErrors = [err175]; } else { - vErrors.push(err169); + vErrors.push(err175); } errors++; } - var _valid13 = _errs236 === errors; - if (_valid13 && valid75) { - valid75 = false; - passing11 = [passing11, 1]; + var _valid14 = _errs241 === errors; + if (_valid14 && valid77) { + valid77 = false; + passing12 = [passing12, 1]; } else { - if (_valid13) { - valid75 = true; - passing11 = 1; + if (_valid14) { + valid77 = true; + passing12 = 1; } } - if (!valid75) { - const err170 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf", keyword: "oneOf", params: { passingSchemas: passing11 }, message: "must match exactly one schema in oneOf" }; + if (!valid77) { + const err176 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_cases", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_cases/oneOf", keyword: "oneOf", params: { passingSchemas: passing12 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err170]; + vErrors = [err176]; } else { - vErrors.push(err170); + vErrors.push(err176); } errors++; } else { - errors = _errs228; + errors = _errs233; if (vErrors !== null) { - if (_errs228) { - vErrors.length = _errs228; + if (_errs233) { + vErrors.length = _errs233; } else { vErrors = null; } @@ -3008,21 +3098,21 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data67.next_timeout !== void 0) { let data74 = data67.next_timeout; if (!(typeof data74 == "number" && (!(data74 % 1) && !isNaN(data74)))) { - const err171 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_timeout/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + const err177 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_timeout/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err171]; + vErrors = [err177]; } else { - vErrors.push(err171); + vErrors.push(err177); } errors++; } if (typeof data74 == "number") { if (data74 < 0 || isNaN(data74)) { - const err172 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_timeout/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; + const err178 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_timeout/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; if (vErrors === null) { - vErrors = [err172]; + vErrors = [err178]; } else { - vErrors.push(err172); + vErrors.push(err178); } errors++; } @@ -3031,21 +3121,21 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data67.next_tries !== void 0) { let data75 = data67.next_tries; if (!(typeof data75 == "number" && (!(data75 % 1) && !isNaN(data75)))) { - const err173 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_tries", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_tries/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + const err179 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_tries", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_tries/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err173]; + vErrors = [err179]; } else { - vErrors.push(err173); + vErrors.push(err179); } errors++; } if (typeof data75 == "number") { if (data75 < 0 || isNaN(data75)) { - const err174 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_tries", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_tries/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; + const err180 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/next_tries", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/next_tries/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; if (vErrors === null) { - vErrors = [err174]; + vErrors = [err180]; } else { - vErrors.push(err174); + vErrors.push(err180); } errors++; } @@ -3054,30 +3144,30 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data67.read_timeout !== void 0) { let data76 = data67.read_timeout; if (!(typeof data76 == "number" && (!(data76 % 1) && !isNaN(data76)))) { - const err175 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/read_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/read_timeout/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + const err181 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/read_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/read_timeout/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err175]; + vErrors = [err181]; } else { - vErrors.push(err175); + vErrors.push(err181); } errors++; } if (typeof data76 == "number") { if (data76 > 6e4 || isNaN(data76)) { - const err176 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/read_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/read_timeout/maximum", keyword: "maximum", params: { comparison: "<=", limit: 6e4 }, message: "must be <= 60000" }; + const err182 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/read_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/read_timeout/maximum", keyword: "maximum", params: { comparison: "<=", limit: 6e4 }, message: "must be <= 60000" }; if (vErrors === null) { - vErrors = [err176]; + vErrors = [err182]; } else { - vErrors.push(err176); + vErrors.push(err182); } errors++; } if (data76 < 0 || isNaN(data76)) { - const err177 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/read_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/read_timeout/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; + const err183 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/read_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/read_timeout/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; if (vErrors === null) { - vErrors = [err177]; + vErrors = [err183]; } else { - vErrors.push(err177); + vErrors.push(err183); } errors++; } @@ -3086,41 +3176,41 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data67.send_timeout !== void 0) { let data77 = data67.send_timeout; if (!(typeof data77 == "number" && (!(data77 % 1) && !isNaN(data77)))) { - const err178 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/send_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/send_timeout/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + const err184 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/send_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/send_timeout/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err178]; + vErrors = [err184]; } else { - vErrors.push(err178); + vErrors.push(err184); } errors++; } if (typeof data77 == "number") { if (data77 > 6e4 || isNaN(data77)) { - const err179 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/send_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/send_timeout/maximum", keyword: "maximum", params: { comparison: "<=", limit: 6e4 }, message: "must be <= 60000" }; + const err185 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/send_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/send_timeout/maximum", keyword: "maximum", params: { comparison: "<=", limit: 6e4 }, message: "must be <= 60000" }; if (vErrors === null) { - vErrors = [err179]; + vErrors = [err185]; } else { - vErrors.push(err179); + vErrors.push(err185); } errors++; } if (data77 < 0 || isNaN(data77)) { - const err180 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/send_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/send_timeout/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; + const err186 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options/send_timeout", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/properties/send_timeout/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }; if (vErrors === null) { - vErrors = [err180]; + vErrors = [err186]; } else { - vErrors.push(err180); + vErrors.push(err186); } errors++; } } } } else { - const err181 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err187 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/http_options", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/http_options/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err181]; + vErrors = [err187]; } else { - vErrors.push(err181); + vErrors.push(err187); } errors++; } @@ -3128,30 +3218,30 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data63.port !== void 0) { let data78 = data63.port; if (!(typeof data78 == "number" && (!(data78 % 1) && !isNaN(data78)))) { - const err182 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/port", schemaPath: "#/definitions/portNumber/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; + const err188 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/port", schemaPath: "#/definitions/portNumber/type", keyword: "type", params: { type: "integer" }, message: "must be integer" }; if (vErrors === null) { - vErrors = [err182]; + vErrors = [err188]; } else { - vErrors.push(err182); + vErrors.push(err188); } errors++; } if (typeof data78 == "number") { if (data78 > 65535 || isNaN(data78)) { - const err183 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/port", schemaPath: "#/definitions/portNumber/maximum", keyword: "maximum", params: { comparison: "<=", limit: 65535 }, message: "must be <= 65535" }; + const err189 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/port", schemaPath: "#/definitions/portNumber/maximum", keyword: "maximum", params: { comparison: "<=", limit: 65535 }, message: "must be <= 65535" }; if (vErrors === null) { - vErrors = [err183]; + vErrors = [err189]; } else { - vErrors.push(err183); + vErrors.push(err189); } errors++; } if (data78 < 1 || isNaN(data78)) { - const err184 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/port", schemaPath: "#/definitions/portNumber/minimum", keyword: "minimum", params: { comparison: ">=", limit: 1 }, message: "must be >= 1" }; + const err190 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/port", schemaPath: "#/definitions/portNumber/minimum", keyword: "minimum", params: { comparison: ">=", limit: 1 }, message: "must be >= 1" }; if (vErrors === null) { - vErrors = [err184]; + vErrors = [err190]; } else { - vErrors.push(err184); + vErrors.push(err190); } errors++; } @@ -3160,20 +3250,20 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data63.proto !== void 0) { let data79 = data63.proto; if (typeof data79 !== "string") { - const err185 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/proto", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/proto/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err191 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/proto", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/proto/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err185]; + vErrors = [err191]; } else { - vErrors.push(err185); + vErrors.push(err191); } errors++; } if (!(data79 === "TCP" || data79 === "UDP" || data79 === "tcp" || data79 === "udp")) { - const err186 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/proto", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/proto/enum", keyword: "enum", params: { allowedValues: schema28.properties.services.additionalProperties.properties.expose.oneOf[0].items.properties.proto.enum }, message: "must be equal to one of the allowed values" }; + const err192 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/proto", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/proto/enum", keyword: "enum", params: { allowedValues: schema28.properties.services.additionalProperties.properties.expose.oneOf[0].items.properties.proto.enum }, message: "must be equal to one of the allowed values" }; if (vErrors === null) { - vErrors = [err186]; + vErrors = [err192]; } else { - vErrors.push(err186); + vErrors.push(err192); } errors++; } @@ -3184,40 +3274,40 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r const len15 = data80.length; for (let i15 = 0; i15 < len15; i15++) { let data81 = data80[i15]; - const _errs264 = errors; - let valid90 = true; - const _errs265 = errors; + const _errs269 = errors; + let valid92 = true; + const _errs270 = errors; if (data81 && typeof data81 == "object" && !Array.isArray(data81)) { let missing2; if (data81.ip === void 0 && (missing2 = "ip")) { - const err187 = {}; + const err193 = {}; if (vErrors === null) { - vErrors = [err187]; + vErrors = [err193]; } else { - vErrors.push(err187); + vErrors.push(err193); } errors++; } else { if (data81.ip !== void 0) { let data82 = data81.ip; - const _errs266 = errors; - if (errors === _errs266) { + const _errs271 = errors; + if (errors === _errs271) { if (typeof data82 === "string") { if (func2(data82) < 1) { - const err188 = {}; + const err194 = {}; if (vErrors === null) { - vErrors = [err188]; + vErrors = [err194]; } else { - vErrors.push(err188); + vErrors.push(err194); } errors++; } } else { - const err189 = {}; + const err195 = {}; if (vErrors === null) { - vErrors = [err189]; + vErrors = [err195]; } else { - vErrors.push(err189); + vErrors.push(err195); } errors++; } @@ -3225,70 +3315,70 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r } } } - var _valid14 = _errs265 === errors; - errors = _errs264; + var _valid15 = _errs270 === errors; + errors = _errs269; if (vErrors !== null) { - if (_errs264) { - vErrors.length = _errs264; + if (_errs269) { + vErrors.length = _errs269; } else { vErrors = null; } } - if (_valid14) { - const _errs268 = errors; + if (_valid15) { + const _errs273 = errors; if (data81 && typeof data81 == "object" && !Array.isArray(data81)) { if (data81.global === void 0) { - const err190 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/definitions/exposeToWithIpEnforcesGlobal/then/required", keyword: "required", params: { missingProperty: "global" }, message: "must have required property 'global'" }; + const err196 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/definitions/exposeToWithIpEnforcesGlobal/then/required", keyword: "required", params: { missingProperty: "global" }, message: "must have required property 'global'" }; if (vErrors === null) { - vErrors = [err190]; + vErrors = [err196]; } else { - vErrors.push(err190); + vErrors.push(err196); } errors++; } if (data81.global !== void 0) { if (true !== data81.global) { - const err191 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/global", schemaPath: "#/definitions/exposeToWithIpEnforcesGlobal/then/properties/global/const", keyword: "const", params: { allowedValue: true }, message: "must be equal to constant" }; + const err197 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/global", schemaPath: "#/definitions/exposeToWithIpEnforcesGlobal/then/properties/global/const", keyword: "const", params: { allowedValue: true }, message: "must be equal to constant" }; if (vErrors === null) { - vErrors = [err191]; + vErrors = [err197]; } else { - vErrors.push(err191); + vErrors.push(err197); } errors++; } } } - var _valid14 = _errs268 === errors; - valid90 = _valid14; + var _valid15 = _errs273 === errors; + valid92 = _valid15; } - if (!valid90) { - const err192 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/definitions/exposeToWithIpEnforcesGlobal/if", keyword: "if", params: { failingKeyword: "then" }, message: 'must match "then" schema' }; + if (!valid92) { + const err198 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/definitions/exposeToWithIpEnforcesGlobal/if", keyword: "if", params: { failingKeyword: "then" }, message: 'must match "then" schema' }; if (vErrors === null) { - vErrors = [err192]; + vErrors = [err198]; } else { - vErrors.push(err192); + vErrors.push(err198); } errors++; } if (data81 && typeof data81 == "object" && !Array.isArray(data81)) { - for (const key28 in data81) { - if (!(key28 === "global" || key28 === "ip" || key28 === "service")) { - const err193 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key28 }, message: "must NOT have additional properties" }; + for (const key29 in data81) { + if (!(key29 === "global" || key29 === "ip" || key29 === "service")) { + const err199 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key29 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err193]; + vErrors = [err199]; } else { - vErrors.push(err193); + vErrors.push(err199); } errors++; } } if (data81.global !== void 0) { if (typeof data81.global !== "boolean") { - const err194 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/global", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/global/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" }; + const err200 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/global", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/global/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" }; if (vErrors === null) { - vErrors = [err194]; + vErrors = [err200]; } else { - vErrors.push(err194); + vErrors.push(err200); } errors++; } @@ -3297,112 +3387,112 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data85 = data81.ip; if (typeof data85 === "string") { if (func2(data85) < 1) { - const err195 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/ip", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/ip/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; + const err201 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/ip", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/ip/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; if (vErrors === null) { - vErrors = [err195]; + vErrors = [err201]; } else { - vErrors.push(err195); + vErrors.push(err201); } errors++; } } else { - const err196 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/ip", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/ip/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err202 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/ip", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/ip/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err196]; + vErrors = [err202]; } else { - vErrors.push(err196); + vErrors.push(err202); } errors++; } } if (data81.service !== void 0) { if (typeof data81.service !== "string") { - const err197 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/service", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/service/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err203 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15 + "/service", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/properties/service/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err197]; + vErrors = [err203]; } else { - vErrors.push(err197); + vErrors.push(err203); } errors++; } } } else { - const err198 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err204 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to/" + i15, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err198]; + vErrors = [err204]; } else { - vErrors.push(err198); + vErrors.push(err204); } errors++; } } } else { - const err199 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err205 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9 + "/to", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/properties/to/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err199]; + vErrors = [err205]; } else { - vErrors.push(err199); + vErrors.push(err205); } errors++; } } } else { - const err200 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err206 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose/" + i9, schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err200]; + vErrors = [err206]; } else { - vErrors.push(err200); + vErrors.push(err206); } errors++; } } } else { - const err201 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err207 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/0/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err201]; + vErrors = [err207]; } else { - vErrors.push(err201); + vErrors.push(err207); } errors++; } - var _valid12 = _errs210 === errors; - if (_valid12) { - valid67 = true; - passing10 = 0; + var _valid13 = _errs215 === errors; + if (_valid13) { + valid69 = true; + passing11 = 0; } - const _errs277 = errors; + const _errs282 = errors; if (data62 !== null) { - const err202 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; + const err208 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf/1/type", keyword: "type", params: { type: "null" }, message: "must be null" }; if (vErrors === null) { - vErrors = [err202]; + vErrors = [err208]; } else { - vErrors.push(err202); + vErrors.push(err208); } errors++; } - var _valid12 = _errs277 === errors; - if (_valid12 && valid67) { - valid67 = false; - passing10 = [passing10, 1]; + var _valid13 = _errs282 === errors; + if (_valid13 && valid69) { + valid69 = false; + passing11 = [passing11, 1]; } else { - if (_valid12) { - valid67 = true; - passing10 = 1; + if (_valid13) { + valid69 = true; + passing11 = 1; } } - if (!valid67) { - const err203 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf", keyword: "oneOf", params: { passingSchemas: passing10 }, message: "must match exactly one schema in oneOf" }; + if (!valid69) { + const err209 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/expose", schemaPath: "#/properties/services/additionalProperties/properties/expose/oneOf", keyword: "oneOf", params: { passingSchemas: passing11 }, message: "must match exactly one schema in oneOf" }; if (vErrors === null) { - vErrors = [err203]; + vErrors = [err209]; } else { - vErrors.push(err203); + vErrors.push(err209); } errors++; } else { - errors = _errs209; + errors = _errs214; if (vErrors !== null) { - if (_errs209) { - vErrors.length = _errs209; + if (_errs214) { + vErrors.length = _errs214; } else { vErrors = null; } @@ -3413,20 +3503,20 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data87 = data47.image; if (typeof data87 === "string") { if (func2(data87) < 1) { - const err204 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/image", schemaPath: "#/properties/services/additionalProperties/properties/image/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; + const err210 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/image", schemaPath: "#/properties/services/additionalProperties/properties/image/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; if (vErrors === null) { - vErrors = [err204]; + vErrors = [err210]; } else { - vErrors.push(err204); + vErrors.push(err210); } errors++; } } else { - const err205 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/image", schemaPath: "#/properties/services/additionalProperties/properties/image/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err211 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/image", schemaPath: "#/properties/services/additionalProperties/properties/image/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err205]; + vErrors = [err211]; } else { - vErrors.push(err205); + vErrors.push(err211); } errors++; } @@ -3434,13 +3524,13 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data47.params !== void 0) { let data88 = data47.params; if (data88 && typeof data88 == "object" && !Array.isArray(data88)) { - for (const key29 in data88) { - if (!(key29 === "storage" || key29 === "permissions")) { - const err206 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params", schemaPath: "#/properties/services/additionalProperties/properties/params/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key29 }, message: "must NOT have additional properties" }; + for (const key30 in data88) { + if (!(key30 === "storage" || key30 === "permissions")) { + const err212 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params", schemaPath: "#/properties/services/additionalProperties/properties/params/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key30 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err206]; + vErrors = [err212]; } else { - vErrors.push(err206); + vErrors.push(err212); } errors++; } @@ -3448,16 +3538,16 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data88.storage !== void 0) { let data89 = data88.storage; if (data89 && typeof data89 == "object" && !Array.isArray(data89)) { - for (const key30 in data89) { - let data90 = data89[key30]; + for (const key31 in data89) { + let data90 = data89[key31]; if (data90 && typeof data90 == "object" && !Array.isArray(data90)) { - for (const key31 in data90) { - if (!(key31 === "mount" || key31 === "readOnly")) { - const err207 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key31 }, message: "must NOT have additional properties" }; + for (const key32 in data90) { + if (!(key32 === "mount" || key32 === "readOnly")) { + const err213 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key31.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key32 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err207]; + vErrors = [err213]; } else { - vErrors.push(err207); + vErrors.push(err213); } errors++; } @@ -3466,60 +3556,60 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data91 = data90.mount; if (typeof data91 === "string") { if (func2(data91) < 1) { - const err208 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1") + "/mount", schemaPath: "#/definitions/absolutePath/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; + const err214 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key31.replace(/~/g, "~0").replace(/\//g, "~1") + "/mount", schemaPath: "#/definitions/absolutePath/minLength", keyword: "minLength", params: { limit: 1 }, message: "must NOT have fewer than 1 characters" }; if (vErrors === null) { - vErrors = [err208]; + vErrors = [err214]; } else { - vErrors.push(err208); + vErrors.push(err214); } errors++; } if (!pattern11.test(data91)) { - const err209 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1") + "/mount", schemaPath: "#/definitions/absolutePath/pattern", keyword: "pattern", params: { pattern: "^/" }, message: 'must match pattern "^/"' }; + const err215 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key31.replace(/~/g, "~0").replace(/\//g, "~1") + "/mount", schemaPath: "#/definitions/absolutePath/pattern", keyword: "pattern", params: { pattern: "^/" }, message: 'must match pattern "^/"' }; if (vErrors === null) { - vErrors = [err209]; + vErrors = [err215]; } else { - vErrors.push(err209); + vErrors.push(err215); } errors++; } } else { - const err210 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1") + "/mount", schemaPath: "#/definitions/absolutePath/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err216 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key31.replace(/~/g, "~0").replace(/\//g, "~1") + "/mount", schemaPath: "#/definitions/absolutePath/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err210]; + vErrors = [err216]; } else { - vErrors.push(err210); + vErrors.push(err216); } errors++; } } if (data90.readOnly !== void 0) { if (typeof data90.readOnly !== "boolean") { - const err211 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1") + "/readOnly", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/additionalProperties/properties/readOnly/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" }; + const err217 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key31.replace(/~/g, "~0").replace(/\//g, "~1") + "/readOnly", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/additionalProperties/properties/readOnly/type", keyword: "type", params: { type: "boolean" }, message: "must be boolean" }; if (vErrors === null) { - vErrors = [err211]; + vErrors = [err217]; } else { - vErrors.push(err211); + vErrors.push(err217); } errors++; } } } else { - const err212 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key30.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err218 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage/" + key31.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err212]; + vErrors = [err218]; } else { - vErrors.push(err212); + vErrors.push(err218); } errors++; } } } else { - const err213 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err219 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/storage", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/storage/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err213]; + vErrors = [err219]; } else { - vErrors.push(err213); + vErrors.push(err219); } errors++; } @@ -3527,13 +3617,13 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data88.permissions !== void 0) { let data93 = data88.permissions; if (data93 && typeof data93 == "object" && !Array.isArray(data93)) { - for (const key32 in data93) { - if (!(key32 === "read")) { - const err214 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key32 }, message: "must NOT have additional properties" }; + for (const key33 in data93) { + if (!(key33 === "read")) { + const err220 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key33 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err214]; + vErrors = [err220]; } else { - vErrors.push(err214); + vErrors.push(err220); } errors++; } @@ -3545,70 +3635,70 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r for (let i16 = 0; i16 < len16; i16++) { let data95 = data94[i16]; if (typeof data95 !== "string") { - const err215 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions/read/" + i16, schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/properties/read/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err221 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions/read/" + i16, schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/properties/read/items/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err215]; + vErrors = [err221]; } else { - vErrors.push(err215); + vErrors.push(err221); } errors++; } if (!(data95 === "deployment" || data95 === "logs" || data95 === "events")) { - const err216 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions/read/" + i16, schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/properties/read/items/enum", keyword: "enum", params: { allowedValues: schema28.properties.services.additionalProperties.properties.params.properties.permissions.properties.read.items.enum }, message: "must be equal to one of the allowed values" }; + const err222 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions/read/" + i16, schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/properties/read/items/enum", keyword: "enum", params: { allowedValues: schema28.properties.services.additionalProperties.properties.params.properties.permissions.properties.read.items.enum }, message: "must be equal to one of the allowed values" }; if (vErrors === null) { - vErrors = [err216]; + vErrors = [err222]; } else { - vErrors.push(err216); + vErrors.push(err222); } errors++; } } } else { - const err217 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions/read", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/properties/read/type", keyword: "type", params: { type: "array" }, message: "must be array" }; + const err223 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions/read", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/properties/read/type", keyword: "type", params: { type: "array" }, message: "must be array" }; if (vErrors === null) { - vErrors = [err217]; + vErrors = [err223]; } else { - vErrors.push(err217); + vErrors.push(err223); } errors++; } } } else { - const err218 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err224 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params/permissions", schemaPath: "#/properties/services/additionalProperties/properties/params/properties/permissions/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err218]; + vErrors = [err224]; } else { - vErrors.push(err218); + vErrors.push(err224); } errors++; } } } else { - const err219 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1") + "/params", schemaPath: "#/properties/services/additionalProperties/properties/params/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err225 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1") + "/params", schemaPath: "#/properties/services/additionalProperties/properties/params/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err219]; + vErrors = [err225]; } else { - vErrors.push(err219); + vErrors.push(err225); } errors++; } } } else { - const err220 = { instancePath: instancePath + "/services/" + key22.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err226 = { instancePath: instancePath + "/services/" + key23.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/services/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err220]; + vErrors = [err226]; } else { - vErrors.push(err220); + vErrors.push(err226); } errors++; } } } else { - const err221 = { instancePath: instancePath + "/services", schemaPath: "#/properties/services/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err227 = { instancePath: instancePath + "/services", schemaPath: "#/properties/services/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err221]; + vErrors = [err227]; } else { - vErrors.push(err221); + vErrors.push(err227); } errors++; } @@ -3617,21 +3707,21 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data96 = data.reclamation; if (data96 && typeof data96 == "object" && !Array.isArray(data96)) { if (data96.min_window === void 0) { - const err222 = { instancePath: instancePath + "/reclamation", schemaPath: "#/properties/reclamation/required", keyword: "required", params: { missingProperty: "min_window" }, message: "must have required property 'min_window'" }; + const err228 = { instancePath: instancePath + "/reclamation", schemaPath: "#/properties/reclamation/required", keyword: "required", params: { missingProperty: "min_window" }, message: "must have required property 'min_window'" }; if (vErrors === null) { - vErrors = [err222]; + vErrors = [err228]; } else { - vErrors.push(err222); + vErrors.push(err228); } errors++; } - for (const key33 in data96) { - if (!(key33 === "min_window")) { - const err223 = { instancePath: instancePath + "/reclamation", schemaPath: "#/properties/reclamation/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key33 }, message: "must NOT have additional properties" }; + for (const key34 in data96) { + if (!(key34 === "min_window")) { + const err229 = { instancePath: instancePath + "/reclamation", schemaPath: "#/properties/reclamation/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key34 }, message: "must NOT have additional properties" }; if (vErrors === null) { - vErrors = [err223]; + vErrors = [err229]; } else { - vErrors.push(err223); + vErrors.push(err229); } errors++; } @@ -3640,30 +3730,30 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r let data97 = data96.min_window; if (typeof data97 === "string") { if (!pattern12.test(data97)) { - const err224 = { instancePath: instancePath + "/reclamation/min_window", schemaPath: "#/properties/reclamation/properties/min_window/pattern", keyword: "pattern", params: { pattern: "^[1-9][0-9]*(s|m|h)$" }, message: 'must match pattern "^[1-9][0-9]*(s|m|h)$"' }; + const err230 = { instancePath: instancePath + "/reclamation/min_window", schemaPath: "#/properties/reclamation/properties/min_window/pattern", keyword: "pattern", params: { pattern: "^[1-9][0-9]*(s|m|h)$" }, message: 'must match pattern "^[1-9][0-9]*(s|m|h)$"' }; if (vErrors === null) { - vErrors = [err224]; + vErrors = [err230]; } else { - vErrors.push(err224); + vErrors.push(err230); } errors++; } } else { - const err225 = { instancePath: instancePath + "/reclamation/min_window", schemaPath: "#/properties/reclamation/properties/min_window/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err231 = { instancePath: instancePath + "/reclamation/min_window", schemaPath: "#/properties/reclamation/properties/min_window/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err225]; + vErrors = [err231]; } else { - vErrors.push(err225); + vErrors.push(err231); } errors++; } } } else { - const err226 = { instancePath: instancePath + "/reclamation", schemaPath: "#/properties/reclamation/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err232 = { instancePath: instancePath + "/reclamation", schemaPath: "#/properties/reclamation/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err226]; + vErrors = [err232]; } else { - vErrors.push(err226); + vErrors.push(err232); } errors++; } @@ -3671,30 +3761,30 @@ function validate27(data, { instancePath = "", parentData, parentDataProperty, r if (data.version !== void 0) { let data98 = data.version; if (typeof data98 !== "string") { - const err227 = { instancePath: instancePath + "/version", schemaPath: "#/properties/version/type", keyword: "type", params: { type: "string" }, message: "must be string" }; + const err233 = { instancePath: instancePath + "/version", schemaPath: "#/properties/version/type", keyword: "type", params: { type: "string" }, message: "must be string" }; if (vErrors === null) { - vErrors = [err227]; + vErrors = [err233]; } else { - vErrors.push(err227); + vErrors.push(err233); } errors++; } if (!(data98 === "2.0" || data98 === "2.1")) { - const err228 = { instancePath: instancePath + "/version", schemaPath: "#/properties/version/enum", keyword: "enum", params: { allowedValues: schema28.properties.version.enum }, message: "must be equal to one of the allowed values" }; + const err234 = { instancePath: instancePath + "/version", schemaPath: "#/properties/version/enum", keyword: "enum", params: { allowedValues: schema28.properties.version.enum }, message: "must be equal to one of the allowed values" }; if (vErrors === null) { - vErrors = [err228]; + vErrors = [err234]; } else { - vErrors.push(err228); + vErrors.push(err234); } errors++; } } } else { - const err229 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }; + const err235 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }; if (vErrors === null) { - vErrors = [err229]; + vErrors = [err235]; } else { - vErrors.push(err229); + vErrors.push(err235); } errors++; } From c860be83e61292282f3bad91e22bb962d7d3d3ea Mon Sep 17 00:00:00 2001 From: zblocker64 Date: Tue, 16 Jun 2026 11:39:17 -0500 Subject: [PATCH 09/10] style(ts): sort imports in generateManifest after AKT-492 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Autofix from `eslint --fix` — the AKT-492 commit added the `resolveInterconnectGroup` import out of alphabetical order in the manifestUtils.ts destructured import block. CI runs `eslint src` (scoped) and this was the only error in scope. No behavior change. --- ts/src/sdl/manifest/generateManifest.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ts/src/sdl/manifest/generateManifest.ts b/ts/src/sdl/manifest/generateManifest.ts index f33d7263..5eccaf17 100644 --- a/ts/src/sdl/manifest/generateManifest.ts +++ b/ts/src/sdl/manifest/generateManifest.ts @@ -26,9 +26,9 @@ import { parseMemoryBytes, parseServiceProto, parseStorageBytes, + resolveInterconnectGroup, type SDLCompute, type SDLService, - resolveInterconnectGroup, transformGpuAttributes, } from "./manifestUtils.ts"; import { minWindowToDuration } from "./reclamationDuration.ts"; From 1d633ac3378a305b27a21e370a1e3ae33990d5e5 Mon Sep 17 00:00:00 2001 From: zblocker64 Date: Fri, 19 Jun 2026 10:38:51 -0500 Subject: [PATCH 10/10] refactor(sdl): lowercase v2ResourceGPU.interconnectGroup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Field was uppercase (InterconnectGroup) only by convention with sibling fields, but the rest of the API design already made it package-internal — the struct is unexported (v2ResourceGPU), and yaml:"-" json:"-" tags excluded it from every serialization path. Per Artur's review (chain-sdk PR #315): lowercase is the more honest choice. All four call sites (gpu.UnmarshalYAML, v2.validateInterconnect, groupBuilder_v2.go, groupBuilder_v2_1.go) are inside the sdl package already, so the rename is internal-only with no API impact. The constants (GPUAttributeInterconnectGroup, InterconnectGroupAuto) and the off-chain Service.InterconnectGroup field stay uppercase — they're exported by intent. Tests still pass (sdl 91/91, parity 34/34). --- go/inventory/v1/node.pb.go | 5 +++-- go/sdl/gpu.go | 20 ++++++++++++-------- go/sdl/groupBuilder_v2.go | 12 ++++++------ go/sdl/groupBuilder_v2_1.go | 4 ++-- go/sdl/interconnect_gpu_test.go | 12 ++++++------ go/sdl/v2.go | 4 ++-- 6 files changed, 31 insertions(+), 26 deletions(-) diff --git a/go/inventory/v1/node.pb.go b/go/inventory/v1/node.pb.go index 8ad81fb5..993b0724 100644 --- a/go/inventory/v1/node.pb.go +++ b/go/inventory/v1/node.pb.go @@ -35,8 +35,9 @@ type NodeCapabilities struct { InterconnectResourceName string `protobuf:"bytes,2,opt,name=interconnect_resource_name,json=interconnectResourceName,proto3" json:"interconnect_resource_name,omitempty" yaml:"interconnect_resource_name,omitempty"` // GPU interconnect fabric type. "infiniband" or "roce". Internal / // informational — the SDL surface is fabric-agnostic; tenants only - // declare `interconnect: true`. Derived from - // /sys/class/infiniband//ports/1/link_layer on the host node. + // declare `interconnect: []` or `interconnect: { group: }`. + // Derived from /sys/class/infiniband//ports/1/link_layer on the + // host node. InterconnectFabric string `protobuf:"bytes,3,opt,name=interconnect_fabric,json=interconnectFabric,proto3" json:"interconnect_fabric,omitempty" yaml:"interconnect_fabric,omitempty"` // NCCL HCA device-name prefixes present on this node, one per distinct // family (e.g. ["mlx5"], or ["mlx5","bnxt_re"] on a mixed-vendor host). diff --git a/go/sdl/gpu.go b/go/sdl/gpu.go index 860dc0a3..af4e5756 100644 --- a/go/sdl/gpu.go +++ b/go/sdl/gpu.go @@ -58,14 +58,18 @@ type v2ResourceGPU struct { Units gpuQuantity `yaml:"units" json:"units"` Attributes v2GPUAttributes `yaml:"attributes,omitempty" json:"attributes,omitempty"` - // InterconnectGroup carries the parsed group name from + // interconnectGroup carries the parsed group name from // gpu.attributes.interconnect (the implicit `[]` form resolves to // the literal "auto", the explicit `{group: }` form carries // the tenant-chosen name). The same value is also present in // Attributes under the GPUAttributeInterconnectGroup key; this // field exists so the higher-level manifest builder can route it to // Service.InterconnectGroup without re-walking the slice. - InterconnectGroup string `yaml:"-" json:"-"` + // + // Lowercase (unexported) because v2ResourceGPU itself is unexported + // and this value never crosses a serialization boundary — it's a + // parse-time cache used inside the sdl package only. + interconnectGroup string } func (sdl *v2ResourceGPU) UnmarshalYAML(node *yaml.Node) error { @@ -87,14 +91,14 @@ func (sdl *v2ResourceGPU) UnmarshalYAML(node *yaml.Node) error { } // Lift the interconnect/group attribute value into the dedicated - // InterconnectGroup field for downstream manifest builders, but KEEP + // interconnectGroup field for downstream manifest builders, but KEEP // it in the attributes slice — the provider's bid engine consumes the // on-chain Resources.GPU.Attributes and needs the group key present // there to enforce per-group node separation during reservation. if len(res.Attributes) > 0 { for _, a := range res.Attributes { if a.Key == GPUAttributeInterconnectGroup { - res.InterconnectGroup = a.Value + res.interconnectGroup = a.Value break } } @@ -119,10 +123,10 @@ func (sdl *v2ResourceGPU) UnmarshalYAML(node *yaml.Node) error { // be classified as interconnect-enabled by downstream validation passes // and the provider's reservation logic, then rejected much later (or, // worse, treated as a misconfiguration). Reject up front. Since the - // group key is now the sole opt-in signal, checking InterconnectGroup + // group key is now the sole opt-in signal, checking interconnectGroup // alone covers both implicit and explicit forms. - if res.Units == 0 && res.InterconnectGroup != "" { - return fmt.Errorf("sdl: gpu.attributes.interconnect cannot be set when gpu.units == 0 (group=%q)", res.InterconnectGroup) + if res.Units == 0 && res.interconnectGroup != "" { + return fmt.Errorf("sdl: gpu.attributes.interconnect cannot be set when gpu.units == 0 (group=%q)", res.interconnectGroup) } *sdl = res @@ -204,7 +208,7 @@ func (sdl *v2GPUAttributes) UnmarshalYAML(node *yaml.Node) error { // separate boolean marker. The provider's bid engine reads this key // during reservation Adjust to enforce per-group node separation; the // parent v2ResourceGPU.UnmarshalYAML lifts the value into - // v2ResourceGPU.InterconnectGroup so the manifest builder can route it + // v2ResourceGPU.interconnectGroup so the manifest builder can route it // to Service.InterconnectGroup for the off-chain workload builder. if interconnectGroup != "" { res = append(res, types.Attribute{ diff --git a/go/sdl/groupBuilder_v2.go b/go/sdl/groupBuilder_v2.go index dfc9365a..4309bf0c 100644 --- a/go/sdl/groupBuilder_v2.go +++ b/go/sdl/groupBuilder_v2.go @@ -126,13 +126,13 @@ func (sdl *v2) buildGroups() error { Expose: expose, } - // CS-3: gpu.attributes.interconnect_group is captured by the - // GPU parser (see go/sdl/gpu.go) into the - // v2ResourceGPU.InterconnectGroup field. Surface it onto the - // off-chain manifest service so the provider can apply - // per-group pod anti-affinity at deploy time. + // gpu.attributes.interconnect's group is captured by the GPU + // parser (see go/sdl/gpu.go) into the v2ResourceGPU. + // interconnectGroup field. Surface it onto the off-chain + // manifest service so the provider can apply per-group pod + // anti-affinity at deploy time. if compute.Resources != nil && compute.Resources.GPU != nil { - msvc.InterconnectGroup = compute.Resources.GPU.InterconnectGroup + msvc.InterconnectGroup = compute.Resources.GPU.interconnectGroup } if svc.Params != nil { diff --git a/go/sdl/groupBuilder_v2_1.go b/go/sdl/groupBuilder_v2_1.go index 3eb25b3c..9d6b5dc9 100644 --- a/go/sdl/groupBuilder_v2_1.go +++ b/go/sdl/groupBuilder_v2_1.go @@ -136,9 +136,9 @@ func (sdl *v2_1) buildGroups() error { Expose: expose, } - // CS-3: see groupBuilder_v2.go for rationale. + // See groupBuilder_v2.go for rationale. if compute.Resources != nil && compute.Resources.GPU != nil { - msvc.InterconnectGroup = compute.Resources.GPU.InterconnectGroup + msvc.InterconnectGroup = compute.Resources.GPU.interconnectGroup } if svc.Params != nil { diff --git a/go/sdl/interconnect_gpu_test.go b/go/sdl/interconnect_gpu_test.go index 6b9d35b3..0451d363 100644 --- a/go/sdl/interconnect_gpu_test.go +++ b/go/sdl/interconnect_gpu_test.go @@ -9,7 +9,7 @@ import ( // AKT-492: `gpu.attributes.interconnect: []` parses as an implicit group // named `auto`, surfaced on Resources.GPU.Attributes and lifted to the -// off-chain v2ResourceGPU.InterconnectGroup field. No separate +// off-chain v2ResourceGPU.interconnectGroup field. No separate // `interconnect=true` marker is emitted — the group key alone is the // opt-in signal. func TestV2ResourceGPU_InterconnectImplicitAuto(t *testing.T) { @@ -23,7 +23,7 @@ attributes: var gpu v2ResourceGPU require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) - require.Equal(t, InterconnectGroupAuto, gpu.InterconnectGroup, + require.Equal(t, InterconnectGroupAuto, gpu.interconnectGroup, "implicit `interconnect: []` must lift to the literal `auto` group name") keys := map[string]string{} @@ -37,7 +37,7 @@ attributes: // AKT-492: `gpu.attributes.interconnect: { group: pair0 }` parses as an // explicit named group. The same string appears in the on-chain attribute // slice (under the new `interconnect/group` key) and the off-chain -// v2ResourceGPU.InterconnectGroup field. +// v2ResourceGPU.interconnectGroup field. func TestV2ResourceGPU_InterconnectExplicitGroup(t *testing.T) { yamlSrc := `units: 8 attributes: @@ -52,8 +52,8 @@ attributes: var gpu v2ResourceGPU require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) - require.Equal(t, "pair1", gpu.InterconnectGroup, - "v2ResourceGPU.InterconnectGroup must hold the explicit group value") + require.Equal(t, "pair1", gpu.interconnectGroup, + "v2ResourceGPU.interconnectGroup must hold the explicit group value") keys := map[string]string{} for _, a := range gpu.Attributes { @@ -76,7 +76,7 @@ attributes: var gpu v2ResourceGPU require.NoError(t, yaml.Unmarshal([]byte(yamlSrc), &gpu)) - require.Empty(t, gpu.InterconnectGroup) + require.Empty(t, gpu.interconnectGroup) for _, a := range gpu.Attributes { require.NotEqual(t, GPUAttributeInterconnectGroup, a.Key, "interconnect/group must not appear when SDL omits it") diff --git a/go/sdl/v2.go b/go/sdl/v2.go index 97f19140..1f185141 100644 --- a/go/sdl/v2.go +++ b/go/sdl/v2.go @@ -565,7 +565,7 @@ func (sdl *v2) validate() error { // GPU interconnect SDL grammar from v2 and must enforce the identical // rules. func validateInterconnect(profiles v2profiles, deployments v2Deployments) error { - // The parser sets gpu.InterconnectGroup to: + // The parser sets gpu.interconnectGroup to: // - "" if no opt-in // - InterconnectGroupAuto ("auto") for `interconnect: []` // - tenant-chosen name for `interconnect: { group: }` @@ -597,7 +597,7 @@ func validateInterconnect(profiles v2profiles, deployments v2Deployments) error // attribute is rejected at parse time. Treat as // non-interconnect here if the parser is bypassed. if gpu != nil && gpu.Units > 0 { - usage.group = gpu.InterconnectGroup + usage.group = gpu.interconnectGroup } pu, ok := usagesByPlacement[placementName]