diff --git a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go index 1ed923eae4..8250a6527f 100644 --- a/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/connect-go/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -533,12 +533,21 @@ func (x *FeatureFlagRouterExecutionConfigs) GetConfigByFeatureFlagName() map[str } type FeatureFlagRouterExecutionConfig struct { - state protoimpl.MessageState `protogen:"open.v1"` - EngineConfig *EngineConfiguration `protobuf:"bytes,1,opt,name=engine_config,json=engineConfig,proto3" json:"engine_config,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + EngineConfig *EngineConfiguration `protobuf:"bytes,1,opt,name=engine_config,json=engineConfig,proto3" json:"engine_config,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + // Optional traffic percentage in [0, 100] for percentage-based rollouts. + // When set, the flag is reachable only via the rollout selector and + // header/cookie pins targeting it are ignored. + // + // The `optional` is load-bearing: explicit `0` means a paused rollout (no + // traffic, but still part of the cumulative budget), which is distinct from + // unset (preview-only flag, header/cookie-pinned). Do not drop `optional` — + // proto3 presence is the only way to tell the two apart. + TrafficPercentage *uint32 `protobuf:"varint,4,opt,name=traffic_percentage,json=trafficPercentage,proto3,oneof" json:"traffic_percentage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FeatureFlagRouterExecutionConfig) Reset() { @@ -592,6 +601,13 @@ func (x *FeatureFlagRouterExecutionConfig) GetSubgraphs() []*Subgraph { return nil } +func (x *FeatureFlagRouterExecutionConfig) GetTrafficPercentage() uint32 { + if x != nil && x.TrafficPercentage != nil { + return *x.TrafficPercentage + } + return 0 +} + type RouterConfig struct { state protoimpl.MessageState `protogen:"open.v1"` EngineConfig *EngineConfiguration `protobuf:"bytes,1,opt,name=engine_config,json=engineConfig,proto3" json:"engine_config,omitempty"` @@ -5146,11 +5162,13 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x1bconfig_by_feature_flag_name\x18\x01 \x03(\v2P.wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntryR\x17configByFeatureFlagName\x1a~\n" + "\x1cConfigByFeatureFlagNameEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12H\n" + - "\x05value\x18\x02 \x01(\v22.wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigR\x05value:\x028\x01\"\xc2\x01\n" + + "\x05value\x18\x02 \x01(\v22.wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigR\x05value:\x028\x01\"\x8d\x02\n" + " FeatureFlagRouterExecutionConfig\x12J\n" + "\rengine_config\x18\x01 \x01(\v2%.wg.cosmo.node.v1.EngineConfigurationR\fengineConfig\x12\x18\n" + "\aversion\x18\x02 \x01(\tR\aversion\x128\n" + - "\tsubgraphs\x18\x03 \x03(\v2\x1a.wg.cosmo.node.v1.SubgraphR\tsubgraphs\"\xe8\x02\n" + + "\tsubgraphs\x18\x03 \x03(\v2\x1a.wg.cosmo.node.v1.SubgraphR\tsubgraphs\x122\n" + + "\x12traffic_percentage\x18\x04 \x01(\rH\x00R\x11trafficPercentage\x88\x01\x01B\x15\n" + + "\x13_traffic_percentage\"\xe8\x02\n" + "\fRouterConfig\x12J\n" + "\rengine_config\x18\x01 \x01(\v2%.wg.cosmo.node.v1.EngineConfigurationR\fengineConfig\x12\x18\n" + "\aversion\x18\x02 \x01(\tR\aversion\x128\n" + @@ -5805,6 +5823,7 @@ func file_wg_cosmo_node_v1_node_proto_init() { if File_wg_cosmo_node_v1_node_proto != nil { return } + file_wg_cosmo_node_v1_node_proto_msgTypes[2].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[3].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{} diff --git a/connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go b/connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go index d966cc345a..60fc40c127 100644 --- a/connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go +++ b/connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go @@ -796,7 +796,7 @@ func (x GetOperationsResponse_OperationType) Number() protoreflect.EnumNumber { // Deprecated: Use GetOperationsResponse_OperationType.Descriptor instead. func (GetOperationsResponse_OperationType) EnumDescriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{421, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{426, 0} } type Label struct { @@ -26163,8 +26163,13 @@ type Proposal struct { LatestCheckSuccess bool `protobuf:"varint,9,opt,name=latestCheckSuccess,proto3" json:"latestCheckSuccess,omitempty"` LatestCheckId string `protobuf:"bytes,10,opt,name=latestCheckId,proto3" json:"latestCheckId,omitempty"` Origin ProposalOrigin `protobuf:"varint,11,opt,name=origin,proto3,enum=wg.cosmo.platform.v1.ProposalOrigin" json:"origin,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Set when a proposal has been deployed as a rollout. Points back to the + // feature flag created by BulkUpdateProposalRolloutPercentages. + RolloutFeatureFlagId *string `protobuf:"bytes,13,opt,name=rolloutFeatureFlagId,proto3,oneof" json:"rolloutFeatureFlagId,omitempty"` + // Current traffic % of the linked rollout (mirrors feature_flags.traffic_percentage). + RolloutPercentage *uint32 `protobuf:"varint,14,opt,name=rolloutPercentage,proto3,oneof" json:"rolloutPercentage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Proposal) Reset() { @@ -26274,6 +26279,20 @@ func (x *Proposal) GetOrigin() ProposalOrigin { return ProposalOrigin_INTERNAL } +func (x *Proposal) GetRolloutFeatureFlagId() string { + if x != nil && x.RolloutFeatureFlagId != nil { + return *x.RolloutFeatureFlagId + } + return "" +} + +func (x *Proposal) GetRolloutPercentage() uint32 { + if x != nil && x.RolloutPercentage != nil { + return *x.RolloutPercentage + } + return 0 +} + type ProposalSubgraph struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -26350,6 +26369,254 @@ func (x *ProposalSubgraph) GetLabels() []*Label { return nil } +// Atomic create-or-update of rollout percentages across one or more proposals +// on the same federated graph. For proposals without a linked rollout flag, +// the handler creates feature subgraphs + a feature flag and links them +// (deploy semantics). For proposals already rolled out, only the percentage +// is updated. +// +// Why bulk: the router falls all unpinned traffic back to base when cumulative +// traffic_percentage > 100 (router/core/feature_flag_rollout.go), so adjusting +// one branch in isolation can silently break sibling rollouts. Doing all +// changes in one call gives atomic budget enforcement and collapses N +// composeAndDeployGraphs invocations into a single composition + CDN push +// (one router config reload, not N). +type BulkUpdateProposalRolloutPercentagesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Items []*BulkUpdateProposalRolloutPercentagesRequest_Item `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BulkUpdateProposalRolloutPercentagesRequest) Reset() { + *x = BulkUpdateProposalRolloutPercentagesRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[404] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BulkUpdateProposalRolloutPercentagesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkUpdateProposalRolloutPercentagesRequest) ProtoMessage() {} + +func (x *BulkUpdateProposalRolloutPercentagesRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[404] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkUpdateProposalRolloutPercentagesRequest.ProtoReflect.Descriptor instead. +func (*BulkUpdateProposalRolloutPercentagesRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{404} +} + +func (x *BulkUpdateProposalRolloutPercentagesRequest) GetItems() []*BulkUpdateProposalRolloutPercentagesRequest_Item { + if x != nil { + return x.Items + } + return nil +} + +type BulkUpdateProposalRolloutPercentagesItemResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + ProposalId string `protobuf:"bytes,1,opt,name=proposalId,proto3" json:"proposalId,omitempty"` + Percentage uint32 `protobuf:"varint,2,opt,name=percentage,proto3" json:"percentage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BulkUpdateProposalRolloutPercentagesItemResult) Reset() { + *x = BulkUpdateProposalRolloutPercentagesItemResult{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[405] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BulkUpdateProposalRolloutPercentagesItemResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkUpdateProposalRolloutPercentagesItemResult) ProtoMessage() {} + +func (x *BulkUpdateProposalRolloutPercentagesItemResult) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[405] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkUpdateProposalRolloutPercentagesItemResult.ProtoReflect.Descriptor instead. +func (*BulkUpdateProposalRolloutPercentagesItemResult) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{405} +} + +func (x *BulkUpdateProposalRolloutPercentagesItemResult) GetProposalId() string { + if x != nil { + return x.ProposalId + } + return "" +} + +func (x *BulkUpdateProposalRolloutPercentagesItemResult) GetPercentage() uint32 { + if x != nil { + return x.Percentage + } + return 0 +} + +type BulkUpdateProposalRolloutPercentagesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + Items []*BulkUpdateProposalRolloutPercentagesItemResult `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BulkUpdateProposalRolloutPercentagesResponse) Reset() { + *x = BulkUpdateProposalRolloutPercentagesResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[406] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BulkUpdateProposalRolloutPercentagesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkUpdateProposalRolloutPercentagesResponse) ProtoMessage() {} + +func (x *BulkUpdateProposalRolloutPercentagesResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[406] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkUpdateProposalRolloutPercentagesResponse.ProtoReflect.Descriptor instead. +func (*BulkUpdateProposalRolloutPercentagesResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{406} +} + +func (x *BulkUpdateProposalRolloutPercentagesResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *BulkUpdateProposalRolloutPercentagesResponse) GetItems() []*BulkUpdateProposalRolloutPercentagesItemResult { + if x != nil { + return x.Items + } + return nil +} + +type TeardownProposalRolloutRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ProposalId string `protobuf:"bytes,1,opt,name=proposalId,proto3" json:"proposalId,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TeardownProposalRolloutRequest) Reset() { + *x = TeardownProposalRolloutRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[407] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TeardownProposalRolloutRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TeardownProposalRolloutRequest) ProtoMessage() {} + +func (x *TeardownProposalRolloutRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[407] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TeardownProposalRolloutRequest.ProtoReflect.Descriptor instead. +func (*TeardownProposalRolloutRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{407} +} + +func (x *TeardownProposalRolloutRequest) GetProposalId() string { + if x != nil { + return x.ProposalId + } + return "" +} + +type TeardownProposalRolloutResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TeardownProposalRolloutResponse) Reset() { + *x = TeardownProposalRolloutResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[408] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TeardownProposalRolloutResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TeardownProposalRolloutResponse) ProtoMessage() {} + +func (x *TeardownProposalRolloutResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[408] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TeardownProposalRolloutResponse.ProtoReflect.Descriptor instead. +func (*TeardownProposalRolloutResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{408} +} + +func (x *TeardownProposalRolloutResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + type CreateProposalRequest struct { state protoimpl.MessageState `protogen:"open.v1"` FederatedGraphName string `protobuf:"bytes,1,opt,name=federatedGraphName,proto3" json:"federatedGraphName,omitempty"` @@ -26364,7 +26631,7 @@ type CreateProposalRequest struct { func (x *CreateProposalRequest) Reset() { *x = CreateProposalRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[404] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[409] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26376,7 +26643,7 @@ func (x *CreateProposalRequest) String() string { func (*CreateProposalRequest) ProtoMessage() {} func (x *CreateProposalRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[404] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[409] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26389,7 +26656,7 @@ func (x *CreateProposalRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProposalRequest.ProtoReflect.Descriptor instead. func (*CreateProposalRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{404} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{409} } func (x *CreateProposalRequest) GetFederatedGraphName() string { @@ -26465,7 +26732,7 @@ type CreateProposalResponse struct { func (x *CreateProposalResponse) Reset() { *x = CreateProposalResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[405] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[410] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26477,7 +26744,7 @@ func (x *CreateProposalResponse) String() string { func (*CreateProposalResponse) ProtoMessage() {} func (x *CreateProposalResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[405] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[410] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26490,7 +26757,7 @@ func (x *CreateProposalResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateProposalResponse.ProtoReflect.Descriptor instead. func (*CreateProposalResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{405} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{410} } func (x *CreateProposalResponse) GetResponse() *Response { @@ -26649,7 +26916,7 @@ type GetProposalRequest struct { func (x *GetProposalRequest) Reset() { *x = GetProposalRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[406] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[411] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26661,7 +26928,7 @@ func (x *GetProposalRequest) String() string { func (*GetProposalRequest) ProtoMessage() {} func (x *GetProposalRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[406] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[411] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26674,7 +26941,7 @@ func (x *GetProposalRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProposalRequest.ProtoReflect.Descriptor instead. func (*GetProposalRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{406} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{411} } func (x *GetProposalRequest) GetProposalId() string { @@ -26695,7 +26962,7 @@ type GetProposalResponse struct { func (x *GetProposalResponse) Reset() { *x = GetProposalResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[407] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[412] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26707,7 +26974,7 @@ func (x *GetProposalResponse) String() string { func (*GetProposalResponse) ProtoMessage() {} func (x *GetProposalResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[407] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[412] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26720,7 +26987,7 @@ func (x *GetProposalResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProposalResponse.ProtoReflect.Descriptor instead. func (*GetProposalResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{407} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{412} } func (x *GetProposalResponse) GetResponse() *Response { @@ -26758,7 +27025,7 @@ type GetProposalsByFederatedGraphRequest struct { func (x *GetProposalsByFederatedGraphRequest) Reset() { *x = GetProposalsByFederatedGraphRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[408] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[413] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26770,7 +27037,7 @@ func (x *GetProposalsByFederatedGraphRequest) String() string { func (*GetProposalsByFederatedGraphRequest) ProtoMessage() {} func (x *GetProposalsByFederatedGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[408] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[413] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26783,7 +27050,7 @@ func (x *GetProposalsByFederatedGraphRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use GetProposalsByFederatedGraphRequest.ProtoReflect.Descriptor instead. func (*GetProposalsByFederatedGraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{408} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{413} } func (x *GetProposalsByFederatedGraphRequest) GetFederatedGraphName() string { @@ -26839,7 +27106,7 @@ type GetProposalsByFederatedGraphResponse struct { func (x *GetProposalsByFederatedGraphResponse) Reset() { *x = GetProposalsByFederatedGraphResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[409] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[414] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26851,7 +27118,7 @@ func (x *GetProposalsByFederatedGraphResponse) String() string { func (*GetProposalsByFederatedGraphResponse) ProtoMessage() {} func (x *GetProposalsByFederatedGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[409] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[414] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26864,7 +27131,7 @@ func (x *GetProposalsByFederatedGraphResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use GetProposalsByFederatedGraphResponse.ProtoReflect.Descriptor instead. func (*GetProposalsByFederatedGraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{409} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{414} } func (x *GetProposalsByFederatedGraphResponse) GetResponse() *Response { @@ -26901,7 +27168,7 @@ type GetProposalChecksRequest struct { func (x *GetProposalChecksRequest) Reset() { *x = GetProposalChecksRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[410] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[415] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26913,7 +27180,7 @@ func (x *GetProposalChecksRequest) String() string { func (*GetProposalChecksRequest) ProtoMessage() {} func (x *GetProposalChecksRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[410] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[415] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26926,7 +27193,7 @@ func (x *GetProposalChecksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProposalChecksRequest.ProtoReflect.Descriptor instead. func (*GetProposalChecksRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{410} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{415} } func (x *GetProposalChecksRequest) GetProposalId() string { @@ -26975,7 +27242,7 @@ type GetProposalChecksResponse struct { func (x *GetProposalChecksResponse) Reset() { *x = GetProposalChecksResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[411] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[416] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26987,7 +27254,7 @@ func (x *GetProposalChecksResponse) String() string { func (*GetProposalChecksResponse) ProtoMessage() {} func (x *GetProposalChecksResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[411] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[416] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27000,7 +27267,7 @@ func (x *GetProposalChecksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProposalChecksResponse.ProtoReflect.Descriptor instead. func (*GetProposalChecksResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{411} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{416} } func (x *GetProposalChecksResponse) GetResponse() *Response { @@ -27040,7 +27307,7 @@ type UpdateProposalRequest struct { func (x *UpdateProposalRequest) Reset() { *x = UpdateProposalRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[412] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[417] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27052,7 +27319,7 @@ func (x *UpdateProposalRequest) String() string { func (*UpdateProposalRequest) ProtoMessage() {} func (x *UpdateProposalRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[412] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[417] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27065,7 +27332,7 @@ func (x *UpdateProposalRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProposalRequest.ProtoReflect.Descriptor instead. func (*UpdateProposalRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{412} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{417} } func (x *UpdateProposalRequest) GetProposalName() string { @@ -27158,7 +27425,7 @@ type UpdateProposalResponse struct { func (x *UpdateProposalResponse) Reset() { *x = UpdateProposalResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[413] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[418] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27170,7 +27437,7 @@ func (x *UpdateProposalResponse) String() string { func (*UpdateProposalResponse) ProtoMessage() {} func (x *UpdateProposalResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[413] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[418] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27183,7 +27450,7 @@ func (x *UpdateProposalResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProposalResponse.ProtoReflect.Descriptor instead. func (*UpdateProposalResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{413} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{418} } func (x *UpdateProposalResponse) GetResponse() *Response { @@ -27322,7 +27589,7 @@ type EnableProposalsForNamespaceRequest struct { func (x *EnableProposalsForNamespaceRequest) Reset() { *x = EnableProposalsForNamespaceRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[414] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[419] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27334,7 +27601,7 @@ func (x *EnableProposalsForNamespaceRequest) String() string { func (*EnableProposalsForNamespaceRequest) ProtoMessage() {} func (x *EnableProposalsForNamespaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[414] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[419] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27347,7 +27614,7 @@ func (x *EnableProposalsForNamespaceRequest) ProtoReflect() protoreflect.Message // Deprecated: Use EnableProposalsForNamespaceRequest.ProtoReflect.Descriptor instead. func (*EnableProposalsForNamespaceRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{414} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{419} } func (x *EnableProposalsForNamespaceRequest) GetNamespace() string { @@ -27373,7 +27640,7 @@ type EnableProposalsForNamespaceResponse struct { func (x *EnableProposalsForNamespaceResponse) Reset() { *x = EnableProposalsForNamespaceResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[415] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[420] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27385,7 +27652,7 @@ func (x *EnableProposalsForNamespaceResponse) String() string { func (*EnableProposalsForNamespaceResponse) ProtoMessage() {} func (x *EnableProposalsForNamespaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[415] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[420] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27398,7 +27665,7 @@ func (x *EnableProposalsForNamespaceResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use EnableProposalsForNamespaceResponse.ProtoReflect.Descriptor instead. func (*EnableProposalsForNamespaceResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{415} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{420} } func (x *EnableProposalsForNamespaceResponse) GetResponse() *Response { @@ -27419,7 +27686,7 @@ type ConfigureNamespaceProposalConfigRequest struct { func (x *ConfigureNamespaceProposalConfigRequest) Reset() { *x = ConfigureNamespaceProposalConfigRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[416] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[421] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27431,7 +27698,7 @@ func (x *ConfigureNamespaceProposalConfigRequest) String() string { func (*ConfigureNamespaceProposalConfigRequest) ProtoMessage() {} func (x *ConfigureNamespaceProposalConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[416] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[421] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27444,7 +27711,7 @@ func (x *ConfigureNamespaceProposalConfigRequest) ProtoReflect() protoreflect.Me // Deprecated: Use ConfigureNamespaceProposalConfigRequest.ProtoReflect.Descriptor instead. func (*ConfigureNamespaceProposalConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{416} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{421} } func (x *ConfigureNamespaceProposalConfigRequest) GetNamespace() string { @@ -27477,7 +27744,7 @@ type ConfigureNamespaceProposalConfigResponse struct { func (x *ConfigureNamespaceProposalConfigResponse) Reset() { *x = ConfigureNamespaceProposalConfigResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[417] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[422] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27489,7 +27756,7 @@ func (x *ConfigureNamespaceProposalConfigResponse) String() string { func (*ConfigureNamespaceProposalConfigResponse) ProtoMessage() {} func (x *ConfigureNamespaceProposalConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[417] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[422] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27502,7 +27769,7 @@ func (x *ConfigureNamespaceProposalConfigResponse) ProtoReflect() protoreflect.M // Deprecated: Use ConfigureNamespaceProposalConfigResponse.ProtoReflect.Descriptor instead. func (*ConfigureNamespaceProposalConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{417} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{422} } func (x *ConfigureNamespaceProposalConfigResponse) GetResponse() *Response { @@ -27521,7 +27788,7 @@ type GetNamespaceProposalConfigRequest struct { func (x *GetNamespaceProposalConfigRequest) Reset() { *x = GetNamespaceProposalConfigRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[418] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[423] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27533,7 +27800,7 @@ func (x *GetNamespaceProposalConfigRequest) String() string { func (*GetNamespaceProposalConfigRequest) ProtoMessage() {} func (x *GetNamespaceProposalConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[418] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[423] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27546,7 +27813,7 @@ func (x *GetNamespaceProposalConfigRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetNamespaceProposalConfigRequest.ProtoReflect.Descriptor instead. func (*GetNamespaceProposalConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{418} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{423} } func (x *GetNamespaceProposalConfigRequest) GetNamespace() string { @@ -27568,7 +27835,7 @@ type GetNamespaceProposalConfigResponse struct { func (x *GetNamespaceProposalConfigResponse) Reset() { *x = GetNamespaceProposalConfigResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[419] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[424] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27580,7 +27847,7 @@ func (x *GetNamespaceProposalConfigResponse) String() string { func (*GetNamespaceProposalConfigResponse) ProtoMessage() {} func (x *GetNamespaceProposalConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[419] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[424] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27593,7 +27860,7 @@ func (x *GetNamespaceProposalConfigResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetNamespaceProposalConfigResponse.ProtoReflect.Descriptor instead. func (*GetNamespaceProposalConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{419} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{424} } func (x *GetNamespaceProposalConfigResponse) GetResponse() *Response { @@ -27646,7 +27913,7 @@ type GetOperationsRequest struct { func (x *GetOperationsRequest) Reset() { *x = GetOperationsRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[420] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[425] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27658,7 +27925,7 @@ func (x *GetOperationsRequest) String() string { func (*GetOperationsRequest) ProtoMessage() {} func (x *GetOperationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[420] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[425] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27671,7 +27938,7 @@ func (x *GetOperationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationsRequest.ProtoReflect.Descriptor instead. func (*GetOperationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{420} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{425} } func (x *GetOperationsRequest) GetFederatedGraphName() string { @@ -27783,7 +28050,7 @@ type GetOperationsResponse struct { func (x *GetOperationsResponse) Reset() { *x = GetOperationsResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[421] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[426] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27795,7 +28062,7 @@ func (x *GetOperationsResponse) String() string { func (*GetOperationsResponse) ProtoMessage() {} func (x *GetOperationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[421] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[426] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27808,7 +28075,7 @@ func (x *GetOperationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationsResponse.ProtoReflect.Descriptor instead. func (*GetOperationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{421} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{426} } func (x *GetOperationsResponse) GetResponse() *Response { @@ -27842,7 +28109,7 @@ type GetClientsFromAnalyticsRequest struct { func (x *GetClientsFromAnalyticsRequest) Reset() { *x = GetClientsFromAnalyticsRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[422] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[427] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27854,7 +28121,7 @@ func (x *GetClientsFromAnalyticsRequest) String() string { func (*GetClientsFromAnalyticsRequest) ProtoMessage() {} func (x *GetClientsFromAnalyticsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[422] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[427] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27867,7 +28134,7 @@ func (x *GetClientsFromAnalyticsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClientsFromAnalyticsRequest.ProtoReflect.Descriptor instead. func (*GetClientsFromAnalyticsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{422} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{427} } func (x *GetClientsFromAnalyticsRequest) GetFederatedGraphName() string { @@ -27894,7 +28161,7 @@ type GetClientsFromAnalyticsResponse struct { func (x *GetClientsFromAnalyticsResponse) Reset() { *x = GetClientsFromAnalyticsResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[423] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[428] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27906,7 +28173,7 @@ func (x *GetClientsFromAnalyticsResponse) String() string { func (*GetClientsFromAnalyticsResponse) ProtoMessage() {} func (x *GetClientsFromAnalyticsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[423] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[428] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27919,7 +28186,7 @@ func (x *GetClientsFromAnalyticsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClientsFromAnalyticsResponse.ProtoReflect.Descriptor instead. func (*GetClientsFromAnalyticsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{423} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{428} } func (x *GetClientsFromAnalyticsResponse) GetResponse() *Response { @@ -27950,7 +28217,7 @@ type GetOperationClientsRequest struct { func (x *GetOperationClientsRequest) Reset() { *x = GetOperationClientsRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[424] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[429] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27962,7 +28229,7 @@ func (x *GetOperationClientsRequest) String() string { func (*GetOperationClientsRequest) ProtoMessage() {} func (x *GetOperationClientsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[424] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[429] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27975,7 +28242,7 @@ func (x *GetOperationClientsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationClientsRequest.ProtoReflect.Descriptor instead. func (*GetOperationClientsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{424} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{429} } func (x *GetOperationClientsRequest) GetFederatedGraphName() string { @@ -28030,7 +28297,7 @@ type GetOperationClientsResponse struct { func (x *GetOperationClientsResponse) Reset() { *x = GetOperationClientsResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[425] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[430] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28042,7 +28309,7 @@ func (x *GetOperationClientsResponse) String() string { func (*GetOperationClientsResponse) ProtoMessage() {} func (x *GetOperationClientsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[425] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[430] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28055,7 +28322,7 @@ func (x *GetOperationClientsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationClientsResponse.ProtoReflect.Descriptor instead. func (*GetOperationClientsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{425} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{430} } func (x *GetOperationClientsResponse) GetResponse() *Response { @@ -28086,7 +28353,7 @@ type GetOperationDeprecatedFieldsRequest struct { func (x *GetOperationDeprecatedFieldsRequest) Reset() { *x = GetOperationDeprecatedFieldsRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[426] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[431] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28098,7 +28365,7 @@ func (x *GetOperationDeprecatedFieldsRequest) String() string { func (*GetOperationDeprecatedFieldsRequest) ProtoMessage() {} func (x *GetOperationDeprecatedFieldsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[426] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[431] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28111,7 +28378,7 @@ func (x *GetOperationDeprecatedFieldsRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use GetOperationDeprecatedFieldsRequest.ProtoReflect.Descriptor instead. func (*GetOperationDeprecatedFieldsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{426} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{431} } func (x *GetOperationDeprecatedFieldsRequest) GetFederatedGraphName() string { @@ -28166,7 +28433,7 @@ type GetOperationDeprecatedFieldsResponse struct { func (x *GetOperationDeprecatedFieldsResponse) Reset() { *x = GetOperationDeprecatedFieldsResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[427] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[432] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28178,7 +28445,7 @@ func (x *GetOperationDeprecatedFieldsResponse) String() string { func (*GetOperationDeprecatedFieldsResponse) ProtoMessage() {} func (x *GetOperationDeprecatedFieldsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[427] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[432] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28191,7 +28458,7 @@ func (x *GetOperationDeprecatedFieldsResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use GetOperationDeprecatedFieldsResponse.ProtoReflect.Descriptor instead. func (*GetOperationDeprecatedFieldsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{427} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{432} } func (x *GetOperationDeprecatedFieldsResponse) GetResponse() *Response { @@ -28219,7 +28486,7 @@ type ValidateAndFetchPluginDataRequest struct { func (x *ValidateAndFetchPluginDataRequest) Reset() { *x = ValidateAndFetchPluginDataRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[428] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[433] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28231,7 +28498,7 @@ func (x *ValidateAndFetchPluginDataRequest) String() string { func (*ValidateAndFetchPluginDataRequest) ProtoMessage() {} func (x *ValidateAndFetchPluginDataRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[428] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[433] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28244,7 +28511,7 @@ func (x *ValidateAndFetchPluginDataRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ValidateAndFetchPluginDataRequest.ProtoReflect.Descriptor instead. func (*ValidateAndFetchPluginDataRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{428} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{433} } func (x *ValidateAndFetchPluginDataRequest) GetName() string { @@ -28280,7 +28547,7 @@ type ValidateAndFetchPluginDataResponse struct { func (x *ValidateAndFetchPluginDataResponse) Reset() { *x = ValidateAndFetchPluginDataResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[429] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[434] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28292,7 +28559,7 @@ func (x *ValidateAndFetchPluginDataResponse) String() string { func (*ValidateAndFetchPluginDataResponse) ProtoMessage() {} func (x *ValidateAndFetchPluginDataResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[429] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[434] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28305,7 +28572,7 @@ func (x *ValidateAndFetchPluginDataResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ValidateAndFetchPluginDataResponse.ProtoReflect.Descriptor instead. func (*ValidateAndFetchPluginDataResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{429} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{434} } func (x *ValidateAndFetchPluginDataResponse) GetResponse() *Response { @@ -28348,7 +28615,7 @@ type LinkSubgraphRequest struct { func (x *LinkSubgraphRequest) Reset() { *x = LinkSubgraphRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[430] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[435] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28360,7 +28627,7 @@ func (x *LinkSubgraphRequest) String() string { func (*LinkSubgraphRequest) ProtoMessage() {} func (x *LinkSubgraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[430] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[435] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28373,7 +28640,7 @@ func (x *LinkSubgraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LinkSubgraphRequest.ProtoReflect.Descriptor instead. func (*LinkSubgraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{430} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{435} } func (x *LinkSubgraphRequest) GetSourceSubgraphName() string { @@ -28413,7 +28680,7 @@ type LinkSubgraphResponse struct { func (x *LinkSubgraphResponse) Reset() { *x = LinkSubgraphResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[431] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[436] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28425,7 +28692,7 @@ func (x *LinkSubgraphResponse) String() string { func (*LinkSubgraphResponse) ProtoMessage() {} func (x *LinkSubgraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[431] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[436] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28438,7 +28705,7 @@ func (x *LinkSubgraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LinkSubgraphResponse.ProtoReflect.Descriptor instead. func (*LinkSubgraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{431} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{436} } func (x *LinkSubgraphResponse) GetResponse() *Response { @@ -28458,7 +28725,7 @@ type UnlinkSubgraphRequest struct { func (x *UnlinkSubgraphRequest) Reset() { *x = UnlinkSubgraphRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[432] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[437] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28470,7 +28737,7 @@ func (x *UnlinkSubgraphRequest) String() string { func (*UnlinkSubgraphRequest) ProtoMessage() {} func (x *UnlinkSubgraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[432] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[437] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28483,7 +28750,7 @@ func (x *UnlinkSubgraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UnlinkSubgraphRequest.ProtoReflect.Descriptor instead. func (*UnlinkSubgraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{432} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{437} } func (x *UnlinkSubgraphRequest) GetSourceSubgraphName() string { @@ -28509,7 +28776,7 @@ type UnlinkSubgraphResponse struct { func (x *UnlinkSubgraphResponse) Reset() { *x = UnlinkSubgraphResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[433] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[438] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28521,7 +28788,7 @@ func (x *UnlinkSubgraphResponse) String() string { func (*UnlinkSubgraphResponse) ProtoMessage() {} func (x *UnlinkSubgraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[433] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[438] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28534,7 +28801,7 @@ func (x *UnlinkSubgraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UnlinkSubgraphResponse.ProtoReflect.Descriptor instead. func (*UnlinkSubgraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{433} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{438} } func (x *UnlinkSubgraphResponse) GetResponse() *Response { @@ -28553,7 +28820,7 @@ type VerifyAPIKeyGraphAccessRequest struct { func (x *VerifyAPIKeyGraphAccessRequest) Reset() { *x = VerifyAPIKeyGraphAccessRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[434] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[439] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28565,7 +28832,7 @@ func (x *VerifyAPIKeyGraphAccessRequest) String() string { func (*VerifyAPIKeyGraphAccessRequest) ProtoMessage() {} func (x *VerifyAPIKeyGraphAccessRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[434] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[439] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28578,7 +28845,7 @@ func (x *VerifyAPIKeyGraphAccessRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyAPIKeyGraphAccessRequest.ProtoReflect.Descriptor instead. func (*VerifyAPIKeyGraphAccessRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{434} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{439} } func (x *VerifyAPIKeyGraphAccessRequest) GetFederatedGraphId() string { @@ -28599,7 +28866,7 @@ type VerifyAPIKeyGraphAccessResponse struct { func (x *VerifyAPIKeyGraphAccessResponse) Reset() { *x = VerifyAPIKeyGraphAccessResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[435] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[440] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28611,7 +28878,7 @@ func (x *VerifyAPIKeyGraphAccessResponse) String() string { func (*VerifyAPIKeyGraphAccessResponse) ProtoMessage() {} func (x *VerifyAPIKeyGraphAccessResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[435] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[440] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28624,7 +28891,7 @@ func (x *VerifyAPIKeyGraphAccessResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyAPIKeyGraphAccessResponse.ProtoReflect.Descriptor instead. func (*VerifyAPIKeyGraphAccessResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{435} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{440} } func (x *VerifyAPIKeyGraphAccessResponse) GetResponse() *Response { @@ -28657,7 +28924,7 @@ type InitializeCosmoUserRequest struct { func (x *InitializeCosmoUserRequest) Reset() { *x = InitializeCosmoUserRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[436] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[441] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28669,7 +28936,7 @@ func (x *InitializeCosmoUserRequest) String() string { func (*InitializeCosmoUserRequest) ProtoMessage() {} func (x *InitializeCosmoUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[436] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[441] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28682,7 +28949,7 @@ func (x *InitializeCosmoUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InitializeCosmoUserRequest.ProtoReflect.Descriptor instead. func (*InitializeCosmoUserRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{436} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{441} } func (x *InitializeCosmoUserRequest) GetToken() string { @@ -28701,7 +28968,7 @@ type InitializeCosmoUserResponse struct { func (x *InitializeCosmoUserResponse) Reset() { *x = InitializeCosmoUserResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[437] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[442] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28713,7 +28980,7 @@ func (x *InitializeCosmoUserResponse) String() string { func (*InitializeCosmoUserResponse) ProtoMessage() {} func (x *InitializeCosmoUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[437] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[442] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28726,7 +28993,7 @@ func (x *InitializeCosmoUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InitializeCosmoUserResponse.ProtoReflect.Descriptor instead. func (*InitializeCosmoUserResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{437} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{442} } func (x *InitializeCosmoUserResponse) GetResponse() *Response { @@ -28744,7 +29011,7 @@ type ListOrganizationsRequest struct { func (x *ListOrganizationsRequest) Reset() { *x = ListOrganizationsRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[438] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[443] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28756,7 +29023,7 @@ func (x *ListOrganizationsRequest) String() string { func (*ListOrganizationsRequest) ProtoMessage() {} func (x *ListOrganizationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[438] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[443] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28769,7 +29036,7 @@ func (x *ListOrganizationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrganizationsRequest.ProtoReflect.Descriptor instead. func (*ListOrganizationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{438} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{443} } type ListOrganizationsResponse struct { @@ -28782,7 +29049,7 @@ type ListOrganizationsResponse struct { func (x *ListOrganizationsResponse) Reset() { *x = ListOrganizationsResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[439] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[444] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28794,7 +29061,7 @@ func (x *ListOrganizationsResponse) String() string { func (*ListOrganizationsResponse) ProtoMessage() {} func (x *ListOrganizationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[439] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[444] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28807,7 +29074,7 @@ func (x *ListOrganizationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrganizationsResponse.ProtoReflect.Descriptor instead. func (*ListOrganizationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{439} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{444} } func (x *ListOrganizationsResponse) GetResponse() *Response { @@ -28837,7 +29104,7 @@ type RecomposeGraphRequest struct { func (x *RecomposeGraphRequest) Reset() { *x = RecomposeGraphRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[440] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[445] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28849,7 +29116,7 @@ func (x *RecomposeGraphRequest) String() string { func (*RecomposeGraphRequest) ProtoMessage() {} func (x *RecomposeGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[440] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[445] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28862,7 +29129,7 @@ func (x *RecomposeGraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RecomposeGraphRequest.ProtoReflect.Descriptor instead. func (*RecomposeGraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{440} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{445} } func (x *RecomposeGraphRequest) GetName() string { @@ -28913,7 +29180,7 @@ type RecomposeGraphResponse struct { func (x *RecomposeGraphResponse) Reset() { *x = RecomposeGraphResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[441] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[446] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28925,7 +29192,7 @@ func (x *RecomposeGraphResponse) String() string { func (*RecomposeGraphResponse) ProtoMessage() {} func (x *RecomposeGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[441] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[446] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28938,7 +29205,7 @@ func (x *RecomposeGraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RecomposeGraphResponse.ProtoReflect.Descriptor instead. func (*RecomposeGraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{441} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{446} } func (x *RecomposeGraphResponse) GetResponse() *Response { @@ -28986,7 +29253,7 @@ type Subgraph_PluginData struct { func (x *Subgraph_PluginData) Reset() { *x = Subgraph_PluginData{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[442] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[447] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28998,7 +29265,7 @@ func (x *Subgraph_PluginData) String() string { func (*Subgraph_PluginData) ProtoMessage() {} func (x *Subgraph_PluginData) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[442] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[447] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29039,7 +29306,7 @@ type GetSubgraphByNameResponse_LinkedSubgraph struct { func (x *GetSubgraphByNameResponse_LinkedSubgraph) Reset() { *x = GetSubgraphByNameResponse_LinkedSubgraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[443] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[448] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29051,7 +29318,7 @@ func (x *GetSubgraphByNameResponse_LinkedSubgraph) String() string { func (*GetSubgraphByNameResponse_LinkedSubgraph) ProtoMessage() {} func (x *GetSubgraphByNameResponse_LinkedSubgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[443] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[448] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29099,7 +29366,7 @@ type SchemaCheck_GhDetails struct { func (x *SchemaCheck_GhDetails) Reset() { *x = SchemaCheck_GhDetails{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[444] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[449] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29111,7 +29378,7 @@ func (x *SchemaCheck_GhDetails) String() string { func (*SchemaCheck_GhDetails) ProtoMessage() {} func (x *SchemaCheck_GhDetails) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[444] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[449] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29164,7 +29431,7 @@ type SchemaCheck_CheckedSubgraph struct { func (x *SchemaCheck_CheckedSubgraph) Reset() { *x = SchemaCheck_CheckedSubgraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[445] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[450] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29176,7 +29443,7 @@ func (x *SchemaCheck_CheckedSubgraph) String() string { func (*SchemaCheck_CheckedSubgraph) ProtoMessage() {} func (x *SchemaCheck_CheckedSubgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[445] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[450] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29252,7 +29519,7 @@ type SchemaCheck_LinkedCheck struct { func (x *SchemaCheck_LinkedCheck) Reset() { *x = SchemaCheck_LinkedCheck{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[446] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[451] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29264,7 +29531,7 @@ func (x *SchemaCheck_LinkedCheck) String() string { func (*SchemaCheck_LinkedCheck) ProtoMessage() {} func (x *SchemaCheck_LinkedCheck) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[446] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[451] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29367,7 +29634,7 @@ type GetCheckSummaryResponse_AffectedGraph struct { func (x *GetCheckSummaryResponse_AffectedGraph) Reset() { *x = GetCheckSummaryResponse_AffectedGraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[447] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[452] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29379,7 +29646,7 @@ func (x *GetCheckSummaryResponse_AffectedGraph) String() string { func (*GetCheckSummaryResponse_AffectedGraph) ProtoMessage() {} func (x *GetCheckSummaryResponse_AffectedGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[447] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[452] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29469,7 +29736,7 @@ type GetCheckSummaryResponse_ProposalSchemaMatch struct { func (x *GetCheckSummaryResponse_ProposalSchemaMatch) Reset() { *x = GetCheckSummaryResponse_ProposalSchemaMatch{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[448] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[453] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29481,7 +29748,7 @@ func (x *GetCheckSummaryResponse_ProposalSchemaMatch) String() string { func (*GetCheckSummaryResponse_ProposalSchemaMatch) ProtoMessage() {} func (x *GetCheckSummaryResponse_ProposalSchemaMatch) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[448] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[453] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29534,7 +29801,7 @@ type GetCheckOperationsResponse_CheckOperation struct { func (x *GetCheckOperationsResponse_CheckOperation) Reset() { *x = GetCheckOperationsResponse_CheckOperation{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[449] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[454] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29546,7 +29813,7 @@ func (x *GetCheckOperationsResponse_CheckOperation) String() string { func (*GetCheckOperationsResponse_CheckOperation) ProtoMessage() {} func (x *GetCheckOperationsResponse_CheckOperation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[449] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[454] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29629,7 +29896,7 @@ type GetOrganizationGroupMembersResponse_GroupMember struct { func (x *GetOrganizationGroupMembersResponse_GroupMember) Reset() { *x = GetOrganizationGroupMembersResponse_GroupMember{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[451] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[456] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29641,7 +29908,7 @@ func (x *GetOrganizationGroupMembersResponse_GroupMember) String() string { func (*GetOrganizationGroupMembersResponse_GroupMember) ProtoMessage() {} func (x *GetOrganizationGroupMembersResponse_GroupMember) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[451] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[456] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29689,7 +29956,7 @@ type GetOrganizationGroupMembersResponse_GroupApiKey struct { func (x *GetOrganizationGroupMembersResponse_GroupApiKey) Reset() { *x = GetOrganizationGroupMembersResponse_GroupApiKey{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[452] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[457] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29701,7 +29968,7 @@ func (x *GetOrganizationGroupMembersResponse_GroupApiKey) String() string { func (*GetOrganizationGroupMembersResponse_GroupApiKey) ProtoMessage() {} func (x *GetOrganizationGroupMembersResponse_GroupApiKey) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[452] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[457] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29749,7 +30016,7 @@ type UpdateOrganizationGroupRequest_GroupRule struct { func (x *UpdateOrganizationGroupRequest_GroupRule) Reset() { *x = UpdateOrganizationGroupRequest_GroupRule{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[453] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[458] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29761,7 +30028,7 @@ func (x *UpdateOrganizationGroupRequest_GroupRule) String() string { func (*UpdateOrganizationGroupRequest_GroupRule) ProtoMessage() {} func (x *UpdateOrganizationGroupRequest_GroupRule) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[453] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[458] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29808,7 +30075,7 @@ type OrgMember_Group struct { func (x *OrgMember_Group) Reset() { *x = OrgMember_Group{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[454] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[459] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29820,7 +30087,7 @@ func (x *OrgMember_Group) String() string { func (*OrgMember_Group) ProtoMessage() {} func (x *OrgMember_Group) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[454] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[459] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29860,7 +30127,7 @@ type APIKey_Group struct { func (x *APIKey_Group) Reset() { *x = APIKey_Group{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[455] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[460] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29872,7 +30139,7 @@ func (x *APIKey_Group) String() string { func (*APIKey_Group) ProtoMessage() {} func (x *APIKey_Group) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[455] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[460] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29914,7 +30181,7 @@ type DeletePersistedOperationResponse_Operation struct { func (x *DeletePersistedOperationResponse_Operation) Reset() { *x = DeletePersistedOperationResponse_Operation{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[457] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[462] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29926,7 +30193,7 @@ func (x *DeletePersistedOperationResponse_Operation) String() string { func (*DeletePersistedOperationResponse_Operation) ProtoMessage() {} func (x *DeletePersistedOperationResponse_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[457] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[462] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29983,7 +30250,7 @@ type CheckPersistedOperationTrafficResponse_Operation struct { func (x *CheckPersistedOperationTrafficResponse_Operation) Reset() { *x = CheckPersistedOperationTrafficResponse_Operation{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[458] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[463] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29995,7 +30262,7 @@ func (x *CheckPersistedOperationTrafficResponse_Operation) String() string { func (*CheckPersistedOperationTrafficResponse_Operation) ProtoMessage() {} func (x *CheckPersistedOperationTrafficResponse_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[458] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[463] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30059,7 +30326,7 @@ type GetPersistedOperationsResponse_Operation struct { func (x *GetPersistedOperationsResponse_Operation) Reset() { *x = GetPersistedOperationsResponse_Operation{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[459] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[464] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30071,7 +30338,7 @@ func (x *GetPersistedOperationsResponse_Operation) String() string { func (*GetPersistedOperationsResponse_Operation) ProtoMessage() {} func (x *GetPersistedOperationsResponse_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[459] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[464] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30133,7 +30400,7 @@ type GetOrganizationWebhookConfigsResponse_Config struct { func (x *GetOrganizationWebhookConfigsResponse_Config) Reset() { *x = GetOrganizationWebhookConfigsResponse_Config{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[460] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[465] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30145,7 +30412,7 @@ func (x *GetOrganizationWebhookConfigsResponse_Config) String() string { func (*GetOrganizationWebhookConfigsResponse_Config) ProtoMessage() {} func (x *GetOrganizationWebhookConfigsResponse_Config) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[460] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[465] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30193,7 +30460,7 @@ type GetBillingPlansResponse_BillingPlanFeature struct { func (x *GetBillingPlansResponse_BillingPlanFeature) Reset() { *x = GetBillingPlansResponse_BillingPlanFeature{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[461] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[466] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30205,7 +30472,7 @@ func (x *GetBillingPlansResponse_BillingPlanFeature) String() string { func (*GetBillingPlansResponse_BillingPlanFeature) ProtoMessage() {} func (x *GetBillingPlansResponse_BillingPlanFeature) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[461] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[466] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30254,7 +30521,7 @@ type GetBillingPlansResponse_BillingPlan struct { func (x *GetBillingPlansResponse_BillingPlan) Reset() { *x = GetBillingPlansResponse_BillingPlan{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[462] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[467] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30266,7 +30533,7 @@ func (x *GetBillingPlansResponse_BillingPlan) String() string { func (*GetBillingPlansResponse_BillingPlan) ProtoMessage() {} func (x *GetBillingPlansResponse_BillingPlan) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[462] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[467] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30323,7 +30590,7 @@ type GetAllOverridesResponse_Override struct { func (x *GetAllOverridesResponse_Override) Reset() { *x = GetAllOverridesResponse_Override{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[463] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[468] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30335,7 +30602,7 @@ func (x *GetAllOverridesResponse_Override) String() string { func (*GetAllOverridesResponse_Override) ProtoMessage() {} func (x *GetAllOverridesResponse_Override) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[463] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[468] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30396,7 +30663,7 @@ type GetUserAccessibleResourcesResponse_Namespace struct { func (x *GetUserAccessibleResourcesResponse_Namespace) Reset() { *x = GetUserAccessibleResourcesResponse_Namespace{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[464] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[469] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30408,7 +30675,7 @@ func (x *GetUserAccessibleResourcesResponse_Namespace) String() string { func (*GetUserAccessibleResourcesResponse_Namespace) ProtoMessage() {} func (x *GetUserAccessibleResourcesResponse_Namespace) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[464] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[469] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30449,7 +30716,7 @@ type GetUserAccessibleResourcesResponse_FederatedGraph struct { func (x *GetUserAccessibleResourcesResponse_FederatedGraph) Reset() { *x = GetUserAccessibleResourcesResponse_FederatedGraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[465] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[470] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30461,7 +30728,7 @@ func (x *GetUserAccessibleResourcesResponse_FederatedGraph) String() string { func (*GetUserAccessibleResourcesResponse_FederatedGraph) ProtoMessage() {} func (x *GetUserAccessibleResourcesResponse_FederatedGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[465] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[470] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30510,7 +30777,7 @@ type GetUserAccessibleResourcesResponse_SubGraph struct { func (x *GetUserAccessibleResourcesResponse_SubGraph) Reset() { *x = GetUserAccessibleResourcesResponse_SubGraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[466] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[471] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30522,7 +30789,7 @@ func (x *GetUserAccessibleResourcesResponse_SubGraph) String() string { func (*GetUserAccessibleResourcesResponse_SubGraph) ProtoMessage() {} func (x *GetUserAccessibleResourcesResponse_SubGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[466] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[471] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30577,7 +30844,7 @@ type ClientWithOperations_Operation struct { func (x *ClientWithOperations_Operation) Reset() { *x = ClientWithOperations_Operation{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[467] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[472] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30589,7 +30856,7 @@ func (x *ClientWithOperations_Operation) String() string { func (*ClientWithOperations_Operation) ProtoMessage() {} func (x *ClientWithOperations_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[467] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[472] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30636,7 +30903,7 @@ type GetFeatureFlagByNameResponse_FfFederatedGraph struct { func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) Reset() { *x = GetFeatureFlagByNameResponse_FfFederatedGraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[468] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[473] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30648,7 +30915,7 @@ func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) String() string { func (*GetFeatureFlagByNameResponse_FfFederatedGraph) ProtoMessage() {} func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[468] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[473] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30678,6 +30945,58 @@ func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) GetIsConnected() bool { return false } +type BulkUpdateProposalRolloutPercentagesRequest_Item struct { + state protoimpl.MessageState `protogen:"open.v1"` + ProposalId string `protobuf:"bytes,1,opt,name=proposalId,proto3" json:"proposalId,omitempty"` + Percentage uint32 `protobuf:"varint,2,opt,name=percentage,proto3" json:"percentage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BulkUpdateProposalRolloutPercentagesRequest_Item) Reset() { + *x = BulkUpdateProposalRolloutPercentagesRequest_Item{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[474] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BulkUpdateProposalRolloutPercentagesRequest_Item) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkUpdateProposalRolloutPercentagesRequest_Item) ProtoMessage() {} + +func (x *BulkUpdateProposalRolloutPercentagesRequest_Item) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[474] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkUpdateProposalRolloutPercentagesRequest_Item.ProtoReflect.Descriptor instead. +func (*BulkUpdateProposalRolloutPercentagesRequest_Item) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{404, 0} +} + +func (x *BulkUpdateProposalRolloutPercentagesRequest_Item) GetProposalId() string { + if x != nil { + return x.ProposalId + } + return "" +} + +func (x *BulkUpdateProposalRolloutPercentagesRequest_Item) GetPercentage() uint32 { + if x != nil { + return x.Percentage + } + return 0 +} + type GetProposalResponse_CurrentSubgraph struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -30688,7 +31007,7 @@ type GetProposalResponse_CurrentSubgraph struct { func (x *GetProposalResponse_CurrentSubgraph) Reset() { *x = GetProposalResponse_CurrentSubgraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[469] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[475] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30700,7 +31019,7 @@ func (x *GetProposalResponse_CurrentSubgraph) String() string { func (*GetProposalResponse_CurrentSubgraph) ProtoMessage() {} func (x *GetProposalResponse_CurrentSubgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[469] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[475] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30713,7 +31032,7 @@ func (x *GetProposalResponse_CurrentSubgraph) ProtoReflect() protoreflect.Messag // Deprecated: Use GetProposalResponse_CurrentSubgraph.ProtoReflect.Descriptor instead. func (*GetProposalResponse_CurrentSubgraph) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{407, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{412, 0} } func (x *GetProposalResponse_CurrentSubgraph) GetName() string { @@ -30739,7 +31058,7 @@ type UpdateProposalRequest_UpdateProposalSubgraphs struct { func (x *UpdateProposalRequest_UpdateProposalSubgraphs) Reset() { *x = UpdateProposalRequest_UpdateProposalSubgraphs{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[470] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[476] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30751,7 +31070,7 @@ func (x *UpdateProposalRequest_UpdateProposalSubgraphs) String() string { func (*UpdateProposalRequest_UpdateProposalSubgraphs) ProtoMessage() {} func (x *UpdateProposalRequest_UpdateProposalSubgraphs) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[470] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[476] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30764,7 +31083,7 @@ func (x *UpdateProposalRequest_UpdateProposalSubgraphs) ProtoReflect() protorefl // Deprecated: Use UpdateProposalRequest_UpdateProposalSubgraphs.ProtoReflect.Descriptor instead. func (*UpdateProposalRequest_UpdateProposalSubgraphs) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{412, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{417, 0} } func (x *UpdateProposalRequest_UpdateProposalSubgraphs) GetSubgraphs() []*ProposalSubgraph { @@ -30793,7 +31112,7 @@ type GetOperationsResponse_Operation struct { func (x *GetOperationsResponse_Operation) Reset() { *x = GetOperationsResponse_Operation{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[471] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[477] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30805,7 +31124,7 @@ func (x *GetOperationsResponse_Operation) String() string { func (*GetOperationsResponse_Operation) ProtoMessage() {} func (x *GetOperationsResponse_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[471] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[477] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30818,7 +31137,7 @@ func (x *GetOperationsResponse_Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationsResponse_Operation.ProtoReflect.Descriptor instead. func (*GetOperationsResponse_Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{421, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{426, 0} } func (x *GetOperationsResponse_Operation) GetHash() string { @@ -30921,7 +31240,7 @@ type GetClientsFromAnalyticsResponse_Client struct { func (x *GetClientsFromAnalyticsResponse_Client) Reset() { *x = GetClientsFromAnalyticsResponse_Client{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[472] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[478] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30933,7 +31252,7 @@ func (x *GetClientsFromAnalyticsResponse_Client) String() string { func (*GetClientsFromAnalyticsResponse_Client) ProtoMessage() {} func (x *GetClientsFromAnalyticsResponse_Client) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[472] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[478] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30946,7 +31265,7 @@ func (x *GetClientsFromAnalyticsResponse_Client) ProtoReflect() protoreflect.Mes // Deprecated: Use GetClientsFromAnalyticsResponse_Client.ProtoReflect.Descriptor instead. func (*GetClientsFromAnalyticsResponse_Client) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{423, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{428, 0} } func (x *GetClientsFromAnalyticsResponse_Client) GetName() string { @@ -30968,7 +31287,7 @@ type GetOperationClientsResponse_Client struct { func (x *GetOperationClientsResponse_Client) Reset() { *x = GetOperationClientsResponse_Client{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[473] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[479] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30980,7 +31299,7 @@ func (x *GetOperationClientsResponse_Client) String() string { func (*GetOperationClientsResponse_Client) ProtoMessage() {} func (x *GetOperationClientsResponse_Client) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[473] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[479] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30993,7 +31312,7 @@ func (x *GetOperationClientsResponse_Client) ProtoReflect() protoreflect.Message // Deprecated: Use GetOperationClientsResponse_Client.ProtoReflect.Descriptor instead. func (*GetOperationClientsResponse_Client) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{425, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{430, 0} } func (x *GetOperationClientsResponse_Client) GetName() string { @@ -31036,7 +31355,7 @@ type GetOperationDeprecatedFieldsResponse_DeprecatedField struct { func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) Reset() { *x = GetOperationDeprecatedFieldsResponse_DeprecatedField{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[474] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[480] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31048,7 +31367,7 @@ func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) String() string { func (*GetOperationDeprecatedFieldsResponse_DeprecatedField) ProtoMessage() {} func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[474] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[480] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31061,7 +31380,7 @@ func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) ProtoReflect() pr // Deprecated: Use GetOperationDeprecatedFieldsResponse_DeprecatedField.ProtoReflect.Descriptor instead. func (*GetOperationDeprecatedFieldsResponse_DeprecatedField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{427, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{432, 0} } func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) GetFieldName() string { @@ -31104,7 +31423,7 @@ type ListOrganizationsResponse_OrganizationMembership struct { func (x *ListOrganizationsResponse_OrganizationMembership) Reset() { *x = ListOrganizationsResponse_OrganizationMembership{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[475] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[481] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31116,7 +31435,7 @@ func (x *ListOrganizationsResponse_OrganizationMembership) String() string { func (*ListOrganizationsResponse_OrganizationMembership) ProtoMessage() {} func (x *ListOrganizationsResponse_OrganizationMembership) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[475] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[481] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31129,7 +31448,7 @@ func (x *ListOrganizationsResponse_OrganizationMembership) ProtoReflect() protor // Deprecated: Use ListOrganizationsResponse_OrganizationMembership.ProtoReflect.Descriptor instead. func (*ListOrganizationsResponse_OrganizationMembership) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{439, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{444, 0} } func (x *ListOrganizationsResponse_OrganizationMembership) GetId() string { @@ -33471,7 +33790,7 @@ const file_wg_cosmo_platform_v1_platform_proto_rawDesc = "" + "subgraphId\"\x90\x01\n" + "*GetProposedSchemaOfCheckedSubgraphResponse\x12:\n" + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12&\n" + - "\x0eproposedSchema\x18\x02 \x01(\tR\x0eproposedSchema\"\xc0\x03\n" + + "\x0eproposedSchema\x18\x02 \x01(\tR\x0eproposedSchema\"\xdb\x04\n" + "\bProposal\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1c\n" + @@ -33484,13 +33803,42 @@ const file_wg_cosmo_platform_v1_platform_proto_rawDesc = "" + "\x12latestCheckSuccess\x18\t \x01(\bR\x12latestCheckSuccess\x12$\n" + "\rlatestCheckId\x18\n" + " \x01(\tR\rlatestCheckId\x12<\n" + - "\x06origin\x18\v \x01(\x0e2$.wg.cosmo.platform.v1.ProposalOriginR\x06origin\"\xad\x01\n" + + "\x06origin\x18\v \x01(\x0e2$.wg.cosmo.platform.v1.ProposalOriginR\x06origin\x127\n" + + "\x14rolloutFeatureFlagId\x18\r \x01(\tH\x00R\x14rolloutFeatureFlagId\x88\x01\x01\x121\n" + + "\x11rolloutPercentage\x18\x0e \x01(\rH\x01R\x11rolloutPercentage\x88\x01\x01B\x17\n" + + "\x15_rolloutFeatureFlagIdB\x14\n" + + "\x12_rolloutPercentage\"\xad\x01\n" + "\x10ProposalSubgraph\x12\x12\n" + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + "\tschemaSDL\x18\x02 \x01(\tR\tschemaSDL\x12\x1c\n" + "\tisDeleted\x18\x03 \x01(\bR\tisDeleted\x12\x14\n" + "\x05isNew\x18\x04 \x01(\bR\x05isNew\x123\n" + - "\x06labels\x18\x05 \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labels\"\xd9\x02\n" + + "\x06labels\x18\x05 \x03(\v2\x1b.wg.cosmo.platform.v1.LabelR\x06labels\"\xd3\x01\n" + + "+BulkUpdateProposalRolloutPercentagesRequest\x12\\\n" + + "\x05items\x18\x01 \x03(\v2F.wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.ItemR\x05items\x1aF\n" + + "\x04Item\x12\x1e\n" + + "\n" + + "proposalId\x18\x01 \x01(\tR\n" + + "proposalId\x12\x1e\n" + + "\n" + + "percentage\x18\x02 \x01(\rR\n" + + "percentage\"p\n" + + ".BulkUpdateProposalRolloutPercentagesItemResult\x12\x1e\n" + + "\n" + + "proposalId\x18\x01 \x01(\tR\n" + + "proposalId\x12\x1e\n" + + "\n" + + "percentage\x18\x02 \x01(\rR\n" + + "percentage\"\xc6\x01\n" + + ",BulkUpdateProposalRolloutPercentagesResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12Z\n" + + "\x05items\x18\x02 \x03(\v2D.wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesItemResultR\x05items\"@\n" + + "\x1eTeardownProposalRolloutRequest\x12\x1e\n" + + "\n" + + "proposalId\x18\x01 \x01(\tR\n" + + "proposalId\"]\n" + + "\x1fTeardownProposalRolloutResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\"\xd9\x02\n" + "\x15CreateProposalRequest\x12.\n" + "\x12federatedGraphName\x18\x01 \x01(\tR\x12federatedGraphName\x12\x1c\n" + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x12\n" + @@ -33852,7 +34200,7 @@ const file_wg_cosmo_platform_v1_platform_proto_rawDesc = "" + "\x06ERRORS\x10\x02*\"\n" + "\rSortDirection\x12\a\n" + "\x03ASC\x10\x00\x12\b\n" + - "\x04DESC\x10\x012\xa2\xba\x01\n" + + "\x04DESC\x10\x012\u07fc\x01\n" + "\x0fPlatformService\x12\x85\x01\n" + "\x16CreatePlaygroundScript\x123.wg.cosmo.platform.v1.CreatePlaygroundScriptRequest\x1a4.wg.cosmo.platform.v1.CreatePlaygroundScriptResponse\"\x00\x12\x85\x01\n" + "\x16DeletePlaygroundScript\x123.wg.cosmo.platform.v1.DeletePlaygroundScriptRequest\x1a4.wg.cosmo.platform.v1.DeletePlaygroundScriptResponse\"\x00\x12\x85\x01\n" + @@ -34029,7 +34377,9 @@ const file_wg_cosmo_platform_v1_platform_proto_rawDesc = "" + " ConfigureNamespaceProposalConfig\x12=.wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest\x1a>.wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse\"\x00\x12\x91\x01\n" + "\x1aGetNamespaceProposalConfig\x127.wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest\x1a8.wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse\"\x00\x12\x97\x01\n" + "\x1cGetProposalsByFederatedGraph\x129.wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest\x1a:.wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse\"\x00\x12v\n" + - "\x11GetProposalChecks\x12..wg.cosmo.platform.v1.GetProposalChecksRequest\x1a/.wg.cosmo.platform.v1.GetProposalChecksResponse\"\x00\x12j\n" + + "\x11GetProposalChecks\x12..wg.cosmo.platform.v1.GetProposalChecksRequest\x1a/.wg.cosmo.platform.v1.GetProposalChecksResponse\"\x00\x12\xaf\x01\n" + + "$BulkUpdateProposalRolloutPercentages\x12A.wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest\x1aB.wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesResponse\"\x00\x12\x88\x01\n" + + "\x17TeardownProposalRollout\x124.wg.cosmo.platform.v1.TeardownProposalRolloutRequest\x1a5.wg.cosmo.platform.v1.TeardownProposalRolloutResponse\"\x00\x12j\n" + "\rGetOperations\x12*.wg.cosmo.platform.v1.GetOperationsRequest\x1a+.wg.cosmo.platform.v1.GetOperationsResponse\"\x00\x12\x88\x01\n" + "\x17GetClientsFromAnalytics\x124.wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest\x1a5.wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse\"\x00\x12|\n" + "\x13GetOperationClients\x120.wg.cosmo.platform.v1.GetOperationClientsRequest\x1a1.wg.cosmo.platform.v1.GetOperationClientsResponse\"\x00\x12\x97\x01\n" + @@ -34054,7 +34404,7 @@ func file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP() []byte { } var file_wg_cosmo_platform_v1_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 15) -var file_wg_cosmo_platform_v1_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 476) +var file_wg_cosmo_platform_v1_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 482) var file_wg_cosmo_platform_v1_platform_proto_goTypes = []any{ (LintSeverity)(0), // 0: wg.cosmo.platform.v1.LintSeverity (SubgraphType)(0), // 1: wg.cosmo.platform.v1.SubgraphType @@ -34475,92 +34825,98 @@ var file_wg_cosmo_platform_v1_platform_proto_goTypes = []any{ (*GetProposedSchemaOfCheckedSubgraphResponse)(nil), // 416: wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphResponse (*Proposal)(nil), // 417: wg.cosmo.platform.v1.Proposal (*ProposalSubgraph)(nil), // 418: wg.cosmo.platform.v1.ProposalSubgraph - (*CreateProposalRequest)(nil), // 419: wg.cosmo.platform.v1.CreateProposalRequest - (*CreateProposalResponse)(nil), // 420: wg.cosmo.platform.v1.CreateProposalResponse - (*GetProposalRequest)(nil), // 421: wg.cosmo.platform.v1.GetProposalRequest - (*GetProposalResponse)(nil), // 422: wg.cosmo.platform.v1.GetProposalResponse - (*GetProposalsByFederatedGraphRequest)(nil), // 423: wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest - (*GetProposalsByFederatedGraphResponse)(nil), // 424: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse - (*GetProposalChecksRequest)(nil), // 425: wg.cosmo.platform.v1.GetProposalChecksRequest - (*GetProposalChecksResponse)(nil), // 426: wg.cosmo.platform.v1.GetProposalChecksResponse - (*UpdateProposalRequest)(nil), // 427: wg.cosmo.platform.v1.UpdateProposalRequest - (*UpdateProposalResponse)(nil), // 428: wg.cosmo.platform.v1.UpdateProposalResponse - (*EnableProposalsForNamespaceRequest)(nil), // 429: wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest - (*EnableProposalsForNamespaceResponse)(nil), // 430: wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse - (*ConfigureNamespaceProposalConfigRequest)(nil), // 431: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest - (*ConfigureNamespaceProposalConfigResponse)(nil), // 432: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse - (*GetNamespaceProposalConfigRequest)(nil), // 433: wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest - (*GetNamespaceProposalConfigResponse)(nil), // 434: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse - (*GetOperationsRequest)(nil), // 435: wg.cosmo.platform.v1.GetOperationsRequest - (*GetOperationsResponse)(nil), // 436: wg.cosmo.platform.v1.GetOperationsResponse - (*GetClientsFromAnalyticsRequest)(nil), // 437: wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest - (*GetClientsFromAnalyticsResponse)(nil), // 438: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse - (*GetOperationClientsRequest)(nil), // 439: wg.cosmo.platform.v1.GetOperationClientsRequest - (*GetOperationClientsResponse)(nil), // 440: wg.cosmo.platform.v1.GetOperationClientsResponse - (*GetOperationDeprecatedFieldsRequest)(nil), // 441: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest - (*GetOperationDeprecatedFieldsResponse)(nil), // 442: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse - (*ValidateAndFetchPluginDataRequest)(nil), // 443: wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest - (*ValidateAndFetchPluginDataResponse)(nil), // 444: wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse - (*LinkSubgraphRequest)(nil), // 445: wg.cosmo.platform.v1.LinkSubgraphRequest - (*LinkSubgraphResponse)(nil), // 446: wg.cosmo.platform.v1.LinkSubgraphResponse - (*UnlinkSubgraphRequest)(nil), // 447: wg.cosmo.platform.v1.UnlinkSubgraphRequest - (*UnlinkSubgraphResponse)(nil), // 448: wg.cosmo.platform.v1.UnlinkSubgraphResponse - (*VerifyAPIKeyGraphAccessRequest)(nil), // 449: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest - (*VerifyAPIKeyGraphAccessResponse)(nil), // 450: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse - (*InitializeCosmoUserRequest)(nil), // 451: wg.cosmo.platform.v1.InitializeCosmoUserRequest - (*InitializeCosmoUserResponse)(nil), // 452: wg.cosmo.platform.v1.InitializeCosmoUserResponse - (*ListOrganizationsRequest)(nil), // 453: wg.cosmo.platform.v1.ListOrganizationsRequest - (*ListOrganizationsResponse)(nil), // 454: wg.cosmo.platform.v1.ListOrganizationsResponse - (*RecomposeGraphRequest)(nil), // 455: wg.cosmo.platform.v1.RecomposeGraphRequest - (*RecomposeGraphResponse)(nil), // 456: wg.cosmo.platform.v1.RecomposeGraphResponse - (*Subgraph_PluginData)(nil), // 457: wg.cosmo.platform.v1.Subgraph.PluginData - (*GetSubgraphByNameResponse_LinkedSubgraph)(nil), // 458: wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraph - (*SchemaCheck_GhDetails)(nil), // 459: wg.cosmo.platform.v1.SchemaCheck.GhDetails - (*SchemaCheck_CheckedSubgraph)(nil), // 460: wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph - (*SchemaCheck_LinkedCheck)(nil), // 461: wg.cosmo.platform.v1.SchemaCheck.LinkedCheck - (*GetCheckSummaryResponse_AffectedGraph)(nil), // 462: wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraph - (*GetCheckSummaryResponse_ProposalSchemaMatch)(nil), // 463: wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatch - (*GetCheckOperationsResponse_CheckOperation)(nil), // 464: wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation - nil, // 465: wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry - (*GetOrganizationGroupMembersResponse_GroupMember)(nil), // 466: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMember - (*GetOrganizationGroupMembersResponse_GroupApiKey)(nil), // 467: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKey - (*UpdateOrganizationGroupRequest_GroupRule)(nil), // 468: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRule - (*OrgMember_Group)(nil), // 469: wg.cosmo.platform.v1.OrgMember.Group - (*APIKey_Group)(nil), // 470: wg.cosmo.platform.v1.APIKey.Group - nil, // 471: wg.cosmo.platform.v1.Span.AttributesEntry - (*DeletePersistedOperationResponse_Operation)(nil), // 472: wg.cosmo.platform.v1.DeletePersistedOperationResponse.Operation - (*CheckPersistedOperationTrafficResponse_Operation)(nil), // 473: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.Operation - (*GetPersistedOperationsResponse_Operation)(nil), // 474: wg.cosmo.platform.v1.GetPersistedOperationsResponse.Operation - (*GetOrganizationWebhookConfigsResponse_Config)(nil), // 475: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.Config - (*GetBillingPlansResponse_BillingPlanFeature)(nil), // 476: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeature - (*GetBillingPlansResponse_BillingPlan)(nil), // 477: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan - (*GetAllOverridesResponse_Override)(nil), // 478: wg.cosmo.platform.v1.GetAllOverridesResponse.Override - (*GetUserAccessibleResourcesResponse_Namespace)(nil), // 479: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.Namespace - (*GetUserAccessibleResourcesResponse_FederatedGraph)(nil), // 480: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraph - (*GetUserAccessibleResourcesResponse_SubGraph)(nil), // 481: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraph - (*ClientWithOperations_Operation)(nil), // 482: wg.cosmo.platform.v1.ClientWithOperations.Operation - (*GetFeatureFlagByNameResponse_FfFederatedGraph)(nil), // 483: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph - (*GetProposalResponse_CurrentSubgraph)(nil), // 484: wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraph - (*UpdateProposalRequest_UpdateProposalSubgraphs)(nil), // 485: wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs - (*GetOperationsResponse_Operation)(nil), // 486: wg.cosmo.platform.v1.GetOperationsResponse.Operation - (*GetClientsFromAnalyticsResponse_Client)(nil), // 487: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.Client - (*GetOperationClientsResponse_Client)(nil), // 488: wg.cosmo.platform.v1.GetOperationClientsResponse.Client - (*GetOperationDeprecatedFieldsResponse_DeprecatedField)(nil), // 489: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedField - (*ListOrganizationsResponse_OrganizationMembership)(nil), // 490: wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembership - (common.EnumStatusCode)(0), // 491: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 492: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 493: wg.cosmo.common.GraphQLWebsocketSubprotocol - (*notifications.EventMeta)(nil), // 494: wg.cosmo.notifications.EventMeta + (*BulkUpdateProposalRolloutPercentagesRequest)(nil), // 419: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest + (*BulkUpdateProposalRolloutPercentagesItemResult)(nil), // 420: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesItemResult + (*BulkUpdateProposalRolloutPercentagesResponse)(nil), // 421: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesResponse + (*TeardownProposalRolloutRequest)(nil), // 422: wg.cosmo.platform.v1.TeardownProposalRolloutRequest + (*TeardownProposalRolloutResponse)(nil), // 423: wg.cosmo.platform.v1.TeardownProposalRolloutResponse + (*CreateProposalRequest)(nil), // 424: wg.cosmo.platform.v1.CreateProposalRequest + (*CreateProposalResponse)(nil), // 425: wg.cosmo.platform.v1.CreateProposalResponse + (*GetProposalRequest)(nil), // 426: wg.cosmo.platform.v1.GetProposalRequest + (*GetProposalResponse)(nil), // 427: wg.cosmo.platform.v1.GetProposalResponse + (*GetProposalsByFederatedGraphRequest)(nil), // 428: wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest + (*GetProposalsByFederatedGraphResponse)(nil), // 429: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse + (*GetProposalChecksRequest)(nil), // 430: wg.cosmo.platform.v1.GetProposalChecksRequest + (*GetProposalChecksResponse)(nil), // 431: wg.cosmo.platform.v1.GetProposalChecksResponse + (*UpdateProposalRequest)(nil), // 432: wg.cosmo.platform.v1.UpdateProposalRequest + (*UpdateProposalResponse)(nil), // 433: wg.cosmo.platform.v1.UpdateProposalResponse + (*EnableProposalsForNamespaceRequest)(nil), // 434: wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest + (*EnableProposalsForNamespaceResponse)(nil), // 435: wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse + (*ConfigureNamespaceProposalConfigRequest)(nil), // 436: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest + (*ConfigureNamespaceProposalConfigResponse)(nil), // 437: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse + (*GetNamespaceProposalConfigRequest)(nil), // 438: wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest + (*GetNamespaceProposalConfigResponse)(nil), // 439: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse + (*GetOperationsRequest)(nil), // 440: wg.cosmo.platform.v1.GetOperationsRequest + (*GetOperationsResponse)(nil), // 441: wg.cosmo.platform.v1.GetOperationsResponse + (*GetClientsFromAnalyticsRequest)(nil), // 442: wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest + (*GetClientsFromAnalyticsResponse)(nil), // 443: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse + (*GetOperationClientsRequest)(nil), // 444: wg.cosmo.platform.v1.GetOperationClientsRequest + (*GetOperationClientsResponse)(nil), // 445: wg.cosmo.platform.v1.GetOperationClientsResponse + (*GetOperationDeprecatedFieldsRequest)(nil), // 446: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest + (*GetOperationDeprecatedFieldsResponse)(nil), // 447: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse + (*ValidateAndFetchPluginDataRequest)(nil), // 448: wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest + (*ValidateAndFetchPluginDataResponse)(nil), // 449: wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse + (*LinkSubgraphRequest)(nil), // 450: wg.cosmo.platform.v1.LinkSubgraphRequest + (*LinkSubgraphResponse)(nil), // 451: wg.cosmo.platform.v1.LinkSubgraphResponse + (*UnlinkSubgraphRequest)(nil), // 452: wg.cosmo.platform.v1.UnlinkSubgraphRequest + (*UnlinkSubgraphResponse)(nil), // 453: wg.cosmo.platform.v1.UnlinkSubgraphResponse + (*VerifyAPIKeyGraphAccessRequest)(nil), // 454: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest + (*VerifyAPIKeyGraphAccessResponse)(nil), // 455: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse + (*InitializeCosmoUserRequest)(nil), // 456: wg.cosmo.platform.v1.InitializeCosmoUserRequest + (*InitializeCosmoUserResponse)(nil), // 457: wg.cosmo.platform.v1.InitializeCosmoUserResponse + (*ListOrganizationsRequest)(nil), // 458: wg.cosmo.platform.v1.ListOrganizationsRequest + (*ListOrganizationsResponse)(nil), // 459: wg.cosmo.platform.v1.ListOrganizationsResponse + (*RecomposeGraphRequest)(nil), // 460: wg.cosmo.platform.v1.RecomposeGraphRequest + (*RecomposeGraphResponse)(nil), // 461: wg.cosmo.platform.v1.RecomposeGraphResponse + (*Subgraph_PluginData)(nil), // 462: wg.cosmo.platform.v1.Subgraph.PluginData + (*GetSubgraphByNameResponse_LinkedSubgraph)(nil), // 463: wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraph + (*SchemaCheck_GhDetails)(nil), // 464: wg.cosmo.platform.v1.SchemaCheck.GhDetails + (*SchemaCheck_CheckedSubgraph)(nil), // 465: wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph + (*SchemaCheck_LinkedCheck)(nil), // 466: wg.cosmo.platform.v1.SchemaCheck.LinkedCheck + (*GetCheckSummaryResponse_AffectedGraph)(nil), // 467: wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraph + (*GetCheckSummaryResponse_ProposalSchemaMatch)(nil), // 468: wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatch + (*GetCheckOperationsResponse_CheckOperation)(nil), // 469: wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation + nil, // 470: wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry + (*GetOrganizationGroupMembersResponse_GroupMember)(nil), // 471: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMember + (*GetOrganizationGroupMembersResponse_GroupApiKey)(nil), // 472: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKey + (*UpdateOrganizationGroupRequest_GroupRule)(nil), // 473: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRule + (*OrgMember_Group)(nil), // 474: wg.cosmo.platform.v1.OrgMember.Group + (*APIKey_Group)(nil), // 475: wg.cosmo.platform.v1.APIKey.Group + nil, // 476: wg.cosmo.platform.v1.Span.AttributesEntry + (*DeletePersistedOperationResponse_Operation)(nil), // 477: wg.cosmo.platform.v1.DeletePersistedOperationResponse.Operation + (*CheckPersistedOperationTrafficResponse_Operation)(nil), // 478: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.Operation + (*GetPersistedOperationsResponse_Operation)(nil), // 479: wg.cosmo.platform.v1.GetPersistedOperationsResponse.Operation + (*GetOrganizationWebhookConfigsResponse_Config)(nil), // 480: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.Config + (*GetBillingPlansResponse_BillingPlanFeature)(nil), // 481: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeature + (*GetBillingPlansResponse_BillingPlan)(nil), // 482: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan + (*GetAllOverridesResponse_Override)(nil), // 483: wg.cosmo.platform.v1.GetAllOverridesResponse.Override + (*GetUserAccessibleResourcesResponse_Namespace)(nil), // 484: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.Namespace + (*GetUserAccessibleResourcesResponse_FederatedGraph)(nil), // 485: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraph + (*GetUserAccessibleResourcesResponse_SubGraph)(nil), // 486: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraph + (*ClientWithOperations_Operation)(nil), // 487: wg.cosmo.platform.v1.ClientWithOperations.Operation + (*GetFeatureFlagByNameResponse_FfFederatedGraph)(nil), // 488: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph + (*BulkUpdateProposalRolloutPercentagesRequest_Item)(nil), // 489: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.Item + (*GetProposalResponse_CurrentSubgraph)(nil), // 490: wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraph + (*UpdateProposalRequest_UpdateProposalSubgraphs)(nil), // 491: wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs + (*GetOperationsResponse_Operation)(nil), // 492: wg.cosmo.platform.v1.GetOperationsResponse.Operation + (*GetClientsFromAnalyticsResponse_Client)(nil), // 493: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.Client + (*GetOperationClientsResponse_Client)(nil), // 494: wg.cosmo.platform.v1.GetOperationClientsResponse.Client + (*GetOperationDeprecatedFieldsResponse_DeprecatedField)(nil), // 495: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedField + (*ListOrganizationsResponse_OrganizationMembership)(nil), // 496: wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembership + (common.EnumStatusCode)(0), // 497: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 498: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 499: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*notifications.EventMeta)(nil), // 500: wg.cosmo.notifications.EventMeta } var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ - 491, // 0: wg.cosmo.platform.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 497, // 0: wg.cosmo.platform.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 16, // 1: wg.cosmo.platform.v1.PublishMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response 38, // 2: wg.cosmo.platform.v1.PublishMonographResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError 40, // 3: wg.cosmo.platform.v1.PublishMonographResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError 39, // 4: wg.cosmo.platform.v1.PublishMonographResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning 15, // 5: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 492, // 6: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 493, // 7: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 498, // 6: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 499, // 7: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol 1, // 8: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.type:type_name -> wg.cosmo.platform.v1.SubgraphType 20, // 9: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.proto:type_name -> wg.cosmo.platform.v1.ProtoInput 16, // 10: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -34571,12 +34927,12 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 24, // 15: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest.gitInfo:type_name -> wg.cosmo.platform.v1.GitInfo 25, // 16: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest.vcsContext:type_name -> wg.cosmo.platform.v1.VCSContext 15, // 17: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 492, // 18: wg.cosmo.platform.v1.CreateMonographRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 493, // 19: wg.cosmo.platform.v1.CreateMonographRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 498, // 18: wg.cosmo.platform.v1.CreateMonographRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 499, // 19: wg.cosmo.platform.v1.CreateMonographRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol 16, // 20: wg.cosmo.platform.v1.CreateMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response 15, // 21: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 492, // 22: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 493, // 23: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 498, // 22: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 499, // 23: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol 1, // 24: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.type:type_name -> wg.cosmo.platform.v1.SubgraphType 16, // 25: wg.cosmo.platform.v1.DeleteMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response 0, // 26: wg.cosmo.platform.v1.LintIssue.severity:type_name -> wg.cosmo.platform.v1.LintSeverity @@ -34615,7 +34971,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 55, // 59: wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse.graphs:type_name -> wg.cosmo.platform.v1.FederatedGraph 15, // 60: wg.cosmo.platform.v1.Subgraph.labels:type_name -> wg.cosmo.platform.v1.Label 1, // 61: wg.cosmo.platform.v1.Subgraph.type:type_name -> wg.cosmo.platform.v1.SubgraphType - 457, // 62: wg.cosmo.platform.v1.Subgraph.pluginData:type_name -> wg.cosmo.platform.v1.Subgraph.PluginData + 462, // 62: wg.cosmo.platform.v1.Subgraph.pluginData:type_name -> wg.cosmo.platform.v1.Subgraph.PluginData 16, // 63: wg.cosmo.platform.v1.GetSubgraphsResponse.response:type_name -> wg.cosmo.platform.v1.Response 60, // 64: wg.cosmo.platform.v1.GetSubgraphsResponse.graphs:type_name -> wg.cosmo.platform.v1.Subgraph 16, // 65: wg.cosmo.platform.v1.GetFederatedGraphByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -34625,26 +34981,26 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 69: wg.cosmo.platform.v1.GetSubgraphByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response 60, // 70: wg.cosmo.platform.v1.GetSubgraphByNameResponse.graph:type_name -> wg.cosmo.platform.v1.Subgraph 288, // 71: wg.cosmo.platform.v1.GetSubgraphByNameResponse.members:type_name -> wg.cosmo.platform.v1.SubgraphMember - 458, // 72: wg.cosmo.platform.v1.GetSubgraphByNameResponse.linkedSubgraph:type_name -> wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraph + 463, // 72: wg.cosmo.platform.v1.GetSubgraphByNameResponse.linkedSubgraph:type_name -> wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraph 16, // 73: wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 74: wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse.response:type_name -> wg.cosmo.platform.v1.Response 72, // 75: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest.filters:type_name -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameFilters - 459, // 76: wg.cosmo.platform.v1.SchemaCheck.ghDetails:type_name -> wg.cosmo.platform.v1.SchemaCheck.GhDetails + 464, // 76: wg.cosmo.platform.v1.SchemaCheck.ghDetails:type_name -> wg.cosmo.platform.v1.SchemaCheck.GhDetails 25, // 77: wg.cosmo.platform.v1.SchemaCheck.vcsContext:type_name -> wg.cosmo.platform.v1.VCSContext - 460, // 78: wg.cosmo.platform.v1.SchemaCheck.checkedSubgraphs:type_name -> wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph - 461, // 79: wg.cosmo.platform.v1.SchemaCheck.linkedChecks:type_name -> wg.cosmo.platform.v1.SchemaCheck.LinkedCheck + 465, // 78: wg.cosmo.platform.v1.SchemaCheck.checkedSubgraphs:type_name -> wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph + 466, // 79: wg.cosmo.platform.v1.SchemaCheck.linkedChecks:type_name -> wg.cosmo.platform.v1.SchemaCheck.LinkedCheck 16, // 80: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse.response:type_name -> wg.cosmo.platform.v1.Response 74, // 81: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse.checks:type_name -> wg.cosmo.platform.v1.SchemaCheck 16, // 82: wg.cosmo.platform.v1.GetCheckSummaryResponse.response:type_name -> wg.cosmo.platform.v1.Response 74, // 83: wg.cosmo.platform.v1.GetCheckSummaryResponse.check:type_name -> wg.cosmo.platform.v1.SchemaCheck - 462, // 84: wg.cosmo.platform.v1.GetCheckSummaryResponse.affected_graphs:type_name -> wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraph + 467, // 84: wg.cosmo.platform.v1.GetCheckSummaryResponse.affected_graphs:type_name -> wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraph 36, // 85: wg.cosmo.platform.v1.GetCheckSummaryResponse.changes:type_name -> wg.cosmo.platform.v1.SchemaChange 44, // 86: wg.cosmo.platform.v1.GetCheckSummaryResponse.lintIssues:type_name -> wg.cosmo.platform.v1.LintIssue 45, // 87: wg.cosmo.platform.v1.GetCheckSummaryResponse.graphPruningIssues:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 463, // 88: wg.cosmo.platform.v1.GetCheckSummaryResponse.proposalMatches:type_name -> wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatch + 468, // 88: wg.cosmo.platform.v1.GetCheckSummaryResponse.proposalMatches:type_name -> wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatch 37, // 89: wg.cosmo.platform.v1.GetCheckSummaryResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange 16, // 90: wg.cosmo.platform.v1.GetCheckOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 464, // 91: wg.cosmo.platform.v1.GetCheckOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation + 469, // 91: wg.cosmo.platform.v1.GetCheckOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation 16, // 92: wg.cosmo.platform.v1.GetOperationContentResponse.response:type_name -> wg.cosmo.platform.v1.Response 96, // 93: wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest.pagination:type_name -> wg.cosmo.platform.v1.Pagination 100, // 94: wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange @@ -34653,8 +35009,8 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 85, // 97: wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse.federatedGraphChangelogOutput:type_name -> wg.cosmo.platform.v1.FederatedGraphChangelogOutput 16, // 98: wg.cosmo.platform.v1.GetFederatedResponse.response:type_name -> wg.cosmo.platform.v1.Response 15, // 99: wg.cosmo.platform.v1.UpdateSubgraphRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 492, // 100: wg.cosmo.platform.v1.UpdateSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 493, // 101: wg.cosmo.platform.v1.UpdateSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 498, // 100: wg.cosmo.platform.v1.UpdateSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 499, // 101: wg.cosmo.platform.v1.UpdateSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol 16, // 102: wg.cosmo.platform.v1.UpdateSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response 38, // 103: wg.cosmo.platform.v1.UpdateSubgraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError 40, // 104: wg.cosmo.platform.v1.UpdateSubgraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError @@ -34663,8 +35019,8 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 38, // 107: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError 40, // 108: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError 39, // 109: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 492, // 110: wg.cosmo.platform.v1.UpdateMonographRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 493, // 111: wg.cosmo.platform.v1.UpdateMonographRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 498, // 110: wg.cosmo.platform.v1.UpdateMonographRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 499, // 111: wg.cosmo.platform.v1.UpdateMonographRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol 16, // 112: wg.cosmo.platform.v1.UpdateMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 113: wg.cosmo.platform.v1.CheckFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response 38, // 114: wg.cosmo.platform.v1.CheckFederatedGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError @@ -34685,7 +35041,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 105, // 129: wg.cosmo.platform.v1.AnalyticsViewResultFilter.options:type_name -> wg.cosmo.platform.v1.AnalyticsViewResultFilterOption 3, // 130: wg.cosmo.platform.v1.AnalyticsViewResultFilter.custom_options:type_name -> wg.cosmo.platform.v1.CustomOptions 5, // 131: wg.cosmo.platform.v1.AnalyticsViewResultFilterOption.operator:type_name -> wg.cosmo.platform.v1.AnalyticsViewFilterOperator - 465, // 132: wg.cosmo.platform.v1.AnalyticsViewRow.value:type_name -> wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry + 470, // 132: wg.cosmo.platform.v1.AnalyticsViewRow.value:type_name -> wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry 16, // 133: wg.cosmo.platform.v1.GetAnalyticsViewResponse.response:type_name -> wg.cosmo.platform.v1.Response 102, // 134: wg.cosmo.platform.v1.GetAnalyticsViewResponse.view:type_name -> wg.cosmo.platform.v1.AnalyticsViewResult 16, // 135: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -34700,12 +35056,12 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 144: wg.cosmo.platform.v1.GetOrganizationGroupsResponse.response:type_name -> wg.cosmo.platform.v1.Response 118, // 145: wg.cosmo.platform.v1.GetOrganizationGroupsResponse.groups:type_name -> wg.cosmo.platform.v1.OrganizationGroup 16, // 146: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response - 466, // 147: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.members:type_name -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMember - 467, // 148: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.apiKeys:type_name -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKey - 468, // 149: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.rules:type_name -> wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRule + 471, // 147: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.members:type_name -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMember + 472, // 148: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.apiKeys:type_name -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKey + 473, // 149: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.rules:type_name -> wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRule 16, // 150: wg.cosmo.platform.v1.UpdateOrganizationGroupResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 151: wg.cosmo.platform.v1.DeleteOrganizationGroupResponse.response:type_name -> wg.cosmo.platform.v1.Response - 469, // 152: wg.cosmo.platform.v1.OrgMember.groups:type_name -> wg.cosmo.platform.v1.OrgMember.Group + 474, // 152: wg.cosmo.platform.v1.OrgMember.groups:type_name -> wg.cosmo.platform.v1.OrgMember.Group 96, // 153: wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest.pagination:type_name -> wg.cosmo.platform.v1.Pagination 16, // 154: wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response 130, // 155: wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse.pendingInvitations:type_name -> wg.cosmo.platform.v1.PendingOrgInvitation @@ -34713,7 +35069,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 157: wg.cosmo.platform.v1.GetOrganizationMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response 129, // 158: wg.cosmo.platform.v1.GetOrganizationMembersResponse.members:type_name -> wg.cosmo.platform.v1.OrgMember 16, // 159: wg.cosmo.platform.v1.InviteUserResponse.response:type_name -> wg.cosmo.platform.v1.Response - 470, // 160: wg.cosmo.platform.v1.APIKey.group:type_name -> wg.cosmo.platform.v1.APIKey.Group + 475, // 160: wg.cosmo.platform.v1.APIKey.group:type_name -> wg.cosmo.platform.v1.APIKey.Group 16, // 161: wg.cosmo.platform.v1.GetAPIKeysResponse.response:type_name -> wg.cosmo.platform.v1.Response 137, // 162: wg.cosmo.platform.v1.GetAPIKeysResponse.apiKeys:type_name -> wg.cosmo.platform.v1.APIKey 6, // 163: wg.cosmo.platform.v1.CreateAPIKeyRequest.expires:type_name -> wg.cosmo.platform.v1.ExpiresAt @@ -34723,7 +35079,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 167: wg.cosmo.platform.v1.RemoveOrganizationMemberResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 168: wg.cosmo.platform.v1.RemoveInvitationResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 169: wg.cosmo.platform.v1.MigrateFromApolloResponse.response:type_name -> wg.cosmo.platform.v1.Response - 471, // 170: wg.cosmo.platform.v1.Span.attributes:type_name -> wg.cosmo.platform.v1.Span.AttributesEntry + 476, // 170: wg.cosmo.platform.v1.Span.attributes:type_name -> wg.cosmo.platform.v1.Span.AttributesEntry 16, // 171: wg.cosmo.platform.v1.GetTraceResponse.response:type_name -> wg.cosmo.platform.v1.Response 152, // 172: wg.cosmo.platform.v1.GetTraceResponse.spans:type_name -> wg.cosmo.platform.v1.Span 16, // 173: wg.cosmo.platform.v1.WhoAmIResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -34736,29 +35092,29 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 180: wg.cosmo.platform.v1.PublishPersistedOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response 166, // 181: wg.cosmo.platform.v1.PublishPersistedOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.PublishedOperation 16, // 182: wg.cosmo.platform.v1.DeletePersistedOperationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 472, // 183: wg.cosmo.platform.v1.DeletePersistedOperationResponse.operation:type_name -> wg.cosmo.platform.v1.DeletePersistedOperationResponse.Operation + 477, // 183: wg.cosmo.platform.v1.DeletePersistedOperationResponse.operation:type_name -> wg.cosmo.platform.v1.DeletePersistedOperationResponse.Operation 16, // 184: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.response:type_name -> wg.cosmo.platform.v1.Response - 473, // 185: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.operation:type_name -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.Operation + 478, // 185: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.operation:type_name -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.Operation 16, // 186: wg.cosmo.platform.v1.GetPersistedOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 474, // 187: wg.cosmo.platform.v1.GetPersistedOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetPersistedOperationsResponse.Operation - 494, // 188: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta + 479, // 187: wg.cosmo.platform.v1.GetPersistedOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetPersistedOperationsResponse.Operation + 500, // 188: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta 16, // 189: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 190: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 475, // 191: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.configs:type_name -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.Config + 480, // 191: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.configs:type_name -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.Config 16, // 192: wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse.response:type_name -> wg.cosmo.platform.v1.Response - 494, // 193: wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse.events_meta:type_name -> wg.cosmo.notifications.EventMeta - 494, // 194: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta + 500, // 193: wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse.events_meta:type_name -> wg.cosmo.notifications.EventMeta + 500, // 194: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta 16, // 195: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 196: wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 494, // 197: wg.cosmo.platform.v1.CreateIntegrationRequest.eventsMeta:type_name -> wg.cosmo.notifications.EventMeta + 500, // 197: wg.cosmo.platform.v1.CreateIntegrationRequest.eventsMeta:type_name -> wg.cosmo.notifications.EventMeta 16, // 198: wg.cosmo.platform.v1.CreateIntegrationResponse.response:type_name -> wg.cosmo.platform.v1.Response 8, // 199: wg.cosmo.platform.v1.IntegrationConfig.type:type_name -> wg.cosmo.platform.v1.IntegrationType 188, // 200: wg.cosmo.platform.v1.IntegrationConfig.slackIntegrationConfig:type_name -> wg.cosmo.platform.v1.SlackIntegrationConfig 189, // 201: wg.cosmo.platform.v1.Integration.integrationConfig:type_name -> wg.cosmo.platform.v1.IntegrationConfig - 494, // 202: wg.cosmo.platform.v1.Integration.eventsMeta:type_name -> wg.cosmo.notifications.EventMeta + 500, // 202: wg.cosmo.platform.v1.Integration.eventsMeta:type_name -> wg.cosmo.notifications.EventMeta 16, // 203: wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse.response:type_name -> wg.cosmo.platform.v1.Response 190, // 204: wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse.integrations:type_name -> wg.cosmo.platform.v1.Integration - 494, // 205: wg.cosmo.platform.v1.UpdateIntegrationConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta + 500, // 205: wg.cosmo.platform.v1.UpdateIntegrationConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta 16, // 206: wg.cosmo.platform.v1.UpdateIntegrationConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 207: wg.cosmo.platform.v1.DeleteIntegrationResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 208: wg.cosmo.platform.v1.DeleteOrganizationResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -34771,7 +35127,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 215: wg.cosmo.platform.v1.GetOrganizationBySlugResponse.response:type_name -> wg.cosmo.platform.v1.Response 208, // 216: wg.cosmo.platform.v1.GetOrganizationBySlugResponse.organization:type_name -> wg.cosmo.platform.v1.Organization 16, // 217: wg.cosmo.platform.v1.GetBillingPlansResponse.response:type_name -> wg.cosmo.platform.v1.Response - 477, // 218: wg.cosmo.platform.v1.GetBillingPlansResponse.plans:type_name -> wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan + 482, // 218: wg.cosmo.platform.v1.GetBillingPlansResponse.plans:type_name -> wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan 16, // 219: wg.cosmo.platform.v1.CreateCheckoutSessionResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 220: wg.cosmo.platform.v1.CreateBillingPortalSessionResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 221: wg.cosmo.platform.v1.UpgradePlanResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -34812,7 +35168,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 256: wg.cosmo.platform.v1.GetOperationOverridesResponse.response:type_name -> wg.cosmo.platform.v1.Response 238, // 257: wg.cosmo.platform.v1.GetOperationOverridesResponse.changes:type_name -> wg.cosmo.platform.v1.OverrideChange 16, // 258: wg.cosmo.platform.v1.GetAllOverridesResponse.response:type_name -> wg.cosmo.platform.v1.Response - 478, // 259: wg.cosmo.platform.v1.GetAllOverridesResponse.overrides:type_name -> wg.cosmo.platform.v1.GetAllOverridesResponse.Override + 483, // 259: wg.cosmo.platform.v1.GetAllOverridesResponse.overrides:type_name -> wg.cosmo.platform.v1.GetAllOverridesResponse.Override 24, // 260: wg.cosmo.platform.v1.IsGitHubAppInstalledRequest.git_info:type_name -> wg.cosmo.platform.v1.GitInfo 16, // 261: wg.cosmo.platform.v1.IsGitHubAppInstalledResponse.response:type_name -> wg.cosmo.platform.v1.Response 253, // 262: wg.cosmo.platform.v1.CreateOIDCProviderRequest.mappers:type_name -> wg.cosmo.platform.v1.GroupMapper @@ -34840,9 +35196,9 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 284: wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse.response:type_name -> wg.cosmo.platform.v1.Response 85, // 285: wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse.changelog:type_name -> wg.cosmo.platform.v1.FederatedGraphChangelogOutput 16, // 286: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.response:type_name -> wg.cosmo.platform.v1.Response - 479, // 287: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.namespaces:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.Namespace - 480, // 288: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.federatedGraphs:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraph - 481, // 289: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.subgraphs:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraph + 484, // 287: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.namespaces:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.Namespace + 485, // 288: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.federatedGraphs:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraph + 486, // 289: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.subgraphs:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraph 9, // 290: wg.cosmo.platform.v1.UpdateFeatureSettingsRequest.featureId:type_name -> wg.cosmo.platform.v1.Feature 16, // 291: wg.cosmo.platform.v1.UpdateFeatureSettingsResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 292: wg.cosmo.platform.v1.GetSubgraphMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -34853,7 +35209,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 297: wg.cosmo.platform.v1.GetClientsResponse.response:type_name -> wg.cosmo.platform.v1.Response 295, // 298: wg.cosmo.platform.v1.GetClientsResponse.clients:type_name -> wg.cosmo.platform.v1.ClientInfo 100, // 299: wg.cosmo.platform.v1.GetFieldUsageRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 482, // 300: wg.cosmo.platform.v1.ClientWithOperations.operations:type_name -> wg.cosmo.platform.v1.ClientWithOperations.Operation + 487, // 300: wg.cosmo.platform.v1.ClientWithOperations.operations:type_name -> wg.cosmo.platform.v1.ClientWithOperations.Operation 16, // 301: wg.cosmo.platform.v1.GetFieldUsageResponse.response:type_name -> wg.cosmo.platform.v1.Response 110, // 302: wg.cosmo.platform.v1.GetFieldUsageResponse.request_series:type_name -> wg.cosmo.platform.v1.RequestSeriesItem 299, // 303: wg.cosmo.platform.v1.GetFieldUsageResponse.clients:type_name -> wg.cosmo.platform.v1.ClientWithOperations @@ -34917,7 +35273,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 352, // 361: wg.cosmo.platform.v1.GetFeatureFlagsResponse.feature_flags:type_name -> wg.cosmo.platform.v1.FeatureFlag 16, // 362: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response 352, // 363: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.feature_flag:type_name -> wg.cosmo.platform.v1.FeatureFlag - 483, // 364: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.federated_graphs:type_name -> wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph + 488, // 364: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.federated_graphs:type_name -> wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph 60, // 365: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.feature_subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph 16, // 366: wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response 60, // 367: wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse.feature_subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph @@ -34973,444 +35329,452 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 418, // 417: wg.cosmo.platform.v1.Proposal.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph 10, // 418: wg.cosmo.platform.v1.Proposal.origin:type_name -> wg.cosmo.platform.v1.ProposalOrigin 15, // 419: wg.cosmo.platform.v1.ProposalSubgraph.labels:type_name -> wg.cosmo.platform.v1.Label - 418, // 420: wg.cosmo.platform.v1.CreateProposalRequest.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph - 11, // 421: wg.cosmo.platform.v1.CreateProposalRequest.namingConvention:type_name -> wg.cosmo.platform.v1.ProposalNamingConvention - 10, // 422: wg.cosmo.platform.v1.CreateProposalRequest.origin:type_name -> wg.cosmo.platform.v1.ProposalOrigin - 16, // 423: wg.cosmo.platform.v1.CreateProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response - 36, // 424: wg.cosmo.platform.v1.CreateProposalResponse.breakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange - 36, // 425: wg.cosmo.platform.v1.CreateProposalResponse.nonBreakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange - 38, // 426: wg.cosmo.platform.v1.CreateProposalResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 39, // 427: wg.cosmo.platform.v1.CreateProposalResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 44, // 428: wg.cosmo.platform.v1.CreateProposalResponse.lintErrors:type_name -> wg.cosmo.platform.v1.LintIssue - 44, // 429: wg.cosmo.platform.v1.CreateProposalResponse.lintWarnings:type_name -> wg.cosmo.platform.v1.LintIssue - 45, // 430: wg.cosmo.platform.v1.CreateProposalResponse.graphPruneErrors:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 45, // 431: wg.cosmo.platform.v1.CreateProposalResponse.graphPruneWarnings:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 41, // 432: wg.cosmo.platform.v1.CreateProposalResponse.operationUsageStats:type_name -> wg.cosmo.platform.v1.CheckOperationUsageStats - 37, // 433: wg.cosmo.platform.v1.CreateProposalResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange - 16, // 434: wg.cosmo.platform.v1.GetProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response - 417, // 435: wg.cosmo.platform.v1.GetProposalResponse.proposal:type_name -> wg.cosmo.platform.v1.Proposal - 484, // 436: wg.cosmo.platform.v1.GetProposalResponse.currentSubgraphs:type_name -> wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraph - 16, // 437: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 417, // 438: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse.proposals:type_name -> wg.cosmo.platform.v1.Proposal - 16, // 439: wg.cosmo.platform.v1.GetProposalChecksResponse.response:type_name -> wg.cosmo.platform.v1.Response - 74, // 440: wg.cosmo.platform.v1.GetProposalChecksResponse.checks:type_name -> wg.cosmo.platform.v1.SchemaCheck - 485, // 441: wg.cosmo.platform.v1.UpdateProposalRequest.updatedSubgraphs:type_name -> wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs - 16, // 442: wg.cosmo.platform.v1.UpdateProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response - 36, // 443: wg.cosmo.platform.v1.UpdateProposalResponse.breakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange - 36, // 444: wg.cosmo.platform.v1.UpdateProposalResponse.nonBreakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange - 38, // 445: wg.cosmo.platform.v1.UpdateProposalResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 39, // 446: wg.cosmo.platform.v1.UpdateProposalResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 44, // 447: wg.cosmo.platform.v1.UpdateProposalResponse.lintErrors:type_name -> wg.cosmo.platform.v1.LintIssue - 44, // 448: wg.cosmo.platform.v1.UpdateProposalResponse.lintWarnings:type_name -> wg.cosmo.platform.v1.LintIssue - 45, // 449: wg.cosmo.platform.v1.UpdateProposalResponse.graphPruneErrors:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 45, // 450: wg.cosmo.platform.v1.UpdateProposalResponse.graphPruneWarnings:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 41, // 451: wg.cosmo.platform.v1.UpdateProposalResponse.operationUsageStats:type_name -> wg.cosmo.platform.v1.CheckOperationUsageStats - 37, // 452: wg.cosmo.platform.v1.UpdateProposalResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange - 16, // 453: wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response - 0, // 454: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest.checkSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 0, // 455: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest.publishSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 16, // 456: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 457: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 0, // 458: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.checkSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 0, // 459: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.publishSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 12, // 460: wg.cosmo.platform.v1.GetOperationsRequest.fetchBasedOn:type_name -> wg.cosmo.platform.v1.OperationsFetchBasedOn - 100, // 461: wg.cosmo.platform.v1.GetOperationsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 13, // 462: wg.cosmo.platform.v1.GetOperationsRequest.sortDirection:type_name -> wg.cosmo.platform.v1.SortDirection - 16, // 463: wg.cosmo.platform.v1.GetOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 486, // 464: wg.cosmo.platform.v1.GetOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetOperationsResponse.Operation - 16, // 465: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 487, // 466: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.clients:type_name -> wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.Client - 100, // 467: wg.cosmo.platform.v1.GetOperationClientsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 16, // 468: wg.cosmo.platform.v1.GetOperationClientsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 488, // 469: wg.cosmo.platform.v1.GetOperationClientsResponse.clients:type_name -> wg.cosmo.platform.v1.GetOperationClientsResponse.Client - 100, // 470: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 16, // 471: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 489, // 472: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.deprecatedFields:type_name -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedField - 15, // 473: wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 16, // 474: wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 475: wg.cosmo.platform.v1.LinkSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 476: wg.cosmo.platform.v1.UnlinkSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 477: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 478: wg.cosmo.platform.v1.InitializeCosmoUserResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 479: wg.cosmo.platform.v1.ListOrganizationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 490, // 480: wg.cosmo.platform.v1.ListOrganizationsResponse.organizations:type_name -> wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembership - 16, // 481: wg.cosmo.platform.v1.RecomposeGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 482: wg.cosmo.platform.v1.RecomposeGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 483: wg.cosmo.platform.v1.RecomposeGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 484: wg.cosmo.platform.v1.RecomposeGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 23, // 485: wg.cosmo.platform.v1.RecomposeGraphResponse.errorCounts:type_name -> wg.cosmo.platform.v1.SubgraphPublishStats - 15, // 486: wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph.labels:type_name -> wg.cosmo.platform.v1.Label - 36, // 487: wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation.impacting_changes:type_name -> wg.cosmo.platform.v1.SchemaChange - 107, // 488: wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry.value:type_name -> wg.cosmo.platform.v1.AnalyticsViewRowValue - 476, // 489: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan.features:type_name -> wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeature - 55, // 490: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph.federated_graph:type_name -> wg.cosmo.platform.v1.FederatedGraph - 418, // 491: wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph - 14, // 492: wg.cosmo.platform.v1.GetOperationsResponse.Operation.type:type_name -> wg.cosmo.platform.v1.GetOperationsResponse.OperationType - 374, // 493: wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript:input_type -> wg.cosmo.platform.v1.CreatePlaygroundScriptRequest - 376, // 494: wg.cosmo.platform.v1.PlatformService.DeletePlaygroundScript:input_type -> wg.cosmo.platform.v1.DeletePlaygroundScriptRequest - 378, // 495: wg.cosmo.platform.v1.PlatformService.UpdatePlaygroundScript:input_type -> wg.cosmo.platform.v1.UpdatePlaygroundScriptRequest - 380, // 496: wg.cosmo.platform.v1.PlatformService.GetPlaygroundScripts:input_type -> wg.cosmo.platform.v1.GetPlaygroundScriptsRequest - 302, // 497: wg.cosmo.platform.v1.PlatformService.CreateNamespace:input_type -> wg.cosmo.platform.v1.CreateNamespaceRequest - 304, // 498: wg.cosmo.platform.v1.PlatformService.DeleteNamespace:input_type -> wg.cosmo.platform.v1.DeleteNamespaceRequest - 306, // 499: wg.cosmo.platform.v1.PlatformService.RenameNamespace:input_type -> wg.cosmo.platform.v1.RenameNamespaceRequest - 309, // 500: wg.cosmo.platform.v1.PlatformService.GetNamespaces:input_type -> wg.cosmo.platform.v1.GetNamespacesRequest - 387, // 501: wg.cosmo.platform.v1.PlatformService.GetNamespace:input_type -> wg.cosmo.platform.v1.GetNamespaceRequest - 392, // 502: wg.cosmo.platform.v1.PlatformService.GetWorkspace:input_type -> wg.cosmo.platform.v1.GetWorkspaceRequest - 336, // 503: wg.cosmo.platform.v1.PlatformService.CreateContract:input_type -> wg.cosmo.platform.v1.CreateContractRequest - 338, // 504: wg.cosmo.platform.v1.PlatformService.UpdateContract:input_type -> wg.cosmo.platform.v1.UpdateContractRequest - 311, // 505: wg.cosmo.platform.v1.PlatformService.MoveFederatedGraph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest - 311, // 506: wg.cosmo.platform.v1.PlatformService.MoveSubgraph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest - 311, // 507: wg.cosmo.platform.v1.PlatformService.MoveMonograph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest - 28, // 508: wg.cosmo.platform.v1.PlatformService.CreateMonograph:input_type -> wg.cosmo.platform.v1.CreateMonographRequest - 18, // 509: wg.cosmo.platform.v1.PlatformService.PublishMonograph:input_type -> wg.cosmo.platform.v1.PublishMonographRequest - 33, // 510: wg.cosmo.platform.v1.PlatformService.DeleteMonograph:input_type -> wg.cosmo.platform.v1.DeleteMonographRequest - 92, // 511: wg.cosmo.platform.v1.PlatformService.UpdateMonograph:input_type -> wg.cosmo.platform.v1.UpdateMonographRequest - 331, // 512: wg.cosmo.platform.v1.PlatformService.MigrateMonograph:input_type -> wg.cosmo.platform.v1.MigrateMonographRequest - 31, // 513: wg.cosmo.platform.v1.PlatformService.CreateFederatedSubgraph:input_type -> wg.cosmo.platform.v1.CreateFederatedSubgraphRequest - 21, // 514: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph:input_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphRequest - 30, // 515: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph:input_type -> wg.cosmo.platform.v1.CreateFederatedGraphRequest - 32, // 516: wg.cosmo.platform.v1.PlatformService.DeleteFederatedGraph:input_type -> wg.cosmo.platform.v1.DeleteFederatedGraphRequest - 35, // 517: wg.cosmo.platform.v1.PlatformService.DeleteFederatedSubgraph:input_type -> wg.cosmo.platform.v1.DeleteFederatedSubgraphRequest - 26, // 518: wg.cosmo.platform.v1.PlatformService.CheckSubgraphSchema:input_type -> wg.cosmo.platform.v1.CheckSubgraphSchemaRequest - 415, // 519: wg.cosmo.platform.v1.PlatformService.GetProposedSchemaOfCheckedSubgraph:input_type -> wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphRequest - 27, // 520: wg.cosmo.platform.v1.PlatformService.FixSubgraphSchema:input_type -> wg.cosmo.platform.v1.FixSubgraphSchemaRequest - 90, // 521: wg.cosmo.platform.v1.PlatformService.UpdateFederatedGraph:input_type -> wg.cosmo.platform.v1.UpdateFederatedGraphRequest - 88, // 522: wg.cosmo.platform.v1.PlatformService.UpdateSubgraph:input_type -> wg.cosmo.platform.v1.UpdateSubgraphRequest - 94, // 523: wg.cosmo.platform.v1.PlatformService.CheckFederatedGraph:input_type -> wg.cosmo.platform.v1.CheckFederatedGraphRequest - 155, // 524: wg.cosmo.platform.v1.PlatformService.WhoAmI:input_type -> wg.cosmo.platform.v1.WhoAmIRequest - 158, // 525: wg.cosmo.platform.v1.PlatformService.GenerateRouterToken:input_type -> wg.cosmo.platform.v1.GenerateRouterTokenRequest - 160, // 526: wg.cosmo.platform.v1.PlatformService.GetRouterTokens:input_type -> wg.cosmo.platform.v1.GetRouterTokensRequest - 162, // 527: wg.cosmo.platform.v1.PlatformService.DeleteRouterToken:input_type -> wg.cosmo.platform.v1.DeleteRouterTokenRequest - 165, // 528: wg.cosmo.platform.v1.PlatformService.PublishPersistedOperations:input_type -> wg.cosmo.platform.v1.PublishPersistedOperationsRequest - 170, // 529: wg.cosmo.platform.v1.PlatformService.CheckPersistedOperationTraffic:input_type -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficRequest - 168, // 530: wg.cosmo.platform.v1.PlatformService.DeletePersistedOperation:input_type -> wg.cosmo.platform.v1.DeletePersistedOperationRequest - 172, // 531: wg.cosmo.platform.v1.PlatformService.GetPersistedOperations:input_type -> wg.cosmo.platform.v1.GetPersistedOperationsRequest - 265, // 532: wg.cosmo.platform.v1.PlatformService.GetAuditLogs:input_type -> wg.cosmo.platform.v1.GetAuditLogsRequest - 451, // 533: wg.cosmo.platform.v1.PlatformService.InitializeCosmoUser:input_type -> wg.cosmo.platform.v1.InitializeCosmoUserRequest - 453, // 534: wg.cosmo.platform.v1.PlatformService.ListOrganizations:input_type -> wg.cosmo.platform.v1.ListOrganizationsRequest - 53, // 535: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphs:input_type -> wg.cosmo.platform.v1.GetFederatedGraphsRequest - 57, // 536: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphsBySubgraphLabels:input_type -> wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsRequest - 62, // 537: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphByName:input_type -> wg.cosmo.platform.v1.GetFederatedGraphByNameRequest - 64, // 538: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphSDLByName:input_type -> wg.cosmo.platform.v1.GetFederatedGraphSDLByNameRequest - 59, // 539: wg.cosmo.platform.v1.PlatformService.GetSubgraphs:input_type -> wg.cosmo.platform.v1.GetSubgraphsRequest - 66, // 540: wg.cosmo.platform.v1.PlatformService.GetSubgraphByName:input_type -> wg.cosmo.platform.v1.GetSubgraphByNameRequest - 68, // 541: wg.cosmo.platform.v1.PlatformService.GetSubgraphSDLFromLatestComposition:input_type -> wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionRequest - 70, // 542: wg.cosmo.platform.v1.PlatformService.GetLatestSubgraphSDL:input_type -> wg.cosmo.platform.v1.GetLatestSubgraphSDLRequest - 73, // 543: wg.cosmo.platform.v1.PlatformService.GetChecksByFederatedGraphName:input_type -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest - 76, // 544: wg.cosmo.platform.v1.PlatformService.GetCheckSummary:input_type -> wg.cosmo.platform.v1.GetCheckSummaryRequest - 79, // 545: wg.cosmo.platform.v1.PlatformService.GetCheckOperations:input_type -> wg.cosmo.platform.v1.GetCheckOperationsRequest - 232, // 546: wg.cosmo.platform.v1.PlatformService.ForceCheckSuccess:input_type -> wg.cosmo.platform.v1.ForceCheckSuccessRequest - 239, // 547: wg.cosmo.platform.v1.PlatformService.CreateOperationOverrides:input_type -> wg.cosmo.platform.v1.CreateOperationOverridesRequest - 243, // 548: wg.cosmo.platform.v1.PlatformService.RemoveOperationOverrides:input_type -> wg.cosmo.platform.v1.RemoveOperationOverridesRequest - 241, // 549: wg.cosmo.platform.v1.PlatformService.CreateOperationIgnoreAllOverride:input_type -> wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideRequest - 245, // 550: wg.cosmo.platform.v1.PlatformService.RemoveOperationIgnoreAllOverride:input_type -> wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideRequest - 247, // 551: wg.cosmo.platform.v1.PlatformService.GetOperationOverrides:input_type -> wg.cosmo.platform.v1.GetOperationOverridesRequest - 249, // 552: wg.cosmo.platform.v1.PlatformService.GetAllOverrides:input_type -> wg.cosmo.platform.v1.GetAllOverridesRequest - 234, // 553: wg.cosmo.platform.v1.PlatformService.ToggleChangeOverridesForAllOperations:input_type -> wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsRequest - 236, // 554: wg.cosmo.platform.v1.PlatformService.CreateIgnoreOverridesForAllOperations:input_type -> wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsRequest - 81, // 555: wg.cosmo.platform.v1.PlatformService.GetOperationContent:input_type -> wg.cosmo.platform.v1.GetOperationContentRequest - 83, // 556: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphChangelog:input_type -> wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest - 115, // 557: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraphToken:input_type -> wg.cosmo.platform.v1.CreateFederatedGraphTokenRequest - 209, // 558: wg.cosmo.platform.v1.PlatformService.GetOrganizationBySlug:input_type -> wg.cosmo.platform.v1.GetOrganizationBySlugRequest - 133, // 559: wg.cosmo.platform.v1.PlatformService.GetOrganizationMembers:input_type -> wg.cosmo.platform.v1.GetOrganizationMembersRequest - 131, // 560: wg.cosmo.platform.v1.PlatformService.GetPendingOrganizationMembers:input_type -> wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest - 340, // 561: wg.cosmo.platform.v1.PlatformService.IsMemberLimitReached:input_type -> wg.cosmo.platform.v1.IsMemberLimitReachedRequest - 135, // 562: wg.cosmo.platform.v1.PlatformService.InviteUser:input_type -> wg.cosmo.platform.v1.InviteUserRequest - 138, // 563: wg.cosmo.platform.v1.PlatformService.GetAPIKeys:input_type -> wg.cosmo.platform.v1.GetAPIKeysRequest - 140, // 564: wg.cosmo.platform.v1.PlatformService.CreateAPIKey:input_type -> wg.cosmo.platform.v1.CreateAPIKeyRequest - 144, // 565: wg.cosmo.platform.v1.PlatformService.UpdateAPIKey:input_type -> wg.cosmo.platform.v1.UpdateAPIKeyRequest - 142, // 566: wg.cosmo.platform.v1.PlatformService.DeleteAPIKey:input_type -> wg.cosmo.platform.v1.DeleteAPIKeyRequest - 146, // 567: wg.cosmo.platform.v1.PlatformService.RemoveOrganizationMember:input_type -> wg.cosmo.platform.v1.RemoveOrganizationMemberRequest - 148, // 568: wg.cosmo.platform.v1.PlatformService.RemoveInvitation:input_type -> wg.cosmo.platform.v1.RemoveInvitationRequest - 150, // 569: wg.cosmo.platform.v1.PlatformService.MigrateFromApollo:input_type -> wg.cosmo.platform.v1.MigrateFromApolloRequest - 119, // 570: wg.cosmo.platform.v1.PlatformService.CreateOrganizationGroup:input_type -> wg.cosmo.platform.v1.CreateOrganizationGroupRequest - 121, // 571: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroups:input_type -> wg.cosmo.platform.v1.GetOrganizationGroupsRequest - 123, // 572: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroupMembers:input_type -> wg.cosmo.platform.v1.GetOrganizationGroupMembersRequest - 125, // 573: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationGroup:input_type -> wg.cosmo.platform.v1.UpdateOrganizationGroupRequest - 127, // 574: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationGroup:input_type -> wg.cosmo.platform.v1.DeleteOrganizationGroupRequest - 175, // 575: wg.cosmo.platform.v1.PlatformService.CreateOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest - 177, // 576: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookConfigs:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsRequest - 179, // 577: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookMeta:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookMetaRequest - 181, // 578: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest - 183, // 579: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigRequest - 367, // 580: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookHistory:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest - 372, // 581: wg.cosmo.platform.v1.PlatformService.GetWebhookDeliveryDetails:input_type -> wg.cosmo.platform.v1.GetWebhookDeliveryDetailsRequest - 370, // 582: wg.cosmo.platform.v1.PlatformService.RedeliverWebhook:input_type -> wg.cosmo.platform.v1.RedeliverWebhookRequest - 185, // 583: wg.cosmo.platform.v1.PlatformService.CreateIntegration:input_type -> wg.cosmo.platform.v1.CreateIntegrationRequest - 187, // 584: wg.cosmo.platform.v1.PlatformService.GetOrganizationIntegrations:input_type -> wg.cosmo.platform.v1.GetOrganizationIntegrationsRequest - 192, // 585: wg.cosmo.platform.v1.PlatformService.UpdateIntegrationConfig:input_type -> wg.cosmo.platform.v1.UpdateIntegrationConfigRequest - 194, // 586: wg.cosmo.platform.v1.PlatformService.DeleteIntegration:input_type -> wg.cosmo.platform.v1.DeleteIntegrationRequest - 342, // 587: wg.cosmo.platform.v1.PlatformService.DeleteUser:input_type -> wg.cosmo.platform.v1.DeleteUserRequest - 196, // 588: wg.cosmo.platform.v1.PlatformService.DeleteOrganization:input_type -> wg.cosmo.platform.v1.DeleteOrganizationRequest - 198, // 589: wg.cosmo.platform.v1.PlatformService.RestoreOrganization:input_type -> wg.cosmo.platform.v1.RestoreOrganizationRequest - 200, // 590: wg.cosmo.platform.v1.PlatformService.LeaveOrganization:input_type -> wg.cosmo.platform.v1.LeaveOrganizationRequest - 202, // 591: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationDetails:input_type -> wg.cosmo.platform.v1.UpdateOrganizationDetailsRequest - 204, // 592: wg.cosmo.platform.v1.PlatformService.UpdateOrgMemberGroup:input_type -> wg.cosmo.platform.v1.UpdateOrgMemberGroupRequest - 251, // 593: wg.cosmo.platform.v1.PlatformService.IsGitHubAppInstalled:input_type -> wg.cosmo.platform.v1.IsGitHubAppInstalledRequest - 254, // 594: wg.cosmo.platform.v1.PlatformService.CreateOIDCProvider:input_type -> wg.cosmo.platform.v1.CreateOIDCProviderRequest - 256, // 595: wg.cosmo.platform.v1.PlatformService.GetOIDCProvider:input_type -> wg.cosmo.platform.v1.GetOIDCProviderRequest - 258, // 596: wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider:input_type -> wg.cosmo.platform.v1.DeleteOIDCProviderRequest - 260, // 597: wg.cosmo.platform.v1.PlatformService.UpdateIDPMappers:input_type -> wg.cosmo.platform.v1.UpdateIDPMappersRequest - 296, // 598: wg.cosmo.platform.v1.PlatformService.GetClients:input_type -> wg.cosmo.platform.v1.GetClientsRequest - 293, // 599: wg.cosmo.platform.v1.PlatformService.GetRouters:input_type -> wg.cosmo.platform.v1.GetRoutersRequest - 268, // 600: wg.cosmo.platform.v1.PlatformService.GetInvitations:input_type -> wg.cosmo.platform.v1.GetInvitationsRequest - 270, // 601: wg.cosmo.platform.v1.PlatformService.AcceptOrDeclineInvitation:input_type -> wg.cosmo.platform.v1.AcceptOrDeclineInvitationRequest - 274, // 602: wg.cosmo.platform.v1.PlatformService.GetCompositions:input_type -> wg.cosmo.platform.v1.GetCompositionsRequest - 276, // 603: wg.cosmo.platform.v1.PlatformService.GetCompositionDetails:input_type -> wg.cosmo.platform.v1.GetCompositionDetailsRequest - 279, // 604: wg.cosmo.platform.v1.PlatformService.GetSdlBySchemaVersion:input_type -> wg.cosmo.platform.v1.GetSdlBySchemaVersionRequest - 281, // 605: wg.cosmo.platform.v1.PlatformService.GetChangelogBySchemaVersion:input_type -> wg.cosmo.platform.v1.GetChangelogBySchemaVersionRequest - 283, // 606: wg.cosmo.platform.v1.PlatformService.GetUserAccessibleResources:input_type -> wg.cosmo.platform.v1.GetUserAccessibleResourcesRequest - 285, // 607: wg.cosmo.platform.v1.PlatformService.UpdateFeatureSettings:input_type -> wg.cosmo.platform.v1.UpdateFeatureSettingsRequest - 287, // 608: wg.cosmo.platform.v1.PlatformService.GetSubgraphMembers:input_type -> wg.cosmo.platform.v1.GetSubgraphMembersRequest - 290, // 609: wg.cosmo.platform.v1.PlatformService.AddReadme:input_type -> wg.cosmo.platform.v1.AddReadmeRequest - 333, // 610: wg.cosmo.platform.v1.PlatformService.GetUserAccessiblePermissions:input_type -> wg.cosmo.platform.v1.GetUserAccessiblePermissionsRequest - 344, // 611: wg.cosmo.platform.v1.PlatformService.CreateFeatureFlag:input_type -> wg.cosmo.platform.v1.CreateFeatureFlagRequest - 350, // 612: wg.cosmo.platform.v1.PlatformService.DeleteFeatureFlag:input_type -> wg.cosmo.platform.v1.DeleteFeatureFlagRequest - 346, // 613: wg.cosmo.platform.v1.PlatformService.UpdateFeatureFlag:input_type -> wg.cosmo.platform.v1.UpdateFeatureFlagRequest - 348, // 614: wg.cosmo.platform.v1.PlatformService.EnableFeatureFlag:input_type -> wg.cosmo.platform.v1.EnableFeatureFlagRequest - 101, // 615: wg.cosmo.platform.v1.PlatformService.GetAnalyticsView:input_type -> wg.cosmo.platform.v1.GetAnalyticsViewRequest - 109, // 616: wg.cosmo.platform.v1.PlatformService.GetDashboardAnalyticsView:input_type -> wg.cosmo.platform.v1.GetDashboardAnalyticsViewRequest - 153, // 617: wg.cosmo.platform.v1.PlatformService.GetTrace:input_type -> wg.cosmo.platform.v1.GetTraceRequest - 219, // 618: wg.cosmo.platform.v1.PlatformService.GetGraphMetrics:input_type -> wg.cosmo.platform.v1.GetGraphMetricsRequest - 225, // 619: wg.cosmo.platform.v1.PlatformService.GetMetricsErrorRate:input_type -> wg.cosmo.platform.v1.GetMetricsErrorRateRequest - 228, // 620: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetrics:input_type -> wg.cosmo.platform.v1.GetSubgraphMetricsRequest - 230, // 621: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetricsErrorRate:input_type -> wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest - 298, // 622: wg.cosmo.platform.v1.PlatformService.GetFieldUsage:input_type -> wg.cosmo.platform.v1.GetFieldUsageRequest - 262, // 623: wg.cosmo.platform.v1.PlatformService.GetOrganizationRequestsCount:input_type -> wg.cosmo.platform.v1.GetOrganizationRequestsCountRequest - 206, // 624: wg.cosmo.platform.v1.PlatformService.CreateOrganization:input_type -> wg.cosmo.platform.v1.CreateOrganizationRequest - 319, // 625: wg.cosmo.platform.v1.PlatformService.EnableLintingForTheNamespace:input_type -> wg.cosmo.platform.v1.EnableLintingForTheNamespaceRequest - 322, // 626: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceLintConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceLintConfigRequest - 313, // 627: wg.cosmo.platform.v1.PlatformService.GetNamespaceLintConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceLintConfigRequest - 315, // 628: wg.cosmo.platform.v1.PlatformService.GetNamespaceChecksConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceChecksConfigurationRequest - 317, // 629: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceChecksConfig:input_type -> wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationRequest - 324, // 630: wg.cosmo.platform.v1.PlatformService.EnableGraphPruning:input_type -> wg.cosmo.platform.v1.EnableGraphPruningRequest - 327, // 631: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceGraphPruningConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigRequest - 329, // 632: wg.cosmo.platform.v1.PlatformService.GetNamespaceGraphPruningConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigRequest - 353, // 633: wg.cosmo.platform.v1.PlatformService.GetFeatureFlags:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsRequest - 355, // 634: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagByName:input_type -> wg.cosmo.platform.v1.GetFeatureFlagByNameRequest - 357, // 635: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFeatureFlag:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagRequest - 359, // 636: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphs:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsRequest - 361, // 637: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphRequest - 363, // 638: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest - 365, // 639: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphRequest - 383, // 640: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById:input_type -> wg.cosmo.platform.v1.GetFederatedGraphByIdRequest - 385, // 641: wg.cosmo.platform.v1.PlatformService.GetSubgraphById:input_type -> wg.cosmo.platform.v1.GetSubgraphByIdRequest - 394, // 642: wg.cosmo.platform.v1.PlatformService.PushCacheWarmerOperation:input_type -> wg.cosmo.platform.v1.PushCacheWarmerOperationRequest - 396, // 643: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerOperations:input_type -> wg.cosmo.platform.v1.GetCacheWarmerOperationsRequest - 399, // 644: wg.cosmo.platform.v1.PlatformService.ComputeCacheWarmerOperations:input_type -> wg.cosmo.platform.v1.ComputeCacheWarmerOperationsRequest - 401, // 645: wg.cosmo.platform.v1.PlatformService.ConfigureCacheWarmer:input_type -> wg.cosmo.platform.v1.ConfigureCacheWarmerRequest - 403, // 646: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerConfig:input_type -> wg.cosmo.platform.v1.GetCacheWarmerConfigRequest - 409, // 647: wg.cosmo.platform.v1.PlatformService.DeleteCacheWarmerOperation:input_type -> wg.cosmo.platform.v1.DeleteCacheWarmerOperationRequest - 405, // 648: wg.cosmo.platform.v1.PlatformService.GetSubgraphCheckExtensionsConfig:input_type -> wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigRequest - 407, // 649: wg.cosmo.platform.v1.PlatformService.ConfigureSubgraphCheckExtensions:input_type -> wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsRequest - 211, // 650: wg.cosmo.platform.v1.PlatformService.GetBillingPlans:input_type -> wg.cosmo.platform.v1.GetBillingPlansRequest - 213, // 651: wg.cosmo.platform.v1.PlatformService.CreateCheckoutSession:input_type -> wg.cosmo.platform.v1.CreateCheckoutSessionRequest - 215, // 652: wg.cosmo.platform.v1.PlatformService.CreateBillingPortalSession:input_type -> wg.cosmo.platform.v1.CreateBillingPortalSessionRequest - 217, // 653: wg.cosmo.platform.v1.PlatformService.UpgradePlan:input_type -> wg.cosmo.platform.v1.UpgradePlanRequest - 411, // 654: wg.cosmo.platform.v1.PlatformService.ListRouterCompatibilityVersions:input_type -> wg.cosmo.platform.v1.ListRouterCompatibilityVersionsRequest - 413, // 655: wg.cosmo.platform.v1.PlatformService.SetGraphRouterCompatibilityVersion:input_type -> wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionRequest - 419, // 656: wg.cosmo.platform.v1.PlatformService.CreateProposal:input_type -> wg.cosmo.platform.v1.CreateProposalRequest - 421, // 657: wg.cosmo.platform.v1.PlatformService.GetProposal:input_type -> wg.cosmo.platform.v1.GetProposalRequest - 427, // 658: wg.cosmo.platform.v1.PlatformService.UpdateProposal:input_type -> wg.cosmo.platform.v1.UpdateProposalRequest - 429, // 659: wg.cosmo.platform.v1.PlatformService.EnableProposalsForNamespace:input_type -> wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest - 431, // 660: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceProposalConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest - 433, // 661: wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest - 423, // 662: wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest - 425, // 663: wg.cosmo.platform.v1.PlatformService.GetProposalChecks:input_type -> wg.cosmo.platform.v1.GetProposalChecksRequest - 435, // 664: wg.cosmo.platform.v1.PlatformService.GetOperations:input_type -> wg.cosmo.platform.v1.GetOperationsRequest - 437, // 665: wg.cosmo.platform.v1.PlatformService.GetClientsFromAnalytics:input_type -> wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest - 439, // 666: wg.cosmo.platform.v1.PlatformService.GetOperationClients:input_type -> wg.cosmo.platform.v1.GetOperationClientsRequest - 441, // 667: wg.cosmo.platform.v1.PlatformService.GetOperationDeprecatedFields:input_type -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest - 443, // 668: wg.cosmo.platform.v1.PlatformService.ValidateAndFetchPluginData:input_type -> wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest - 445, // 669: wg.cosmo.platform.v1.PlatformService.LinkSubgraph:input_type -> wg.cosmo.platform.v1.LinkSubgraphRequest - 447, // 670: wg.cosmo.platform.v1.PlatformService.UnlinkSubgraph:input_type -> wg.cosmo.platform.v1.UnlinkSubgraphRequest - 449, // 671: wg.cosmo.platform.v1.PlatformService.VerifyAPIKeyGraphAccess:input_type -> wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest - 455, // 672: wg.cosmo.platform.v1.PlatformService.RecomposeGraph:input_type -> wg.cosmo.platform.v1.RecomposeGraphRequest - 375, // 673: wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript:output_type -> wg.cosmo.platform.v1.CreatePlaygroundScriptResponse - 377, // 674: wg.cosmo.platform.v1.PlatformService.DeletePlaygroundScript:output_type -> wg.cosmo.platform.v1.DeletePlaygroundScriptResponse - 379, // 675: wg.cosmo.platform.v1.PlatformService.UpdatePlaygroundScript:output_type -> wg.cosmo.platform.v1.UpdatePlaygroundScriptResponse - 382, // 676: wg.cosmo.platform.v1.PlatformService.GetPlaygroundScripts:output_type -> wg.cosmo.platform.v1.GetPlaygroundScriptsResponse - 303, // 677: wg.cosmo.platform.v1.PlatformService.CreateNamespace:output_type -> wg.cosmo.platform.v1.CreateNamespaceResponse - 305, // 678: wg.cosmo.platform.v1.PlatformService.DeleteNamespace:output_type -> wg.cosmo.platform.v1.DeleteNamespaceResponse - 307, // 679: wg.cosmo.platform.v1.PlatformService.RenameNamespace:output_type -> wg.cosmo.platform.v1.RenameNamespaceResponse - 310, // 680: wg.cosmo.platform.v1.PlatformService.GetNamespaces:output_type -> wg.cosmo.platform.v1.GetNamespacesResponse - 388, // 681: wg.cosmo.platform.v1.PlatformService.GetNamespace:output_type -> wg.cosmo.platform.v1.GetNamespaceResponse - 393, // 682: wg.cosmo.platform.v1.PlatformService.GetWorkspace:output_type -> wg.cosmo.platform.v1.GetWorkspaceResponse - 337, // 683: wg.cosmo.platform.v1.PlatformService.CreateContract:output_type -> wg.cosmo.platform.v1.CreateContractResponse - 339, // 684: wg.cosmo.platform.v1.PlatformService.UpdateContract:output_type -> wg.cosmo.platform.v1.UpdateContractResponse - 312, // 685: wg.cosmo.platform.v1.PlatformService.MoveFederatedGraph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse - 312, // 686: wg.cosmo.platform.v1.PlatformService.MoveSubgraph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse - 312, // 687: wg.cosmo.platform.v1.PlatformService.MoveMonograph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse - 29, // 688: wg.cosmo.platform.v1.PlatformService.CreateMonograph:output_type -> wg.cosmo.platform.v1.CreateMonographResponse - 19, // 689: wg.cosmo.platform.v1.PlatformService.PublishMonograph:output_type -> wg.cosmo.platform.v1.PublishMonographResponse - 34, // 690: wg.cosmo.platform.v1.PlatformService.DeleteMonograph:output_type -> wg.cosmo.platform.v1.DeleteMonographResponse - 93, // 691: wg.cosmo.platform.v1.PlatformService.UpdateMonograph:output_type -> wg.cosmo.platform.v1.UpdateMonographResponse - 332, // 692: wg.cosmo.platform.v1.PlatformService.MigrateMonograph:output_type -> wg.cosmo.platform.v1.MigrateMonographResponse - 50, // 693: wg.cosmo.platform.v1.PlatformService.CreateFederatedSubgraph:output_type -> wg.cosmo.platform.v1.CreateFederatedSubgraphResponse - 22, // 694: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph:output_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphResponse - 49, // 695: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph:output_type -> wg.cosmo.platform.v1.CreateFederatedGraphResponse - 52, // 696: wg.cosmo.platform.v1.PlatformService.DeleteFederatedGraph:output_type -> wg.cosmo.platform.v1.DeleteFederatedGraphResponse - 51, // 697: wg.cosmo.platform.v1.PlatformService.DeleteFederatedSubgraph:output_type -> wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse - 46, // 698: wg.cosmo.platform.v1.PlatformService.CheckSubgraphSchema:output_type -> wg.cosmo.platform.v1.CheckSubgraphSchemaResponse - 416, // 699: wg.cosmo.platform.v1.PlatformService.GetProposedSchemaOfCheckedSubgraph:output_type -> wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphResponse - 48, // 700: wg.cosmo.platform.v1.PlatformService.FixSubgraphSchema:output_type -> wg.cosmo.platform.v1.FixSubgraphSchemaResponse - 91, // 701: wg.cosmo.platform.v1.PlatformService.UpdateFederatedGraph:output_type -> wg.cosmo.platform.v1.UpdateFederatedGraphResponse - 89, // 702: wg.cosmo.platform.v1.PlatformService.UpdateSubgraph:output_type -> wg.cosmo.platform.v1.UpdateSubgraphResponse - 95, // 703: wg.cosmo.platform.v1.PlatformService.CheckFederatedGraph:output_type -> wg.cosmo.platform.v1.CheckFederatedGraphResponse - 156, // 704: wg.cosmo.platform.v1.PlatformService.WhoAmI:output_type -> wg.cosmo.platform.v1.WhoAmIResponse - 159, // 705: wg.cosmo.platform.v1.PlatformService.GenerateRouterToken:output_type -> wg.cosmo.platform.v1.GenerateRouterTokenResponse - 161, // 706: wg.cosmo.platform.v1.PlatformService.GetRouterTokens:output_type -> wg.cosmo.platform.v1.GetRouterTokensResponse - 163, // 707: wg.cosmo.platform.v1.PlatformService.DeleteRouterToken:output_type -> wg.cosmo.platform.v1.DeleteRouterTokenResponse - 167, // 708: wg.cosmo.platform.v1.PlatformService.PublishPersistedOperations:output_type -> wg.cosmo.platform.v1.PublishPersistedOperationsResponse - 171, // 709: wg.cosmo.platform.v1.PlatformService.CheckPersistedOperationTraffic:output_type -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse - 169, // 710: wg.cosmo.platform.v1.PlatformService.DeletePersistedOperation:output_type -> wg.cosmo.platform.v1.DeletePersistedOperationResponse - 173, // 711: wg.cosmo.platform.v1.PlatformService.GetPersistedOperations:output_type -> wg.cosmo.platform.v1.GetPersistedOperationsResponse - 267, // 712: wg.cosmo.platform.v1.PlatformService.GetAuditLogs:output_type -> wg.cosmo.platform.v1.GetAuditLogsResponse - 452, // 713: wg.cosmo.platform.v1.PlatformService.InitializeCosmoUser:output_type -> wg.cosmo.platform.v1.InitializeCosmoUserResponse - 454, // 714: wg.cosmo.platform.v1.PlatformService.ListOrganizations:output_type -> wg.cosmo.platform.v1.ListOrganizationsResponse - 56, // 715: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphs:output_type -> wg.cosmo.platform.v1.GetFederatedGraphsResponse - 58, // 716: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphsBySubgraphLabels:output_type -> wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse - 63, // 717: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphByName:output_type -> wg.cosmo.platform.v1.GetFederatedGraphByNameResponse - 65, // 718: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphSDLByName:output_type -> wg.cosmo.platform.v1.GetFederatedGraphSDLByNameResponse - 61, // 719: wg.cosmo.platform.v1.PlatformService.GetSubgraphs:output_type -> wg.cosmo.platform.v1.GetSubgraphsResponse - 67, // 720: wg.cosmo.platform.v1.PlatformService.GetSubgraphByName:output_type -> wg.cosmo.platform.v1.GetSubgraphByNameResponse - 69, // 721: wg.cosmo.platform.v1.PlatformService.GetSubgraphSDLFromLatestComposition:output_type -> wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse - 71, // 722: wg.cosmo.platform.v1.PlatformService.GetLatestSubgraphSDL:output_type -> wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse - 75, // 723: wg.cosmo.platform.v1.PlatformService.GetChecksByFederatedGraphName:output_type -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse - 78, // 724: wg.cosmo.platform.v1.PlatformService.GetCheckSummary:output_type -> wg.cosmo.platform.v1.GetCheckSummaryResponse - 80, // 725: wg.cosmo.platform.v1.PlatformService.GetCheckOperations:output_type -> wg.cosmo.platform.v1.GetCheckOperationsResponse - 233, // 726: wg.cosmo.platform.v1.PlatformService.ForceCheckSuccess:output_type -> wg.cosmo.platform.v1.ForceCheckSuccessResponse - 240, // 727: wg.cosmo.platform.v1.PlatformService.CreateOperationOverrides:output_type -> wg.cosmo.platform.v1.CreateOperationOverridesResponse - 244, // 728: wg.cosmo.platform.v1.PlatformService.RemoveOperationOverrides:output_type -> wg.cosmo.platform.v1.RemoveOperationOverridesResponse - 242, // 729: wg.cosmo.platform.v1.PlatformService.CreateOperationIgnoreAllOverride:output_type -> wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideResponse - 246, // 730: wg.cosmo.platform.v1.PlatformService.RemoveOperationIgnoreAllOverride:output_type -> wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideResponse - 248, // 731: wg.cosmo.platform.v1.PlatformService.GetOperationOverrides:output_type -> wg.cosmo.platform.v1.GetOperationOverridesResponse - 250, // 732: wg.cosmo.platform.v1.PlatformService.GetAllOverrides:output_type -> wg.cosmo.platform.v1.GetAllOverridesResponse - 235, // 733: wg.cosmo.platform.v1.PlatformService.ToggleChangeOverridesForAllOperations:output_type -> wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsResponse - 237, // 734: wg.cosmo.platform.v1.PlatformService.CreateIgnoreOverridesForAllOperations:output_type -> wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsResponse - 82, // 735: wg.cosmo.platform.v1.PlatformService.GetOperationContent:output_type -> wg.cosmo.platform.v1.GetOperationContentResponse - 86, // 736: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphChangelog:output_type -> wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse - 116, // 737: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraphToken:output_type -> wg.cosmo.platform.v1.CreateFederatedGraphTokenResponse - 210, // 738: wg.cosmo.platform.v1.PlatformService.GetOrganizationBySlug:output_type -> wg.cosmo.platform.v1.GetOrganizationBySlugResponse - 134, // 739: wg.cosmo.platform.v1.PlatformService.GetOrganizationMembers:output_type -> wg.cosmo.platform.v1.GetOrganizationMembersResponse - 132, // 740: wg.cosmo.platform.v1.PlatformService.GetPendingOrganizationMembers:output_type -> wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse - 341, // 741: wg.cosmo.platform.v1.PlatformService.IsMemberLimitReached:output_type -> wg.cosmo.platform.v1.IsMemberLimitReachedResponse - 136, // 742: wg.cosmo.platform.v1.PlatformService.InviteUser:output_type -> wg.cosmo.platform.v1.InviteUserResponse - 139, // 743: wg.cosmo.platform.v1.PlatformService.GetAPIKeys:output_type -> wg.cosmo.platform.v1.GetAPIKeysResponse - 141, // 744: wg.cosmo.platform.v1.PlatformService.CreateAPIKey:output_type -> wg.cosmo.platform.v1.CreateAPIKeyResponse - 145, // 745: wg.cosmo.platform.v1.PlatformService.UpdateAPIKey:output_type -> wg.cosmo.platform.v1.UpdateAPIKeyResponse - 143, // 746: wg.cosmo.platform.v1.PlatformService.DeleteAPIKey:output_type -> wg.cosmo.platform.v1.DeleteAPIKeyResponse - 147, // 747: wg.cosmo.platform.v1.PlatformService.RemoveOrganizationMember:output_type -> wg.cosmo.platform.v1.RemoveOrganizationMemberResponse - 149, // 748: wg.cosmo.platform.v1.PlatformService.RemoveInvitation:output_type -> wg.cosmo.platform.v1.RemoveInvitationResponse - 151, // 749: wg.cosmo.platform.v1.PlatformService.MigrateFromApollo:output_type -> wg.cosmo.platform.v1.MigrateFromApolloResponse - 120, // 750: wg.cosmo.platform.v1.PlatformService.CreateOrganizationGroup:output_type -> wg.cosmo.platform.v1.CreateOrganizationGroupResponse - 122, // 751: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroups:output_type -> wg.cosmo.platform.v1.GetOrganizationGroupsResponse - 124, // 752: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroupMembers:output_type -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse - 126, // 753: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationGroup:output_type -> wg.cosmo.platform.v1.UpdateOrganizationGroupResponse - 128, // 754: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationGroup:output_type -> wg.cosmo.platform.v1.DeleteOrganizationGroupResponse - 176, // 755: wg.cosmo.platform.v1.PlatformService.CreateOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse - 178, // 756: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookConfigs:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse - 180, // 757: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookMeta:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse - 182, // 758: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse - 184, // 759: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse - 369, // 760: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookHistory:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse - 373, // 761: wg.cosmo.platform.v1.PlatformService.GetWebhookDeliveryDetails:output_type -> wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse - 371, // 762: wg.cosmo.platform.v1.PlatformService.RedeliverWebhook:output_type -> wg.cosmo.platform.v1.RedeliverWebhookResponse - 186, // 763: wg.cosmo.platform.v1.PlatformService.CreateIntegration:output_type -> wg.cosmo.platform.v1.CreateIntegrationResponse - 191, // 764: wg.cosmo.platform.v1.PlatformService.GetOrganizationIntegrations:output_type -> wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse - 193, // 765: wg.cosmo.platform.v1.PlatformService.UpdateIntegrationConfig:output_type -> wg.cosmo.platform.v1.UpdateIntegrationConfigResponse - 195, // 766: wg.cosmo.platform.v1.PlatformService.DeleteIntegration:output_type -> wg.cosmo.platform.v1.DeleteIntegrationResponse - 343, // 767: wg.cosmo.platform.v1.PlatformService.DeleteUser:output_type -> wg.cosmo.platform.v1.DeleteUserResponse - 197, // 768: wg.cosmo.platform.v1.PlatformService.DeleteOrganization:output_type -> wg.cosmo.platform.v1.DeleteOrganizationResponse - 199, // 769: wg.cosmo.platform.v1.PlatformService.RestoreOrganization:output_type -> wg.cosmo.platform.v1.RestoreOrganizationResponse - 201, // 770: wg.cosmo.platform.v1.PlatformService.LeaveOrganization:output_type -> wg.cosmo.platform.v1.LeaveOrganizationResponse - 203, // 771: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationDetails:output_type -> wg.cosmo.platform.v1.UpdateOrganizationDetailsResponse - 205, // 772: wg.cosmo.platform.v1.PlatformService.UpdateOrgMemberGroup:output_type -> wg.cosmo.platform.v1.UpdateOrgMemberGroupResponse - 252, // 773: wg.cosmo.platform.v1.PlatformService.IsGitHubAppInstalled:output_type -> wg.cosmo.platform.v1.IsGitHubAppInstalledResponse - 255, // 774: wg.cosmo.platform.v1.PlatformService.CreateOIDCProvider:output_type -> wg.cosmo.platform.v1.CreateOIDCProviderResponse - 257, // 775: wg.cosmo.platform.v1.PlatformService.GetOIDCProvider:output_type -> wg.cosmo.platform.v1.GetOIDCProviderResponse - 259, // 776: wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider:output_type -> wg.cosmo.platform.v1.DeleteOIDCProviderResponse - 261, // 777: wg.cosmo.platform.v1.PlatformService.UpdateIDPMappers:output_type -> wg.cosmo.platform.v1.UpdateIDPMappersResponse - 297, // 778: wg.cosmo.platform.v1.PlatformService.GetClients:output_type -> wg.cosmo.platform.v1.GetClientsResponse - 294, // 779: wg.cosmo.platform.v1.PlatformService.GetRouters:output_type -> wg.cosmo.platform.v1.GetRoutersResponse - 269, // 780: wg.cosmo.platform.v1.PlatformService.GetInvitations:output_type -> wg.cosmo.platform.v1.GetInvitationsResponse - 271, // 781: wg.cosmo.platform.v1.PlatformService.AcceptOrDeclineInvitation:output_type -> wg.cosmo.platform.v1.AcceptOrDeclineInvitationResponse - 275, // 782: wg.cosmo.platform.v1.PlatformService.GetCompositions:output_type -> wg.cosmo.platform.v1.GetCompositionsResponse - 278, // 783: wg.cosmo.platform.v1.PlatformService.GetCompositionDetails:output_type -> wg.cosmo.platform.v1.GetCompositionDetailsResponse - 280, // 784: wg.cosmo.platform.v1.PlatformService.GetSdlBySchemaVersion:output_type -> wg.cosmo.platform.v1.GetSdlBySchemaVersionResponse - 282, // 785: wg.cosmo.platform.v1.PlatformService.GetChangelogBySchemaVersion:output_type -> wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse - 284, // 786: wg.cosmo.platform.v1.PlatformService.GetUserAccessibleResources:output_type -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse - 286, // 787: wg.cosmo.platform.v1.PlatformService.UpdateFeatureSettings:output_type -> wg.cosmo.platform.v1.UpdateFeatureSettingsResponse - 289, // 788: wg.cosmo.platform.v1.PlatformService.GetSubgraphMembers:output_type -> wg.cosmo.platform.v1.GetSubgraphMembersResponse - 291, // 789: wg.cosmo.platform.v1.PlatformService.AddReadme:output_type -> wg.cosmo.platform.v1.AddReadmeResponse - 335, // 790: wg.cosmo.platform.v1.PlatformService.GetUserAccessiblePermissions:output_type -> wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse - 345, // 791: wg.cosmo.platform.v1.PlatformService.CreateFeatureFlag:output_type -> wg.cosmo.platform.v1.CreateFeatureFlagResponse - 351, // 792: wg.cosmo.platform.v1.PlatformService.DeleteFeatureFlag:output_type -> wg.cosmo.platform.v1.DeleteFeatureFlagResponse - 347, // 793: wg.cosmo.platform.v1.PlatformService.UpdateFeatureFlag:output_type -> wg.cosmo.platform.v1.UpdateFeatureFlagResponse - 349, // 794: wg.cosmo.platform.v1.PlatformService.EnableFeatureFlag:output_type -> wg.cosmo.platform.v1.EnableFeatureFlagResponse - 108, // 795: wg.cosmo.platform.v1.PlatformService.GetAnalyticsView:output_type -> wg.cosmo.platform.v1.GetAnalyticsViewResponse - 114, // 796: wg.cosmo.platform.v1.PlatformService.GetDashboardAnalyticsView:output_type -> wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse - 154, // 797: wg.cosmo.platform.v1.PlatformService.GetTrace:output_type -> wg.cosmo.platform.v1.GetTraceResponse - 220, // 798: wg.cosmo.platform.v1.PlatformService.GetGraphMetrics:output_type -> wg.cosmo.platform.v1.GetGraphMetricsResponse - 226, // 799: wg.cosmo.platform.v1.PlatformService.GetMetricsErrorRate:output_type -> wg.cosmo.platform.v1.GetMetricsErrorRateResponse - 229, // 800: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetrics:output_type -> wg.cosmo.platform.v1.GetSubgraphMetricsResponse - 231, // 801: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetricsErrorRate:output_type -> wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse - 301, // 802: wg.cosmo.platform.v1.PlatformService.GetFieldUsage:output_type -> wg.cosmo.platform.v1.GetFieldUsageResponse - 263, // 803: wg.cosmo.platform.v1.PlatformService.GetOrganizationRequestsCount:output_type -> wg.cosmo.platform.v1.GetOrganizationRequestsCountResponse - 207, // 804: wg.cosmo.platform.v1.PlatformService.CreateOrganization:output_type -> wg.cosmo.platform.v1.CreateOrganizationResponse - 320, // 805: wg.cosmo.platform.v1.PlatformService.EnableLintingForTheNamespace:output_type -> wg.cosmo.platform.v1.EnableLintingForTheNamespaceResponse - 323, // 806: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceLintConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceLintConfigResponse - 314, // 807: wg.cosmo.platform.v1.PlatformService.GetNamespaceLintConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceLintConfigResponse - 316, // 808: wg.cosmo.platform.v1.PlatformService.GetNamespaceChecksConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceChecksConfigurationResponse - 318, // 809: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceChecksConfig:output_type -> wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationResponse - 325, // 810: wg.cosmo.platform.v1.PlatformService.EnableGraphPruning:output_type -> wg.cosmo.platform.v1.EnableGraphPruningResponse - 328, // 811: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceGraphPruningConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigResponse - 330, // 812: wg.cosmo.platform.v1.PlatformService.GetNamespaceGraphPruningConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse - 354, // 813: wg.cosmo.platform.v1.PlatformService.GetFeatureFlags:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsResponse - 356, // 814: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagByName:output_type -> wg.cosmo.platform.v1.GetFeatureFlagByNameResponse - 358, // 815: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFeatureFlag:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse - 360, // 816: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphs:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsResponse - 362, // 817: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse - 364, // 818: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse - 366, // 819: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphResponse - 384, // 820: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById:output_type -> wg.cosmo.platform.v1.GetFederatedGraphByIdResponse - 386, // 821: wg.cosmo.platform.v1.PlatformService.GetSubgraphById:output_type -> wg.cosmo.platform.v1.GetSubgraphByIdResponse - 395, // 822: wg.cosmo.platform.v1.PlatformService.PushCacheWarmerOperation:output_type -> wg.cosmo.platform.v1.PushCacheWarmerOperationResponse - 398, // 823: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerOperations:output_type -> wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse - 400, // 824: wg.cosmo.platform.v1.PlatformService.ComputeCacheWarmerOperations:output_type -> wg.cosmo.platform.v1.ComputeCacheWarmerOperationsResponse - 402, // 825: wg.cosmo.platform.v1.PlatformService.ConfigureCacheWarmer:output_type -> wg.cosmo.platform.v1.ConfigureCacheWarmerResponse - 404, // 826: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerConfig:output_type -> wg.cosmo.platform.v1.GetCacheWarmerConfigResponse - 410, // 827: wg.cosmo.platform.v1.PlatformService.DeleteCacheWarmerOperation:output_type -> wg.cosmo.platform.v1.DeleteCacheWarmerOperationResponse - 406, // 828: wg.cosmo.platform.v1.PlatformService.GetSubgraphCheckExtensionsConfig:output_type -> wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigResponse - 408, // 829: wg.cosmo.platform.v1.PlatformService.ConfigureSubgraphCheckExtensions:output_type -> wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsResponse - 212, // 830: wg.cosmo.platform.v1.PlatformService.GetBillingPlans:output_type -> wg.cosmo.platform.v1.GetBillingPlansResponse - 214, // 831: wg.cosmo.platform.v1.PlatformService.CreateCheckoutSession:output_type -> wg.cosmo.platform.v1.CreateCheckoutSessionResponse - 216, // 832: wg.cosmo.platform.v1.PlatformService.CreateBillingPortalSession:output_type -> wg.cosmo.platform.v1.CreateBillingPortalSessionResponse - 218, // 833: wg.cosmo.platform.v1.PlatformService.UpgradePlan:output_type -> wg.cosmo.platform.v1.UpgradePlanResponse - 412, // 834: wg.cosmo.platform.v1.PlatformService.ListRouterCompatibilityVersions:output_type -> wg.cosmo.platform.v1.ListRouterCompatibilityVersionsResponse - 414, // 835: wg.cosmo.platform.v1.PlatformService.SetGraphRouterCompatibilityVersion:output_type -> wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse - 420, // 836: wg.cosmo.platform.v1.PlatformService.CreateProposal:output_type -> wg.cosmo.platform.v1.CreateProposalResponse - 422, // 837: wg.cosmo.platform.v1.PlatformService.GetProposal:output_type -> wg.cosmo.platform.v1.GetProposalResponse - 428, // 838: wg.cosmo.platform.v1.PlatformService.UpdateProposal:output_type -> wg.cosmo.platform.v1.UpdateProposalResponse - 430, // 839: wg.cosmo.platform.v1.PlatformService.EnableProposalsForNamespace:output_type -> wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse - 432, // 840: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceProposalConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse - 434, // 841: wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse - 424, // 842: wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse - 426, // 843: wg.cosmo.platform.v1.PlatformService.GetProposalChecks:output_type -> wg.cosmo.platform.v1.GetProposalChecksResponse - 436, // 844: wg.cosmo.platform.v1.PlatformService.GetOperations:output_type -> wg.cosmo.platform.v1.GetOperationsResponse - 438, // 845: wg.cosmo.platform.v1.PlatformService.GetClientsFromAnalytics:output_type -> wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse - 440, // 846: wg.cosmo.platform.v1.PlatformService.GetOperationClients:output_type -> wg.cosmo.platform.v1.GetOperationClientsResponse - 442, // 847: wg.cosmo.platform.v1.PlatformService.GetOperationDeprecatedFields:output_type -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse - 444, // 848: wg.cosmo.platform.v1.PlatformService.ValidateAndFetchPluginData:output_type -> wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse - 446, // 849: wg.cosmo.platform.v1.PlatformService.LinkSubgraph:output_type -> wg.cosmo.platform.v1.LinkSubgraphResponse - 448, // 850: wg.cosmo.platform.v1.PlatformService.UnlinkSubgraph:output_type -> wg.cosmo.platform.v1.UnlinkSubgraphResponse - 450, // 851: wg.cosmo.platform.v1.PlatformService.VerifyAPIKeyGraphAccess:output_type -> wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse - 456, // 852: wg.cosmo.platform.v1.PlatformService.RecomposeGraph:output_type -> wg.cosmo.platform.v1.RecomposeGraphResponse - 673, // [673:853] is the sub-list for method output_type - 493, // [493:673] is the sub-list for method input_type - 493, // [493:493] is the sub-list for extension type_name - 493, // [493:493] is the sub-list for extension extendee - 0, // [0:493] is the sub-list for field type_name + 489, // 420: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.items:type_name -> wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.Item + 16, // 421: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesResponse.response:type_name -> wg.cosmo.platform.v1.Response + 420, // 422: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesResponse.items:type_name -> wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesItemResult + 16, // 423: wg.cosmo.platform.v1.TeardownProposalRolloutResponse.response:type_name -> wg.cosmo.platform.v1.Response + 418, // 424: wg.cosmo.platform.v1.CreateProposalRequest.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph + 11, // 425: wg.cosmo.platform.v1.CreateProposalRequest.namingConvention:type_name -> wg.cosmo.platform.v1.ProposalNamingConvention + 10, // 426: wg.cosmo.platform.v1.CreateProposalRequest.origin:type_name -> wg.cosmo.platform.v1.ProposalOrigin + 16, // 427: wg.cosmo.platform.v1.CreateProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response + 36, // 428: wg.cosmo.platform.v1.CreateProposalResponse.breakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange + 36, // 429: wg.cosmo.platform.v1.CreateProposalResponse.nonBreakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange + 38, // 430: wg.cosmo.platform.v1.CreateProposalResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 39, // 431: wg.cosmo.platform.v1.CreateProposalResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 44, // 432: wg.cosmo.platform.v1.CreateProposalResponse.lintErrors:type_name -> wg.cosmo.platform.v1.LintIssue + 44, // 433: wg.cosmo.platform.v1.CreateProposalResponse.lintWarnings:type_name -> wg.cosmo.platform.v1.LintIssue + 45, // 434: wg.cosmo.platform.v1.CreateProposalResponse.graphPruneErrors:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 45, // 435: wg.cosmo.platform.v1.CreateProposalResponse.graphPruneWarnings:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 41, // 436: wg.cosmo.platform.v1.CreateProposalResponse.operationUsageStats:type_name -> wg.cosmo.platform.v1.CheckOperationUsageStats + 37, // 437: wg.cosmo.platform.v1.CreateProposalResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange + 16, // 438: wg.cosmo.platform.v1.GetProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response + 417, // 439: wg.cosmo.platform.v1.GetProposalResponse.proposal:type_name -> wg.cosmo.platform.v1.Proposal + 490, // 440: wg.cosmo.platform.v1.GetProposalResponse.currentSubgraphs:type_name -> wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraph + 16, // 441: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 417, // 442: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse.proposals:type_name -> wg.cosmo.platform.v1.Proposal + 16, // 443: wg.cosmo.platform.v1.GetProposalChecksResponse.response:type_name -> wg.cosmo.platform.v1.Response + 74, // 444: wg.cosmo.platform.v1.GetProposalChecksResponse.checks:type_name -> wg.cosmo.platform.v1.SchemaCheck + 491, // 445: wg.cosmo.platform.v1.UpdateProposalRequest.updatedSubgraphs:type_name -> wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs + 16, // 446: wg.cosmo.platform.v1.UpdateProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response + 36, // 447: wg.cosmo.platform.v1.UpdateProposalResponse.breakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange + 36, // 448: wg.cosmo.platform.v1.UpdateProposalResponse.nonBreakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange + 38, // 449: wg.cosmo.platform.v1.UpdateProposalResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 39, // 450: wg.cosmo.platform.v1.UpdateProposalResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 44, // 451: wg.cosmo.platform.v1.UpdateProposalResponse.lintErrors:type_name -> wg.cosmo.platform.v1.LintIssue + 44, // 452: wg.cosmo.platform.v1.UpdateProposalResponse.lintWarnings:type_name -> wg.cosmo.platform.v1.LintIssue + 45, // 453: wg.cosmo.platform.v1.UpdateProposalResponse.graphPruneErrors:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 45, // 454: wg.cosmo.platform.v1.UpdateProposalResponse.graphPruneWarnings:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 41, // 455: wg.cosmo.platform.v1.UpdateProposalResponse.operationUsageStats:type_name -> wg.cosmo.platform.v1.CheckOperationUsageStats + 37, // 456: wg.cosmo.platform.v1.UpdateProposalResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange + 16, // 457: wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response + 0, // 458: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest.checkSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 0, // 459: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest.publishSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 16, // 460: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 16, // 461: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 0, // 462: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.checkSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 0, // 463: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.publishSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 12, // 464: wg.cosmo.platform.v1.GetOperationsRequest.fetchBasedOn:type_name -> wg.cosmo.platform.v1.OperationsFetchBasedOn + 100, // 465: wg.cosmo.platform.v1.GetOperationsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 13, // 466: wg.cosmo.platform.v1.GetOperationsRequest.sortDirection:type_name -> wg.cosmo.platform.v1.SortDirection + 16, // 467: wg.cosmo.platform.v1.GetOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 492, // 468: wg.cosmo.platform.v1.GetOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetOperationsResponse.Operation + 16, // 469: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 493, // 470: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.clients:type_name -> wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.Client + 100, // 471: wg.cosmo.platform.v1.GetOperationClientsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 16, // 472: wg.cosmo.platform.v1.GetOperationClientsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 494, // 473: wg.cosmo.platform.v1.GetOperationClientsResponse.clients:type_name -> wg.cosmo.platform.v1.GetOperationClientsResponse.Client + 100, // 474: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 16, // 475: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 495, // 476: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.deprecatedFields:type_name -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedField + 15, // 477: wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest.labels:type_name -> wg.cosmo.platform.v1.Label + 16, // 478: wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse.response:type_name -> wg.cosmo.platform.v1.Response + 16, // 479: wg.cosmo.platform.v1.LinkSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 16, // 480: wg.cosmo.platform.v1.UnlinkSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 16, // 481: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse.response:type_name -> wg.cosmo.platform.v1.Response + 16, // 482: wg.cosmo.platform.v1.InitializeCosmoUserResponse.response:type_name -> wg.cosmo.platform.v1.Response + 16, // 483: wg.cosmo.platform.v1.ListOrganizationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 496, // 484: wg.cosmo.platform.v1.ListOrganizationsResponse.organizations:type_name -> wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembership + 16, // 485: wg.cosmo.platform.v1.RecomposeGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 38, // 486: wg.cosmo.platform.v1.RecomposeGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 40, // 487: wg.cosmo.platform.v1.RecomposeGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 39, // 488: wg.cosmo.platform.v1.RecomposeGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 23, // 489: wg.cosmo.platform.v1.RecomposeGraphResponse.errorCounts:type_name -> wg.cosmo.platform.v1.SubgraphPublishStats + 15, // 490: wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph.labels:type_name -> wg.cosmo.platform.v1.Label + 36, // 491: wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation.impacting_changes:type_name -> wg.cosmo.platform.v1.SchemaChange + 107, // 492: wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry.value:type_name -> wg.cosmo.platform.v1.AnalyticsViewRowValue + 481, // 493: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan.features:type_name -> wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeature + 55, // 494: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph.federated_graph:type_name -> wg.cosmo.platform.v1.FederatedGraph + 418, // 495: wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph + 14, // 496: wg.cosmo.platform.v1.GetOperationsResponse.Operation.type:type_name -> wg.cosmo.platform.v1.GetOperationsResponse.OperationType + 374, // 497: wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript:input_type -> wg.cosmo.platform.v1.CreatePlaygroundScriptRequest + 376, // 498: wg.cosmo.platform.v1.PlatformService.DeletePlaygroundScript:input_type -> wg.cosmo.platform.v1.DeletePlaygroundScriptRequest + 378, // 499: wg.cosmo.platform.v1.PlatformService.UpdatePlaygroundScript:input_type -> wg.cosmo.platform.v1.UpdatePlaygroundScriptRequest + 380, // 500: wg.cosmo.platform.v1.PlatformService.GetPlaygroundScripts:input_type -> wg.cosmo.platform.v1.GetPlaygroundScriptsRequest + 302, // 501: wg.cosmo.platform.v1.PlatformService.CreateNamespace:input_type -> wg.cosmo.platform.v1.CreateNamespaceRequest + 304, // 502: wg.cosmo.platform.v1.PlatformService.DeleteNamespace:input_type -> wg.cosmo.platform.v1.DeleteNamespaceRequest + 306, // 503: wg.cosmo.platform.v1.PlatformService.RenameNamespace:input_type -> wg.cosmo.platform.v1.RenameNamespaceRequest + 309, // 504: wg.cosmo.platform.v1.PlatformService.GetNamespaces:input_type -> wg.cosmo.platform.v1.GetNamespacesRequest + 387, // 505: wg.cosmo.platform.v1.PlatformService.GetNamespace:input_type -> wg.cosmo.platform.v1.GetNamespaceRequest + 392, // 506: wg.cosmo.platform.v1.PlatformService.GetWorkspace:input_type -> wg.cosmo.platform.v1.GetWorkspaceRequest + 336, // 507: wg.cosmo.platform.v1.PlatformService.CreateContract:input_type -> wg.cosmo.platform.v1.CreateContractRequest + 338, // 508: wg.cosmo.platform.v1.PlatformService.UpdateContract:input_type -> wg.cosmo.platform.v1.UpdateContractRequest + 311, // 509: wg.cosmo.platform.v1.PlatformService.MoveFederatedGraph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest + 311, // 510: wg.cosmo.platform.v1.PlatformService.MoveSubgraph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest + 311, // 511: wg.cosmo.platform.v1.PlatformService.MoveMonograph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest + 28, // 512: wg.cosmo.platform.v1.PlatformService.CreateMonograph:input_type -> wg.cosmo.platform.v1.CreateMonographRequest + 18, // 513: wg.cosmo.platform.v1.PlatformService.PublishMonograph:input_type -> wg.cosmo.platform.v1.PublishMonographRequest + 33, // 514: wg.cosmo.platform.v1.PlatformService.DeleteMonograph:input_type -> wg.cosmo.platform.v1.DeleteMonographRequest + 92, // 515: wg.cosmo.platform.v1.PlatformService.UpdateMonograph:input_type -> wg.cosmo.platform.v1.UpdateMonographRequest + 331, // 516: wg.cosmo.platform.v1.PlatformService.MigrateMonograph:input_type -> wg.cosmo.platform.v1.MigrateMonographRequest + 31, // 517: wg.cosmo.platform.v1.PlatformService.CreateFederatedSubgraph:input_type -> wg.cosmo.platform.v1.CreateFederatedSubgraphRequest + 21, // 518: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph:input_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphRequest + 30, // 519: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph:input_type -> wg.cosmo.platform.v1.CreateFederatedGraphRequest + 32, // 520: wg.cosmo.platform.v1.PlatformService.DeleteFederatedGraph:input_type -> wg.cosmo.platform.v1.DeleteFederatedGraphRequest + 35, // 521: wg.cosmo.platform.v1.PlatformService.DeleteFederatedSubgraph:input_type -> wg.cosmo.platform.v1.DeleteFederatedSubgraphRequest + 26, // 522: wg.cosmo.platform.v1.PlatformService.CheckSubgraphSchema:input_type -> wg.cosmo.platform.v1.CheckSubgraphSchemaRequest + 415, // 523: wg.cosmo.platform.v1.PlatformService.GetProposedSchemaOfCheckedSubgraph:input_type -> wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphRequest + 27, // 524: wg.cosmo.platform.v1.PlatformService.FixSubgraphSchema:input_type -> wg.cosmo.platform.v1.FixSubgraphSchemaRequest + 90, // 525: wg.cosmo.platform.v1.PlatformService.UpdateFederatedGraph:input_type -> wg.cosmo.platform.v1.UpdateFederatedGraphRequest + 88, // 526: wg.cosmo.platform.v1.PlatformService.UpdateSubgraph:input_type -> wg.cosmo.platform.v1.UpdateSubgraphRequest + 94, // 527: wg.cosmo.platform.v1.PlatformService.CheckFederatedGraph:input_type -> wg.cosmo.platform.v1.CheckFederatedGraphRequest + 155, // 528: wg.cosmo.platform.v1.PlatformService.WhoAmI:input_type -> wg.cosmo.platform.v1.WhoAmIRequest + 158, // 529: wg.cosmo.platform.v1.PlatformService.GenerateRouterToken:input_type -> wg.cosmo.platform.v1.GenerateRouterTokenRequest + 160, // 530: wg.cosmo.platform.v1.PlatformService.GetRouterTokens:input_type -> wg.cosmo.platform.v1.GetRouterTokensRequest + 162, // 531: wg.cosmo.platform.v1.PlatformService.DeleteRouterToken:input_type -> wg.cosmo.platform.v1.DeleteRouterTokenRequest + 165, // 532: wg.cosmo.platform.v1.PlatformService.PublishPersistedOperations:input_type -> wg.cosmo.platform.v1.PublishPersistedOperationsRequest + 170, // 533: wg.cosmo.platform.v1.PlatformService.CheckPersistedOperationTraffic:input_type -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficRequest + 168, // 534: wg.cosmo.platform.v1.PlatformService.DeletePersistedOperation:input_type -> wg.cosmo.platform.v1.DeletePersistedOperationRequest + 172, // 535: wg.cosmo.platform.v1.PlatformService.GetPersistedOperations:input_type -> wg.cosmo.platform.v1.GetPersistedOperationsRequest + 265, // 536: wg.cosmo.platform.v1.PlatformService.GetAuditLogs:input_type -> wg.cosmo.platform.v1.GetAuditLogsRequest + 456, // 537: wg.cosmo.platform.v1.PlatformService.InitializeCosmoUser:input_type -> wg.cosmo.platform.v1.InitializeCosmoUserRequest + 458, // 538: wg.cosmo.platform.v1.PlatformService.ListOrganizations:input_type -> wg.cosmo.platform.v1.ListOrganizationsRequest + 53, // 539: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphs:input_type -> wg.cosmo.platform.v1.GetFederatedGraphsRequest + 57, // 540: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphsBySubgraphLabels:input_type -> wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsRequest + 62, // 541: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphByName:input_type -> wg.cosmo.platform.v1.GetFederatedGraphByNameRequest + 64, // 542: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphSDLByName:input_type -> wg.cosmo.platform.v1.GetFederatedGraphSDLByNameRequest + 59, // 543: wg.cosmo.platform.v1.PlatformService.GetSubgraphs:input_type -> wg.cosmo.platform.v1.GetSubgraphsRequest + 66, // 544: wg.cosmo.platform.v1.PlatformService.GetSubgraphByName:input_type -> wg.cosmo.platform.v1.GetSubgraphByNameRequest + 68, // 545: wg.cosmo.platform.v1.PlatformService.GetSubgraphSDLFromLatestComposition:input_type -> wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionRequest + 70, // 546: wg.cosmo.platform.v1.PlatformService.GetLatestSubgraphSDL:input_type -> wg.cosmo.platform.v1.GetLatestSubgraphSDLRequest + 73, // 547: wg.cosmo.platform.v1.PlatformService.GetChecksByFederatedGraphName:input_type -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest + 76, // 548: wg.cosmo.platform.v1.PlatformService.GetCheckSummary:input_type -> wg.cosmo.platform.v1.GetCheckSummaryRequest + 79, // 549: wg.cosmo.platform.v1.PlatformService.GetCheckOperations:input_type -> wg.cosmo.platform.v1.GetCheckOperationsRequest + 232, // 550: wg.cosmo.platform.v1.PlatformService.ForceCheckSuccess:input_type -> wg.cosmo.platform.v1.ForceCheckSuccessRequest + 239, // 551: wg.cosmo.platform.v1.PlatformService.CreateOperationOverrides:input_type -> wg.cosmo.platform.v1.CreateOperationOverridesRequest + 243, // 552: wg.cosmo.platform.v1.PlatformService.RemoveOperationOverrides:input_type -> wg.cosmo.platform.v1.RemoveOperationOverridesRequest + 241, // 553: wg.cosmo.platform.v1.PlatformService.CreateOperationIgnoreAllOverride:input_type -> wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideRequest + 245, // 554: wg.cosmo.platform.v1.PlatformService.RemoveOperationIgnoreAllOverride:input_type -> wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideRequest + 247, // 555: wg.cosmo.platform.v1.PlatformService.GetOperationOverrides:input_type -> wg.cosmo.platform.v1.GetOperationOverridesRequest + 249, // 556: wg.cosmo.platform.v1.PlatformService.GetAllOverrides:input_type -> wg.cosmo.platform.v1.GetAllOverridesRequest + 234, // 557: wg.cosmo.platform.v1.PlatformService.ToggleChangeOverridesForAllOperations:input_type -> wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsRequest + 236, // 558: wg.cosmo.platform.v1.PlatformService.CreateIgnoreOverridesForAllOperations:input_type -> wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsRequest + 81, // 559: wg.cosmo.platform.v1.PlatformService.GetOperationContent:input_type -> wg.cosmo.platform.v1.GetOperationContentRequest + 83, // 560: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphChangelog:input_type -> wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest + 115, // 561: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraphToken:input_type -> wg.cosmo.platform.v1.CreateFederatedGraphTokenRequest + 209, // 562: wg.cosmo.platform.v1.PlatformService.GetOrganizationBySlug:input_type -> wg.cosmo.platform.v1.GetOrganizationBySlugRequest + 133, // 563: wg.cosmo.platform.v1.PlatformService.GetOrganizationMembers:input_type -> wg.cosmo.platform.v1.GetOrganizationMembersRequest + 131, // 564: wg.cosmo.platform.v1.PlatformService.GetPendingOrganizationMembers:input_type -> wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest + 340, // 565: wg.cosmo.platform.v1.PlatformService.IsMemberLimitReached:input_type -> wg.cosmo.platform.v1.IsMemberLimitReachedRequest + 135, // 566: wg.cosmo.platform.v1.PlatformService.InviteUser:input_type -> wg.cosmo.platform.v1.InviteUserRequest + 138, // 567: wg.cosmo.platform.v1.PlatformService.GetAPIKeys:input_type -> wg.cosmo.platform.v1.GetAPIKeysRequest + 140, // 568: wg.cosmo.platform.v1.PlatformService.CreateAPIKey:input_type -> wg.cosmo.platform.v1.CreateAPIKeyRequest + 144, // 569: wg.cosmo.platform.v1.PlatformService.UpdateAPIKey:input_type -> wg.cosmo.platform.v1.UpdateAPIKeyRequest + 142, // 570: wg.cosmo.platform.v1.PlatformService.DeleteAPIKey:input_type -> wg.cosmo.platform.v1.DeleteAPIKeyRequest + 146, // 571: wg.cosmo.platform.v1.PlatformService.RemoveOrganizationMember:input_type -> wg.cosmo.platform.v1.RemoveOrganizationMemberRequest + 148, // 572: wg.cosmo.platform.v1.PlatformService.RemoveInvitation:input_type -> wg.cosmo.platform.v1.RemoveInvitationRequest + 150, // 573: wg.cosmo.platform.v1.PlatformService.MigrateFromApollo:input_type -> wg.cosmo.platform.v1.MigrateFromApolloRequest + 119, // 574: wg.cosmo.platform.v1.PlatformService.CreateOrganizationGroup:input_type -> wg.cosmo.platform.v1.CreateOrganizationGroupRequest + 121, // 575: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroups:input_type -> wg.cosmo.platform.v1.GetOrganizationGroupsRequest + 123, // 576: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroupMembers:input_type -> wg.cosmo.platform.v1.GetOrganizationGroupMembersRequest + 125, // 577: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationGroup:input_type -> wg.cosmo.platform.v1.UpdateOrganizationGroupRequest + 127, // 578: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationGroup:input_type -> wg.cosmo.platform.v1.DeleteOrganizationGroupRequest + 175, // 579: wg.cosmo.platform.v1.PlatformService.CreateOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest + 177, // 580: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookConfigs:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsRequest + 179, // 581: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookMeta:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookMetaRequest + 181, // 582: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest + 183, // 583: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigRequest + 367, // 584: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookHistory:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest + 372, // 585: wg.cosmo.platform.v1.PlatformService.GetWebhookDeliveryDetails:input_type -> wg.cosmo.platform.v1.GetWebhookDeliveryDetailsRequest + 370, // 586: wg.cosmo.platform.v1.PlatformService.RedeliverWebhook:input_type -> wg.cosmo.platform.v1.RedeliverWebhookRequest + 185, // 587: wg.cosmo.platform.v1.PlatformService.CreateIntegration:input_type -> wg.cosmo.platform.v1.CreateIntegrationRequest + 187, // 588: wg.cosmo.platform.v1.PlatformService.GetOrganizationIntegrations:input_type -> wg.cosmo.platform.v1.GetOrganizationIntegrationsRequest + 192, // 589: wg.cosmo.platform.v1.PlatformService.UpdateIntegrationConfig:input_type -> wg.cosmo.platform.v1.UpdateIntegrationConfigRequest + 194, // 590: wg.cosmo.platform.v1.PlatformService.DeleteIntegration:input_type -> wg.cosmo.platform.v1.DeleteIntegrationRequest + 342, // 591: wg.cosmo.platform.v1.PlatformService.DeleteUser:input_type -> wg.cosmo.platform.v1.DeleteUserRequest + 196, // 592: wg.cosmo.platform.v1.PlatformService.DeleteOrganization:input_type -> wg.cosmo.platform.v1.DeleteOrganizationRequest + 198, // 593: wg.cosmo.platform.v1.PlatformService.RestoreOrganization:input_type -> wg.cosmo.platform.v1.RestoreOrganizationRequest + 200, // 594: wg.cosmo.platform.v1.PlatformService.LeaveOrganization:input_type -> wg.cosmo.platform.v1.LeaveOrganizationRequest + 202, // 595: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationDetails:input_type -> wg.cosmo.platform.v1.UpdateOrganizationDetailsRequest + 204, // 596: wg.cosmo.platform.v1.PlatformService.UpdateOrgMemberGroup:input_type -> wg.cosmo.platform.v1.UpdateOrgMemberGroupRequest + 251, // 597: wg.cosmo.platform.v1.PlatformService.IsGitHubAppInstalled:input_type -> wg.cosmo.platform.v1.IsGitHubAppInstalledRequest + 254, // 598: wg.cosmo.platform.v1.PlatformService.CreateOIDCProvider:input_type -> wg.cosmo.platform.v1.CreateOIDCProviderRequest + 256, // 599: wg.cosmo.platform.v1.PlatformService.GetOIDCProvider:input_type -> wg.cosmo.platform.v1.GetOIDCProviderRequest + 258, // 600: wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider:input_type -> wg.cosmo.platform.v1.DeleteOIDCProviderRequest + 260, // 601: wg.cosmo.platform.v1.PlatformService.UpdateIDPMappers:input_type -> wg.cosmo.platform.v1.UpdateIDPMappersRequest + 296, // 602: wg.cosmo.platform.v1.PlatformService.GetClients:input_type -> wg.cosmo.platform.v1.GetClientsRequest + 293, // 603: wg.cosmo.platform.v1.PlatformService.GetRouters:input_type -> wg.cosmo.platform.v1.GetRoutersRequest + 268, // 604: wg.cosmo.platform.v1.PlatformService.GetInvitations:input_type -> wg.cosmo.platform.v1.GetInvitationsRequest + 270, // 605: wg.cosmo.platform.v1.PlatformService.AcceptOrDeclineInvitation:input_type -> wg.cosmo.platform.v1.AcceptOrDeclineInvitationRequest + 274, // 606: wg.cosmo.platform.v1.PlatformService.GetCompositions:input_type -> wg.cosmo.platform.v1.GetCompositionsRequest + 276, // 607: wg.cosmo.platform.v1.PlatformService.GetCompositionDetails:input_type -> wg.cosmo.platform.v1.GetCompositionDetailsRequest + 279, // 608: wg.cosmo.platform.v1.PlatformService.GetSdlBySchemaVersion:input_type -> wg.cosmo.platform.v1.GetSdlBySchemaVersionRequest + 281, // 609: wg.cosmo.platform.v1.PlatformService.GetChangelogBySchemaVersion:input_type -> wg.cosmo.platform.v1.GetChangelogBySchemaVersionRequest + 283, // 610: wg.cosmo.platform.v1.PlatformService.GetUserAccessibleResources:input_type -> wg.cosmo.platform.v1.GetUserAccessibleResourcesRequest + 285, // 611: wg.cosmo.platform.v1.PlatformService.UpdateFeatureSettings:input_type -> wg.cosmo.platform.v1.UpdateFeatureSettingsRequest + 287, // 612: wg.cosmo.platform.v1.PlatformService.GetSubgraphMembers:input_type -> wg.cosmo.platform.v1.GetSubgraphMembersRequest + 290, // 613: wg.cosmo.platform.v1.PlatformService.AddReadme:input_type -> wg.cosmo.platform.v1.AddReadmeRequest + 333, // 614: wg.cosmo.platform.v1.PlatformService.GetUserAccessiblePermissions:input_type -> wg.cosmo.platform.v1.GetUserAccessiblePermissionsRequest + 344, // 615: wg.cosmo.platform.v1.PlatformService.CreateFeatureFlag:input_type -> wg.cosmo.platform.v1.CreateFeatureFlagRequest + 350, // 616: wg.cosmo.platform.v1.PlatformService.DeleteFeatureFlag:input_type -> wg.cosmo.platform.v1.DeleteFeatureFlagRequest + 346, // 617: wg.cosmo.platform.v1.PlatformService.UpdateFeatureFlag:input_type -> wg.cosmo.platform.v1.UpdateFeatureFlagRequest + 348, // 618: wg.cosmo.platform.v1.PlatformService.EnableFeatureFlag:input_type -> wg.cosmo.platform.v1.EnableFeatureFlagRequest + 101, // 619: wg.cosmo.platform.v1.PlatformService.GetAnalyticsView:input_type -> wg.cosmo.platform.v1.GetAnalyticsViewRequest + 109, // 620: wg.cosmo.platform.v1.PlatformService.GetDashboardAnalyticsView:input_type -> wg.cosmo.platform.v1.GetDashboardAnalyticsViewRequest + 153, // 621: wg.cosmo.platform.v1.PlatformService.GetTrace:input_type -> wg.cosmo.platform.v1.GetTraceRequest + 219, // 622: wg.cosmo.platform.v1.PlatformService.GetGraphMetrics:input_type -> wg.cosmo.platform.v1.GetGraphMetricsRequest + 225, // 623: wg.cosmo.platform.v1.PlatformService.GetMetricsErrorRate:input_type -> wg.cosmo.platform.v1.GetMetricsErrorRateRequest + 228, // 624: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetrics:input_type -> wg.cosmo.platform.v1.GetSubgraphMetricsRequest + 230, // 625: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetricsErrorRate:input_type -> wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest + 298, // 626: wg.cosmo.platform.v1.PlatformService.GetFieldUsage:input_type -> wg.cosmo.platform.v1.GetFieldUsageRequest + 262, // 627: wg.cosmo.platform.v1.PlatformService.GetOrganizationRequestsCount:input_type -> wg.cosmo.platform.v1.GetOrganizationRequestsCountRequest + 206, // 628: wg.cosmo.platform.v1.PlatformService.CreateOrganization:input_type -> wg.cosmo.platform.v1.CreateOrganizationRequest + 319, // 629: wg.cosmo.platform.v1.PlatformService.EnableLintingForTheNamespace:input_type -> wg.cosmo.platform.v1.EnableLintingForTheNamespaceRequest + 322, // 630: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceLintConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceLintConfigRequest + 313, // 631: wg.cosmo.platform.v1.PlatformService.GetNamespaceLintConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceLintConfigRequest + 315, // 632: wg.cosmo.platform.v1.PlatformService.GetNamespaceChecksConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceChecksConfigurationRequest + 317, // 633: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceChecksConfig:input_type -> wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationRequest + 324, // 634: wg.cosmo.platform.v1.PlatformService.EnableGraphPruning:input_type -> wg.cosmo.platform.v1.EnableGraphPruningRequest + 327, // 635: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceGraphPruningConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigRequest + 329, // 636: wg.cosmo.platform.v1.PlatformService.GetNamespaceGraphPruningConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigRequest + 353, // 637: wg.cosmo.platform.v1.PlatformService.GetFeatureFlags:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsRequest + 355, // 638: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagByName:input_type -> wg.cosmo.platform.v1.GetFeatureFlagByNameRequest + 357, // 639: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFeatureFlag:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagRequest + 359, // 640: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphs:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsRequest + 361, // 641: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphRequest + 363, // 642: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest + 365, // 643: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphRequest + 383, // 644: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById:input_type -> wg.cosmo.platform.v1.GetFederatedGraphByIdRequest + 385, // 645: wg.cosmo.platform.v1.PlatformService.GetSubgraphById:input_type -> wg.cosmo.platform.v1.GetSubgraphByIdRequest + 394, // 646: wg.cosmo.platform.v1.PlatformService.PushCacheWarmerOperation:input_type -> wg.cosmo.platform.v1.PushCacheWarmerOperationRequest + 396, // 647: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerOperations:input_type -> wg.cosmo.platform.v1.GetCacheWarmerOperationsRequest + 399, // 648: wg.cosmo.platform.v1.PlatformService.ComputeCacheWarmerOperations:input_type -> wg.cosmo.platform.v1.ComputeCacheWarmerOperationsRequest + 401, // 649: wg.cosmo.platform.v1.PlatformService.ConfigureCacheWarmer:input_type -> wg.cosmo.platform.v1.ConfigureCacheWarmerRequest + 403, // 650: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerConfig:input_type -> wg.cosmo.platform.v1.GetCacheWarmerConfigRequest + 409, // 651: wg.cosmo.platform.v1.PlatformService.DeleteCacheWarmerOperation:input_type -> wg.cosmo.platform.v1.DeleteCacheWarmerOperationRequest + 405, // 652: wg.cosmo.platform.v1.PlatformService.GetSubgraphCheckExtensionsConfig:input_type -> wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigRequest + 407, // 653: wg.cosmo.platform.v1.PlatformService.ConfigureSubgraphCheckExtensions:input_type -> wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsRequest + 211, // 654: wg.cosmo.platform.v1.PlatformService.GetBillingPlans:input_type -> wg.cosmo.platform.v1.GetBillingPlansRequest + 213, // 655: wg.cosmo.platform.v1.PlatformService.CreateCheckoutSession:input_type -> wg.cosmo.platform.v1.CreateCheckoutSessionRequest + 215, // 656: wg.cosmo.platform.v1.PlatformService.CreateBillingPortalSession:input_type -> wg.cosmo.platform.v1.CreateBillingPortalSessionRequest + 217, // 657: wg.cosmo.platform.v1.PlatformService.UpgradePlan:input_type -> wg.cosmo.platform.v1.UpgradePlanRequest + 411, // 658: wg.cosmo.platform.v1.PlatformService.ListRouterCompatibilityVersions:input_type -> wg.cosmo.platform.v1.ListRouterCompatibilityVersionsRequest + 413, // 659: wg.cosmo.platform.v1.PlatformService.SetGraphRouterCompatibilityVersion:input_type -> wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionRequest + 424, // 660: wg.cosmo.platform.v1.PlatformService.CreateProposal:input_type -> wg.cosmo.platform.v1.CreateProposalRequest + 426, // 661: wg.cosmo.platform.v1.PlatformService.GetProposal:input_type -> wg.cosmo.platform.v1.GetProposalRequest + 432, // 662: wg.cosmo.platform.v1.PlatformService.UpdateProposal:input_type -> wg.cosmo.platform.v1.UpdateProposalRequest + 434, // 663: wg.cosmo.platform.v1.PlatformService.EnableProposalsForNamespace:input_type -> wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest + 436, // 664: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceProposalConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest + 438, // 665: wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest + 428, // 666: wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest + 430, // 667: wg.cosmo.platform.v1.PlatformService.GetProposalChecks:input_type -> wg.cosmo.platform.v1.GetProposalChecksRequest + 419, // 668: wg.cosmo.platform.v1.PlatformService.BulkUpdateProposalRolloutPercentages:input_type -> wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest + 422, // 669: wg.cosmo.platform.v1.PlatformService.TeardownProposalRollout:input_type -> wg.cosmo.platform.v1.TeardownProposalRolloutRequest + 440, // 670: wg.cosmo.platform.v1.PlatformService.GetOperations:input_type -> wg.cosmo.platform.v1.GetOperationsRequest + 442, // 671: wg.cosmo.platform.v1.PlatformService.GetClientsFromAnalytics:input_type -> wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest + 444, // 672: wg.cosmo.platform.v1.PlatformService.GetOperationClients:input_type -> wg.cosmo.platform.v1.GetOperationClientsRequest + 446, // 673: wg.cosmo.platform.v1.PlatformService.GetOperationDeprecatedFields:input_type -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest + 448, // 674: wg.cosmo.platform.v1.PlatformService.ValidateAndFetchPluginData:input_type -> wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest + 450, // 675: wg.cosmo.platform.v1.PlatformService.LinkSubgraph:input_type -> wg.cosmo.platform.v1.LinkSubgraphRequest + 452, // 676: wg.cosmo.platform.v1.PlatformService.UnlinkSubgraph:input_type -> wg.cosmo.platform.v1.UnlinkSubgraphRequest + 454, // 677: wg.cosmo.platform.v1.PlatformService.VerifyAPIKeyGraphAccess:input_type -> wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest + 460, // 678: wg.cosmo.platform.v1.PlatformService.RecomposeGraph:input_type -> wg.cosmo.platform.v1.RecomposeGraphRequest + 375, // 679: wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript:output_type -> wg.cosmo.platform.v1.CreatePlaygroundScriptResponse + 377, // 680: wg.cosmo.platform.v1.PlatformService.DeletePlaygroundScript:output_type -> wg.cosmo.platform.v1.DeletePlaygroundScriptResponse + 379, // 681: wg.cosmo.platform.v1.PlatformService.UpdatePlaygroundScript:output_type -> wg.cosmo.platform.v1.UpdatePlaygroundScriptResponse + 382, // 682: wg.cosmo.platform.v1.PlatformService.GetPlaygroundScripts:output_type -> wg.cosmo.platform.v1.GetPlaygroundScriptsResponse + 303, // 683: wg.cosmo.platform.v1.PlatformService.CreateNamespace:output_type -> wg.cosmo.platform.v1.CreateNamespaceResponse + 305, // 684: wg.cosmo.platform.v1.PlatformService.DeleteNamespace:output_type -> wg.cosmo.platform.v1.DeleteNamespaceResponse + 307, // 685: wg.cosmo.platform.v1.PlatformService.RenameNamespace:output_type -> wg.cosmo.platform.v1.RenameNamespaceResponse + 310, // 686: wg.cosmo.platform.v1.PlatformService.GetNamespaces:output_type -> wg.cosmo.platform.v1.GetNamespacesResponse + 388, // 687: wg.cosmo.platform.v1.PlatformService.GetNamespace:output_type -> wg.cosmo.platform.v1.GetNamespaceResponse + 393, // 688: wg.cosmo.platform.v1.PlatformService.GetWorkspace:output_type -> wg.cosmo.platform.v1.GetWorkspaceResponse + 337, // 689: wg.cosmo.platform.v1.PlatformService.CreateContract:output_type -> wg.cosmo.platform.v1.CreateContractResponse + 339, // 690: wg.cosmo.platform.v1.PlatformService.UpdateContract:output_type -> wg.cosmo.platform.v1.UpdateContractResponse + 312, // 691: wg.cosmo.platform.v1.PlatformService.MoveFederatedGraph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse + 312, // 692: wg.cosmo.platform.v1.PlatformService.MoveSubgraph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse + 312, // 693: wg.cosmo.platform.v1.PlatformService.MoveMonograph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse + 29, // 694: wg.cosmo.platform.v1.PlatformService.CreateMonograph:output_type -> wg.cosmo.platform.v1.CreateMonographResponse + 19, // 695: wg.cosmo.platform.v1.PlatformService.PublishMonograph:output_type -> wg.cosmo.platform.v1.PublishMonographResponse + 34, // 696: wg.cosmo.platform.v1.PlatformService.DeleteMonograph:output_type -> wg.cosmo.platform.v1.DeleteMonographResponse + 93, // 697: wg.cosmo.platform.v1.PlatformService.UpdateMonograph:output_type -> wg.cosmo.platform.v1.UpdateMonographResponse + 332, // 698: wg.cosmo.platform.v1.PlatformService.MigrateMonograph:output_type -> wg.cosmo.platform.v1.MigrateMonographResponse + 50, // 699: wg.cosmo.platform.v1.PlatformService.CreateFederatedSubgraph:output_type -> wg.cosmo.platform.v1.CreateFederatedSubgraphResponse + 22, // 700: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph:output_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphResponse + 49, // 701: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph:output_type -> wg.cosmo.platform.v1.CreateFederatedGraphResponse + 52, // 702: wg.cosmo.platform.v1.PlatformService.DeleteFederatedGraph:output_type -> wg.cosmo.platform.v1.DeleteFederatedGraphResponse + 51, // 703: wg.cosmo.platform.v1.PlatformService.DeleteFederatedSubgraph:output_type -> wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse + 46, // 704: wg.cosmo.platform.v1.PlatformService.CheckSubgraphSchema:output_type -> wg.cosmo.platform.v1.CheckSubgraphSchemaResponse + 416, // 705: wg.cosmo.platform.v1.PlatformService.GetProposedSchemaOfCheckedSubgraph:output_type -> wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphResponse + 48, // 706: wg.cosmo.platform.v1.PlatformService.FixSubgraphSchema:output_type -> wg.cosmo.platform.v1.FixSubgraphSchemaResponse + 91, // 707: wg.cosmo.platform.v1.PlatformService.UpdateFederatedGraph:output_type -> wg.cosmo.platform.v1.UpdateFederatedGraphResponse + 89, // 708: wg.cosmo.platform.v1.PlatformService.UpdateSubgraph:output_type -> wg.cosmo.platform.v1.UpdateSubgraphResponse + 95, // 709: wg.cosmo.platform.v1.PlatformService.CheckFederatedGraph:output_type -> wg.cosmo.platform.v1.CheckFederatedGraphResponse + 156, // 710: wg.cosmo.platform.v1.PlatformService.WhoAmI:output_type -> wg.cosmo.platform.v1.WhoAmIResponse + 159, // 711: wg.cosmo.platform.v1.PlatformService.GenerateRouterToken:output_type -> wg.cosmo.platform.v1.GenerateRouterTokenResponse + 161, // 712: wg.cosmo.platform.v1.PlatformService.GetRouterTokens:output_type -> wg.cosmo.platform.v1.GetRouterTokensResponse + 163, // 713: wg.cosmo.platform.v1.PlatformService.DeleteRouterToken:output_type -> wg.cosmo.platform.v1.DeleteRouterTokenResponse + 167, // 714: wg.cosmo.platform.v1.PlatformService.PublishPersistedOperations:output_type -> wg.cosmo.platform.v1.PublishPersistedOperationsResponse + 171, // 715: wg.cosmo.platform.v1.PlatformService.CheckPersistedOperationTraffic:output_type -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse + 169, // 716: wg.cosmo.platform.v1.PlatformService.DeletePersistedOperation:output_type -> wg.cosmo.platform.v1.DeletePersistedOperationResponse + 173, // 717: wg.cosmo.platform.v1.PlatformService.GetPersistedOperations:output_type -> wg.cosmo.platform.v1.GetPersistedOperationsResponse + 267, // 718: wg.cosmo.platform.v1.PlatformService.GetAuditLogs:output_type -> wg.cosmo.platform.v1.GetAuditLogsResponse + 457, // 719: wg.cosmo.platform.v1.PlatformService.InitializeCosmoUser:output_type -> wg.cosmo.platform.v1.InitializeCosmoUserResponse + 459, // 720: wg.cosmo.platform.v1.PlatformService.ListOrganizations:output_type -> wg.cosmo.platform.v1.ListOrganizationsResponse + 56, // 721: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphs:output_type -> wg.cosmo.platform.v1.GetFederatedGraphsResponse + 58, // 722: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphsBySubgraphLabels:output_type -> wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse + 63, // 723: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphByName:output_type -> wg.cosmo.platform.v1.GetFederatedGraphByNameResponse + 65, // 724: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphSDLByName:output_type -> wg.cosmo.platform.v1.GetFederatedGraphSDLByNameResponse + 61, // 725: wg.cosmo.platform.v1.PlatformService.GetSubgraphs:output_type -> wg.cosmo.platform.v1.GetSubgraphsResponse + 67, // 726: wg.cosmo.platform.v1.PlatformService.GetSubgraphByName:output_type -> wg.cosmo.platform.v1.GetSubgraphByNameResponse + 69, // 727: wg.cosmo.platform.v1.PlatformService.GetSubgraphSDLFromLatestComposition:output_type -> wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse + 71, // 728: wg.cosmo.platform.v1.PlatformService.GetLatestSubgraphSDL:output_type -> wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse + 75, // 729: wg.cosmo.platform.v1.PlatformService.GetChecksByFederatedGraphName:output_type -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse + 78, // 730: wg.cosmo.platform.v1.PlatformService.GetCheckSummary:output_type -> wg.cosmo.platform.v1.GetCheckSummaryResponse + 80, // 731: wg.cosmo.platform.v1.PlatformService.GetCheckOperations:output_type -> wg.cosmo.platform.v1.GetCheckOperationsResponse + 233, // 732: wg.cosmo.platform.v1.PlatformService.ForceCheckSuccess:output_type -> wg.cosmo.platform.v1.ForceCheckSuccessResponse + 240, // 733: wg.cosmo.platform.v1.PlatformService.CreateOperationOverrides:output_type -> wg.cosmo.platform.v1.CreateOperationOverridesResponse + 244, // 734: wg.cosmo.platform.v1.PlatformService.RemoveOperationOverrides:output_type -> wg.cosmo.platform.v1.RemoveOperationOverridesResponse + 242, // 735: wg.cosmo.platform.v1.PlatformService.CreateOperationIgnoreAllOverride:output_type -> wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideResponse + 246, // 736: wg.cosmo.platform.v1.PlatformService.RemoveOperationIgnoreAllOverride:output_type -> wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideResponse + 248, // 737: wg.cosmo.platform.v1.PlatformService.GetOperationOverrides:output_type -> wg.cosmo.platform.v1.GetOperationOverridesResponse + 250, // 738: wg.cosmo.platform.v1.PlatformService.GetAllOverrides:output_type -> wg.cosmo.platform.v1.GetAllOverridesResponse + 235, // 739: wg.cosmo.platform.v1.PlatformService.ToggleChangeOverridesForAllOperations:output_type -> wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsResponse + 237, // 740: wg.cosmo.platform.v1.PlatformService.CreateIgnoreOverridesForAllOperations:output_type -> wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsResponse + 82, // 741: wg.cosmo.platform.v1.PlatformService.GetOperationContent:output_type -> wg.cosmo.platform.v1.GetOperationContentResponse + 86, // 742: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphChangelog:output_type -> wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse + 116, // 743: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraphToken:output_type -> wg.cosmo.platform.v1.CreateFederatedGraphTokenResponse + 210, // 744: wg.cosmo.platform.v1.PlatformService.GetOrganizationBySlug:output_type -> wg.cosmo.platform.v1.GetOrganizationBySlugResponse + 134, // 745: wg.cosmo.platform.v1.PlatformService.GetOrganizationMembers:output_type -> wg.cosmo.platform.v1.GetOrganizationMembersResponse + 132, // 746: wg.cosmo.platform.v1.PlatformService.GetPendingOrganizationMembers:output_type -> wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse + 341, // 747: wg.cosmo.platform.v1.PlatformService.IsMemberLimitReached:output_type -> wg.cosmo.platform.v1.IsMemberLimitReachedResponse + 136, // 748: wg.cosmo.platform.v1.PlatformService.InviteUser:output_type -> wg.cosmo.platform.v1.InviteUserResponse + 139, // 749: wg.cosmo.platform.v1.PlatformService.GetAPIKeys:output_type -> wg.cosmo.platform.v1.GetAPIKeysResponse + 141, // 750: wg.cosmo.platform.v1.PlatformService.CreateAPIKey:output_type -> wg.cosmo.platform.v1.CreateAPIKeyResponse + 145, // 751: wg.cosmo.platform.v1.PlatformService.UpdateAPIKey:output_type -> wg.cosmo.platform.v1.UpdateAPIKeyResponse + 143, // 752: wg.cosmo.platform.v1.PlatformService.DeleteAPIKey:output_type -> wg.cosmo.platform.v1.DeleteAPIKeyResponse + 147, // 753: wg.cosmo.platform.v1.PlatformService.RemoveOrganizationMember:output_type -> wg.cosmo.platform.v1.RemoveOrganizationMemberResponse + 149, // 754: wg.cosmo.platform.v1.PlatformService.RemoveInvitation:output_type -> wg.cosmo.platform.v1.RemoveInvitationResponse + 151, // 755: wg.cosmo.platform.v1.PlatformService.MigrateFromApollo:output_type -> wg.cosmo.platform.v1.MigrateFromApolloResponse + 120, // 756: wg.cosmo.platform.v1.PlatformService.CreateOrganizationGroup:output_type -> wg.cosmo.platform.v1.CreateOrganizationGroupResponse + 122, // 757: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroups:output_type -> wg.cosmo.platform.v1.GetOrganizationGroupsResponse + 124, // 758: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroupMembers:output_type -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse + 126, // 759: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationGroup:output_type -> wg.cosmo.platform.v1.UpdateOrganizationGroupResponse + 128, // 760: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationGroup:output_type -> wg.cosmo.platform.v1.DeleteOrganizationGroupResponse + 176, // 761: wg.cosmo.platform.v1.PlatformService.CreateOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse + 178, // 762: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookConfigs:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse + 180, // 763: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookMeta:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse + 182, // 764: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse + 184, // 765: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse + 369, // 766: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookHistory:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse + 373, // 767: wg.cosmo.platform.v1.PlatformService.GetWebhookDeliveryDetails:output_type -> wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse + 371, // 768: wg.cosmo.platform.v1.PlatformService.RedeliverWebhook:output_type -> wg.cosmo.platform.v1.RedeliverWebhookResponse + 186, // 769: wg.cosmo.platform.v1.PlatformService.CreateIntegration:output_type -> wg.cosmo.platform.v1.CreateIntegrationResponse + 191, // 770: wg.cosmo.platform.v1.PlatformService.GetOrganizationIntegrations:output_type -> wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse + 193, // 771: wg.cosmo.platform.v1.PlatformService.UpdateIntegrationConfig:output_type -> wg.cosmo.platform.v1.UpdateIntegrationConfigResponse + 195, // 772: wg.cosmo.platform.v1.PlatformService.DeleteIntegration:output_type -> wg.cosmo.platform.v1.DeleteIntegrationResponse + 343, // 773: wg.cosmo.platform.v1.PlatformService.DeleteUser:output_type -> wg.cosmo.platform.v1.DeleteUserResponse + 197, // 774: wg.cosmo.platform.v1.PlatformService.DeleteOrganization:output_type -> wg.cosmo.platform.v1.DeleteOrganizationResponse + 199, // 775: wg.cosmo.platform.v1.PlatformService.RestoreOrganization:output_type -> wg.cosmo.platform.v1.RestoreOrganizationResponse + 201, // 776: wg.cosmo.platform.v1.PlatformService.LeaveOrganization:output_type -> wg.cosmo.platform.v1.LeaveOrganizationResponse + 203, // 777: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationDetails:output_type -> wg.cosmo.platform.v1.UpdateOrganizationDetailsResponse + 205, // 778: wg.cosmo.platform.v1.PlatformService.UpdateOrgMemberGroup:output_type -> wg.cosmo.platform.v1.UpdateOrgMemberGroupResponse + 252, // 779: wg.cosmo.platform.v1.PlatformService.IsGitHubAppInstalled:output_type -> wg.cosmo.platform.v1.IsGitHubAppInstalledResponse + 255, // 780: wg.cosmo.platform.v1.PlatformService.CreateOIDCProvider:output_type -> wg.cosmo.platform.v1.CreateOIDCProviderResponse + 257, // 781: wg.cosmo.platform.v1.PlatformService.GetOIDCProvider:output_type -> wg.cosmo.platform.v1.GetOIDCProviderResponse + 259, // 782: wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider:output_type -> wg.cosmo.platform.v1.DeleteOIDCProviderResponse + 261, // 783: wg.cosmo.platform.v1.PlatformService.UpdateIDPMappers:output_type -> wg.cosmo.platform.v1.UpdateIDPMappersResponse + 297, // 784: wg.cosmo.platform.v1.PlatformService.GetClients:output_type -> wg.cosmo.platform.v1.GetClientsResponse + 294, // 785: wg.cosmo.platform.v1.PlatformService.GetRouters:output_type -> wg.cosmo.platform.v1.GetRoutersResponse + 269, // 786: wg.cosmo.platform.v1.PlatformService.GetInvitations:output_type -> wg.cosmo.platform.v1.GetInvitationsResponse + 271, // 787: wg.cosmo.platform.v1.PlatformService.AcceptOrDeclineInvitation:output_type -> wg.cosmo.platform.v1.AcceptOrDeclineInvitationResponse + 275, // 788: wg.cosmo.platform.v1.PlatformService.GetCompositions:output_type -> wg.cosmo.platform.v1.GetCompositionsResponse + 278, // 789: wg.cosmo.platform.v1.PlatformService.GetCompositionDetails:output_type -> wg.cosmo.platform.v1.GetCompositionDetailsResponse + 280, // 790: wg.cosmo.platform.v1.PlatformService.GetSdlBySchemaVersion:output_type -> wg.cosmo.platform.v1.GetSdlBySchemaVersionResponse + 282, // 791: wg.cosmo.platform.v1.PlatformService.GetChangelogBySchemaVersion:output_type -> wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse + 284, // 792: wg.cosmo.platform.v1.PlatformService.GetUserAccessibleResources:output_type -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse + 286, // 793: wg.cosmo.platform.v1.PlatformService.UpdateFeatureSettings:output_type -> wg.cosmo.platform.v1.UpdateFeatureSettingsResponse + 289, // 794: wg.cosmo.platform.v1.PlatformService.GetSubgraphMembers:output_type -> wg.cosmo.platform.v1.GetSubgraphMembersResponse + 291, // 795: wg.cosmo.platform.v1.PlatformService.AddReadme:output_type -> wg.cosmo.platform.v1.AddReadmeResponse + 335, // 796: wg.cosmo.platform.v1.PlatformService.GetUserAccessiblePermissions:output_type -> wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse + 345, // 797: wg.cosmo.platform.v1.PlatformService.CreateFeatureFlag:output_type -> wg.cosmo.platform.v1.CreateFeatureFlagResponse + 351, // 798: wg.cosmo.platform.v1.PlatformService.DeleteFeatureFlag:output_type -> wg.cosmo.platform.v1.DeleteFeatureFlagResponse + 347, // 799: wg.cosmo.platform.v1.PlatformService.UpdateFeatureFlag:output_type -> wg.cosmo.platform.v1.UpdateFeatureFlagResponse + 349, // 800: wg.cosmo.platform.v1.PlatformService.EnableFeatureFlag:output_type -> wg.cosmo.platform.v1.EnableFeatureFlagResponse + 108, // 801: wg.cosmo.platform.v1.PlatformService.GetAnalyticsView:output_type -> wg.cosmo.platform.v1.GetAnalyticsViewResponse + 114, // 802: wg.cosmo.platform.v1.PlatformService.GetDashboardAnalyticsView:output_type -> wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse + 154, // 803: wg.cosmo.platform.v1.PlatformService.GetTrace:output_type -> wg.cosmo.platform.v1.GetTraceResponse + 220, // 804: wg.cosmo.platform.v1.PlatformService.GetGraphMetrics:output_type -> wg.cosmo.platform.v1.GetGraphMetricsResponse + 226, // 805: wg.cosmo.platform.v1.PlatformService.GetMetricsErrorRate:output_type -> wg.cosmo.platform.v1.GetMetricsErrorRateResponse + 229, // 806: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetrics:output_type -> wg.cosmo.platform.v1.GetSubgraphMetricsResponse + 231, // 807: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetricsErrorRate:output_type -> wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse + 301, // 808: wg.cosmo.platform.v1.PlatformService.GetFieldUsage:output_type -> wg.cosmo.platform.v1.GetFieldUsageResponse + 263, // 809: wg.cosmo.platform.v1.PlatformService.GetOrganizationRequestsCount:output_type -> wg.cosmo.platform.v1.GetOrganizationRequestsCountResponse + 207, // 810: wg.cosmo.platform.v1.PlatformService.CreateOrganization:output_type -> wg.cosmo.platform.v1.CreateOrganizationResponse + 320, // 811: wg.cosmo.platform.v1.PlatformService.EnableLintingForTheNamespace:output_type -> wg.cosmo.platform.v1.EnableLintingForTheNamespaceResponse + 323, // 812: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceLintConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceLintConfigResponse + 314, // 813: wg.cosmo.platform.v1.PlatformService.GetNamespaceLintConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceLintConfigResponse + 316, // 814: wg.cosmo.platform.v1.PlatformService.GetNamespaceChecksConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceChecksConfigurationResponse + 318, // 815: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceChecksConfig:output_type -> wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationResponse + 325, // 816: wg.cosmo.platform.v1.PlatformService.EnableGraphPruning:output_type -> wg.cosmo.platform.v1.EnableGraphPruningResponse + 328, // 817: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceGraphPruningConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigResponse + 330, // 818: wg.cosmo.platform.v1.PlatformService.GetNamespaceGraphPruningConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse + 354, // 819: wg.cosmo.platform.v1.PlatformService.GetFeatureFlags:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsResponse + 356, // 820: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagByName:output_type -> wg.cosmo.platform.v1.GetFeatureFlagByNameResponse + 358, // 821: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFeatureFlag:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse + 360, // 822: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphs:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsResponse + 362, // 823: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse + 364, // 824: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse + 366, // 825: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphResponse + 384, // 826: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById:output_type -> wg.cosmo.platform.v1.GetFederatedGraphByIdResponse + 386, // 827: wg.cosmo.platform.v1.PlatformService.GetSubgraphById:output_type -> wg.cosmo.platform.v1.GetSubgraphByIdResponse + 395, // 828: wg.cosmo.platform.v1.PlatformService.PushCacheWarmerOperation:output_type -> wg.cosmo.platform.v1.PushCacheWarmerOperationResponse + 398, // 829: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerOperations:output_type -> wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse + 400, // 830: wg.cosmo.platform.v1.PlatformService.ComputeCacheWarmerOperations:output_type -> wg.cosmo.platform.v1.ComputeCacheWarmerOperationsResponse + 402, // 831: wg.cosmo.platform.v1.PlatformService.ConfigureCacheWarmer:output_type -> wg.cosmo.platform.v1.ConfigureCacheWarmerResponse + 404, // 832: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerConfig:output_type -> wg.cosmo.platform.v1.GetCacheWarmerConfigResponse + 410, // 833: wg.cosmo.platform.v1.PlatformService.DeleteCacheWarmerOperation:output_type -> wg.cosmo.platform.v1.DeleteCacheWarmerOperationResponse + 406, // 834: wg.cosmo.platform.v1.PlatformService.GetSubgraphCheckExtensionsConfig:output_type -> wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigResponse + 408, // 835: wg.cosmo.platform.v1.PlatformService.ConfigureSubgraphCheckExtensions:output_type -> wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsResponse + 212, // 836: wg.cosmo.platform.v1.PlatformService.GetBillingPlans:output_type -> wg.cosmo.platform.v1.GetBillingPlansResponse + 214, // 837: wg.cosmo.platform.v1.PlatformService.CreateCheckoutSession:output_type -> wg.cosmo.platform.v1.CreateCheckoutSessionResponse + 216, // 838: wg.cosmo.platform.v1.PlatformService.CreateBillingPortalSession:output_type -> wg.cosmo.platform.v1.CreateBillingPortalSessionResponse + 218, // 839: wg.cosmo.platform.v1.PlatformService.UpgradePlan:output_type -> wg.cosmo.platform.v1.UpgradePlanResponse + 412, // 840: wg.cosmo.platform.v1.PlatformService.ListRouterCompatibilityVersions:output_type -> wg.cosmo.platform.v1.ListRouterCompatibilityVersionsResponse + 414, // 841: wg.cosmo.platform.v1.PlatformService.SetGraphRouterCompatibilityVersion:output_type -> wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse + 425, // 842: wg.cosmo.platform.v1.PlatformService.CreateProposal:output_type -> wg.cosmo.platform.v1.CreateProposalResponse + 427, // 843: wg.cosmo.platform.v1.PlatformService.GetProposal:output_type -> wg.cosmo.platform.v1.GetProposalResponse + 433, // 844: wg.cosmo.platform.v1.PlatformService.UpdateProposal:output_type -> wg.cosmo.platform.v1.UpdateProposalResponse + 435, // 845: wg.cosmo.platform.v1.PlatformService.EnableProposalsForNamespace:output_type -> wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse + 437, // 846: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceProposalConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse + 439, // 847: wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse + 429, // 848: wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse + 431, // 849: wg.cosmo.platform.v1.PlatformService.GetProposalChecks:output_type -> wg.cosmo.platform.v1.GetProposalChecksResponse + 421, // 850: wg.cosmo.platform.v1.PlatformService.BulkUpdateProposalRolloutPercentages:output_type -> wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesResponse + 423, // 851: wg.cosmo.platform.v1.PlatformService.TeardownProposalRollout:output_type -> wg.cosmo.platform.v1.TeardownProposalRolloutResponse + 441, // 852: wg.cosmo.platform.v1.PlatformService.GetOperations:output_type -> wg.cosmo.platform.v1.GetOperationsResponse + 443, // 853: wg.cosmo.platform.v1.PlatformService.GetClientsFromAnalytics:output_type -> wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse + 445, // 854: wg.cosmo.platform.v1.PlatformService.GetOperationClients:output_type -> wg.cosmo.platform.v1.GetOperationClientsResponse + 447, // 855: wg.cosmo.platform.v1.PlatformService.GetOperationDeprecatedFields:output_type -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse + 449, // 856: wg.cosmo.platform.v1.PlatformService.ValidateAndFetchPluginData:output_type -> wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse + 451, // 857: wg.cosmo.platform.v1.PlatformService.LinkSubgraph:output_type -> wg.cosmo.platform.v1.LinkSubgraphResponse + 453, // 858: wg.cosmo.platform.v1.PlatformService.UnlinkSubgraph:output_type -> wg.cosmo.platform.v1.UnlinkSubgraphResponse + 455, // 859: wg.cosmo.platform.v1.PlatformService.VerifyAPIKeyGraphAccess:output_type -> wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse + 461, // 860: wg.cosmo.platform.v1.PlatformService.RecomposeGraph:output_type -> wg.cosmo.platform.v1.RecomposeGraphResponse + 679, // [679:861] is the sub-list for method output_type + 497, // [497:679] is the sub-list for method input_type + 497, // [497:497] is the sub-list for extension type_name + 497, // [497:497] is the sub-list for extension extendee + 0, // [0:497] is the sub-list for field type_name } func init() { file_wg_cosmo_platform_v1_platform_proto_init() } @@ -35505,21 +35869,22 @@ func file_wg_cosmo_platform_v1_platform_proto_init() { file_wg_cosmo_platform_v1_platform_proto_msgTypes[353].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[392].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[398].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[405].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[412].OneofWrappers = []any{ + file_wg_cosmo_platform_v1_platform_proto_msgTypes[402].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[410].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[417].OneofWrappers = []any{ (*UpdateProposalRequest_State)(nil), (*UpdateProposalRequest_UpdatedSubgraphs)(nil), } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[413].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[420].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[421].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[424].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[418].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[425].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[426].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[440].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[441].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[429].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[431].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[445].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[461].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[471].OneofWrappers = []any{ + file_wg_cosmo_platform_v1_platform_proto_msgTypes[446].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[450].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[466].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[477].OneofWrappers = []any{ (*GetOperationsResponse_Operation_Latency)(nil), (*GetOperationsResponse_Operation_RequestCount)(nil), (*GetOperationsResponse_Operation_ErrorPercentage)(nil), @@ -35530,7 +35895,7 @@ func file_wg_cosmo_platform_v1_platform_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_platform_v1_platform_proto_rawDesc), len(file_wg_cosmo_platform_v1_platform_proto_rawDesc)), NumEnums: 15, - NumMessages: 476, + NumMessages: 482, NumExtensions: 0, NumServices: 1, }, diff --git a/connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go b/connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go index 16681f33ca..029099fbf8 100644 --- a/connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go +++ b/connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go @@ -547,6 +547,12 @@ const ( // PlatformServiceGetProposalChecksProcedure is the fully-qualified name of the PlatformService's // GetProposalChecks RPC. PlatformServiceGetProposalChecksProcedure = "/wg.cosmo.platform.v1.PlatformService/GetProposalChecks" + // PlatformServiceBulkUpdateProposalRolloutPercentagesProcedure is the fully-qualified name of the + // PlatformService's BulkUpdateProposalRolloutPercentages RPC. + PlatformServiceBulkUpdateProposalRolloutPercentagesProcedure = "/wg.cosmo.platform.v1.PlatformService/BulkUpdateProposalRolloutPercentages" + // PlatformServiceTeardownProposalRolloutProcedure is the fully-qualified name of the + // PlatformService's TeardownProposalRollout RPC. + PlatformServiceTeardownProposalRolloutProcedure = "/wg.cosmo.platform.v1.PlatformService/TeardownProposalRollout" // PlatformServiceGetOperationsProcedure is the fully-qualified name of the PlatformService's // GetOperations RPC. PlatformServiceGetOperationsProcedure = "/wg.cosmo.platform.v1.PlatformService/GetOperations" @@ -750,6 +756,8 @@ var ( platformServiceGetNamespaceProposalConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetNamespaceProposalConfig") platformServiceGetProposalsByFederatedGraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetProposalsByFederatedGraph") platformServiceGetProposalChecksMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetProposalChecks") + platformServiceBulkUpdateProposalRolloutPercentagesMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("BulkUpdateProposalRolloutPercentages") + platformServiceTeardownProposalRolloutMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("TeardownProposalRollout") platformServiceGetOperationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOperations") platformServiceGetClientsFromAnalyticsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetClientsFromAnalytics") platformServiceGetOperationClientsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOperationClients") @@ -1085,6 +1093,16 @@ type PlatformServiceClient interface { GetProposalsByFederatedGraph(context.Context, *connect.Request[v1.GetProposalsByFederatedGraphRequest]) (*connect.Response[v1.GetProposalsByFederatedGraphResponse], error) // GetProposalChecks returns checks for a proposal. GetProposalChecks(context.Context, *connect.Request[v1.GetProposalChecksRequest]) (*connect.Response[v1.GetProposalChecksResponse], error) + // BulkUpdateProposalRolloutPercentages atomically creates or updates rollout + // percentages across one or more proposals on the same federated graph. For + // proposals without an existing rollout, the handler creates feature subgraphs + // and a feature flag linked to the proposal (deploy semantics). For proposals + // already rolled out, only the percentage is updated. Single transaction + + // single composeAndDeployGraphs; sibling rollouts not in the batch keep their + // stored percentages. + BulkUpdateProposalRolloutPercentages(context.Context, *connect.Request[v1.BulkUpdateProposalRolloutPercentagesRequest]) (*connect.Response[v1.BulkUpdateProposalRolloutPercentagesResponse], error) + // TeardownProposalRollout deletes the linked feature flag and feature subgraphs. + TeardownProposalRollout(context.Context, *connect.Request[v1.TeardownProposalRolloutRequest]) (*connect.Response[v1.TeardownProposalRolloutResponse], error) // GetOperations returns the operations of a federated graph. GetOperations(context.Context, *connect.Request[v1.GetOperationsRequest]) (*connect.Response[v1.GetOperationsResponse], error) // GetClientsFromAnalytics returns all the clients of the federated graph from the analytics @@ -2148,6 +2166,18 @@ func NewPlatformServiceClient(httpClient connect.HTTPClient, baseURL string, opt connect.WithSchema(platformServiceGetProposalChecksMethodDescriptor), connect.WithClientOptions(opts...), ), + bulkUpdateProposalRolloutPercentages: connect.NewClient[v1.BulkUpdateProposalRolloutPercentagesRequest, v1.BulkUpdateProposalRolloutPercentagesResponse]( + httpClient, + baseURL+PlatformServiceBulkUpdateProposalRolloutPercentagesProcedure, + connect.WithSchema(platformServiceBulkUpdateProposalRolloutPercentagesMethodDescriptor), + connect.WithClientOptions(opts...), + ), + teardownProposalRollout: connect.NewClient[v1.TeardownProposalRolloutRequest, v1.TeardownProposalRolloutResponse]( + httpClient, + baseURL+PlatformServiceTeardownProposalRolloutProcedure, + connect.WithSchema(platformServiceTeardownProposalRolloutMethodDescriptor), + connect.WithClientOptions(opts...), + ), getOperations: connect.NewClient[v1.GetOperationsRequest, v1.GetOperationsResponse]( httpClient, baseURL+PlatformServiceGetOperationsProcedure, @@ -2378,6 +2408,8 @@ type platformServiceClient struct { getNamespaceProposalConfig *connect.Client[v1.GetNamespaceProposalConfigRequest, v1.GetNamespaceProposalConfigResponse] getProposalsByFederatedGraph *connect.Client[v1.GetProposalsByFederatedGraphRequest, v1.GetProposalsByFederatedGraphResponse] getProposalChecks *connect.Client[v1.GetProposalChecksRequest, v1.GetProposalChecksResponse] + bulkUpdateProposalRolloutPercentages *connect.Client[v1.BulkUpdateProposalRolloutPercentagesRequest, v1.BulkUpdateProposalRolloutPercentagesResponse] + teardownProposalRollout *connect.Client[v1.TeardownProposalRolloutRequest, v1.TeardownProposalRolloutResponse] getOperations *connect.Client[v1.GetOperationsRequest, v1.GetOperationsResponse] getClientsFromAnalytics *connect.Client[v1.GetClientsFromAnalyticsRequest, v1.GetClientsFromAnalyticsResponse] getOperationClients *connect.Client[v1.GetOperationClientsRequest, v1.GetOperationClientsResponse] @@ -3282,6 +3314,17 @@ func (c *platformServiceClient) GetProposalChecks(ctx context.Context, req *conn return c.getProposalChecks.CallUnary(ctx, req) } +// BulkUpdateProposalRolloutPercentages calls +// wg.cosmo.platform.v1.PlatformService.BulkUpdateProposalRolloutPercentages. +func (c *platformServiceClient) BulkUpdateProposalRolloutPercentages(ctx context.Context, req *connect.Request[v1.BulkUpdateProposalRolloutPercentagesRequest]) (*connect.Response[v1.BulkUpdateProposalRolloutPercentagesResponse], error) { + return c.bulkUpdateProposalRolloutPercentages.CallUnary(ctx, req) +} + +// TeardownProposalRollout calls wg.cosmo.platform.v1.PlatformService.TeardownProposalRollout. +func (c *platformServiceClient) TeardownProposalRollout(ctx context.Context, req *connect.Request[v1.TeardownProposalRolloutRequest]) (*connect.Response[v1.TeardownProposalRolloutResponse], error) { + return c.teardownProposalRollout.CallUnary(ctx, req) +} + // GetOperations calls wg.cosmo.platform.v1.PlatformService.GetOperations. func (c *platformServiceClient) GetOperations(ctx context.Context, req *connect.Request[v1.GetOperationsRequest]) (*connect.Response[v1.GetOperationsResponse], error) { return c.getOperations.CallUnary(ctx, req) @@ -3652,6 +3695,16 @@ type PlatformServiceHandler interface { GetProposalsByFederatedGraph(context.Context, *connect.Request[v1.GetProposalsByFederatedGraphRequest]) (*connect.Response[v1.GetProposalsByFederatedGraphResponse], error) // GetProposalChecks returns checks for a proposal. GetProposalChecks(context.Context, *connect.Request[v1.GetProposalChecksRequest]) (*connect.Response[v1.GetProposalChecksResponse], error) + // BulkUpdateProposalRolloutPercentages atomically creates or updates rollout + // percentages across one or more proposals on the same federated graph. For + // proposals without an existing rollout, the handler creates feature subgraphs + // and a feature flag linked to the proposal (deploy semantics). For proposals + // already rolled out, only the percentage is updated. Single transaction + + // single composeAndDeployGraphs; sibling rollouts not in the batch keep their + // stored percentages. + BulkUpdateProposalRolloutPercentages(context.Context, *connect.Request[v1.BulkUpdateProposalRolloutPercentagesRequest]) (*connect.Response[v1.BulkUpdateProposalRolloutPercentagesResponse], error) + // TeardownProposalRollout deletes the linked feature flag and feature subgraphs. + TeardownProposalRollout(context.Context, *connect.Request[v1.TeardownProposalRolloutRequest]) (*connect.Response[v1.TeardownProposalRolloutResponse], error) // GetOperations returns the operations of a federated graph. GetOperations(context.Context, *connect.Request[v1.GetOperationsRequest]) (*connect.Response[v1.GetOperationsResponse], error) // GetClientsFromAnalytics returns all the clients of the federated graph from the analytics @@ -4711,6 +4764,18 @@ func NewPlatformServiceHandler(svc PlatformServiceHandler, opts ...connect.Handl connect.WithSchema(platformServiceGetProposalChecksMethodDescriptor), connect.WithHandlerOptions(opts...), ) + platformServiceBulkUpdateProposalRolloutPercentagesHandler := connect.NewUnaryHandler( + PlatformServiceBulkUpdateProposalRolloutPercentagesProcedure, + svc.BulkUpdateProposalRolloutPercentages, + connect.WithSchema(platformServiceBulkUpdateProposalRolloutPercentagesMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) + platformServiceTeardownProposalRolloutHandler := connect.NewUnaryHandler( + PlatformServiceTeardownProposalRolloutProcedure, + svc.TeardownProposalRollout, + connect.WithSchema(platformServiceTeardownProposalRolloutMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) platformServiceGetOperationsHandler := connect.NewUnaryHandler( PlatformServiceGetOperationsProcedure, svc.GetOperations, @@ -5109,6 +5174,10 @@ func NewPlatformServiceHandler(svc PlatformServiceHandler, opts ...connect.Handl platformServiceGetProposalsByFederatedGraphHandler.ServeHTTP(w, r) case PlatformServiceGetProposalChecksProcedure: platformServiceGetProposalChecksHandler.ServeHTTP(w, r) + case PlatformServiceBulkUpdateProposalRolloutPercentagesProcedure: + platformServiceBulkUpdateProposalRolloutPercentagesHandler.ServeHTTP(w, r) + case PlatformServiceTeardownProposalRolloutProcedure: + platformServiceTeardownProposalRolloutHandler.ServeHTTP(w, r) case PlatformServiceGetOperationsProcedure: platformServiceGetOperationsHandler.ServeHTTP(w, r) case PlatformServiceGetClientsFromAnalyticsProcedure: @@ -5820,6 +5889,14 @@ func (UnimplementedPlatformServiceHandler) GetProposalChecks(context.Context, *c return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetProposalChecks is not implemented")) } +func (UnimplementedPlatformServiceHandler) BulkUpdateProposalRolloutPercentages(context.Context, *connect.Request[v1.BulkUpdateProposalRolloutPercentagesRequest]) (*connect.Response[v1.BulkUpdateProposalRolloutPercentagesResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.BulkUpdateProposalRolloutPercentages is not implemented")) +} + +func (UnimplementedPlatformServiceHandler) TeardownProposalRollout(context.Context, *connect.Request[v1.TeardownProposalRolloutRequest]) (*connect.Response[v1.TeardownProposalRolloutResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.TeardownProposalRollout is not implemented")) +} + func (UnimplementedPlatformServiceHandler) GetOperations(context.Context, *connect.Request[v1.GetOperationsRequest]) (*connect.Response[v1.GetOperationsResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetOperations is not implemented")) } diff --git a/connect/src/wg/cosmo/node/v1/node_pb.ts b/connect/src/wg/cosmo/node/v1/node_pb.ts index 5e679a9c55..9f8edd930a 100644 --- a/connect/src/wg/cosmo/node/v1/node_pb.ts +++ b/connect/src/wg/cosmo/node/v1/node_pb.ts @@ -348,6 +348,20 @@ export class FeatureFlagRouterExecutionConfig extends Message) { super(); proto3.util.initPartial(data, this); @@ -359,6 +373,7 @@ export class FeatureFlagRouterExecutionConfig extends Message): FeatureFlagRouterExecutionConfig { diff --git a/connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts b/connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts index ae2c102c49..d80fe90878 100644 --- a/connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts +++ b/connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts @@ -6,7 +6,7 @@ // @ts-nocheck import { MethodIdempotency, MethodKind } from "@bufbuild/protobuf"; -import { AcceptOrDeclineInvitationRequest, AcceptOrDeclineInvitationResponse, AddReadmeRequest, AddReadmeResponse, CheckFederatedGraphRequest, CheckFederatedGraphResponse, CheckPersistedOperationTrafficRequest, CheckPersistedOperationTrafficResponse, CheckSubgraphSchemaRequest, CheckSubgraphSchemaResponse, ComputeCacheWarmerOperationsRequest, ComputeCacheWarmerOperationsResponse, ConfigureCacheWarmerRequest, ConfigureCacheWarmerResponse, ConfigureNamespaceGraphPruningConfigRequest, ConfigureNamespaceGraphPruningConfigResponse, ConfigureNamespaceLintConfigRequest, ConfigureNamespaceLintConfigResponse, ConfigureNamespaceProposalConfigRequest, ConfigureNamespaceProposalConfigResponse, ConfigureSubgraphCheckExtensionsRequest, ConfigureSubgraphCheckExtensionsResponse, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreateContractRequest, CreateContractResponse, CreateFeatureFlagRequest, CreateFeatureFlagResponse, CreateFederatedGraphRequest, CreateFederatedGraphResponse, CreateFederatedGraphTokenRequest, CreateFederatedGraphTokenResponse, CreateFederatedSubgraphRequest, CreateFederatedSubgraphResponse, CreateIgnoreOverridesForAllOperationsRequest, CreateIgnoreOverridesForAllOperationsResponse, CreateIntegrationRequest, CreateIntegrationResponse, CreateMonographRequest, CreateMonographResponse, CreateNamespaceRequest, CreateNamespaceResponse, CreateOIDCProviderRequest, CreateOIDCProviderResponse, CreateOperationIgnoreAllOverrideRequest, CreateOperationIgnoreAllOverrideResponse, CreateOperationOverridesRequest, CreateOperationOverridesResponse, CreateOrganizationGroupRequest, CreateOrganizationGroupResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOrganizationWebhookConfigRequest, CreateOrganizationWebhookConfigResponse, CreatePlaygroundScriptRequest, CreatePlaygroundScriptResponse, CreateProposalRequest, CreateProposalResponse, DeleteAPIKeyRequest, DeleteAPIKeyResponse, DeleteCacheWarmerOperationRequest, DeleteCacheWarmerOperationResponse, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, DeleteFederatedGraphRequest, DeleteFederatedGraphResponse, DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, DeleteMonographRequest, DeleteMonographResponse, DeleteNamespaceRequest, DeleteNamespaceResponse, DeleteOIDCProviderRequest, DeleteOIDCProviderResponse, DeleteOrganizationGroupRequest, DeleteOrganizationGroupResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteOrganizationWebhookConfigRequest, DeleteOrganizationWebhookConfigResponse, DeletePersistedOperationRequest, DeletePersistedOperationResponse, DeletePlaygroundScriptRequest, DeletePlaygroundScriptResponse, DeleteRouterTokenRequest, DeleteRouterTokenResponse, DeleteUserRequest, DeleteUserResponse, EnableFeatureFlagRequest, EnableFeatureFlagResponse, EnableGraphPruningRequest, EnableGraphPruningResponse, EnableLintingForTheNamespaceRequest, EnableLintingForTheNamespaceResponse, EnableProposalsForNamespaceRequest, EnableProposalsForNamespaceResponse, FixSubgraphSchemaRequest, FixSubgraphSchemaResponse, ForceCheckSuccessRequest, ForceCheckSuccessResponse, GenerateRouterTokenRequest, GenerateRouterTokenResponse, GetAllOverridesRequest, GetAllOverridesResponse, GetAnalyticsViewRequest, GetAnalyticsViewResponse, GetAPIKeysRequest, GetAPIKeysResponse, GetAuditLogsRequest, GetAuditLogsResponse, GetBillingPlansRequest, GetBillingPlansResponse, GetCacheWarmerConfigRequest, GetCacheWarmerConfigResponse, GetCacheWarmerOperationsRequest, GetCacheWarmerOperationsResponse, GetChangelogBySchemaVersionRequest, GetChangelogBySchemaVersionResponse, GetCheckOperationsRequest, GetCheckOperationsResponse, GetChecksByFederatedGraphNameRequest, GetChecksByFederatedGraphNameResponse, GetCheckSummaryRequest, GetCheckSummaryResponse, GetClientsFromAnalyticsRequest, GetClientsFromAnalyticsResponse, GetClientsRequest, GetClientsResponse, GetCompositionDetailsRequest, GetCompositionDetailsResponse, GetCompositionsRequest, GetCompositionsResponse, GetDashboardAnalyticsViewRequest, GetDashboardAnalyticsViewResponse, GetFeatureFlagByNameRequest, GetFeatureFlagByNameResponse, GetFeatureFlagsByFederatedGraphRequest, GetFeatureFlagsByFederatedGraphResponse, GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, GetFeatureFlagsRequest, GetFeatureFlagsResponse, GetFeatureSubgraphsByFeatureFlagRequest, GetFeatureSubgraphsByFeatureFlagResponse, GetFeatureSubgraphsByFederatedGraphRequest, GetFeatureSubgraphsByFederatedGraphResponse, GetFeatureSubgraphsRequest, GetFeatureSubgraphsResponse, GetFederatedGraphByIdRequest, GetFederatedGraphByIdResponse, GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, GetFederatedGraphChangelogRequest, GetFederatedGraphChangelogResponse, GetFederatedGraphsBySubgraphLabelsRequest, GetFederatedGraphsBySubgraphLabelsResponse, GetFederatedGraphSDLByNameRequest, GetFederatedGraphSDLByNameResponse, GetFederatedGraphsRequest, GetFederatedGraphsResponse, GetFieldUsageRequest, GetFieldUsageResponse, GetGraphMetricsRequest, GetGraphMetricsResponse, GetInvitationsRequest, GetInvitationsResponse, GetLatestSubgraphSDLRequest, GetLatestSubgraphSDLResponse, GetMetricsErrorRateRequest, GetMetricsErrorRateResponse, GetNamespaceChecksConfigurationRequest, GetNamespaceChecksConfigurationResponse, GetNamespaceGraphPruningConfigRequest, GetNamespaceGraphPruningConfigResponse, GetNamespaceLintConfigRequest, GetNamespaceLintConfigResponse, GetNamespaceProposalConfigRequest, GetNamespaceProposalConfigResponse, GetNamespaceRequest, GetNamespaceResponse, GetNamespacesRequest, GetNamespacesResponse, GetOIDCProviderRequest, GetOIDCProviderResponse, GetOperationClientsRequest, GetOperationClientsResponse, GetOperationContentRequest, GetOperationContentResponse, GetOperationDeprecatedFieldsRequest, GetOperationDeprecatedFieldsResponse, GetOperationOverridesRequest, GetOperationOverridesResponse, GetOperationsRequest, GetOperationsResponse, GetOrganizationBySlugRequest, GetOrganizationBySlugResponse, GetOrganizationGroupMembersRequest, GetOrganizationGroupMembersResponse, GetOrganizationGroupsRequest, GetOrganizationGroupsResponse, GetOrganizationIntegrationsRequest, GetOrganizationIntegrationsResponse, GetOrganizationMembersRequest, GetOrganizationMembersResponse, GetOrganizationRequestsCountRequest, GetOrganizationRequestsCountResponse, GetOrganizationWebhookConfigsRequest, GetOrganizationWebhookConfigsResponse, GetOrganizationWebhookHistoryRequest, GetOrganizationWebhookHistoryResponse, GetOrganizationWebhookMetaRequest, GetOrganizationWebhookMetaResponse, GetPendingOrganizationMembersRequest, GetPendingOrganizationMembersResponse, GetPersistedOperationsRequest, GetPersistedOperationsResponse, GetPlaygroundScriptsRequest, GetPlaygroundScriptsResponse, GetProposalChecksRequest, GetProposalChecksResponse, GetProposalRequest, GetProposalResponse, GetProposalsByFederatedGraphRequest, GetProposalsByFederatedGraphResponse, GetProposedSchemaOfCheckedSubgraphRequest, GetProposedSchemaOfCheckedSubgraphResponse, GetRoutersRequest, GetRoutersResponse, GetRouterTokensRequest, GetRouterTokensResponse, GetSdlBySchemaVersionRequest, GetSdlBySchemaVersionResponse, GetSubgraphByIdRequest, GetSubgraphByIdResponse, GetSubgraphByNameRequest, GetSubgraphByNameResponse, GetSubgraphCheckExtensionsConfigRequest, GetSubgraphCheckExtensionsConfigResponse, GetSubgraphMembersRequest, GetSubgraphMembersResponse, GetSubgraphMetricsErrorRateRequest, GetSubgraphMetricsErrorRateResponse, GetSubgraphMetricsRequest, GetSubgraphMetricsResponse, GetSubgraphSDLFromLatestCompositionRequest, GetSubgraphSDLFromLatestCompositionResponse, GetSubgraphsRequest, GetSubgraphsResponse, GetTraceRequest, GetTraceResponse, GetUserAccessiblePermissionsRequest, GetUserAccessiblePermissionsResponse, GetUserAccessibleResourcesRequest, GetUserAccessibleResourcesResponse, GetWebhookDeliveryDetailsRequest, GetWebhookDeliveryDetailsResponse, GetWorkspaceRequest, GetWorkspaceResponse, InitializeCosmoUserRequest, InitializeCosmoUserResponse, InviteUserRequest, InviteUserResponse, IsGitHubAppInstalledRequest, IsGitHubAppInstalledResponse, IsMemberLimitReachedRequest, IsMemberLimitReachedResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, LinkSubgraphRequest, LinkSubgraphResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListRouterCompatibilityVersionsRequest, ListRouterCompatibilityVersionsResponse, MigrateFromApolloRequest, MigrateFromApolloResponse, MigrateMonographRequest, MigrateMonographResponse, MoveGraphRequest, MoveGraphResponse, PublishFederatedSubgraphRequest, PublishFederatedSubgraphResponse, PublishMonographRequest, PublishMonographResponse, PublishPersistedOperationsRequest, PublishPersistedOperationsResponse, PushCacheWarmerOperationRequest, PushCacheWarmerOperationResponse, RecomposeGraphRequest, RecomposeGraphResponse, RedeliverWebhookRequest, RedeliverWebhookResponse, RemoveInvitationRequest, RemoveInvitationResponse, RemoveOperationIgnoreAllOverrideRequest, RemoveOperationIgnoreAllOverrideResponse, RemoveOperationOverridesRequest, RemoveOperationOverridesResponse, RemoveOrganizationMemberRequest, RemoveOrganizationMemberResponse, RenameNamespaceRequest, RenameNamespaceResponse, RestoreOrganizationRequest, RestoreOrganizationResponse, SetGraphRouterCompatibilityVersionRequest, SetGraphRouterCompatibilityVersionResponse, ToggleChangeOverridesForAllOperationsRequest, ToggleChangeOverridesForAllOperationsResponse, UnlinkSubgraphRequest, UnlinkSubgraphResponse, UpdateAPIKeyRequest, UpdateAPIKeyResponse, UpdateContractRequest, UpdateContractResponse, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, UpdateFeatureSettingsRequest, UpdateFeatureSettingsResponse, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, UpdateIDPMappersRequest, UpdateIDPMappersResponse, UpdateIntegrationConfigRequest, UpdateIntegrationConfigResponse, UpdateMonographRequest, UpdateMonographResponse, UpdateNamespaceChecksConfigurationRequest, UpdateNamespaceChecksConfigurationResponse, UpdateOrganizationDetailsRequest, UpdateOrganizationDetailsResponse, UpdateOrganizationGroupRequest, UpdateOrganizationGroupResponse, UpdateOrganizationWebhookConfigRequest, UpdateOrganizationWebhookConfigResponse, UpdateOrgMemberGroupRequest, UpdateOrgMemberGroupResponse, UpdatePlaygroundScriptRequest, UpdatePlaygroundScriptResponse, UpdateProposalRequest, UpdateProposalResponse, UpdateSubgraphRequest, UpdateSubgraphResponse, UpgradePlanRequest, UpgradePlanResponse, ValidateAndFetchPluginDataRequest, ValidateAndFetchPluginDataResponse, VerifyAPIKeyGraphAccessRequest, VerifyAPIKeyGraphAccessResponse, WhoAmIRequest, WhoAmIResponse } from "./platform_pb.js"; +import { AcceptOrDeclineInvitationRequest, AcceptOrDeclineInvitationResponse, AddReadmeRequest, AddReadmeResponse, BulkUpdateProposalRolloutPercentagesRequest, BulkUpdateProposalRolloutPercentagesResponse, CheckFederatedGraphRequest, CheckFederatedGraphResponse, CheckPersistedOperationTrafficRequest, CheckPersistedOperationTrafficResponse, CheckSubgraphSchemaRequest, CheckSubgraphSchemaResponse, ComputeCacheWarmerOperationsRequest, ComputeCacheWarmerOperationsResponse, ConfigureCacheWarmerRequest, ConfigureCacheWarmerResponse, ConfigureNamespaceGraphPruningConfigRequest, ConfigureNamespaceGraphPruningConfigResponse, ConfigureNamespaceLintConfigRequest, ConfigureNamespaceLintConfigResponse, ConfigureNamespaceProposalConfigRequest, ConfigureNamespaceProposalConfigResponse, ConfigureSubgraphCheckExtensionsRequest, ConfigureSubgraphCheckExtensionsResponse, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreateContractRequest, CreateContractResponse, CreateFeatureFlagRequest, CreateFeatureFlagResponse, CreateFederatedGraphRequest, CreateFederatedGraphResponse, CreateFederatedGraphTokenRequest, CreateFederatedGraphTokenResponse, CreateFederatedSubgraphRequest, CreateFederatedSubgraphResponse, CreateIgnoreOverridesForAllOperationsRequest, CreateIgnoreOverridesForAllOperationsResponse, CreateIntegrationRequest, CreateIntegrationResponse, CreateMonographRequest, CreateMonographResponse, CreateNamespaceRequest, CreateNamespaceResponse, CreateOIDCProviderRequest, CreateOIDCProviderResponse, CreateOperationIgnoreAllOverrideRequest, CreateOperationIgnoreAllOverrideResponse, CreateOperationOverridesRequest, CreateOperationOverridesResponse, CreateOrganizationGroupRequest, CreateOrganizationGroupResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOrganizationWebhookConfigRequest, CreateOrganizationWebhookConfigResponse, CreatePlaygroundScriptRequest, CreatePlaygroundScriptResponse, CreateProposalRequest, CreateProposalResponse, DeleteAPIKeyRequest, DeleteAPIKeyResponse, DeleteCacheWarmerOperationRequest, DeleteCacheWarmerOperationResponse, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, DeleteFederatedGraphRequest, DeleteFederatedGraphResponse, DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, DeleteMonographRequest, DeleteMonographResponse, DeleteNamespaceRequest, DeleteNamespaceResponse, DeleteOIDCProviderRequest, DeleteOIDCProviderResponse, DeleteOrganizationGroupRequest, DeleteOrganizationGroupResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteOrganizationWebhookConfigRequest, DeleteOrganizationWebhookConfigResponse, DeletePersistedOperationRequest, DeletePersistedOperationResponse, DeletePlaygroundScriptRequest, DeletePlaygroundScriptResponse, DeleteRouterTokenRequest, DeleteRouterTokenResponse, DeleteUserRequest, DeleteUserResponse, EnableFeatureFlagRequest, EnableFeatureFlagResponse, EnableGraphPruningRequest, EnableGraphPruningResponse, EnableLintingForTheNamespaceRequest, EnableLintingForTheNamespaceResponse, EnableProposalsForNamespaceRequest, EnableProposalsForNamespaceResponse, FixSubgraphSchemaRequest, FixSubgraphSchemaResponse, ForceCheckSuccessRequest, ForceCheckSuccessResponse, GenerateRouterTokenRequest, GenerateRouterTokenResponse, GetAllOverridesRequest, GetAllOverridesResponse, GetAnalyticsViewRequest, GetAnalyticsViewResponse, GetAPIKeysRequest, GetAPIKeysResponse, GetAuditLogsRequest, GetAuditLogsResponse, GetBillingPlansRequest, GetBillingPlansResponse, GetCacheWarmerConfigRequest, GetCacheWarmerConfigResponse, GetCacheWarmerOperationsRequest, GetCacheWarmerOperationsResponse, GetChangelogBySchemaVersionRequest, GetChangelogBySchemaVersionResponse, GetCheckOperationsRequest, GetCheckOperationsResponse, GetChecksByFederatedGraphNameRequest, GetChecksByFederatedGraphNameResponse, GetCheckSummaryRequest, GetCheckSummaryResponse, GetClientsFromAnalyticsRequest, GetClientsFromAnalyticsResponse, GetClientsRequest, GetClientsResponse, GetCompositionDetailsRequest, GetCompositionDetailsResponse, GetCompositionsRequest, GetCompositionsResponse, GetDashboardAnalyticsViewRequest, GetDashboardAnalyticsViewResponse, GetFeatureFlagByNameRequest, GetFeatureFlagByNameResponse, GetFeatureFlagsByFederatedGraphRequest, GetFeatureFlagsByFederatedGraphResponse, GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, GetFeatureFlagsRequest, GetFeatureFlagsResponse, GetFeatureSubgraphsByFeatureFlagRequest, GetFeatureSubgraphsByFeatureFlagResponse, GetFeatureSubgraphsByFederatedGraphRequest, GetFeatureSubgraphsByFederatedGraphResponse, GetFeatureSubgraphsRequest, GetFeatureSubgraphsResponse, GetFederatedGraphByIdRequest, GetFederatedGraphByIdResponse, GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, GetFederatedGraphChangelogRequest, GetFederatedGraphChangelogResponse, GetFederatedGraphsBySubgraphLabelsRequest, GetFederatedGraphsBySubgraphLabelsResponse, GetFederatedGraphSDLByNameRequest, GetFederatedGraphSDLByNameResponse, GetFederatedGraphsRequest, GetFederatedGraphsResponse, GetFieldUsageRequest, GetFieldUsageResponse, GetGraphMetricsRequest, GetGraphMetricsResponse, GetInvitationsRequest, GetInvitationsResponse, GetLatestSubgraphSDLRequest, GetLatestSubgraphSDLResponse, GetMetricsErrorRateRequest, GetMetricsErrorRateResponse, GetNamespaceChecksConfigurationRequest, GetNamespaceChecksConfigurationResponse, GetNamespaceGraphPruningConfigRequest, GetNamespaceGraphPruningConfigResponse, GetNamespaceLintConfigRequest, GetNamespaceLintConfigResponse, GetNamespaceProposalConfigRequest, GetNamespaceProposalConfigResponse, GetNamespaceRequest, GetNamespaceResponse, GetNamespacesRequest, GetNamespacesResponse, GetOIDCProviderRequest, GetOIDCProviderResponse, GetOperationClientsRequest, GetOperationClientsResponse, GetOperationContentRequest, GetOperationContentResponse, GetOperationDeprecatedFieldsRequest, GetOperationDeprecatedFieldsResponse, GetOperationOverridesRequest, GetOperationOverridesResponse, GetOperationsRequest, GetOperationsResponse, GetOrganizationBySlugRequest, GetOrganizationBySlugResponse, GetOrganizationGroupMembersRequest, GetOrganizationGroupMembersResponse, GetOrganizationGroupsRequest, GetOrganizationGroupsResponse, GetOrganizationIntegrationsRequest, GetOrganizationIntegrationsResponse, GetOrganizationMembersRequest, GetOrganizationMembersResponse, GetOrganizationRequestsCountRequest, GetOrganizationRequestsCountResponse, GetOrganizationWebhookConfigsRequest, GetOrganizationWebhookConfigsResponse, GetOrganizationWebhookHistoryRequest, GetOrganizationWebhookHistoryResponse, GetOrganizationWebhookMetaRequest, GetOrganizationWebhookMetaResponse, GetPendingOrganizationMembersRequest, GetPendingOrganizationMembersResponse, GetPersistedOperationsRequest, GetPersistedOperationsResponse, GetPlaygroundScriptsRequest, GetPlaygroundScriptsResponse, GetProposalChecksRequest, GetProposalChecksResponse, GetProposalRequest, GetProposalResponse, GetProposalsByFederatedGraphRequest, GetProposalsByFederatedGraphResponse, GetProposedSchemaOfCheckedSubgraphRequest, GetProposedSchemaOfCheckedSubgraphResponse, GetRoutersRequest, GetRoutersResponse, GetRouterTokensRequest, GetRouterTokensResponse, GetSdlBySchemaVersionRequest, GetSdlBySchemaVersionResponse, GetSubgraphByIdRequest, GetSubgraphByIdResponse, GetSubgraphByNameRequest, GetSubgraphByNameResponse, GetSubgraphCheckExtensionsConfigRequest, GetSubgraphCheckExtensionsConfigResponse, GetSubgraphMembersRequest, GetSubgraphMembersResponse, GetSubgraphMetricsErrorRateRequest, GetSubgraphMetricsErrorRateResponse, GetSubgraphMetricsRequest, GetSubgraphMetricsResponse, GetSubgraphSDLFromLatestCompositionRequest, GetSubgraphSDLFromLatestCompositionResponse, GetSubgraphsRequest, GetSubgraphsResponse, GetTraceRequest, GetTraceResponse, GetUserAccessiblePermissionsRequest, GetUserAccessiblePermissionsResponse, GetUserAccessibleResourcesRequest, GetUserAccessibleResourcesResponse, GetWebhookDeliveryDetailsRequest, GetWebhookDeliveryDetailsResponse, GetWorkspaceRequest, GetWorkspaceResponse, InitializeCosmoUserRequest, InitializeCosmoUserResponse, InviteUserRequest, InviteUserResponse, IsGitHubAppInstalledRequest, IsGitHubAppInstalledResponse, IsMemberLimitReachedRequest, IsMemberLimitReachedResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, LinkSubgraphRequest, LinkSubgraphResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListRouterCompatibilityVersionsRequest, ListRouterCompatibilityVersionsResponse, MigrateFromApolloRequest, MigrateFromApolloResponse, MigrateMonographRequest, MigrateMonographResponse, MoveGraphRequest, MoveGraphResponse, PublishFederatedSubgraphRequest, PublishFederatedSubgraphResponse, PublishMonographRequest, PublishMonographResponse, PublishPersistedOperationsRequest, PublishPersistedOperationsResponse, PushCacheWarmerOperationRequest, PushCacheWarmerOperationResponse, RecomposeGraphRequest, RecomposeGraphResponse, RedeliverWebhookRequest, RedeliverWebhookResponse, RemoveInvitationRequest, RemoveInvitationResponse, RemoveOperationIgnoreAllOverrideRequest, RemoveOperationIgnoreAllOverrideResponse, RemoveOperationOverridesRequest, RemoveOperationOverridesResponse, RemoveOrganizationMemberRequest, RemoveOrganizationMemberResponse, RenameNamespaceRequest, RenameNamespaceResponse, RestoreOrganizationRequest, RestoreOrganizationResponse, SetGraphRouterCompatibilityVersionRequest, SetGraphRouterCompatibilityVersionResponse, TeardownProposalRolloutRequest, TeardownProposalRolloutResponse, ToggleChangeOverridesForAllOperationsRequest, ToggleChangeOverridesForAllOperationsResponse, UnlinkSubgraphRequest, UnlinkSubgraphResponse, UpdateAPIKeyRequest, UpdateAPIKeyResponse, UpdateContractRequest, UpdateContractResponse, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, UpdateFeatureSettingsRequest, UpdateFeatureSettingsResponse, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, UpdateIDPMappersRequest, UpdateIDPMappersResponse, UpdateIntegrationConfigRequest, UpdateIntegrationConfigResponse, UpdateMonographRequest, UpdateMonographResponse, UpdateNamespaceChecksConfigurationRequest, UpdateNamespaceChecksConfigurationResponse, UpdateOrganizationDetailsRequest, UpdateOrganizationDetailsResponse, UpdateOrganizationGroupRequest, UpdateOrganizationGroupResponse, UpdateOrganizationWebhookConfigRequest, UpdateOrganizationWebhookConfigResponse, UpdateOrgMemberGroupRequest, UpdateOrgMemberGroupResponse, UpdatePlaygroundScriptRequest, UpdatePlaygroundScriptResponse, UpdateProposalRequest, UpdateProposalResponse, UpdateSubgraphRequest, UpdateSubgraphResponse, UpgradePlanRequest, UpgradePlanResponse, ValidateAndFetchPluginDataRequest, ValidateAndFetchPluginDataResponse, VerifyAPIKeyGraphAccessRequest, VerifyAPIKeyGraphAccessResponse, WhoAmIRequest, WhoAmIResponse } from "./platform_pb.js"; /** * PlaygroundScripts @@ -2708,6 +2708,44 @@ export const getProposalChecks = { } } as const; +/** + * BulkUpdateProposalRolloutPercentages atomically creates or updates rollout + * percentages across one or more proposals on the same federated graph. For + * proposals without an existing rollout, the handler creates feature subgraphs + * and a feature flag linked to the proposal (deploy semantics). For proposals + * already rolled out, only the percentage is updated. Single transaction + + * single composeAndDeployGraphs; sibling rollouts not in the batch keep their + * stored percentages. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.BulkUpdateProposalRolloutPercentages + */ +export const bulkUpdateProposalRolloutPercentages = { + localName: "bulkUpdateProposalRolloutPercentages", + name: "BulkUpdateProposalRolloutPercentages", + kind: MethodKind.Unary, + I: BulkUpdateProposalRolloutPercentagesRequest, + O: BulkUpdateProposalRolloutPercentagesResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + +/** + * TeardownProposalRollout deletes the linked feature flag and feature subgraphs. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.TeardownProposalRollout + */ +export const teardownProposalRollout = { + localName: "teardownProposalRollout", + name: "TeardownProposalRollout", + kind: MethodKind.Unary, + I: TeardownProposalRolloutRequest, + O: TeardownProposalRolloutResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + /** * GetOperations returns the operations of a federated graph. * diff --git a/connect/src/wg/cosmo/platform/v1/platform_connect.ts b/connect/src/wg/cosmo/platform/v1/platform_connect.ts index dbe2ef8a73..f42626513b 100644 --- a/connect/src/wg/cosmo/platform/v1/platform_connect.ts +++ b/connect/src/wg/cosmo/platform/v1/platform_connect.ts @@ -5,7 +5,7 @@ /* eslint-disable */ // @ts-nocheck -import { AcceptOrDeclineInvitationRequest, AcceptOrDeclineInvitationResponse, AddReadmeRequest, AddReadmeResponse, CheckFederatedGraphRequest, CheckFederatedGraphResponse, CheckPersistedOperationTrafficRequest, CheckPersistedOperationTrafficResponse, CheckSubgraphSchemaRequest, CheckSubgraphSchemaResponse, ComputeCacheWarmerOperationsRequest, ComputeCacheWarmerOperationsResponse, ConfigureCacheWarmerRequest, ConfigureCacheWarmerResponse, ConfigureNamespaceGraphPruningConfigRequest, ConfigureNamespaceGraphPruningConfigResponse, ConfigureNamespaceLintConfigRequest, ConfigureNamespaceLintConfigResponse, ConfigureNamespaceProposalConfigRequest, ConfigureNamespaceProposalConfigResponse, ConfigureSubgraphCheckExtensionsRequest, ConfigureSubgraphCheckExtensionsResponse, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreateContractRequest, CreateContractResponse, CreateFeatureFlagRequest, CreateFeatureFlagResponse, CreateFederatedGraphRequest, CreateFederatedGraphResponse, CreateFederatedGraphTokenRequest, CreateFederatedGraphTokenResponse, CreateFederatedSubgraphRequest, CreateFederatedSubgraphResponse, CreateIgnoreOverridesForAllOperationsRequest, CreateIgnoreOverridesForAllOperationsResponse, CreateIntegrationRequest, CreateIntegrationResponse, CreateMonographRequest, CreateMonographResponse, CreateNamespaceRequest, CreateNamespaceResponse, CreateOIDCProviderRequest, CreateOIDCProviderResponse, CreateOperationIgnoreAllOverrideRequest, CreateOperationIgnoreAllOverrideResponse, CreateOperationOverridesRequest, CreateOperationOverridesResponse, CreateOrganizationGroupRequest, CreateOrganizationGroupResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOrganizationWebhookConfigRequest, CreateOrganizationWebhookConfigResponse, CreatePlaygroundScriptRequest, CreatePlaygroundScriptResponse, CreateProposalRequest, CreateProposalResponse, DeleteAPIKeyRequest, DeleteAPIKeyResponse, DeleteCacheWarmerOperationRequest, DeleteCacheWarmerOperationResponse, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, DeleteFederatedGraphRequest, DeleteFederatedGraphResponse, DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, DeleteMonographRequest, DeleteMonographResponse, DeleteNamespaceRequest, DeleteNamespaceResponse, DeleteOIDCProviderRequest, DeleteOIDCProviderResponse, DeleteOrganizationGroupRequest, DeleteOrganizationGroupResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteOrganizationWebhookConfigRequest, DeleteOrganizationWebhookConfigResponse, DeletePersistedOperationRequest, DeletePersistedOperationResponse, DeletePlaygroundScriptRequest, DeletePlaygroundScriptResponse, DeleteRouterTokenRequest, DeleteRouterTokenResponse, DeleteUserRequest, DeleteUserResponse, EnableFeatureFlagRequest, EnableFeatureFlagResponse, EnableGraphPruningRequest, EnableGraphPruningResponse, EnableLintingForTheNamespaceRequest, EnableLintingForTheNamespaceResponse, EnableProposalsForNamespaceRequest, EnableProposalsForNamespaceResponse, FixSubgraphSchemaRequest, FixSubgraphSchemaResponse, ForceCheckSuccessRequest, ForceCheckSuccessResponse, GenerateRouterTokenRequest, GenerateRouterTokenResponse, GetAllOverridesRequest, GetAllOverridesResponse, GetAnalyticsViewRequest, GetAnalyticsViewResponse, GetAPIKeysRequest, GetAPIKeysResponse, GetAuditLogsRequest, GetAuditLogsResponse, GetBillingPlansRequest, GetBillingPlansResponse, GetCacheWarmerConfigRequest, GetCacheWarmerConfigResponse, GetCacheWarmerOperationsRequest, GetCacheWarmerOperationsResponse, GetChangelogBySchemaVersionRequest, GetChangelogBySchemaVersionResponse, GetCheckOperationsRequest, GetCheckOperationsResponse, GetChecksByFederatedGraphNameRequest, GetChecksByFederatedGraphNameResponse, GetCheckSummaryRequest, GetCheckSummaryResponse, GetClientsFromAnalyticsRequest, GetClientsFromAnalyticsResponse, GetClientsRequest, GetClientsResponse, GetCompositionDetailsRequest, GetCompositionDetailsResponse, GetCompositionsRequest, GetCompositionsResponse, GetDashboardAnalyticsViewRequest, GetDashboardAnalyticsViewResponse, GetFeatureFlagByNameRequest, GetFeatureFlagByNameResponse, GetFeatureFlagsByFederatedGraphRequest, GetFeatureFlagsByFederatedGraphResponse, GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, GetFeatureFlagsRequest, GetFeatureFlagsResponse, GetFeatureSubgraphsByFeatureFlagRequest, GetFeatureSubgraphsByFeatureFlagResponse, GetFeatureSubgraphsByFederatedGraphRequest, GetFeatureSubgraphsByFederatedGraphResponse, GetFeatureSubgraphsRequest, GetFeatureSubgraphsResponse, GetFederatedGraphByIdRequest, GetFederatedGraphByIdResponse, GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, GetFederatedGraphChangelogRequest, GetFederatedGraphChangelogResponse, GetFederatedGraphsBySubgraphLabelsRequest, GetFederatedGraphsBySubgraphLabelsResponse, GetFederatedGraphSDLByNameRequest, GetFederatedGraphSDLByNameResponse, GetFederatedGraphsRequest, GetFederatedGraphsResponse, GetFieldUsageRequest, GetFieldUsageResponse, GetGraphMetricsRequest, GetGraphMetricsResponse, GetInvitationsRequest, GetInvitationsResponse, GetLatestSubgraphSDLRequest, GetLatestSubgraphSDLResponse, GetMetricsErrorRateRequest, GetMetricsErrorRateResponse, GetNamespaceChecksConfigurationRequest, GetNamespaceChecksConfigurationResponse, GetNamespaceGraphPruningConfigRequest, GetNamespaceGraphPruningConfigResponse, GetNamespaceLintConfigRequest, GetNamespaceLintConfigResponse, GetNamespaceProposalConfigRequest, GetNamespaceProposalConfigResponse, GetNamespaceRequest, GetNamespaceResponse, GetNamespacesRequest, GetNamespacesResponse, GetOIDCProviderRequest, GetOIDCProviderResponse, GetOperationClientsRequest, GetOperationClientsResponse, GetOperationContentRequest, GetOperationContentResponse, GetOperationDeprecatedFieldsRequest, GetOperationDeprecatedFieldsResponse, GetOperationOverridesRequest, GetOperationOverridesResponse, GetOperationsRequest, GetOperationsResponse, GetOrganizationBySlugRequest, GetOrganizationBySlugResponse, GetOrganizationGroupMembersRequest, GetOrganizationGroupMembersResponse, GetOrganizationGroupsRequest, GetOrganizationGroupsResponse, GetOrganizationIntegrationsRequest, GetOrganizationIntegrationsResponse, GetOrganizationMembersRequest, GetOrganizationMembersResponse, GetOrganizationRequestsCountRequest, GetOrganizationRequestsCountResponse, GetOrganizationWebhookConfigsRequest, GetOrganizationWebhookConfigsResponse, GetOrganizationWebhookHistoryRequest, GetOrganizationWebhookHistoryResponse, GetOrganizationWebhookMetaRequest, GetOrganizationWebhookMetaResponse, GetPendingOrganizationMembersRequest, GetPendingOrganizationMembersResponse, GetPersistedOperationsRequest, GetPersistedOperationsResponse, GetPlaygroundScriptsRequest, GetPlaygroundScriptsResponse, GetProposalChecksRequest, GetProposalChecksResponse, GetProposalRequest, GetProposalResponse, GetProposalsByFederatedGraphRequest, GetProposalsByFederatedGraphResponse, GetProposedSchemaOfCheckedSubgraphRequest, GetProposedSchemaOfCheckedSubgraphResponse, GetRoutersRequest, GetRoutersResponse, GetRouterTokensRequest, GetRouterTokensResponse, GetSdlBySchemaVersionRequest, GetSdlBySchemaVersionResponse, GetSubgraphByIdRequest, GetSubgraphByIdResponse, GetSubgraphByNameRequest, GetSubgraphByNameResponse, GetSubgraphCheckExtensionsConfigRequest, GetSubgraphCheckExtensionsConfigResponse, GetSubgraphMembersRequest, GetSubgraphMembersResponse, GetSubgraphMetricsErrorRateRequest, GetSubgraphMetricsErrorRateResponse, GetSubgraphMetricsRequest, GetSubgraphMetricsResponse, GetSubgraphSDLFromLatestCompositionRequest, GetSubgraphSDLFromLatestCompositionResponse, GetSubgraphsRequest, GetSubgraphsResponse, GetTraceRequest, GetTraceResponse, GetUserAccessiblePermissionsRequest, GetUserAccessiblePermissionsResponse, GetUserAccessibleResourcesRequest, GetUserAccessibleResourcesResponse, GetWebhookDeliveryDetailsRequest, GetWebhookDeliveryDetailsResponse, GetWorkspaceRequest, GetWorkspaceResponse, InitializeCosmoUserRequest, InitializeCosmoUserResponse, InviteUserRequest, InviteUserResponse, IsGitHubAppInstalledRequest, IsGitHubAppInstalledResponse, IsMemberLimitReachedRequest, IsMemberLimitReachedResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, LinkSubgraphRequest, LinkSubgraphResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListRouterCompatibilityVersionsRequest, ListRouterCompatibilityVersionsResponse, MigrateFromApolloRequest, MigrateFromApolloResponse, MigrateMonographRequest, MigrateMonographResponse, MoveGraphRequest, MoveGraphResponse, PublishFederatedSubgraphRequest, PublishFederatedSubgraphResponse, PublishMonographRequest, PublishMonographResponse, PublishPersistedOperationsRequest, PublishPersistedOperationsResponse, PushCacheWarmerOperationRequest, PushCacheWarmerOperationResponse, RecomposeGraphRequest, RecomposeGraphResponse, RedeliverWebhookRequest, RedeliverWebhookResponse, RemoveInvitationRequest, RemoveInvitationResponse, RemoveOperationIgnoreAllOverrideRequest, RemoveOperationIgnoreAllOverrideResponse, RemoveOperationOverridesRequest, RemoveOperationOverridesResponse, RemoveOrganizationMemberRequest, RemoveOrganizationMemberResponse, RenameNamespaceRequest, RenameNamespaceResponse, RestoreOrganizationRequest, RestoreOrganizationResponse, SetGraphRouterCompatibilityVersionRequest, SetGraphRouterCompatibilityVersionResponse, ToggleChangeOverridesForAllOperationsRequest, ToggleChangeOverridesForAllOperationsResponse, UnlinkSubgraphRequest, UnlinkSubgraphResponse, UpdateAPIKeyRequest, UpdateAPIKeyResponse, UpdateContractRequest, UpdateContractResponse, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, UpdateFeatureSettingsRequest, UpdateFeatureSettingsResponse, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, UpdateIDPMappersRequest, UpdateIDPMappersResponse, UpdateIntegrationConfigRequest, UpdateIntegrationConfigResponse, UpdateMonographRequest, UpdateMonographResponse, UpdateNamespaceChecksConfigurationRequest, UpdateNamespaceChecksConfigurationResponse, UpdateOrganizationDetailsRequest, UpdateOrganizationDetailsResponse, UpdateOrganizationGroupRequest, UpdateOrganizationGroupResponse, UpdateOrganizationWebhookConfigRequest, UpdateOrganizationWebhookConfigResponse, UpdateOrgMemberGroupRequest, UpdateOrgMemberGroupResponse, UpdatePlaygroundScriptRequest, UpdatePlaygroundScriptResponse, UpdateProposalRequest, UpdateProposalResponse, UpdateSubgraphRequest, UpdateSubgraphResponse, UpgradePlanRequest, UpgradePlanResponse, ValidateAndFetchPluginDataRequest, ValidateAndFetchPluginDataResponse, VerifyAPIKeyGraphAccessRequest, VerifyAPIKeyGraphAccessResponse, WhoAmIRequest, WhoAmIResponse } from "./platform_pb.js"; +import { AcceptOrDeclineInvitationRequest, AcceptOrDeclineInvitationResponse, AddReadmeRequest, AddReadmeResponse, BulkUpdateProposalRolloutPercentagesRequest, BulkUpdateProposalRolloutPercentagesResponse, CheckFederatedGraphRequest, CheckFederatedGraphResponse, CheckPersistedOperationTrafficRequest, CheckPersistedOperationTrafficResponse, CheckSubgraphSchemaRequest, CheckSubgraphSchemaResponse, ComputeCacheWarmerOperationsRequest, ComputeCacheWarmerOperationsResponse, ConfigureCacheWarmerRequest, ConfigureCacheWarmerResponse, ConfigureNamespaceGraphPruningConfigRequest, ConfigureNamespaceGraphPruningConfigResponse, ConfigureNamespaceLintConfigRequest, ConfigureNamespaceLintConfigResponse, ConfigureNamespaceProposalConfigRequest, ConfigureNamespaceProposalConfigResponse, ConfigureSubgraphCheckExtensionsRequest, ConfigureSubgraphCheckExtensionsResponse, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreateContractRequest, CreateContractResponse, CreateFeatureFlagRequest, CreateFeatureFlagResponse, CreateFederatedGraphRequest, CreateFederatedGraphResponse, CreateFederatedGraphTokenRequest, CreateFederatedGraphTokenResponse, CreateFederatedSubgraphRequest, CreateFederatedSubgraphResponse, CreateIgnoreOverridesForAllOperationsRequest, CreateIgnoreOverridesForAllOperationsResponse, CreateIntegrationRequest, CreateIntegrationResponse, CreateMonographRequest, CreateMonographResponse, CreateNamespaceRequest, CreateNamespaceResponse, CreateOIDCProviderRequest, CreateOIDCProviderResponse, CreateOperationIgnoreAllOverrideRequest, CreateOperationIgnoreAllOverrideResponse, CreateOperationOverridesRequest, CreateOperationOverridesResponse, CreateOrganizationGroupRequest, CreateOrganizationGroupResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOrganizationWebhookConfigRequest, CreateOrganizationWebhookConfigResponse, CreatePlaygroundScriptRequest, CreatePlaygroundScriptResponse, CreateProposalRequest, CreateProposalResponse, DeleteAPIKeyRequest, DeleteAPIKeyResponse, DeleteCacheWarmerOperationRequest, DeleteCacheWarmerOperationResponse, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, DeleteFederatedGraphRequest, DeleteFederatedGraphResponse, DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, DeleteMonographRequest, DeleteMonographResponse, DeleteNamespaceRequest, DeleteNamespaceResponse, DeleteOIDCProviderRequest, DeleteOIDCProviderResponse, DeleteOrganizationGroupRequest, DeleteOrganizationGroupResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteOrganizationWebhookConfigRequest, DeleteOrganizationWebhookConfigResponse, DeletePersistedOperationRequest, DeletePersistedOperationResponse, DeletePlaygroundScriptRequest, DeletePlaygroundScriptResponse, DeleteRouterTokenRequest, DeleteRouterTokenResponse, DeleteUserRequest, DeleteUserResponse, EnableFeatureFlagRequest, EnableFeatureFlagResponse, EnableGraphPruningRequest, EnableGraphPruningResponse, EnableLintingForTheNamespaceRequest, EnableLintingForTheNamespaceResponse, EnableProposalsForNamespaceRequest, EnableProposalsForNamespaceResponse, FixSubgraphSchemaRequest, FixSubgraphSchemaResponse, ForceCheckSuccessRequest, ForceCheckSuccessResponse, GenerateRouterTokenRequest, GenerateRouterTokenResponse, GetAllOverridesRequest, GetAllOverridesResponse, GetAnalyticsViewRequest, GetAnalyticsViewResponse, GetAPIKeysRequest, GetAPIKeysResponse, GetAuditLogsRequest, GetAuditLogsResponse, GetBillingPlansRequest, GetBillingPlansResponse, GetCacheWarmerConfigRequest, GetCacheWarmerConfigResponse, GetCacheWarmerOperationsRequest, GetCacheWarmerOperationsResponse, GetChangelogBySchemaVersionRequest, GetChangelogBySchemaVersionResponse, GetCheckOperationsRequest, GetCheckOperationsResponse, GetChecksByFederatedGraphNameRequest, GetChecksByFederatedGraphNameResponse, GetCheckSummaryRequest, GetCheckSummaryResponse, GetClientsFromAnalyticsRequest, GetClientsFromAnalyticsResponse, GetClientsRequest, GetClientsResponse, GetCompositionDetailsRequest, GetCompositionDetailsResponse, GetCompositionsRequest, GetCompositionsResponse, GetDashboardAnalyticsViewRequest, GetDashboardAnalyticsViewResponse, GetFeatureFlagByNameRequest, GetFeatureFlagByNameResponse, GetFeatureFlagsByFederatedGraphRequest, GetFeatureFlagsByFederatedGraphResponse, GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, GetFeatureFlagsRequest, GetFeatureFlagsResponse, GetFeatureSubgraphsByFeatureFlagRequest, GetFeatureSubgraphsByFeatureFlagResponse, GetFeatureSubgraphsByFederatedGraphRequest, GetFeatureSubgraphsByFederatedGraphResponse, GetFeatureSubgraphsRequest, GetFeatureSubgraphsResponse, GetFederatedGraphByIdRequest, GetFederatedGraphByIdResponse, GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, GetFederatedGraphChangelogRequest, GetFederatedGraphChangelogResponse, GetFederatedGraphsBySubgraphLabelsRequest, GetFederatedGraphsBySubgraphLabelsResponse, GetFederatedGraphSDLByNameRequest, GetFederatedGraphSDLByNameResponse, GetFederatedGraphsRequest, GetFederatedGraphsResponse, GetFieldUsageRequest, GetFieldUsageResponse, GetGraphMetricsRequest, GetGraphMetricsResponse, GetInvitationsRequest, GetInvitationsResponse, GetLatestSubgraphSDLRequest, GetLatestSubgraphSDLResponse, GetMetricsErrorRateRequest, GetMetricsErrorRateResponse, GetNamespaceChecksConfigurationRequest, GetNamespaceChecksConfigurationResponse, GetNamespaceGraphPruningConfigRequest, GetNamespaceGraphPruningConfigResponse, GetNamespaceLintConfigRequest, GetNamespaceLintConfigResponse, GetNamespaceProposalConfigRequest, GetNamespaceProposalConfigResponse, GetNamespaceRequest, GetNamespaceResponse, GetNamespacesRequest, GetNamespacesResponse, GetOIDCProviderRequest, GetOIDCProviderResponse, GetOperationClientsRequest, GetOperationClientsResponse, GetOperationContentRequest, GetOperationContentResponse, GetOperationDeprecatedFieldsRequest, GetOperationDeprecatedFieldsResponse, GetOperationOverridesRequest, GetOperationOverridesResponse, GetOperationsRequest, GetOperationsResponse, GetOrganizationBySlugRequest, GetOrganizationBySlugResponse, GetOrganizationGroupMembersRequest, GetOrganizationGroupMembersResponse, GetOrganizationGroupsRequest, GetOrganizationGroupsResponse, GetOrganizationIntegrationsRequest, GetOrganizationIntegrationsResponse, GetOrganizationMembersRequest, GetOrganizationMembersResponse, GetOrganizationRequestsCountRequest, GetOrganizationRequestsCountResponse, GetOrganizationWebhookConfigsRequest, GetOrganizationWebhookConfigsResponse, GetOrganizationWebhookHistoryRequest, GetOrganizationWebhookHistoryResponse, GetOrganizationWebhookMetaRequest, GetOrganizationWebhookMetaResponse, GetPendingOrganizationMembersRequest, GetPendingOrganizationMembersResponse, GetPersistedOperationsRequest, GetPersistedOperationsResponse, GetPlaygroundScriptsRequest, GetPlaygroundScriptsResponse, GetProposalChecksRequest, GetProposalChecksResponse, GetProposalRequest, GetProposalResponse, GetProposalsByFederatedGraphRequest, GetProposalsByFederatedGraphResponse, GetProposedSchemaOfCheckedSubgraphRequest, GetProposedSchemaOfCheckedSubgraphResponse, GetRoutersRequest, GetRoutersResponse, GetRouterTokensRequest, GetRouterTokensResponse, GetSdlBySchemaVersionRequest, GetSdlBySchemaVersionResponse, GetSubgraphByIdRequest, GetSubgraphByIdResponse, GetSubgraphByNameRequest, GetSubgraphByNameResponse, GetSubgraphCheckExtensionsConfigRequest, GetSubgraphCheckExtensionsConfigResponse, GetSubgraphMembersRequest, GetSubgraphMembersResponse, GetSubgraphMetricsErrorRateRequest, GetSubgraphMetricsErrorRateResponse, GetSubgraphMetricsRequest, GetSubgraphMetricsResponse, GetSubgraphSDLFromLatestCompositionRequest, GetSubgraphSDLFromLatestCompositionResponse, GetSubgraphsRequest, GetSubgraphsResponse, GetTraceRequest, GetTraceResponse, GetUserAccessiblePermissionsRequest, GetUserAccessiblePermissionsResponse, GetUserAccessibleResourcesRequest, GetUserAccessibleResourcesResponse, GetWebhookDeliveryDetailsRequest, GetWebhookDeliveryDetailsResponse, GetWorkspaceRequest, GetWorkspaceResponse, InitializeCosmoUserRequest, InitializeCosmoUserResponse, InviteUserRequest, InviteUserResponse, IsGitHubAppInstalledRequest, IsGitHubAppInstalledResponse, IsMemberLimitReachedRequest, IsMemberLimitReachedResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, LinkSubgraphRequest, LinkSubgraphResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListRouterCompatibilityVersionsRequest, ListRouterCompatibilityVersionsResponse, MigrateFromApolloRequest, MigrateFromApolloResponse, MigrateMonographRequest, MigrateMonographResponse, MoveGraphRequest, MoveGraphResponse, PublishFederatedSubgraphRequest, PublishFederatedSubgraphResponse, PublishMonographRequest, PublishMonographResponse, PublishPersistedOperationsRequest, PublishPersistedOperationsResponse, PushCacheWarmerOperationRequest, PushCacheWarmerOperationResponse, RecomposeGraphRequest, RecomposeGraphResponse, RedeliverWebhookRequest, RedeliverWebhookResponse, RemoveInvitationRequest, RemoveInvitationResponse, RemoveOperationIgnoreAllOverrideRequest, RemoveOperationIgnoreAllOverrideResponse, RemoveOperationOverridesRequest, RemoveOperationOverridesResponse, RemoveOrganizationMemberRequest, RemoveOrganizationMemberResponse, RenameNamespaceRequest, RenameNamespaceResponse, RestoreOrganizationRequest, RestoreOrganizationResponse, SetGraphRouterCompatibilityVersionRequest, SetGraphRouterCompatibilityVersionResponse, TeardownProposalRolloutRequest, TeardownProposalRolloutResponse, ToggleChangeOverridesForAllOperationsRequest, ToggleChangeOverridesForAllOperationsResponse, UnlinkSubgraphRequest, UnlinkSubgraphResponse, UpdateAPIKeyRequest, UpdateAPIKeyResponse, UpdateContractRequest, UpdateContractResponse, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, UpdateFeatureSettingsRequest, UpdateFeatureSettingsResponse, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, UpdateIDPMappersRequest, UpdateIDPMappersResponse, UpdateIntegrationConfigRequest, UpdateIntegrationConfigResponse, UpdateMonographRequest, UpdateMonographResponse, UpdateNamespaceChecksConfigurationRequest, UpdateNamespaceChecksConfigurationResponse, UpdateOrganizationDetailsRequest, UpdateOrganizationDetailsResponse, UpdateOrganizationGroupRequest, UpdateOrganizationGroupResponse, UpdateOrganizationWebhookConfigRequest, UpdateOrganizationWebhookConfigResponse, UpdateOrgMemberGroupRequest, UpdateOrgMemberGroupResponse, UpdatePlaygroundScriptRequest, UpdatePlaygroundScriptResponse, UpdateProposalRequest, UpdateProposalResponse, UpdateSubgraphRequest, UpdateSubgraphResponse, UpgradePlanRequest, UpgradePlanResponse, ValidateAndFetchPluginDataRequest, ValidateAndFetchPluginDataResponse, VerifyAPIKeyGraphAccessRequest, VerifyAPIKeyGraphAccessResponse, WhoAmIRequest, WhoAmIResponse } from "./platform_pb.js"; import { MethodIdempotency, MethodKind } from "@bufbuild/protobuf"; /** @@ -1859,6 +1859,34 @@ export const PlatformService = { O: GetProposalChecksResponse, kind: MethodKind.Unary, }, + /** + * BulkUpdateProposalRolloutPercentages atomically creates or updates rollout + * percentages across one or more proposals on the same federated graph. For + * proposals without an existing rollout, the handler creates feature subgraphs + * and a feature flag linked to the proposal (deploy semantics). For proposals + * already rolled out, only the percentage is updated. Single transaction + + * single composeAndDeployGraphs; sibling rollouts not in the batch keep their + * stored percentages. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.BulkUpdateProposalRolloutPercentages + */ + bulkUpdateProposalRolloutPercentages: { + name: "BulkUpdateProposalRolloutPercentages", + I: BulkUpdateProposalRolloutPercentagesRequest, + O: BulkUpdateProposalRolloutPercentagesResponse, + kind: MethodKind.Unary, + }, + /** + * TeardownProposalRollout deletes the linked feature flag and feature subgraphs. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.TeardownProposalRollout + */ + teardownProposalRollout: { + name: "TeardownProposalRollout", + I: TeardownProposalRolloutRequest, + O: TeardownProposalRolloutResponse, + kind: MethodKind.Unary, + }, /** * GetOperations returns the operations of a federated graph. * diff --git a/connect/src/wg/cosmo/platform/v1/platform_pb.ts b/connect/src/wg/cosmo/platform/v1/platform_pb.ts index da612f2057..b585fe7734 100644 --- a/connect/src/wg/cosmo/platform/v1/platform_pb.ts +++ b/connect/src/wg/cosmo/platform/v1/platform_pb.ts @@ -22539,6 +22539,21 @@ export class Proposal extends Message { */ origin = ProposalOrigin.INTERNAL; + /** + * Set when a proposal has been deployed as a rollout. Points back to the + * feature flag created by BulkUpdateProposalRolloutPercentages. + * + * @generated from field: optional string rolloutFeatureFlagId = 13; + */ + rolloutFeatureFlagId?: string; + + /** + * Current traffic % of the linked rollout (mirrors feature_flags.traffic_percentage). + * + * @generated from field: optional uint32 rolloutPercentage = 14; + */ + rolloutPercentage?: number; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -22558,6 +22573,8 @@ export class Proposal extends Message { { no: 9, name: "latestCheckSuccess", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 10, name: "latestCheckId", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 11, name: "origin", kind: "enum", T: proto3.getEnumType(ProposalOrigin) }, + { no: 13, name: "rolloutFeatureFlagId", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 14, name: "rolloutPercentage", kind: "scalar", T: 13 /* ScalarType.UINT32 */, opt: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): Proposal { @@ -22638,6 +22655,259 @@ export class ProposalSubgraph extends Message { } } +/** + * Atomic create-or-update of rollout percentages across one or more proposals + * on the same federated graph. For proposals without a linked rollout flag, + * the handler creates feature subgraphs + a feature flag and links them + * (deploy semantics). For proposals already rolled out, only the percentage + * is updated. + * + * Why bulk: the router falls all unpinned traffic back to base when cumulative + * traffic_percentage > 100 (router/core/feature_flag_rollout.go), so adjusting + * one branch in isolation can silently break sibling rollouts. Doing all + * changes in one call gives atomic budget enforcement and collapses N + * composeAndDeployGraphs invocations into a single composition + CDN push + * (one router config reload, not N). + * + * @generated from message wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest + */ +export class BulkUpdateProposalRolloutPercentagesRequest extends Message { + /** + * @generated from field: repeated wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.Item items = 1; + */ + items: BulkUpdateProposalRolloutPercentagesRequest_Item[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "items", kind: "message", T: BulkUpdateProposalRolloutPercentagesRequest_Item, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): BulkUpdateProposalRolloutPercentagesRequest { + return new BulkUpdateProposalRolloutPercentagesRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): BulkUpdateProposalRolloutPercentagesRequest { + return new BulkUpdateProposalRolloutPercentagesRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): BulkUpdateProposalRolloutPercentagesRequest { + return new BulkUpdateProposalRolloutPercentagesRequest().fromJsonString(jsonString, options); + } + + static equals(a: BulkUpdateProposalRolloutPercentagesRequest | PlainMessage | undefined, b: BulkUpdateProposalRolloutPercentagesRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(BulkUpdateProposalRolloutPercentagesRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.Item + */ +export class BulkUpdateProposalRolloutPercentagesRequest_Item extends Message { + /** + * @generated from field: string proposalId = 1; + */ + proposalId = ""; + + /** + * @generated from field: uint32 percentage = 2; + */ + percentage = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.Item"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "proposalId", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "percentage", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): BulkUpdateProposalRolloutPercentagesRequest_Item { + return new BulkUpdateProposalRolloutPercentagesRequest_Item().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): BulkUpdateProposalRolloutPercentagesRequest_Item { + return new BulkUpdateProposalRolloutPercentagesRequest_Item().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): BulkUpdateProposalRolloutPercentagesRequest_Item { + return new BulkUpdateProposalRolloutPercentagesRequest_Item().fromJsonString(jsonString, options); + } + + static equals(a: BulkUpdateProposalRolloutPercentagesRequest_Item | PlainMessage | undefined, b: BulkUpdateProposalRolloutPercentagesRequest_Item | PlainMessage | undefined): boolean { + return proto3.util.equals(BulkUpdateProposalRolloutPercentagesRequest_Item, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesItemResult + */ +export class BulkUpdateProposalRolloutPercentagesItemResult extends Message { + /** + * @generated from field: string proposalId = 1; + */ + proposalId = ""; + + /** + * @generated from field: uint32 percentage = 2; + */ + percentage = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesItemResult"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "proposalId", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "percentage", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): BulkUpdateProposalRolloutPercentagesItemResult { + return new BulkUpdateProposalRolloutPercentagesItemResult().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): BulkUpdateProposalRolloutPercentagesItemResult { + return new BulkUpdateProposalRolloutPercentagesItemResult().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): BulkUpdateProposalRolloutPercentagesItemResult { + return new BulkUpdateProposalRolloutPercentagesItemResult().fromJsonString(jsonString, options); + } + + static equals(a: BulkUpdateProposalRolloutPercentagesItemResult | PlainMessage | undefined, b: BulkUpdateProposalRolloutPercentagesItemResult | PlainMessage | undefined): boolean { + return proto3.util.equals(BulkUpdateProposalRolloutPercentagesItemResult, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesResponse + */ +export class BulkUpdateProposalRolloutPercentagesResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * @generated from field: repeated wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesItemResult items = 2; + */ + items: BulkUpdateProposalRolloutPercentagesItemResult[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "items", kind: "message", T: BulkUpdateProposalRolloutPercentagesItemResult, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): BulkUpdateProposalRolloutPercentagesResponse { + return new BulkUpdateProposalRolloutPercentagesResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): BulkUpdateProposalRolloutPercentagesResponse { + return new BulkUpdateProposalRolloutPercentagesResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): BulkUpdateProposalRolloutPercentagesResponse { + return new BulkUpdateProposalRolloutPercentagesResponse().fromJsonString(jsonString, options); + } + + static equals(a: BulkUpdateProposalRolloutPercentagesResponse | PlainMessage | undefined, b: BulkUpdateProposalRolloutPercentagesResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(BulkUpdateProposalRolloutPercentagesResponse, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.TeardownProposalRolloutRequest + */ +export class TeardownProposalRolloutRequest extends Message { + /** + * @generated from field: string proposalId = 1; + */ + proposalId = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.TeardownProposalRolloutRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "proposalId", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): TeardownProposalRolloutRequest { + return new TeardownProposalRolloutRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): TeardownProposalRolloutRequest { + return new TeardownProposalRolloutRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): TeardownProposalRolloutRequest { + return new TeardownProposalRolloutRequest().fromJsonString(jsonString, options); + } + + static equals(a: TeardownProposalRolloutRequest | PlainMessage | undefined, b: TeardownProposalRolloutRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(TeardownProposalRolloutRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.TeardownProposalRolloutResponse + */ +export class TeardownProposalRolloutResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.TeardownProposalRolloutResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): TeardownProposalRolloutResponse { + return new TeardownProposalRolloutResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): TeardownProposalRolloutResponse { + return new TeardownProposalRolloutResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): TeardownProposalRolloutResponse { + return new TeardownProposalRolloutResponse().fromJsonString(jsonString, options); + } + + static equals(a: TeardownProposalRolloutResponse | PlainMessage | undefined, b: TeardownProposalRolloutResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(TeardownProposalRolloutResponse, a, b); + } +} + /** * @generated from message wg.cosmo.platform.v1.CreateProposalRequest */ diff --git a/controlplane/migrations/0137_rollout_feature_flags.sql b/controlplane/migrations/0137_rollout_feature_flags.sql new file mode 100644 index 0000000000..87af264c1d --- /dev/null +++ b/controlplane/migrations/0137_rollout_feature_flags.sql @@ -0,0 +1,11 @@ +ALTER TABLE "feature_flags" ADD COLUMN "traffic_percentage" integer;--> statement-breakpoint +ALTER TABLE "feature_flags" ADD COLUMN "proposal_id" uuid;--> statement-breakpoint +ALTER TABLE "feature_flags" ADD CONSTRAINT "feature_flags_traffic_percentage_range_chk" CHECK ("traffic_percentage" IS NULL OR ("traffic_percentage" BETWEEN 0 AND 100));--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "feature_flags" ADD CONSTRAINT "feature_flags_proposal_id_proposals_id_fk" FOREIGN KEY ("proposal_id") REFERENCES "public"."proposals"("id") ON DELETE cascade ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "ff_proposal_id_idx" ON "feature_flags" USING btree ("proposal_id");--> statement-breakpoint +CREATE UNIQUE INDEX IF NOT EXISTS "ff_proposal_id_uniq_idx" ON "feature_flags" ("proposal_id") WHERE "proposal_id" IS NOT NULL; diff --git a/controlplane/migrations/meta/0137_snapshot.json b/controlplane/migrations/meta/0137_snapshot.json new file mode 100644 index 0000000000..063ba6d659 --- /dev/null +++ b/controlplane/migrations/meta/0137_snapshot.json @@ -0,0 +1,8958 @@ +{ + "id": "663e1c6b-bcf1-4f61-83fa-a002779d4291", + "prevId": "d474eefb-2a0d-4a07-8887-3260aee174d4", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.api_key_permissions": { + "name": "api_key_permissions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "api_key_id": { + "name": "api_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "akp_api_key_id_idx": { + "name": "akp_api_key_id_idx", + "columns": [ + { + "expression": "api_key_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_permissions_api_key_id_api_keys_id_fk": { + "name": "api_key_permissions_api_key_id_api_keys_id_fk", + "tableFrom": "api_key_permissions", + "tableTo": "api_keys", + "columnsFrom": [ + "api_key_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.api_key_resources": { + "name": "api_key_resources", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "api_key_id": { + "name": "api_key_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "akr_api_key_id_idx": { + "name": "akr_api_key_id_idx", + "columns": [ + { + "expression": "api_key_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "akr_target_id_idx": { + "name": "akr_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_key_resources_api_key_id_api_keys_id_fk": { + "name": "api_key_resources_api_key_id_api_keys_id_fk", + "tableFrom": "api_key_resources", + "tableTo": "api_keys", + "columnsFrom": [ + "api_key_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_key_resources_target_id_targets_id_fk": { + "name": "api_key_resources_target_id_targets_id_fk", + "tableFrom": "api_key_resources", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.api_keys": { + "name": "api_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "external": { + "name": "external", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "apikey_name_idx": { + "name": "apikey_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ak_user_id_idx": { + "name": "ak_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ak_organization_id_idx": { + "name": "ak_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "api_keys_user_id_users_id_fk": { + "name": "api_keys_user_id_users_id_fk", + "tableFrom": "api_keys", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_keys_organization_id_organizations_id_fk": { + "name": "api_keys_organization_id_organizations_id_fk", + "tableFrom": "api_keys", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "api_keys_group_id_organization_groups_id_fk": { + "name": "api_keys_group_id_organization_groups_id_fk", + "tableFrom": "api_keys", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "api_keys_key_unique": { + "name": "api_keys_key_unique", + "nullsNotDistinct": false, + "columns": [ + "key" + ] + } + }, + "checkConstraints": {} + }, + "public.audit_logs": { + "name": "audit_logs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_slug": { + "name": "organization_slug", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "action": { + "name": "action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "audit_action": { + "name": "audit_action", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "auditable_type": { + "name": "auditable_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "auditable_display_name": { + "name": "auditable_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_type": { + "name": "target_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_display_name": { + "name": "target_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_namespace_id": { + "name": "target_namespace_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "target_namespace": { + "name": "target_namespace", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_id": { + "name": "actor_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "actor_display_name": { + "name": "actor_display_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "actor_type": { + "name": "actor_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "api_key_name": { + "name": "api_key_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "auditlogs_organization_idx": { + "name": "auditlogs_organization_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "auditlogs_created_at_idx": { + "name": "auditlogs_created_at_idx", + "columns": [ + { + "expression": "created_at", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.billing_plans": { + "name": "billing_plans", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "price": { + "name": "price", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "features": { + "name": "features", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "stripe_price_id": { + "name": "stripe_price_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "weight": { + "name": "weight", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.billing_subscriptions": { + "name": "billing_subscriptions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "metadata": { + "name": "metadata", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "status": { + "name": "status", + "type": "status", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "price_id": { + "name": "price_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "quantity": { + "name": "quantity", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "cancel_at_period_end": { + "name": "cancel_at_period_end", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "cancel_at": { + "name": "cancel_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "canceled_at": { + "name": "canceled_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "current_period_start": { + "name": "current_period_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "current_period_end": { + "name": "current_period_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_start": { + "name": "trial_start", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "trial_end": { + "name": "trial_end", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "billsubs_organization_id_idx": { + "name": "billsubs_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "billing_subscriptions_organization_id_organizations_id_fk": { + "name": "billing_subscriptions_organization_id_organizations_id_fk", + "tableFrom": "billing_subscriptions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.cache_warmer_operations": { + "name": "cache_warmer_operations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "operation_content": { + "name": "operation_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_hash": { + "name": "operation_hash", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_persisted_id": { + "name": "operation_persisted_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "operation_name": { + "name": "operation_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_name": { + "name": "client_name", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_version": { + "name": "client_version", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "planning_time": { + "name": "planning_time", + "type": "real", + "primaryKey": false, + "notNull": false + }, + "is_manually_added": { + "name": "is_manually_added", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "cwo_organization_id_idx": { + "name": "cwo_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cwo_federated_graph_id_idx": { + "name": "cwo_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "cwo_created_by_id_idx": { + "name": "cwo_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "cache_warmer_operations_organization_id_organizations_id_fk": { + "name": "cache_warmer_operations_organization_id_organizations_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cache_warmer_operations_federated_graph_id_federated_graphs_id_fk": { + "name": "cache_warmer_operations_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "cache_warmer_operations_created_by_id_users_id_fk": { + "name": "cache_warmer_operations_created_by_id_users_id_fk", + "tableFrom": "cache_warmer_operations", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.contracts": { + "name": "contracts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "source_federated_graph_id": { + "name": "source_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "downstream_federated_graph_id": { + "name": "downstream_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "exclude_tags": { + "name": "exclude_tags", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "include_tags": { + "name": "include_tags", + "type": "text[]", + "primaryKey": false, + "notNull": true, + "default": "'{}'::text[]" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "contracts_created_by_id_idx": { + "name": "contracts_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "contracts_updated_by_id_idx": { + "name": "contracts_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "contracts_downstream_federated_graph_id_idx": { + "name": "contracts_downstream_federated_graph_id_idx", + "columns": [ + { + "expression": "downstream_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "contracts_source_federated_graph_id_federated_graphs_id_fk": { + "name": "contracts_source_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "contracts", + "tableTo": "federated_graphs", + "columnsFrom": [ + "source_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_downstream_federated_graph_id_federated_graphs_id_fk": { + "name": "contracts_downstream_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "contracts", + "tableTo": "federated_graphs", + "columnsFrom": [ + "downstream_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "contracts_created_by_id_users_id_fk": { + "name": "contracts_created_by_id_users_id_fk", + "tableFrom": "contracts", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "contracts_updated_by_id_users_id_fk": { + "name": "contracts_updated_by_id_users_id_fk", + "tableFrom": "contracts", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_source_downstream_id": { + "name": "federated_graph_source_downstream_id", + "nullsNotDistinct": false, + "columns": [ + "source_federated_graph_id", + "downstream_federated_graph_id" + ] + } + }, + "checkConstraints": {} + }, + "public.feature_flags_to_feature_subgraphs": { + "name": "feature_flags_to_feature_subgraphs", + "schema": "", + "columns": { + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_subgraph_id": { + "name": "feature_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fffs_feature_flag_id_idx": { + "name": "fffs_feature_flag_id_idx", + "columns": [ + { + "expression": "feature_flag_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fffs_feature_subgraph_id_idx": { + "name": "fffs_feature_subgraph_id_idx", + "columns": [ + { + "expression": "feature_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_flags_to_feature_subgraphs_feature_flag_id_feature_flags_id_fk": { + "name": "feature_flags_to_feature_subgraphs_feature_flag_id_feature_flags_id_fk", + "tableFrom": "feature_flags_to_feature_subgraphs", + "tableTo": "feature_flags", + "columnsFrom": [ + "feature_flag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_to_feature_subgraphs_feature_subgraph_id_subgraphs_id_fk": { + "name": "feature_flags_to_feature_subgraphs_feature_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_flags_to_feature_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "feature_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feature_flags_to_feature_subgraphs_feature_flag_id_feature_subgraph_id_pk": { + "name": "feature_flags_to_feature_subgraphs_feature_flag_id_feature_subgraph_id_pk", + "columns": [ + "feature_flag_id", + "feature_subgraph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.feature_flags": { + "name": "feature_flags", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "is_enabled": { + "name": "is_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "traffic_percentage": { + "name": "traffic_percentage", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ff_organization_id_idx": { + "name": "ff_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_namespace_id_idx": { + "name": "ff_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_created_by_idx": { + "name": "ff_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_proposal_id_idx": { + "name": "ff_proposal_id_idx", + "columns": [ + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ff_proposal_id_uniq_idx": { + "name": "ff_proposal_id_uniq_idx", + "columns": [ + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "where": "\"proposal_id\" IS NOT NULL", + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_flags_organization_id_organizations_id_fk": { + "name": "feature_flags_organization_id_organizations_id_fk", + "tableFrom": "feature_flags", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_namespace_id_namespaces_id_fk": { + "name": "feature_flags_namespace_id_namespaces_id_fk", + "tableFrom": "feature_flags", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_proposal_id_proposals_id_fk": { + "name": "feature_flags_proposal_id_proposals_id_fk", + "tableFrom": "feature_flags", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_flags_created_by_users_id_fk": { + "name": "feature_flags_created_by_users_id_fk", + "tableFrom": "feature_flags", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": { + "feature_flags_traffic_percentage_range_chk": { + "name": "feature_flags_traffic_percentage_range_chk", + "value": "\"traffic_percentage\" IS NULL OR (\"traffic_percentage\" BETWEEN 0 AND 100)" + } + } + }, + "public.feature_subgraphs_to_base_subgraphs": { + "name": "feature_subgraphs_to_base_subgraphs", + "schema": "", + "columns": { + "feature_subgraph_id": { + "name": "feature_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "base_subgraph_id": { + "name": "base_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fsbs_feature_subgraph_id_idx": { + "name": "fsbs_feature_subgraph_id_idx", + "columns": [ + { + "expression": "feature_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fsbs_base_subgraph_id_idx": { + "name": "fsbs_base_subgraph_id_idx", + "columns": [ + { + "expression": "base_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_subgraphs_id_fk": { + "name": "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_subgraphs_to_base_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "feature_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "feature_subgraphs_to_base_subgraphs_base_subgraph_id_subgraphs_id_fk": { + "name": "feature_subgraphs_to_base_subgraphs_base_subgraph_id_subgraphs_id_fk", + "tableFrom": "feature_subgraphs_to_base_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "base_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_base_subgraph_id_pk": { + "name": "feature_subgraphs_to_base_subgraphs_feature_subgraph_id_base_subgraph_id_pk", + "columns": [ + "feature_subgraph_id", + "base_subgraph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_graph_clients": { + "name": "federated_graph_clients", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgc_created_by_id_idx": { + "name": "fgc_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgc_updated_by_id_idx": { + "name": "fgc_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graph_clients_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graph_clients_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_clients_created_by_id_users_id_fk": { + "name": "federated_graph_clients_created_by_id_users_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "federated_graph_clients_updated_by_id_users_id_fk": { + "name": "federated_graph_clients_updated_by_id_users_id_fk", + "tableFrom": "federated_graph_clients", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_client_name": { + "name": "federated_graph_client_name", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id", + "name" + ] + } + }, + "checkConstraints": {} + }, + "public.federated_graph_persisted_operations": { + "name": "federated_graph_persisted_operations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "client_id": { + "name": "client_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "operation_id": { + "name": "operation_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "file_path": { + "name": "file_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "operation_names": { + "name": "operation_names", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "operation_content": { + "name": "operation_content", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "updated_by_id": { + "name": "updated_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgpo_created_by_id_idx": { + "name": "fgpo_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgpo_updated_by_id_idx": { + "name": "fgpo_updated_by_id_idx", + "columns": [ + { + "expression": "updated_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgpo_client_id_idx": { + "name": "fgpo_client_id_idx", + "columns": [ + { + "expression": "client_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graph_persisted_operations_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graph_persisted_operations_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_client_id_federated_graph_clients_id_fk": { + "name": "federated_graph_persisted_operations_client_id_federated_graph_clients_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "federated_graph_clients", + "columnsFrom": [ + "client_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_created_by_id_users_id_fk": { + "name": "federated_graph_persisted_operations_created_by_id_users_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "federated_graph_persisted_operations_updated_by_id_users_id_fk": { + "name": "federated_graph_persisted_operations_updated_by_id_users_id_fk", + "tableFrom": "federated_graph_persisted_operations", + "tableTo": "users", + "columnsFrom": [ + "updated_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_persisted_operations_file_path_unique": { + "name": "federated_graph_persisted_operations_file_path_unique", + "nullsNotDistinct": false, + "columns": [ + "file_path" + ] + }, + "federated_graph_operation_id": { + "name": "federated_graph_operation_id", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id", + "client_id", + "operation_id" + ] + } + }, + "checkConstraints": {} + }, + "public.federated_graphs": { + "name": "federated_graphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "routing_url": { + "name": "routing_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composed_schema_version_id": { + "name": "composed_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "admission_webhook_url": { + "name": "admission_webhook_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admission_webhook_secret": { + "name": "admission_webhook_secret", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "supports_federation": { + "name": "supports_federation", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "router_compatibility_version": { + "name": "router_compatibility_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1'" + } + }, + "indexes": { + "fgs_target_id_idx": { + "name": "fgs_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgs_composed_schema_version_id_idx": { + "name": "fgs_composed_schema_version_id_idx", + "columns": [ + { + "expression": "composed_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graphs_target_id_targets_id_fk": { + "name": "federated_graphs_target_id_targets_id_fk", + "tableFrom": "federated_graphs", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_composed_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_composed_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "composed_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_graphs_to_feature_flag_schema_versions": { + "name": "federated_graphs_to_feature_flag_schema_versions", + "schema": "", + "columns": { + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "base_composition_schema_version_id": { + "name": "base_composition_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composed_schema_version_id": { + "name": "composed_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature_flag_id": { + "name": "feature_flag_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "fgffsv_federated_graph_id_idx": { + "name": "fgffsv_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_base_composition_schema_version_id_idx": { + "name": "fgffsv_base_composition_schema_version_id_idx", + "columns": [ + { + "expression": "base_composition_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_composed_schema_version_id_idx": { + "name": "fgffsv_composed_schema_version_id_idx", + "columns": [ + { + "expression": "composed_schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgffsv_feature_flag_id_idx": { + "name": "fgffsv_feature_flag_id_idx", + "columns": [ + { + "expression": "feature_flag_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_base_composition_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_base_composition_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "base_composition_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_composed_schema_version_id_schema_versions_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_composed_schema_version_id_schema_versions_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "composed_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_graphs_to_feature_flag_schema_versions_feature_flag_id_feature_flags_id_fk": { + "name": "federated_graphs_to_feature_flag_schema_versions_feature_flag_id_feature_flags_id_fk", + "tableFrom": "federated_graphs_to_feature_flag_schema_versions", + "tableTo": "feature_flags", + "columnsFrom": [ + "feature_flag_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_base_composition_schema_version_id_composed_schema_version_id_pk": { + "name": "federated_graphs_to_feature_flag_schema_versions_federated_graph_id_base_composition_schema_version_id_composed_schema_version_id_pk", + "columns": [ + "federated_graph_id", + "base_composition_schema_version_id", + "composed_schema_version_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.field_grace_period": { + "name": "field_grace_period", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "is_deprecated": { + "name": "is_deprecated", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "unique_field_grace_period_idx": { + "name": "unique_field_grace_period_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "is_deprecated", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_subgraph_id_idx": { + "name": "fgp_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_organization_id_idx": { + "name": "fgp_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fgp_namespace_id_idx": { + "name": "fgp_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "field_grace_period_subgraph_id_subgraphs_id_fk": { + "name": "field_grace_period_subgraph_id_subgraphs_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "field_grace_period_organization_id_organizations_id_fk": { + "name": "field_grace_period_organization_id_organizations_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "field_grace_period_namespace_id_namespaces_id_fk": { + "name": "field_grace_period_namespace_id_namespaces_id_fk", + "tableFrom": "field_grace_period", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.git_installations": { + "name": "git_installations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "git_installation_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "provider_installation_id": { + "name": "provider_installation_id", + "type": "bigint", + "primaryKey": false, + "notNull": true + }, + "provider_name": { + "name": "provider_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "oauth_token": { + "name": "oauth_token", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_api_tokens": { + "name": "graph_api_tokens", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "graphApiToken_name_idx": { + "name": "graphApiToken_name_idx", + "columns": [ + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_organization_id_idx": { + "name": "gat_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_federated_graph_id_idx": { + "name": "gat_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "gat_created_by_idx": { + "name": "gat_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_api_tokens_organization_id_organizations_id_fk": { + "name": "graph_api_tokens_organization_id_organizations_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_api_tokens_federated_graph_id_federated_graphs_id_fk": { + "name": "graph_api_tokens_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_api_tokens_created_by_users_id_fk": { + "name": "graph_api_tokens_created_by_users_id_fk", + "tableFrom": "graph_api_tokens", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "graph_api_tokens_token_unique": { + "name": "graph_api_tokens_token_unique", + "nullsNotDistinct": false, + "columns": [ + "token" + ] + } + }, + "checkConstraints": {} + }, + "public.graph_composition_subgraphs": { + "name": "graph_composition_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "graph_composition_id": { + "name": "graph_composition_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_target_id": { + "name": "subgraph_target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "graph_composition_subgraph_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'unchanged'" + }, + "is_feature_subgraph": { + "name": "is_feature_subgraph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "graphcompsub_graph_composition_id_idx": { + "name": "graphcompsub_graph_composition_id_idx", + "columns": [ + { + "expression": "graph_composition_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "graphcompsub_schema_version_id_idx": { + "name": "graphcompsub_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_composition_subgraphs_graph_composition_id_graph_compositions_id_fk": { + "name": "graph_composition_subgraphs_graph_composition_id_graph_compositions_id_fk", + "tableFrom": "graph_composition_subgraphs", + "tableTo": "graph_compositions", + "columnsFrom": [ + "graph_composition_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_composition_subgraphs_schema_version_id_schema_versions_id_fk": { + "name": "graph_composition_subgraphs_schema_version_id_schema_versions_id_fk", + "tableFrom": "graph_composition_subgraphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_compositions": { + "name": "graph_compositions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "is_composable": { + "name": "is_composable", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "composition_errors": { + "name": "composition_errors", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composition_warnings": { + "name": "composition_warnings", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "router_config_signature": { + "name": "router_config_signature", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deployment_error": { + "name": "deployment_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "admission_error": { + "name": "admission_error", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_by_email": { + "name": "created_by_email", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_feature_flag_composition": { + "name": "is_feature_flag_composition", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "router_compatibility_version": { + "name": "router_compatibility_version", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "'1'" + } + }, + "indexes": { + "graphcomp_schema_version_id_idx": { + "name": "graphcomp_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "graphcomp_created_by_id_idx": { + "name": "graphcomp_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_compositions_schema_version_id_schema_versions_id_fk": { + "name": "graph_compositions_schema_version_id_schema_versions_id_fk", + "tableFrom": "graph_compositions", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_compositions_created_by_id_users_id_fk": { + "name": "graph_compositions_created_by_id_users_id_fk", + "tableFrom": "graph_compositions", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.graph_request_keys": { + "name": "graph_request_keys", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "privateKey": { + "name": "privateKey", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "publicKey": { + "name": "publicKey", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "grk_organization_id_idx": { + "name": "grk_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "grk_federated_graph_id_idx": { + "name": "grk_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "graph_request_keys_organization_id_organizations_id_fk": { + "name": "graph_request_keys_organization_id_organizations_id_fk", + "tableFrom": "graph_request_keys", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "graph_request_keys_federated_graph_id_federated_graphs_id_fk": { + "name": "graph_request_keys_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "graph_request_keys", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "graph_request_keys_federated_graph_id_unique": { + "name": "graph_request_keys_federated_graph_id_unique", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id" + ] + }, + "graph_request_keys_privateKey_unique": { + "name": "graph_request_keys_privateKey_unique", + "nullsNotDistinct": false, + "columns": [ + "privateKey" + ] + }, + "graph_request_keys_publicKey_unique": { + "name": "graph_request_keys_publicKey_unique", + "nullsNotDistinct": false, + "columns": [ + "publicKey" + ] + } + }, + "checkConstraints": {} + }, + "public.linked_schema_checks": { + "name": "linked_schema_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "linked_schema_check_id": { + "name": "linked_schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "lsc_schema_check_id_linked_schema_check_id_unique": { + "name": "lsc_schema_check_id_linked_schema_check_id_unique", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "linked_schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "lsc_schema_check_id_idx": { + "name": "lsc_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "lsc_linked_schema_check_id_idx": { + "name": "lsc_linked_schema_check_id_idx", + "columns": [ + { + "expression": "linked_schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "linked_schema_checks_schema_check_id_schema_checks_id_fk": { + "name": "linked_schema_checks_schema_check_id_schema_checks_id_fk", + "tableFrom": "linked_schema_checks", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_schema_checks_linked_schema_check_id_schema_checks_id_fk": { + "name": "linked_schema_checks_linked_schema_check_id_schema_checks_id_fk", + "tableFrom": "linked_schema_checks", + "tableTo": "schema_checks", + "columnsFrom": [ + "linked_schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.linked_subgraphs": { + "name": "linked_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "source_subgraph_id": { + "name": "source_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_subgraph_id": { + "name": "target_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ls_source_subgraph_id_idx": { + "name": "ls_source_subgraph_id_idx", + "columns": [ + { + "expression": "source_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ls_target_subgraph_id_idx": { + "name": "ls_target_subgraph_id_idx", + "columns": [ + { + "expression": "target_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ls_created_by_id_idx": { + "name": "ls_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "linked_subgraphs_source_subgraph_id_subgraphs_id_fk": { + "name": "linked_subgraphs_source_subgraph_id_subgraphs_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "source_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_subgraphs_target_subgraph_id_subgraphs_id_fk": { + "name": "linked_subgraphs_target_subgraph_id_subgraphs_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "target_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "linked_subgraphs_created_by_id_users_id_fk": { + "name": "linked_subgraphs_created_by_id_users_id_fk", + "tableFrom": "linked_subgraphs", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "linked_subgraphs_source_subgraph_id_unique": { + "name": "linked_subgraphs_source_subgraph_id_unique", + "nullsNotDistinct": false, + "columns": [ + "source_subgraph_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_cache_warmer_config": { + "name": "namespace_cache_warmer_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "max_operations_count": { + "name": "max_operations_count", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "nscwc_namespace_id_idx": { + "name": "nscwc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_cache_warmer_config_namespace_id_namespaces_id_fk": { + "name": "namespace_cache_warmer_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_cache_warmer_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "namespace_cache_warmer_config_namespace_id_unique": { + "name": "namespace_cache_warmer_config_namespace_id_unique", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_config": { + "name": "namespace_config", + "schema": "", + "columns": { + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "enable_linting": { + "name": "enable_linting", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_graph_pruning": { + "name": "enable_graph_pruning", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_cache_warming": { + "name": "enable_cache_warming", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "checks_timeframe_in_days": { + "name": "checks_timeframe_in_days", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "enable_proposals": { + "name": "enable_proposals", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "enable_subgraph_check_extensions": { + "name": "enable_subgraph_check_extensions", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "namespace_config_namespace_id_namespaces_id_fk": { + "name": "namespace_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_namespace": { + "name": "unique_namespace", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_graph_pruning_check_config": { + "name": "namespace_graph_pruning_check_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "graph_pruning_rule": { + "name": "graph_pruning_rule", + "type": "graph_pruning_rules", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "severity_level": { + "name": "severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "grace_period": { + "name": "grace_period", + "type": "integer", + "primaryKey": false, + "notNull": true + }, + "scheme_usage_check_period": { + "name": "scheme_usage_check_period", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nsgpcc_namespace_id_idx": { + "name": "nsgpcc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_graph_pruning_check_config_namespace_id_namespaces_id_fk": { + "name": "namespace_graph_pruning_check_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_graph_pruning_check_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.namespace_lint_check_config": { + "name": "namespace_lint_check_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "lint_rule": { + "name": "lint_rule", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "severity_level": { + "name": "severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "nslcc_namespace_id_idx": { + "name": "nslcc_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_lint_check_config_namespace_id_namespaces_id_fk": { + "name": "namespace_lint_check_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_lint_check_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.namespace_proposal_config": { + "name": "namespace_proposal_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "check_severity_level": { + "name": "check_severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "publish_severity_level": { + "name": "publish_severity_level", + "type": "lint_severity", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "namespace_proposal_config_namespace_id_namespaces_id_fk": { + "name": "namespace_proposal_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_proposal_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "npc_namespace_id_idx": { + "name": "npc_namespace_id_idx", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespace_subgraph_check_extensions_config": { + "name": "namespace_subgraph_check_extensions_config", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "secret_key": { + "name": "secret_key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "include_composed_sdl": { + "name": "include_composed_sdl", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_linting_issues": { + "name": "include_linting_issues", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_pruning_issues": { + "name": "include_pruning_issues", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_schema_changes": { + "name": "include_schema_changes", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "include_affected_operations": { + "name": "include_affected_operations", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + } + }, + "indexes": { + "nsce_namespace_id_idx": { + "name": "nsce_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespace_subgraph_check_extensions_config_namespace_id_namespaces_id_fk": { + "name": "namespace_subgraph_check_extensions_config_namespace_id_namespaces_id_fk", + "tableFrom": "namespace_subgraph_check_extensions_config", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "namespace_subgraph_check_extensions_config_namespace_id_unique": { + "name": "namespace_subgraph_check_extensions_config_namespace_id_unique", + "nullsNotDistinct": false, + "columns": [ + "namespace_id" + ] + } + }, + "checkConstraints": {} + }, + "public.namespaces": { + "name": "namespaces", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "ns_organization_id_idx": { + "name": "ns_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ns_created_by_idx": { + "name": "ns_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "namespaces_organization_id_organizations_id_fk": { + "name": "namespaces_organization_id_organizations_id_fk", + "tableFrom": "namespaces", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "namespaces_created_by_users_id_fk": { + "name": "namespaces_created_by_users_id_fk", + "tableFrom": "namespaces", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_name": { + "name": "unique_name", + "nullsNotDistinct": false, + "columns": [ + "name", + "organization_id" + ] + } + }, + "checkConstraints": {} + }, + "public.oidc_providers": { + "name": "oidc_providers", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "alias": { + "name": "alias", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "oidcp_organization_id_idx": { + "name": "oidcp_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "oidc_providers_organization_id_organizations_id_fk": { + "name": "oidc_providers_organization_id_organizations_id_fk", + "tableFrom": "oidc_providers", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "oidc_providers_alias_unique": { + "name": "oidc_providers_alias_unique", + "nullsNotDistinct": false, + "columns": [ + "alias" + ] + } + }, + "checkConstraints": {} + }, + "public.operation_change_overrides": { + "name": "operation_change_overrides", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "hash_change_idx": { + "name": "hash_change_idx", + "columns": [ + { + "expression": "hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "change_type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "path", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "oco_created_by_idx": { + "name": "oco_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "operation_change_overrides_created_by_users_id_fk": { + "name": "operation_change_overrides_created_by_users_id_fk", + "tableFrom": "operation_change_overrides", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.operation_ignore_all_overrides": { + "name": "operation_ignore_all_overrides", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "hash_namespace_ignore_idx": { + "name": "hash_namespace_ignore_idx", + "columns": [ + { + "expression": "hash", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "oiao_created_by_idx": { + "name": "oiao_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "operation_ignore_all_overrides_created_by_users_id_fk": { + "name": "operation_ignore_all_overrides_created_by_users_id_fk", + "tableFrom": "operation_ignore_all_overrides", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_billing": { + "name": "organization_billing", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "plan": { + "name": "plan", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "stripe_customer_id": { + "name": "stripe_customer_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "organization_billing_idx": { + "name": "organization_billing_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "organization_billing_stripe_idx": { + "name": "organization_billing_stripe_idx", + "columns": [ + { + "expression": "stripe_customer_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_billing_organization_id_organizations_id_fk": { + "name": "organization_billing_organization_id_organizations_id_fk", + "tableFrom": "organization_billing", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_features": { + "name": "organization_features", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "feature": { + "name": "feature", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "enabled": { + "name": "enabled", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": true + }, + "limit": { + "name": "limit", + "type": "real", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "organization_feature_idx": { + "name": "organization_feature_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "feature", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgf_organization_id_idx": { + "name": "orgf_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_features_organization_id_organizations_id_fk": { + "name": "organization_features_organization_id_organizations_id_fk", + "tableFrom": "organization_features", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_members": { + "name": "organization_group_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_member_id": { + "name": "organization_member_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_member_group_idx": { + "name": "organization_member_group_idx", + "columns": [ + { + "expression": "organization_member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_group_members_organization_member_id_organization_members_id_fk": { + "name": "organization_group_members_organization_member_id_organization_members_id_fk", + "tableFrom": "organization_group_members", + "tableTo": "organization_members", + "columnsFrom": [ + "organization_member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_members_group_id_organization_groups_id_fk": { + "name": "organization_group_members_group_id_organization_groups_id_fk", + "tableFrom": "organization_group_members", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rule_namespaces": { + "name": "organization_group_rule_namespaces", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "rule_id": { + "name": "rule_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rule_namespaces_rule_id_organization_group_rules_id_fk": { + "name": "organization_group_rule_namespaces_rule_id_organization_group_rules_id_fk", + "tableFrom": "organization_group_rule_namespaces", + "tableTo": "organization_group_rules", + "columnsFrom": [ + "rule_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_rule_namespaces_namespace_id_namespaces_id_fk": { + "name": "organization_group_rule_namespaces_namespace_id_namespaces_id_fk", + "tableFrom": "organization_group_rule_namespaces", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rule_targets": { + "name": "organization_group_rule_targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "rule_id": { + "name": "rule_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rule_targets_rule_id_organization_group_rules_id_fk": { + "name": "organization_group_rule_targets_rule_id_organization_group_rules_id_fk", + "tableFrom": "organization_group_rule_targets", + "tableTo": "organization_group_rules", + "columnsFrom": [ + "rule_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_group_rule_targets_target_id_targets_id_fk": { + "name": "organization_group_rule_targets_target_id_targets_id_fk", + "tableFrom": "organization_group_rule_targets", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_group_rules": { + "name": "organization_group_rules", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "organization_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": {}, + "foreignKeys": { + "organization_group_rules_group_id_organization_groups_id_fk": { + "name": "organization_group_rules_group_id_organization_groups_id_fk", + "tableFrom": "organization_group_rules", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_groups": { + "name": "organization_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "builtin": { + "name": "builtin", + "type": "boolean", + "primaryKey": false, + "notNull": true + }, + "kc_group_id": { + "name": "kc_group_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "organization_groups_organization_id_organizations_id_fk": { + "name": "organization_groups_organization_id_organizations_id_fk", + "tableFrom": "organization_groups", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "organization_groups_kc_group_id_unique": { + "name": "organization_groups_kc_group_id_unique", + "nullsNotDistinct": false, + "columns": [ + "kc_group_id" + ] + } + }, + "checkConstraints": {} + }, + "public.organization_integrations": { + "name": "organization_integrations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "events": { + "name": "events", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "type": { + "name": "type", + "type": "integration_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_integration_idx": { + "name": "organization_integration_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgint_organization_id_idx": { + "name": "orgint_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_integrations_organization_id_organizations_id_fk": { + "name": "organization_integrations_organization_id_organizations_id_fk", + "tableFrom": "organization_integrations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_invitation_groups": { + "name": "organization_invitation_groups", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "invitation_id": { + "name": "invitation_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "group_id": { + "name": "group_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "org_inv_invitation_idx": { + "name": "org_inv_invitation_idx", + "columns": [ + { + "expression": "invitation_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "org_inv_group_id": { + "name": "org_inv_group_id", + "columns": [ + { + "expression": "group_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_invitation_groups_invitation_id_organization_invitations_id_fk": { + "name": "organization_invitation_groups_invitation_id_organization_invitations_id_fk", + "tableFrom": "organization_invitation_groups", + "tableTo": "organization_invitations", + "columnsFrom": [ + "invitation_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitation_groups_group_id_organization_groups_id_fk": { + "name": "organization_invitation_groups_group_id_organization_groups_id_fk", + "tableFrom": "organization_invitation_groups", + "tableTo": "organization_groups", + "columnsFrom": [ + "group_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_invitations": { + "name": "organization_invitations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "invited_by": { + "name": "invited_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "accepted": { + "name": "accepted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "last_sent_at": { + "name": "last_sent_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "orginv_organization_id_idx": { + "name": "orginv_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orginv_user_id_idx": { + "name": "orginv_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orginv_invited_by_idx": { + "name": "orginv_invited_by_idx", + "columns": [ + { + "expression": "invited_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_invitations_organization_id_organizations_id_fk": { + "name": "organization_invitations_organization_id_organizations_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_user_id_users_id_fk": { + "name": "organization_invitations_user_id_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_invitations_invited_by_users_id_fk": { + "name": "organization_invitations_invited_by_users_id_fk", + "tableFrom": "organization_invitations", + "tableTo": "users", + "columnsFrom": [ + "invited_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_member_roles": { + "name": "organization_member_roles", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_member_id": { + "name": "organization_member_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "member_role", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "organization_member_role_idx": { + "name": "organization_member_role_idx", + "columns": [ + { + "expression": "organization_member_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "role", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_member_roles_organization_member_id_organization_members_id_fk": { + "name": "organization_member_roles_organization_member_id_organization_members_id_fk", + "tableFrom": "organization_member_roles", + "tableTo": "organization_members", + "columnsFrom": [ + "organization_member_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organization_webhook_configs": { + "name": "organization_webhook_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "key": { + "name": "key", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "events": { + "name": "events", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "orgwc_organization_id_idx": { + "name": "orgwc_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_webhook_configs_organization_id_organizations_id_fk": { + "name": "organization_webhook_configs_organization_id_organizations_id_fk", + "tableFrom": "organization_webhook_configs", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.organizations": { + "name": "organizations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "invite_code": { + "name": "invite_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "kc_group_id": { + "name": "kc_group_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_deactivated": { + "name": "is_deactivated", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "deactivation_reason": { + "name": "deactivation_reason", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "deactivated_at": { + "name": "deactivated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "queued_for_deletion_at": { + "name": "queued_for_deletion_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "queued_for_deletion_by": { + "name": "queued_for_deletion_by", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "orgs_created_by_idx": { + "name": "orgs_created_by_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organizations_user_id_users_id_fk": { + "name": "organizations_user_id_users_id_fk", + "tableFrom": "organizations", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "organizations_slug_unique": { + "name": "organizations_slug_unique", + "nullsNotDistinct": false, + "columns": [ + "slug" + ] + }, + "organizations_kc_group_id_unique": { + "name": "organizations_kc_group_id_unique", + "nullsNotDistinct": false, + "columns": [ + "kc_group_id" + ] + } + }, + "checkConstraints": {} + }, + "public.organization_members": { + "name": "organization_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_member_idx": { + "name": "organization_member_idx", + "columns": [ + { + "expression": "id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "unique_organization_member_idx": { + "name": "unique_organization_member_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "orgm_organization_id_idx": { + "name": "orgm_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "organization_members_user_id_users_id_fk": { + "name": "organization_members_user_id_users_id_fk", + "tableFrom": "organization_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "organization_members_organization_id_organizations_id_fk": { + "name": "organization_members_organization_id_organizations_id_fk", + "tableFrom": "organization_members", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.playground_scripts": { + "name": "playground_scripts", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "type": { + "name": "type", + "type": "playground_script_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + } + }, + "indexes": { + "ps_organization_id_idx": { + "name": "ps_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "ps_created_by_id_idx": { + "name": "ps_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "playground_scripts_organization_id_organizations_id_fk": { + "name": "playground_scripts_organization_id_organizations_id_fk", + "tableFrom": "playground_scripts", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "playground_scripts_created_by_id_users_id_fk": { + "name": "playground_scripts_created_by_id_users_id_fk", + "tableFrom": "playground_scripts", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.plugin_image_versions": { + "name": "plugin_image_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "version": { + "name": "version", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "platform": { + "name": "platform", + "type": "text[]", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "plugin_image_versions_schema_version_id_schema_versions_id_fk": { + "name": "plugin_image_versions_schema_version_id_schema_versions_id_fk", + "tableFrom": "plugin_image_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.proposal_checks": { + "name": "proposal_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "pc_check_id_proposal_id_idx": { + "name": "pc_check_id_proposal_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "proposal_checks_schema_check_id_schema_checks_id_fk": { + "name": "proposal_checks_schema_check_id_schema_checks_id_fk", + "tableFrom": "proposal_checks", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposal_checks_proposal_id_proposals_id_fk": { + "name": "proposal_checks_proposal_id_proposals_id_fk", + "tableFrom": "proposal_checks", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.proposal_subgraphs": { + "name": "proposal_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "schema_sdl": { + "name": "schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_new": { + "name": "is_new", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "is_published": { + "name": "is_published", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "current_schema_version_id": { + "name": "current_schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": { + "proposal_subgraphs_proposal_id_proposals_id_fk": { + "name": "proposal_subgraphs_proposal_id_proposals_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposal_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "proposal_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "proposal_subgraphs_current_schema_version_id_schema_versions_id_fk": { + "name": "proposal_subgraphs_current_schema_version_id_schema_versions_id_fk", + "tableFrom": "proposal_subgraphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "current_schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "proposal_subgraph": { + "name": "proposal_subgraph", + "nullsNotDistinct": false, + "columns": [ + "proposal_id", + "subgraph_name" + ] + } + }, + "checkConstraints": {} + }, + "public.proposals": { + "name": "proposals", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "state": { + "name": "state", + "type": "proposal_state", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "origin": { + "name": "origin", + "type": "proposal_origin", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'INTERNAL'" + } + }, + "indexes": { + "pr_created_by_id_idx": { + "name": "pr_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "pr_federated_graph_id_idx": { + "name": "pr_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "proposals_federated_graph_id_federated_graphs_id_fk": { + "name": "proposals_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "proposals", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "proposals_created_by_id_users_id_fk": { + "name": "proposals_created_by_id_users_id_fk", + "tableFrom": "proposals", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "federated_graph_proposal_name": { + "name": "federated_graph_proposal_name", + "nullsNotDistinct": false, + "columns": [ + "federated_graph_id", + "name" + ] + } + }, + "checkConstraints": {} + }, + "public.protobuf_schema_versions": { + "name": "protobuf_schema_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proto_schema": { + "name": "proto_schema", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proto_mappings": { + "name": "proto_mappings", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proto_lock": { + "name": "proto_lock", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": {}, + "foreignKeys": { + "protobuf_schema_versions_schema_version_id_schema_versions_id_fk": { + "name": "protobuf_schema_versions_schema_version_id_schema_versions_id_fk", + "tableFrom": "protobuf_schema_versions", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_change_action": { + "name": "schema_check_change_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "change_message": { + "name": "change_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_breaking": { + "name": "is_breaking", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_fed_graph_change": { + "name": "is_fed_graph_change", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "scca_schema_check_id_idx": { + "name": "scca_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_change_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_change_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_change_action", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_change_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_change_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_change_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_change_operation_usage": { + "name": "schema_check_change_operation_usage", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_change_action_id": { + "name": "schema_check_change_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "hash": { + "name": "hash", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "first_seen_at": { + "name": "first_seen_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "last_seen_at": { + "name": "last_seen_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_safe_override": { + "name": "is_safe_override", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + } + }, + "indexes": { + "sccou_schema_check_change_action_id_idx": { + "name": "sccou_schema_check_change_action_id_idx", + "columns": [ + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sccou_federated_graph_id_idx": { + "name": "sccou_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_change_operation_usage_schema_check_change_action_id_schema_check_change_action_id_fk": { + "name": "schema_check_change_operation_usage_schema_check_change_action_id_schema_check_change_action_id_fk", + "tableFrom": "schema_check_change_operation_usage", + "tableTo": "schema_check_change_action", + "columnsFrom": [ + "schema_check_change_action_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_change_operation_usage_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_change_operation_usage_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_change_operation_usage", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_composition": { + "name": "schema_check_composition", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "composition_errors": { + "name": "composition_errors", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composition_warnings": { + "name": "composition_warnings", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "composed_schema_sdl": { + "name": "composed_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_schema": { + "name": "client_schema", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "scc_schema_check_id_idx": { + "name": "scc_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scc_target_id_idx": { + "name": "scc_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_composition_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_composition_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_composition", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_composition_target_id_targets_id_fk": { + "name": "schema_check_composition_target_id_targets_id_fk", + "tableFrom": "schema_check_composition", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_federated_graph_changes": { + "name": "schema_check_federated_graph_changes", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_federated_graph_id": { + "name": "schema_check_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_check_change_action_id": { + "name": "schema_check_change_action_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "scfgsc_schema_check_federated_graph_id_idx": { + "name": "scfgsc_schema_check_federated_graph_id_idx", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfgsc_schema_check_change_action_id_idx": { + "name": "scfgsc_schema_check_change_action_id_idx", + "columns": [ + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfgc_fed_graph_change_action_unique": { + "name": "scfgc_fed_graph_change_action_unique", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "schema_check_change_action_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_federated_graph_changes_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk": { + "name": "schema_check_federated_graph_changes_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk", + "tableFrom": "schema_check_federated_graph_changes", + "tableTo": "schema_check_federated_graphs", + "columnsFrom": [ + "schema_check_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_federated_graph_changes_schema_check_change_action_id_schema_check_change_action_id_fk": { + "name": "schema_check_federated_graph_changes_schema_check_change_action_id_schema_check_change_action_id_fk", + "tableFrom": "schema_check_federated_graph_changes", + "tableTo": "schema_check_change_action", + "columnsFrom": [ + "schema_check_change_action_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_federated_graphs": { + "name": "schema_check_federated_graphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "check_id": { + "name": "check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "traffic_check_days": { + "name": "traffic_check_days", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "scfg_check_id_idx": { + "name": "scfg_check_id_idx", + "columns": [ + { + "expression": "check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scfg_federated_graph_id_idx": { + "name": "scfg_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_federated_graphs_check_id_schema_checks_id_fk": { + "name": "schema_check_federated_graphs_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_federated_graphs", + "tableTo": "schema_checks", + "columnsFrom": [ + "check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_federated_graphs_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_federated_graphs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_federated_graphs", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_graph_pruning_action": { + "name": "schema_check_graph_pruning_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "graph_pruning_rule": { + "name": "graph_pruning_rule", + "type": "graph_pruning_rules", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "field_path": { + "name": "field_path", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_error": { + "name": "is_error", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "location": { + "name": "location", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scgpa_schema_check_id_idx": { + "name": "scgpa_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scgpa_federated_graph_id_idx": { + "name": "scgpa_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_graph_pruning_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_graph_pruning_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_graph_pruning_action_federated_graph_id_federated_graphs_id_fk": { + "name": "schema_check_graph_pruning_action_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_graph_pruning_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_graph_pruning_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_graph_pruning_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_lint_action": { + "name": "schema_check_lint_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "lint_rule_type": { + "name": "lint_rule_type", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_error": { + "name": "is_error", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "location": { + "name": "location", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sclact_schema_check_id_idx": { + "name": "sclact_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_lint_action_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_lint_action_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_lint_action", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_lint_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_lint_action_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_lint_action", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_proposal_match": { + "name": "schema_check_proposal_match", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_id": { + "name": "proposal_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "proposal_match": { + "name": "proposal_match", + "type": "boolean", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "scpm_schema_check_id_idx": { + "name": "scpm_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scpm_proposal_id_idx": { + "name": "scpm_proposal_id_idx", + "columns": [ + { + "expression": "proposal_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_proposal_match_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_proposal_match_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_proposal_match", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_proposal_match_proposal_id_proposals_id_fk": { + "name": "schema_check_proposal_match_proposal_id_proposals_id_fk", + "tableFrom": "schema_check_proposal_match", + "tableTo": "proposals", + "columnsFrom": [ + "proposal_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "unique_schema_check_proposal_match": { + "name": "unique_schema_check_proposal_match", + "nullsNotDistinct": false, + "columns": [ + "schema_check_id", + "proposal_id" + ] + } + }, + "checkConstraints": {} + }, + "public.schema_check_subgraphs": { + "name": "schema_check_subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_check_id": { + "name": "schema_check_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "subgraph_name": { + "name": "subgraph_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "proposed_subgraph_schema_sdl": { + "name": "proposed_subgraph_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_new": { + "name": "is_new", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scs_schema_check_id_idx": { + "name": "scs_schema_check_id_idx", + "columns": [ + { + "expression": "schema_check_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scs_subgraph_id_idx": { + "name": "scs_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_subgraphs_schema_check_id_schema_checks_id_fk": { + "name": "schema_check_subgraphs_schema_check_id_schema_checks_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "schema_checks", + "columnsFrom": [ + "schema_check_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "schema_check_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "schema_check_subgraphs_namespace_id_namespaces_id_fk": { + "name": "schema_check_subgraphs_namespace_id_namespaces_id_fk", + "tableFrom": "schema_check_subgraphs", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_check_subgraphs_federated_graphs": { + "name": "schema_check_subgraphs_federated_graphs", + "schema": "", + "columns": { + "schema_check_federated_graph_id": { + "name": "schema_check_federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "schema_check_subgraph_id": { + "name": "schema_check_subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "scsfg_schema_check_subgraph_id_idx": { + "name": "scsfg_schema_check_subgraph_id_idx", + "columns": [ + { + "expression": "schema_check_subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "scsfg_schema_check_federated_graph_id_idx": { + "name": "scsfg_schema_check_federated_graph_id_idx", + "columns": [ + { + "expression": "schema_check_federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_check_subgraphs_federated_graphs_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk": { + "name": "schema_check_subgraphs_federated_graphs_schema_check_federated_graph_id_schema_check_federated_graphs_id_fk", + "tableFrom": "schema_check_subgraphs_federated_graphs", + "tableTo": "schema_check_federated_graphs", + "columnsFrom": [ + "schema_check_federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_check_subgraphs_federated_graphs_schema_check_subgraph_id_schema_check_subgraphs_id_fk": { + "name": "schema_check_subgraphs_federated_graphs_schema_check_subgraph_id_schema_check_subgraphs_id_fk", + "tableFrom": "schema_check_subgraphs_federated_graphs", + "tableTo": "schema_check_subgraphs", + "columnsFrom": [ + "schema_check_subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_checks": { + "name": "schema_checks", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "is_composable": { + "name": "is_composable", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "is_deleted": { + "name": "is_deleted", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_breaking_changes": { + "name": "has_breaking_changes", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_lint_errors": { + "name": "has_lint_errors", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_graph_pruning_errors": { + "name": "has_graph_pruning_errors", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "has_client_traffic": { + "name": "has_client_traffic", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "proposal_match": { + "name": "proposal_match", + "type": "proposal_match", + "typeSchema": "public", + "primaryKey": false, + "notNull": false + }, + "client_traffic_check_skipped": { + "name": "client_traffic_check_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "lint_skipped": { + "name": "lint_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "graph_pruning_skipped": { + "name": "graph_pruning_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false + }, + "composition_skipped": { + "name": "composition_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "breaking_changes_skipped": { + "name": "breaking_changes_skipped", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "proposed_subgraph_schema_sdl": { + "name": "proposed_subgraph_schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "gh_details": { + "name": "gh_details", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "forced_success": { + "name": "forced_success", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "default": false + }, + "vcs_context": { + "name": "vcs_context", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "check_extension_delivery_id": { + "name": "check_extension_delivery_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "check_extension_error_message": { + "name": "check_extension_error_message", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sc_target_id_idx": { + "name": "sc_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_checks_target_id_targets_id_fk": { + "name": "schema_checks_target_id_targets_id_fk", + "tableFrom": "schema_checks", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "schema_checks_check_extension_delivery_id_webhook_deliveries_id_fk": { + "name": "schema_checks_check_extension_delivery_id_webhook_deliveries_id_fk", + "tableFrom": "schema_checks", + "tableTo": "webhook_deliveries", + "columnsFrom": [ + "check_extension_delivery_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_versions": { + "name": "schema_versions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "schema_sdl": { + "name": "schema_sdl", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "client_schema": { + "name": "client_schema", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "is_v2_graph": { + "name": "is_v2_graph", + "type": "boolean", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sv_organization_id_idx": { + "name": "sv_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sv_target_id_idx": { + "name": "sv_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_versions_organization_id_organizations_id_fk": { + "name": "schema_versions_organization_id_organizations_id_fk", + "tableFrom": "schema_versions", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.schema_version_change_action": { + "name": "schema_version_change_action", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "change_type": { + "name": "change_type", + "type": "schema_change_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "change_message": { + "name": "change_message", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "path": { + "name": "path", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "svca_schema_version_id_idx": { + "name": "svca_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "schema_version_change_action_schema_version_id_schema_versions_id_fk": { + "name": "schema_version_change_action_schema_version_id_schema_versions_id_fk", + "tableFrom": "schema_version_change_action", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.sessions": { + "name": "sessions", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "sessions_user_id_idx": { + "name": "sessions_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "sessions_user_id_users_id_fk": { + "name": "sessions_user_id_users_id_fk", + "tableFrom": "sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "sessions_user_id_unique": { + "name": "sessions_user_id_unique", + "nullsNotDistinct": false, + "columns": [ + "user_id" + ] + } + }, + "checkConstraints": {} + }, + "public.slack_installations": { + "name": "slack_installations", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "slack_organization_id": { + "name": "slack_organization_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_organization_name": { + "name": "slack_organization_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_channel_id": { + "name": "slack_channel_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_channel_name": { + "name": "slack_channel_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slack_user_id": { + "name": "slack_user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "slack_installations_idx": { + "name": "slack_installations_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "slack_organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "slack_channel_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "slackinst_organization_id_idx": { + "name": "slackinst_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_installations_organization_id_organizations_id_fk": { + "name": "slack_installations_organization_id_organizations_id_fk", + "tableFrom": "slack_installations", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.slack_integration_configs": { + "name": "slack_integration_configs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "integration_id": { + "name": "integration_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "slackintconf_integration_id_idx": { + "name": "slackintconf_integration_id_idx", + "columns": [ + { + "expression": "integration_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_integration_configs_integration_id_organization_integrations_id_fk": { + "name": "slack_integration_configs_integration_id_organization_integrations_id_fk", + "tableFrom": "slack_integration_configs", + "tableTo": "organization_integrations", + "columnsFrom": [ + "integration_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.slack_schema_update_event_configs": { + "name": "slack_schema_update_event_configs", + "schema": "", + "columns": { + "slack_integration_config_id": { + "name": "slack_integration_config_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "slacksuec_slack_integration_config_id_idx": { + "name": "slacksuec_slack_integration_config_id_idx", + "columns": [ + { + "expression": "slack_integration_config_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "slacksuec_federated_graph_id_idx": { + "name": "slacksuec_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "slack_schema_update_event_configs_slack_integration_config_id_slack_integration_configs_id_fk": { + "name": "slack_schema_update_event_configs_slack_integration_config_id_slack_integration_configs_id_fk", + "tableFrom": "slack_schema_update_event_configs", + "tableTo": "slack_integration_configs", + "columnsFrom": [ + "slack_integration_config_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "slack_schema_update_event_configs_federated_graph_id_federated_graphs_id_fk": { + "name": "slack_schema_update_event_configs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "slack_schema_update_event_configs", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "slack_schema_update_event_configs_slack_integration_config_id_federated_graph_id_pk": { + "name": "slack_schema_update_event_configs_slack_integration_config_id_federated_graph_id_pk", + "columns": [ + "slack_integration_config_id", + "federated_graph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.subgraph_members": { + "name": "subgraph_members", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "user_id": { + "name": "user_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "unique_subgraph_member_idx": { + "name": "unique_subgraph_member_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sm_user_id_idx": { + "name": "sm_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "sm_subgraph_id_idx": { + "name": "sm_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "subgraph_members_user_id_users_id_fk": { + "name": "subgraph_members_user_id_users_id_fk", + "tableFrom": "subgraph_members", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "subgraph_members_subgraph_id_subgraphs_id_fk": { + "name": "subgraph_members_subgraph_id_subgraphs_id_fk", + "tableFrom": "subgraph_members", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.subgraphs": { + "name": "subgraphs", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "routing_url": { + "name": "routing_url", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "subscription_url": { + "name": "subscription_url", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "subscription_protocol": { + "name": "subscription_protocol", + "type": "subscription_protocol", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'ws'" + }, + "websocket_subprotocol": { + "name": "websocket_subprotocol", + "type": "websocket_subprotocol", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'auto'" + }, + "schema_version_id": { + "name": "schema_version_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "is_feature_subgraph": { + "name": "is_feature_subgraph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "is_event_driven_graph": { + "name": "is_event_driven_graph", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "type": { + "name": "type", + "type": "subgraph_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true, + "default": "'standard'" + } + }, + "indexes": { + "subgraphs_target_id_idx": { + "name": "subgraphs_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "subgraphs_schema_version_id_idx": { + "name": "subgraphs_schema_version_id_idx", + "columns": [ + { + "expression": "schema_version_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "subgraphs_schema_version_id_schema_versions_id_fk": { + "name": "subgraphs_schema_version_id_schema_versions_id_fk", + "tableFrom": "subgraphs", + "tableTo": "schema_versions", + "columnsFrom": [ + "schema_version_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + }, + "subgraphs_target_id_targets_id_fk": { + "name": "subgraphs_target_id_targets_id_fk", + "tableFrom": "subgraphs", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.federated_subgraphs": { + "name": "federated_subgraphs", + "schema": "", + "columns": { + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "subgraph_id": { + "name": "subgraph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "fs_federated_graph_id_idx": { + "name": "fs_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "fs_subgraph_id_idx": { + "name": "fs_subgraph_id_idx", + "columns": [ + { + "expression": "subgraph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "federated_subgraphs_federated_graph_id_federated_graphs_id_fk": { + "name": "federated_subgraphs_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "federated_subgraphs", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "federated_subgraphs_subgraph_id_subgraphs_id_fk": { + "name": "federated_subgraphs_subgraph_id_subgraphs_id_fk", + "tableFrom": "federated_subgraphs", + "tableTo": "subgraphs", + "columnsFrom": [ + "subgraph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "federated_subgraphs_federated_graph_id_subgraph_id_pk": { + "name": "federated_subgraphs_federated_graph_id_subgraph_id_pk", + "columns": [ + "federated_graph_id", + "subgraph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.target_label_matchers": { + "name": "target_label_matchers", + "schema": "", + "columns": { + "target_id": { + "name": "target_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "label_matcher": { + "name": "label_matcher", + "type": "text[]", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "tlm_target_id_idx": { + "name": "tlm_target_id_idx", + "columns": [ + { + "expression": "target_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "target_label_matchers_target_id_targets_id_fk": { + "name": "target_label_matchers_target_id_targets_id_fk", + "tableFrom": "target_label_matchers", + "tableTo": "targets", + "columnsFrom": [ + "target_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.targets": { + "name": "targets", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "target_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "labels": { + "name": "labels", + "type": "text[]", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "created_by": { + "name": "created_by", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "readme": { + "name": "readme", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "namespace_id": { + "name": "namespace_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "organization_name_idx": { + "name": "organization_name_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "type", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "name", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_organization_id_idx": { + "name": "targets_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_created_by_idx": { + "name": "targets_created_by_idx", + "columns": [ + { + "expression": "created_by", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "targets_namespace_id_idx": { + "name": "targets_namespace_id_idx", + "columns": [ + { + "expression": "namespace_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "targets_organization_id_organizations_id_fk": { + "name": "targets_organization_id_organizations_id_fk", + "tableFrom": "targets", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "targets_created_by_users_id_fk": { + "name": "targets_created_by_users_id_fk", + "tableFrom": "targets", + "tableTo": "users", + "columnsFrom": [ + "created_by" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "targets_namespace_id_namespaces_id_fk": { + "name": "targets_namespace_id_namespaces_id_fk", + "tableFrom": "targets", + "tableTo": "namespaces", + "columnsFrom": [ + "namespace_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.users": { + "name": "users", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": true + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "users_email_unique": { + "name": "users_email_unique", + "nullsNotDistinct": false, + "columns": [ + "email" + ] + } + }, + "checkConstraints": {} + }, + "public.webhook_deliveries": { + "name": "webhook_deliveries", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "uuid", + "primaryKey": true, + "notNull": true, + "default": "gen_random_uuid()" + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "created_by_id": { + "name": "created_by_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, + "organization_id": { + "name": "organization_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "type": { + "name": "type", + "type": "webhook_delivery_type", + "typeSchema": "public", + "primaryKey": false, + "notNull": true + }, + "endpoint": { + "name": "endpoint", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "event_name": { + "name": "event_name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "payload": { + "name": "payload", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "request_headers": { + "name": "request_headers", + "type": "json", + "primaryKey": false, + "notNull": true + }, + "response_headers": { + "name": "response_headers", + "type": "json", + "primaryKey": false, + "notNull": false + }, + "response_status_code": { + "name": "response_status_code", + "type": "integer", + "primaryKey": false, + "notNull": false + }, + "response_error_code": { + "name": "response_error_code", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "error_message": { + "name": "error_message", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "response_body": { + "name": "response_body", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "retry_count": { + "name": "retry_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "duration": { + "name": "duration", + "type": "real", + "primaryKey": false, + "notNull": true, + "default": 0 + }, + "original_delivery_id": { + "name": "original_delivery_id", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "webhd_organization_id_idx": { + "name": "webhd_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "webhd_created_by_id_idx": { + "name": "webhd_created_by_id_idx", + "columns": [ + { + "expression": "created_by_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_deliveries_created_by_id_users_id_fk": { + "name": "webhook_deliveries_created_by_id_users_id_fk", + "tableFrom": "webhook_deliveries", + "tableTo": "users", + "columnsFrom": [ + "created_by_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "set null", + "onUpdate": "no action" + }, + "webhook_deliveries_organization_id_organizations_id_fk": { + "name": "webhook_deliveries_organization_id_organizations_id_fk", + "tableFrom": "webhook_deliveries", + "tableTo": "organizations", + "columnsFrom": [ + "organization_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.webhook_graph_schema_update": { + "name": "webhook_graph_schema_update", + "schema": "", + "columns": { + "webhook_id": { + "name": "webhook_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "wgsu_webhook_id_idx": { + "name": "wgsu_webhook_id_idx", + "columns": [ + { + "expression": "webhook_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "wgsu_federated_graph_id_idx": { + "name": "wgsu_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_graph_schema_update_webhook_id_organization_webhook_configs_id_fk": { + "name": "webhook_graph_schema_update_webhook_id_organization_webhook_configs_id_fk", + "tableFrom": "webhook_graph_schema_update", + "tableTo": "organization_webhook_configs", + "columnsFrom": [ + "webhook_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_graph_schema_update_federated_graph_id_federated_graphs_id_fk": { + "name": "webhook_graph_schema_update_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "webhook_graph_schema_update", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "webhook_graph_schema_update_webhook_id_federated_graph_id_pk": { + "name": "webhook_graph_schema_update_webhook_id_federated_graph_id_pk", + "columns": [ + "webhook_id", + "federated_graph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "public.webhook_proposal_state_update": { + "name": "webhook_proposal_state_update", + "schema": "", + "columns": { + "webhook_id": { + "name": "webhook_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + }, + "federated_graph_id": { + "name": "federated_graph_id", + "type": "uuid", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "wpsu_webhook_id_idx": { + "name": "wpsu_webhook_id_idx", + "columns": [ + { + "expression": "webhook_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "wpsu_federated_graph_id_idx": { + "name": "wpsu_federated_graph_id_idx", + "columns": [ + { + "expression": "federated_graph_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "webhook_proposal_state_update_webhook_id_organization_webhook_configs_id_fk": { + "name": "webhook_proposal_state_update_webhook_id_organization_webhook_configs_id_fk", + "tableFrom": "webhook_proposal_state_update", + "tableTo": "organization_webhook_configs", + "columnsFrom": [ + "webhook_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "webhook_proposal_state_update_federated_graph_id_federated_graphs_id_fk": { + "name": "webhook_proposal_state_update_federated_graph_id_federated_graphs_id_fk", + "tableFrom": "webhook_proposal_state_update", + "tableTo": "federated_graphs", + "columnsFrom": [ + "federated_graph_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "webhook_proposal_state_update_webhook_id_federated_graph_id_pk": { + "name": "webhook_proposal_state_update_webhook_id_federated_graph_id_pk", + "columns": [ + "webhook_id", + "federated_graph_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "enums": { + "public.git_installation_type": { + "name": "git_installation_type", + "schema": "public", + "values": [ + "PERSONAL", + "ORGANIZATION" + ] + }, + "public.graph_composition_subgraph_change_type": { + "name": "graph_composition_subgraph_change_type", + "schema": "public", + "values": [ + "added", + "removed", + "updated", + "unchanged" + ] + }, + "public.graph_pruning_rules": { + "name": "graph_pruning_rules", + "schema": "public", + "values": [ + "UNUSED_FIELDS", + "DEPRECATED_FIELDS", + "REQUIRE_DEPRECATION_BEFORE_DELETION" + ] + }, + "public.integration_type": { + "name": "integration_type", + "schema": "public", + "values": [ + "slack" + ] + }, + "public.lint_severity": { + "name": "lint_severity", + "schema": "public", + "values": [ + "warn", + "error" + ] + }, + "public.member_role": { + "name": "member_role", + "schema": "public", + "values": [ + "admin", + "developer", + "viewer" + ] + }, + "public.organization_role": { + "name": "organization_role", + "schema": "public", + "values": [ + "organization-admin", + "organization-developer", + "organization-viewer", + "organization-apikey-manager", + "namespace-admin", + "namespace-viewer", + "graph-admin", + "graph-viewer", + "subgraph-admin", + "subgraph-publisher", + "subgraph-checker", + "subgraph-viewer" + ] + }, + "public.playground_script_type": { + "name": "playground_script_type", + "schema": "public", + "values": [ + "pre-flight", + "pre-operation", + "post-operation" + ] + }, + "public.proposal_match": { + "name": "proposal_match", + "schema": "public", + "values": [ + "success", + "warn", + "error" + ] + }, + "public.proposal_origin": { + "name": "proposal_origin", + "schema": "public", + "values": [ + "INTERNAL", + "EXTERNAL" + ] + }, + "public.proposal_state": { + "name": "proposal_state", + "schema": "public", + "values": [ + "DRAFT", + "APPROVED", + "PUBLISHED", + "CLOSED" + ] + }, + "public.schema_change_type": { + "name": "schema_change_type", + "schema": "public", + "values": [ + "FIELD_ARGUMENT_DESCRIPTION_CHANGED", + "FIELD_ARGUMENT_DEFAULT_CHANGED", + "FIELD_ARGUMENT_TYPE_CHANGED", + "DIRECTIVE_REMOVED", + "DIRECTIVE_ADDED", + "DIRECTIVE_DESCRIPTION_CHANGED", + "DIRECTIVE_LOCATION_ADDED", + "DIRECTIVE_LOCATION_REMOVED", + "DIRECTIVE_ARGUMENT_ADDED", + "DIRECTIVE_ARGUMENT_REMOVED", + "DIRECTIVE_ARGUMENT_DESCRIPTION_CHANGED", + "DIRECTIVE_ARGUMENT_DEFAULT_VALUE_CHANGED", + "DIRECTIVE_ARGUMENT_TYPE_CHANGED", + "ENUM_VALUE_REMOVED", + "ENUM_VALUE_ADDED", + "ENUM_VALUE_DESCRIPTION_CHANGED", + "ENUM_VALUE_DEPRECATION_REASON_CHANGED", + "ENUM_VALUE_DEPRECATION_REASON_ADDED", + "ENUM_VALUE_DEPRECATION_REASON_REMOVED", + "FIELD_REMOVED", + "FIELD_ADDED", + "FIELD_DESCRIPTION_CHANGED", + "FIELD_DESCRIPTION_ADDED", + "FIELD_DESCRIPTION_REMOVED", + "FIELD_DEPRECATION_ADDED", + "FIELD_DEPRECATION_REMOVED", + "FIELD_DEPRECATION_REASON_CHANGED", + "FIELD_DEPRECATION_REASON_ADDED", + "FIELD_DEPRECATION_REASON_REMOVED", + "FIELD_TYPE_CHANGED", + "FIELD_ARGUMENT_ADDED", + "FIELD_ARGUMENT_REMOVED", + "INPUT_FIELD_REMOVED", + "INPUT_FIELD_ADDED", + "INPUT_FIELD_DESCRIPTION_ADDED", + "INPUT_FIELD_DESCRIPTION_REMOVED", + "INPUT_FIELD_DESCRIPTION_CHANGED", + "INPUT_FIELD_DEFAULT_VALUE_CHANGED", + "INPUT_FIELD_TYPE_CHANGED", + "OBJECT_TYPE_INTERFACE_ADDED", + "OBJECT_TYPE_INTERFACE_REMOVED", + "SCHEMA_QUERY_TYPE_CHANGED", + "SCHEMA_MUTATION_TYPE_CHANGED", + "SCHEMA_SUBSCRIPTION_TYPE_CHANGED", + "TYPE_REMOVED", + "TYPE_ADDED", + "TYPE_KIND_CHANGED", + "TYPE_DESCRIPTION_CHANGED", + "TYPE_DESCRIPTION_REMOVED", + "TYPE_DESCRIPTION_ADDED", + "UNION_MEMBER_REMOVED", + "UNION_MEMBER_ADDED", + "DIRECTIVE_USAGE_UNION_MEMBER_ADDED", + "DIRECTIVE_USAGE_UNION_MEMBER_REMOVED", + "DIRECTIVE_USAGE_ENUM_ADDED", + "DIRECTIVE_USAGE_ENUM_REMOVED", + "DIRECTIVE_USAGE_ENUM_VALUE_ADDED", + "DIRECTIVE_USAGE_ENUM_VALUE_REMOVED", + "DIRECTIVE_USAGE_INPUT_OBJECT_ADDED", + "DIRECTIVE_USAGE_INPUT_OBJECT_REMOVED", + "DIRECTIVE_USAGE_FIELD_ADDED", + "DIRECTIVE_USAGE_FIELD_REMOVED", + "DIRECTIVE_USAGE_SCALAR_ADDED", + "DIRECTIVE_USAGE_SCALAR_REMOVED", + "DIRECTIVE_USAGE_OBJECT_ADDED", + "DIRECTIVE_USAGE_OBJECT_REMOVED", + "DIRECTIVE_USAGE_INTERFACE_ADDED", + "DIRECTIVE_USAGE_INTERFACE_REMOVED", + "DIRECTIVE_USAGE_ARGUMENT_DEFINITION_ADDED", + "DIRECTIVE_USAGE_ARGUMENT_DEFINITION_REMOVED", + "DIRECTIVE_USAGE_SCHEMA_ADDED", + "DIRECTIVE_USAGE_SCHEMA_REMOVED", + "DIRECTIVE_USAGE_FIELD_DEFINITION_ADDED", + "DIRECTIVE_USAGE_FIELD_DEFINITION_REMOVED", + "DIRECTIVE_USAGE_INPUT_FIELD_DEFINITION_ADDED", + "DIRECTIVE_USAGE_INPUT_FIELD_DEFINITION_REMOVED" + ] + }, + "public.subgraph_type": { + "name": "subgraph_type", + "schema": "public", + "values": [ + "standard", + "grpc_plugin", + "grpc_service" + ] + }, + "public.subscription_protocol": { + "name": "subscription_protocol", + "schema": "public", + "values": [ + "ws", + "sse", + "sse_post" + ] + }, + "public.status": { + "name": "status", + "schema": "public", + "values": [ + "incomplete", + "incomplete_expired", + "trialing", + "active", + "past_due", + "canceled", + "unpaid", + "paused" + ] + }, + "public.target_type": { + "name": "target_type", + "schema": "public", + "values": [ + "federated", + "subgraph" + ] + }, + "public.webhook_delivery_type": { + "name": "webhook_delivery_type", + "schema": "public", + "values": [ + "webhook", + "slack", + "admission", + "check-extension" + ] + }, + "public.websocket_subprotocol": { + "name": "websocket_subprotocol", + "schema": "public", + "values": [ + "auto", + "graphql-ws", + "graphql-transport-ws" + ] + } + }, + "schemas": {}, + "sequences": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/controlplane/migrations/meta/_journal.json b/controlplane/migrations/meta/_journal.json index 20203a0544..644885da12 100644 --- a/controlplane/migrations/meta/_journal.json +++ b/controlplane/migrations/meta/_journal.json @@ -960,6 +960,13 @@ "when": 1772187315878, "tag": "0136_eminent_vermin", "breakpoints": true + }, + { + "idx": 137, + "version": "7", + "when": 1777402658933, + "tag": "0137_rollout_feature_flags", + "breakpoints": true } ] } \ No newline at end of file diff --git a/controlplane/src/core/bufservices/PlatformService.ts b/controlplane/src/core/bufservices/PlatformService.ts index 93d0ff87f3..f8be432478 100644 --- a/controlplane/src/core/bufservices/PlatformService.ts +++ b/controlplane/src/core/bufservices/PlatformService.ts @@ -167,6 +167,8 @@ import { getProposal } from './proposal/getProposal.js'; import { enableProposalsForNamespace } from './proposal/enableProposalsForNamespace.js'; import { getNamespaceProposalConfig } from './proposal/getNamespaceProposalConfig.js'; import { configureNamespaceProposalConfig } from './proposal/configureNamespaceProposalConfig.js'; +import { bulkUpdateProposalRolloutPercentages } from './proposal/bulkUpdateProposalRolloutPercentages.js'; +import { teardownProposalRollout } from './proposal/teardownProposalRollout.js'; import { getOperations } from './analytics/getOperations.js'; import { getOperationClients } from './analytics/getOperationClients.js'; import { getOperationDeprecatedFields } from './analytics/getOperationDeprecatedFields.js'; @@ -869,6 +871,14 @@ export default function (opts: RouterOptions): Partial { + return bulkUpdateProposalRolloutPercentages(opts, req, ctx); + }, + + teardownProposalRollout: (req, ctx) => { + return teardownProposalRollout(opts, req, ctx); + }, + enableProposalsForNamespace: (req, ctx) => { return enableProposalsForNamespace(opts, req, ctx); }, diff --git a/controlplane/src/core/bufservices/proposal/bulkUpdateProposalRolloutPercentages.ts b/controlplane/src/core/bufservices/proposal/bulkUpdateProposalRolloutPercentages.ts new file mode 100644 index 0000000000..b0c1d7d155 --- /dev/null +++ b/controlplane/src/core/bufservices/proposal/bulkUpdateProposalRolloutPercentages.ts @@ -0,0 +1,507 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + BulkUpdateProposalRolloutPercentagesRequest, + BulkUpdateProposalRolloutPercentagesResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { splitLabel } from '@wundergraph/cosmo-shared'; +import { and, eq, isNotNull } from 'drizzle-orm'; +import * as schema from '../../../db/schema.js'; +import { UnauthorizedError } from '../../errors/errors.js'; +import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; +import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; +import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; +import { NamespaceRepository } from '../../repositories/NamespaceRepository.js'; +import { ProposalRepository } from '../../repositories/ProposalRepository.js'; +import { SubgraphRepository } from '../../repositories/SubgraphRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { enrichLogger, getLogger, handleError } from '../../util.js'; + +// Cap to prevent a single request from holding a long transaction and amplifying +// CDN pushes. Caller must split into smaller batches if they have more. +const MAX_BATCH_ITEMS = 50; + +// BulkUpdateProposalRolloutPercentages atomically creates or updates rollout +// percentages across one or more proposals on the same federated graph. +// +// For proposals that already have a linked rollout flag, only traffic_percentage +// is updated. For proposals without one, the handler: +// 1. Verifies the proposal is in APPROVED state. +// 2. Ensures a feature subgraph exists per modified proposal subgraph +// (name: ____rollout, same routingUrl as the +// base subgraph since proposals carry SDL-level cache directive tweaks +// only — runtime URL is identical). +// 3. Publishes the proposal's SDL onto each feature subgraph. +// 4. Creates a feature flag wrapping those subgraphs and links it back to +// the proposal via feature_flags.proposal_id. +// +// Why bulk: the router fails closed and disables the entire rollout selector +// when cumulative traffic_percentage > 100 across all FFs (see +// router/core/feature_flag_rollout.go). Editing siblings in N separate calls +// would: (a) leave the system in an over-100 state between calls, briefly +// dropping every rollout's traffic to base, and (b) trigger N +// composeAndDeployGraphs invocations = N CDN pushes = N router config reloads. +// Doing it in one call gives an atomic budget enforcement and a single +// router-visible config change. +export function bulkUpdateProposalRolloutPercentages( + opts: RouterOptions, + req: BulkUpdateProposalRolloutPercentagesRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + if (authContext.organizationDeactivated) { + throw new UnauthorizedError(); + } + + if (req.items.length === 0) { + return { response: { code: EnumStatusCode.OK }, items: [] }; + } + + if (req.items.length > MAX_BATCH_ITEMS) { + return { + response: { + code: EnumStatusCode.ERR, + details: `Too many items in batch: got ${req.items.length}, max is ${MAX_BATCH_ITEMS}. Split into smaller per-graph batches.`, + }, + items: [], + }; + } + + // Per-item input validation. Cumulative budget is checked later inside the + // transaction once we hold row locks on the federated graph's FFs. + for (const item of req.items) { + if (!Number.isInteger(item.percentage) || item.percentage < 0 || item.percentage > 100) { + return { + response: { + code: EnumStatusCode.ERR, + details: `percentage must be an integer in [0, 100], got ${item.percentage} for proposalId=${item.proposalId}`, + }, + items: [], + }; + } + } + + // Reject duplicate proposalIds in one batch — silently merging would let + // the caller send {pid:p, pct:10} + {pid:p, pct:90} and observe whichever + // happens to land last; loud failure is the right default. + const seen = new Set(); + for (const item of req.items) { + if (seen.has(item.proposalId)) { + return { + response: { + code: EnumStatusCode.ERR, + details: `duplicate proposalId in batch: ${item.proposalId}`, + }, + items: [], + }; + } + seen.add(item.proposalId); + } + + // -------- Phase 1: read-only resolve -------- + // Load every proposal and discover the single federated graph the batch + // targets. No mutations happen here; if anything is missing/invalid we + // return ERR before touching the DB. + const proposalRepo = new ProposalRepository(opts.db, authContext.organizationId); + + type ProposalPlan = { + proposalId: string; + proposalName: string; + proposalState: string; + federatedGraphId: string; + // Linked FF row, if a rollout was previously deployed for this proposal. + linkedFlag: { id: string; name: string; trafficPercentage: number | null } | undefined; + // Subgraphs to deploy as feature subgraphs (only used when linkedFlag is undefined). + proposalSubgraphs: { subgraphName: string; schemaSDL: string; isDeleted: boolean }[]; + newPercentage: number; + }; + const plans: ProposalPlan[] = []; + + for (const item of req.items) { + const proposal = await proposalRepo.ById(item.proposalId); + if (!proposal) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `Proposal ${item.proposalId} not found`, + }, + items: [], + }; + } + const linkedFlag = await proposalRepo.getLinkedRolloutFlag(item.proposalId); + + // First-deploy gate: state must be APPROVED. Re-deploys (linked flag + // already exists) are allowed in any state; the typical use is to dial + // the percentage up/down between APPROVED and PUBLISHED. + if (!linkedFlag && proposal.proposal.state !== 'APPROVED') { + return { + response: { + code: EnumStatusCode.ERR, + details: + `Proposal ${item.proposalId} must be in APPROVED state to deploy a rollout ` + + `(got ${proposal.proposal.state})`, + }, + items: [], + }; + } + + plans.push({ + proposalId: item.proposalId, + proposalName: proposal.proposal.name, + proposalState: proposal.proposal.state, + federatedGraphId: proposal.proposal.federatedGraphId, + linkedFlag, + proposalSubgraphs: proposal.proposalSubgraphs.map((ps) => ({ + subgraphName: ps.subgraphName, + schemaSDL: ps.schemaSDL, + isDeleted: ps.isDeleted, + })), + newPercentage: item.percentage, + }); + } + + // The batch must target one federated graph: composeAndDeployGraphs runs + // per federated graph, so a multi-graph batch defeats the "one push" goal. + const graphIds = [...new Set(plans.map((p) => p.federatedGraphId))]; + if (graphIds.length > 1) { + return { + response: { + code: EnumStatusCode.ERR, + details: `Bulk update spans multiple federated graphs (${graphIds.join(', ')}); split into per-graph batches`, + }, + items: [], + }; + } + const federatedGraphId = graphIds[0]!; + + const fedGraphRepoRO = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); + const federatedGraph = await fedGraphRepoRO.byId(federatedGraphId); + if (!federatedGraph) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `Federated graph for proposal batch not found`, + }, + items: [], + }; + } + + // -------- Phase 2: authorization -------- + if (!authContext.rbac.hasFederatedGraphWriteAccess(federatedGraph)) { + throw new UnauthorizedError(); + } + + const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); + const namespace = await namespaceRepo.byId(federatedGraph.namespaceId); + if (!namespace) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `Namespace ${federatedGraph.namespace} not found`, + }, + items: [], + }; + } + if (!namespace.enableProposals) { + return { + response: { + code: EnumStatusCode.ERR, + details: `Proposals are not enabled for namespace ${federatedGraph.namespace}`, + }, + items: [], + }; + } + + // Pre-compute label list once. labelMatchers is a list of strings of the + // form "k1=v1,k2=v2"; splitLabel handles escapes and edge cases the + // straightforward `split('=')` approach gets wrong. + const fedGraphLabels = federatedGraph.labelMatchers.flatMap((m) => m.split(',').map((l) => splitLabel(l))); + + // -------- Phase 3: transactional deploy + budget + update + compose -------- + type ResolvedItem = { + proposalId: string; + featureFlagId: string; + featureFlagName: string; + newPercentage: number; + }; + const resolved: ResolvedItem[] = []; + const compositionFailures: { featureFlag: string; message: string }[] = []; + + try { + await opts.db.transaction(async (tx) => { + const txProposalRepo = new ProposalRepository(tx, authContext.organizationId); + const txFedGraphRepo = new FederatedGraphRepository(logger, tx, authContext.organizationId); + const txSubgraphRepo = new SubgraphRepository(logger, tx, authContext.organizationId); + const txFeatureFlagRepo = new FeatureFlagRepository(logger, tx, authContext.organizationId); + const txAuditLogRepo = new AuditLogRepository(tx); + + // Lock every active rollout flag on this federated graph for the + // duration of the transaction. Two concurrent bulkUpdate calls on the + // same graph now serialize through these locks, so the cumulative budget + // check can't be bypassed by interleaving reads. + await tx + .select({ id: schema.featureFlags.id }) + .from(schema.featureFlags) + .innerJoin(schema.proposals, eq(schema.featureFlags.proposalId, schema.proposals.id)) + .where( + and( + eq(schema.proposals.federatedGraphId, federatedGraphId), + isNotNull(schema.featureFlags.trafficPercentage), + ), + ) + .for('update', { of: schema.featureFlags }); + + // Deploy fan-out for any plan without a linked flag yet. + for (const plan of plans) { + if (plan.linkedFlag) { + resolved.push({ + proposalId: plan.proposalId, + featureFlagId: plan.linkedFlag.id, + featureFlagName: plan.linkedFlag.name, + newPercentage: plan.newPercentage, + }); + continue; + } + + const featureSubgraphIds: string[] = []; + for (const ps of plan.proposalSubgraphs) { + if (ps.isDeleted) { + // Caching proposals shouldn't include deletions, but skip for safety. + continue; + } + const baseSubgraph = await txSubgraphRepo.byName(ps.subgraphName, federatedGraph.namespace); + if (!baseSubgraph) { + throw new BulkRolloutError( + EnumStatusCode.ERR_NOT_FOUND, + `Base subgraph "${ps.subgraphName}" not found in namespace "${federatedGraph.namespace}"`, + ); + } + + const featureSubgraphName = `${plan.proposalName}__${ps.subgraphName}__rollout`; + let featureSubgraph = await txSubgraphRepo.byName(featureSubgraphName, federatedGraph.namespace); + if (!featureSubgraph) { + featureSubgraph = await txSubgraphRepo.create({ + name: featureSubgraphName, + namespace: federatedGraph.namespace, + namespaceId: federatedGraph.namespaceId, + createdBy: authContext.userId, + labels: baseSubgraph.labels, + routingUrl: baseSubgraph.routingUrl, + isEventDrivenGraph: false, + subscriptionUrl: baseSubgraph.subscriptionUrl, + subscriptionProtocol: baseSubgraph.subscriptionProtocol, + websocketSubprotocol: baseSubgraph.websocketSubprotocol, + featureSubgraphOptions: { + isFeatureSubgraph: true, + baseSubgraphID: baseSubgraph.id, + }, + type: 'standard', + }); + if (!featureSubgraph) { + throw new BulkRolloutError( + EnumStatusCode.ERR, + `Failed to create feature subgraph "${featureSubgraphName}"`, + ); + } + } + + // Publish the proposal's SDL onto the feature subgraph so the rollout + // routes through the cache-tuned schema while the URL stays identical. + await txSubgraphRepo.addSchemaVersion({ + targetId: featureSubgraph.targetId, + subgraphSchema: ps.schemaSDL, + }); + + featureSubgraphIds.push(featureSubgraph.id); + } + + if (featureSubgraphIds.length === 0) { + throw new BulkRolloutError( + EnumStatusCode.ERR, + `Proposal ${plan.proposalId} has no modified subgraphs to deploy as a rollout`, + ); + } + + // Use the full proposalId rather than an 8-char prefix to keep the + // collision probability negligible across the lifetime of an org. + const featureFlagName = `proposal_${plan.proposalId}_rollout`; + const featureFlag = await txFeatureFlagRepo.createFeatureFlag({ + namespaceId: federatedGraph.namespaceId, + name: featureFlagName, + labels: fedGraphLabels, + featureSubgraphIds, + createdBy: authContext.userId, + isEnabled: true, + }); + + await txProposalRepo.setLinkedRolloutFlag({ + featureFlagId: featureFlag.id, + proposalId: plan.proposalId, + trafficPercentage: plan.newPercentage, + }); + + await txAuditLogRepo.addAuditLog({ + organizationId: authContext.organizationId, + organizationSlug: authContext.organizationSlug, + auditAction: 'feature_flag.created', + action: 'created', + actorId: authContext.userId, + auditableType: 'feature_flag', + auditableDisplayName: featureFlag.name, + apiKeyName: authContext.apiKeyName, + actorDisplayName: authContext.userDisplayName, + actorType: authContext.auth === 'api_key' ? 'api_key' : 'user', + targetNamespaceId: federatedGraph.namespaceId, + targetNamespaceDisplayName: federatedGraph.namespace, + }); + + resolved.push({ + proposalId: plan.proposalId, + featureFlagId: featureFlag.id, + featureFlagName: featureFlag.name, + newPercentage: plan.newPercentage, + }); + } + + // Cumulative budget check: sum of (a) the new pct for every FF in the + // batch + (b) current pct for every other FF on this federated graph + // that's an active rollout (proposalId set, traffic_percentage set) and + // not in this batch. Mirrors what the router computes at config-load. + // Read happens within the locked range (FOR UPDATE above), so concurrent + // bulkUpdates can't slip in additional pct between read and write. + const allActiveFFs = await tx + .select({ + id: schema.featureFlags.id, + trafficPercentage: schema.featureFlags.trafficPercentage, + }) + .from(schema.featureFlags) + .innerJoin(schema.proposals, eq(schema.featureFlags.proposalId, schema.proposals.id)) + .where( + and( + eq(schema.proposals.federatedGraphId, federatedGraphId), + isNotNull(schema.featureFlags.trafficPercentage), + ), + ); + + const inBatch = new Set(resolved.map((r) => r.featureFlagId)); + let cumulative = 0; + for (const r of resolved) { + cumulative += r.newPercentage; + } + for (const ff of allActiveFFs) { + if (inBatch.has(ff.id)) { + continue; + } + cumulative += ff.trafficPercentage ?? 0; + } + if (cumulative > 100) { + throw new BulkRolloutError( + EnumStatusCode.ERR, + `Cumulative rollout percentage across all active rollouts on this federated graph ` + + `would be ${cumulative}, exceeding 100. The router fails closed at >100 (all unpinned ` + + `traffic falls back to base). Reduce the requested percentages or teardown another rollout first.`, + ); + } + + // Update every FF row in one go. Newly-deployed flags had + // setLinkedRolloutFlag set the percentage already, but we still update + // here for consistency (idempotent same-value write). For pre-existing + // flags (the percentage-only path), this is the only write that touches + // traffic_percentage. + for (const r of resolved) { + await tx + .update(schema.featureFlags) + .set({ trafficPercentage: r.newPercentage, updatedAt: new Date() }) + .where(eq(schema.featureFlags.id, r.featureFlagId)); + + // Audit the percentage-only update path so forensic queries can answer + // "who changed prod traffic from 5% to 95%". The new-FF path already + // emits a feature_flag.created log above. + const planForR = plans.find((p) => p.proposalId === r.proposalId)!; + if (planForR.linkedFlag) { + await txAuditLogRepo.addAuditLog({ + organizationId: authContext.organizationId, + organizationSlug: authContext.organizationSlug, + auditAction: 'feature_flag.updated', + action: 'updated', + actorId: authContext.userId, + auditableType: 'feature_flag', + auditableDisplayName: r.featureFlagName, + apiKeyName: authContext.apiKeyName, + actorDisplayName: authContext.userDisplayName, + actorType: authContext.auth === 'api_key' ? 'api_key' : 'user', + targetNamespaceId: federatedGraph.namespaceId, + targetNamespaceDisplayName: federatedGraph.namespace, + }); + } + } + + // Single composeAndDeployGraphs call → single CDN push → single router + // config reload. This is the whole point of the bulk endpoint. Running + // inside the transaction means a CDN/composition failure rolls the DB + // back so the router's stale config and the DB stay in sync. + const { compositionErrors } = await txFedGraphRepo.composeAndDeployGraphs({ + actorId: authContext.userId, + admissionConfig: { + cdnBaseUrl: opts.cdnBaseUrl, + webhookJWTSecret: opts.admissionWebhookJWTSecret, + }, + blobStorage: opts.blobStorage, + chClient: opts.chClient!, + compositionOptions: {}, + federatedGraphs: [federatedGraph], + webhookProxyUrl: opts.webhookProxyUrl, + }); + const ffNamesInBatch = new Set(resolved.map((r) => r.featureFlagName)); + for (const e of compositionErrors) { + if (ffNamesInBatch.has(e.featureFlag)) { + compositionFailures.push({ featureFlag: e.featureFlag, message: e.message }); + } + } + if (compositionFailures.length > 0) { + throw new BulkRolloutError( + EnumStatusCode.ERR, + `One or more rollout feature flags failed to compose at the new percentages. ` + + `The router will keep falling back to base for those flags until fixed.\n` + + compositionFailures.map((e) => `${e.featureFlag}: ${e.message}`).join('\n'), + ); + } + }); + } catch (e) { + if (e instanceof BulkRolloutError) { + return { + response: { code: e.code, details: e.message }, + items: [], + }; + } + throw e; + } + + return { + response: { code: EnumStatusCode.OK }, + items: resolved.map((r) => ({ + proposalId: r.proposalId, + percentage: r.newPercentage, + })), + }; + }); +} + +// Internal sentinel: thrown to abort the transaction with a structured response. +// `handleError` doesn't recognize it, but the catch block at the boundary of +// `db.transaction` rolls back and we re-classify into a typed Connect response. +class BulkRolloutError extends Error { + constructor( + public code: EnumStatusCode, + message: string, + ) { + super(message); + this.name = 'BulkRolloutError'; + } +} diff --git a/controlplane/src/core/bufservices/proposal/getProposal.ts b/controlplane/src/core/bufservices/proposal/getProposal.ts index cdbd5353c0..7a7ebfa7d9 100644 --- a/controlplane/src/core/bufservices/proposal/getProposal.ts +++ b/controlplane/src/core/bufservices/proposal/getProposal.ts @@ -50,6 +50,7 @@ export function getProposal( } const latestCheck = await proposalRepo.getLatestCheckForProposal(proposal.proposal.id); + const linkedRollout = await proposalRepo.getLinkedRolloutFlag(proposal.proposal.id); const currentSubgraphs = []; for (const subgraph of proposal.proposalSubgraphs) { @@ -90,6 +91,8 @@ export function getProposal( latestCheckSuccess: latestCheck?.isSuccessful || false, latestCheckId: latestCheck?.checkId || '', origin: fromProposalOriginEnum(proposal.proposal.origin), + rolloutFeatureFlagId: linkedRollout?.id, + rolloutPercentage: linkedRollout?.trafficPercentage ?? undefined, }), currentSubgraphs, }; diff --git a/controlplane/src/core/bufservices/proposal/getProposalsByFederatedGraph.ts b/controlplane/src/core/bufservices/proposal/getProposalsByFederatedGraph.ts index 4418eb583a..c36006eae3 100644 --- a/controlplane/src/core/bufservices/proposal/getProposalsByFederatedGraph.ts +++ b/controlplane/src/core/bufservices/proposal/getProposalsByFederatedGraph.ts @@ -107,14 +107,19 @@ export function getProposalsByFederatedGraph( offset: req.offset, }); - // Get the latest check success for each proposal + // Get the latest check success and current rollout flag for each proposal const proposalsWithChecks = await Promise.all( proposals.map(async (proposal) => { - const latestCheck = await proposalRepo.getLatestCheckForProposal(proposal.proposal.id); + const [latestCheck, rolloutFlag] = await Promise.all([ + proposalRepo.getLatestCheckForProposal(proposal.proposal.id), + proposalRepo.getLinkedRolloutFlag(proposal.proposal.id), + ]); return { ...proposal, latestCheckSuccess: latestCheck?.isSuccessful || false, latestCheckId: latestCheck?.checkId || '', + rolloutFeatureFlagId: rolloutFlag?.id, + rolloutPercentage: rolloutFlag?.trafficPercentage ?? undefined, }; }), ); @@ -143,6 +148,8 @@ export function getProposalsByFederatedGraph( latestCheckSuccess: proposal.latestCheckSuccess, latestCheckId: proposal.latestCheckId, origin: fromProposalOriginEnum(proposal.proposal.origin), + rolloutFeatureFlagId: proposal.rolloutFeatureFlagId, + rolloutPercentage: proposal.rolloutPercentage, }), ), isProposalsEnabled: true, diff --git a/controlplane/src/core/bufservices/proposal/teardownProposalRollout.ts b/controlplane/src/core/bufservices/proposal/teardownProposalRollout.ts new file mode 100644 index 0000000000..a7abc5d223 --- /dev/null +++ b/controlplane/src/core/bufservices/proposal/teardownProposalRollout.ts @@ -0,0 +1,92 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + TeardownProposalRolloutRequest, + TeardownProposalRolloutResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { UnauthorizedError } from '../../errors/errors.js'; +import { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; +import { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; +import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; +import { NamespaceRepository } from '../../repositories/NamespaceRepository.js'; +import { ProposalRepository } from '../../repositories/ProposalRepository.js'; +import type { RouterOptions } from '../../routes.js'; +import { enrichLogger, getLogger, handleError } from '../../util.js'; +import { teardownProposalRolloutSideEffects } from './teardownProposalRolloutSideEffects.js'; + +// TeardownProposalRollout deletes the feature flag created from a caching +// proposal. The on-delete-cascade on featureFlagToFeatureSubgraphs and the +// subgraph cleanup invoked here remove the per-proposal feature subgraphs +// too. Recomposes so the rollout entry vanishes from the next router config. +// +// This is also the code path called from the auto-teardown hook in +// updateProposal when a CACHING proposal transitions to PUBLISHED — both go +// through the shared `teardownProposalRolloutSideEffects` helper so the audit +// trail and the recompose stay in lockstep. +export function teardownProposalRollout( + opts: RouterOptions, + req: TeardownProposalRolloutRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + if (authContext.organizationDeactivated) { + throw new UnauthorizedError(); + } + + const proposalRepo = new ProposalRepository(opts.db, authContext.organizationId); + const fedGraphRepo = new FederatedGraphRepository(logger, opts.db, authContext.organizationId); + const featureFlagRepo = new FeatureFlagRepository(logger, opts.db, authContext.organizationId); + const auditLogRepo = new AuditLogRepository(opts.db); + const namespaceRepo = new NamespaceRepository(opts.db, authContext.organizationId); + + const proposal = await proposalRepo.ById(req.proposalId); + if (!proposal) { + return { + response: { code: EnumStatusCode.ERR_NOT_FOUND, details: `Proposal ${req.proposalId} not found` }, + }; + } + + const federatedGraph = await fedGraphRepo.byId(proposal.proposal.federatedGraphId); + if (!federatedGraph) { + return { + response: { + code: EnumStatusCode.ERR_NOT_FOUND, + details: `Federated graph for proposal ${req.proposalId} not found`, + }, + }; + } + + if (!authContext.rbac.hasFederatedGraphWriteAccess(federatedGraph)) { + throw new UnauthorizedError(); + } + + const namespace = await namespaceRepo.byId(federatedGraph.namespaceId); + if (!namespace || !namespace.enableProposals) { + return { + response: { + code: EnumStatusCode.ERR, + details: `Proposals are not enabled for namespace ${federatedGraph.namespace}`, + }, + }; + } + + await teardownProposalRolloutSideEffects({ + opts, + authContext, + proposalId: req.proposalId, + federatedGraph, + proposalRepo, + fedGraphRepo, + featureFlagRepo, + auditLogRepo, + }); + + return { response: { code: EnumStatusCode.OK } }; + }); +} diff --git a/controlplane/src/core/bufservices/proposal/teardownProposalRolloutSideEffects.ts b/controlplane/src/core/bufservices/proposal/teardownProposalRolloutSideEffects.ts new file mode 100644 index 0000000000..7a13e6bd1d --- /dev/null +++ b/controlplane/src/core/bufservices/proposal/teardownProposalRolloutSideEffects.ts @@ -0,0 +1,65 @@ +import type { AuthContext, FederatedGraphDTO } from '../../../types/index.js'; +import type { AuditLogRepository } from '../../repositories/AuditLogRepository.js'; +import type { FederatedGraphRepository } from '../../repositories/FederatedGraphRepository.js'; +import type { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; +import type { ProposalRepository } from '../../repositories/ProposalRepository.js'; +import type { RouterOptions } from '../../routes.js'; + +// Shared teardown body for the TeardownProposalRollout RPC and the auto-teardown +// hook in updateProposal (PUBLISHED transition). Idempotent: if no rollout flag +// is linked, returns silently. Audit log + composeAndDeployGraphs run together +// so the two call sites can't drift on what gets recorded or recomposed. +export async function teardownProposalRolloutSideEffects({ + opts, + authContext, + proposalId, + federatedGraph, + proposalRepo, + fedGraphRepo, + featureFlagRepo, + auditLogRepo, +}: { + opts: RouterOptions; + authContext: AuthContext; + proposalId: string; + federatedGraph: FederatedGraphDTO; + proposalRepo: ProposalRepository; + fedGraphRepo: FederatedGraphRepository; + featureFlagRepo: FeatureFlagRepository; + auditLogRepo: AuditLogRepository; +}): Promise { + const linked = await proposalRepo.getLinkedRolloutFlag(proposalId); + if (!linked) { + return; + } + + await featureFlagRepo.delete(linked.id); + + await auditLogRepo.addAuditLog({ + organizationId: authContext.organizationId, + organizationSlug: authContext.organizationSlug, + auditAction: 'feature_flag.deleted', + action: 'deleted', + actorId: authContext.userId, + auditableType: 'feature_flag', + auditableDisplayName: linked.name, + apiKeyName: authContext.apiKeyName, + actorDisplayName: authContext.userDisplayName, + actorType: authContext.auth === 'api_key' ? 'api_key' : 'user', + targetNamespaceId: federatedGraph.namespaceId, + targetNamespaceDisplayName: federatedGraph.namespace, + }); + + await fedGraphRepo.composeAndDeployGraphs({ + actorId: authContext.userId, + admissionConfig: { + cdnBaseUrl: opts.cdnBaseUrl, + webhookJWTSecret: opts.admissionWebhookJWTSecret, + }, + blobStorage: opts.blobStorage, + chClient: opts.chClient!, + compositionOptions: {}, + federatedGraphs: [federatedGraph], + webhookProxyUrl: opts.webhookProxyUrl, + }); +} diff --git a/controlplane/src/core/bufservices/proposal/updateProposal.ts b/controlplane/src/core/bufservices/proposal/updateProposal.ts index 02b6fbea00..e68f174df5 100644 --- a/controlplane/src/core/bufservices/proposal/updateProposal.ts +++ b/controlplane/src/core/bufservices/proposal/updateProposal.ts @@ -9,6 +9,7 @@ import { } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; import { OrganizationEventName } from '@wundergraph/cosmo-connect/dist/notifications/events_pb'; import { ProposalOrigin, ProposalState } from '../../../db/models.js'; +import { FeatureFlagRepository } from '../../repositories/FeatureFlagRepository.js'; import { ProposalRepository } from '../../repositories/ProposalRepository.js'; import { SubgraphRepository } from '../../repositories/SubgraphRepository.js'; import type { RouterOptions } from '../../routes.js'; @@ -27,6 +28,7 @@ import { SchemaUsageTrafficInspector } from '../../services/SchemaUsageTrafficIn import { Composer } from '../../composition/composer.js'; import { UnauthorizedError } from '../../errors/errors.js'; import { hubUserAgent } from '../../constants.js'; +import { teardownProposalRolloutSideEffects } from './teardownProposalRolloutSideEffects.js'; export function updateProposal( opts: RouterOptions, @@ -189,6 +191,27 @@ export function updateProposal( proposalSubgraphs: [], }); + // Auto-teardown: when a proposal transitions to PUBLISHED, any rollout + // deployed against it has fulfilled its purpose (the change is now + // mainlined). Delete the linked feature flag so the rollout slice stops + // accumulating and the per-proposal feature subgraphs don't linger as + // zombies. Idempotent: a no-op if no rollout was deployed. Shares the + // helper with TeardownProposalRollout RPC so audit + recompose stay in + // lockstep across both call sites. + if (stateValue === 'PUBLISHED') { + const featureFlagRepo = new FeatureFlagRepository(logger, opts.db, authContext.organizationId); + await teardownProposalRolloutSideEffects({ + opts, + authContext, + proposalId: proposal.proposal.id, + federatedGraph, + proposalRepo, + fedGraphRepo: federatedGraphRepo, + featureFlagRepo, + auditLogRepo, + }); + } + await auditLogRepo.addAuditLog({ organizationId: authContext.organizationId, organizationSlug: authContext.organizationSlug, diff --git a/controlplane/src/core/composition/composeGraphs.types.ts b/controlplane/src/core/composition/composeGraphs.types.ts index 3f909f46c7..8a9f9f618d 100644 --- a/controlplane/src/core/composition/composeGraphs.types.ts +++ b/controlplane/src/core/composition/composeGraphs.types.ts @@ -61,6 +61,7 @@ export interface ComposeGraphsTaskInput { isFeatureFlagComposition: boolean; featureFlagName: string; featureFlagId: string; + trafficPercentage?: number | null; }[]; tagOptionsByContractName: SerializedContractTagOptions[]; compositionOptions?: CompositionOptions; @@ -71,6 +72,9 @@ export interface ComposeGraphsTaskResultItem { isFeatureFlagComposition: boolean; featureFlagName: string; featureFlagId: string; + // Carried through from the input so the caller can write traffic_percentage + // into the FeatureFlagRouterExecutionConfig proto without an extra DB lookup. + trafficPercentage?: number | null; base: SerializedComposedGraphArtifact; contracts: SerializedContractCompositionArtifact[]; } diff --git a/controlplane/src/core/composition/composeGraphs.worker.ts b/controlplane/src/core/composition/composeGraphs.worker.ts index 0a72a59177..b039318ea8 100644 --- a/controlplane/src/core/composition/composeGraphs.worker.ts +++ b/controlplane/src/core/composition/composeGraphs.worker.ts @@ -242,6 +242,7 @@ export default function composeGraphsInWorker(task: ComposeGraphsTaskInput): Com isFeatureFlagComposition: subgraphsToCompose.isFeatureFlagComposition, featureFlagName: subgraphsToCompose.featureFlagName, featureFlagId: subgraphsToCompose.featureFlagId, + trafficPercentage: subgraphsToCompose.trafficPercentage, base, contracts, }; diff --git a/controlplane/src/core/composition/composer.ts b/controlplane/src/core/composition/composer.ts index 50056960f2..c0b02eed53 100644 --- a/controlplane/src/core/composition/composer.ts +++ b/controlplane/src/core/composition/composer.ts @@ -75,11 +75,19 @@ export type ContractBaseCompositionData = { schemaVersionId: string; }; -export function routerConfigToFeatureFlagExecutionConfig(routerConfig: RouterConfig): FeatureFlagRouterExecutionConfig { +export function routerConfigToFeatureFlagExecutionConfig( + routerConfig: RouterConfig, + // Percentage of unpinned traffic to route to this flag's variant. + // null/undefined → preview-only flag (header/cookie-pinned, today's behavior). + // 0..100 → rollout flag, written into the proto so the router-side selector + // routes the configured share of traffic and ignores header/cookie pins. + trafficPercentage?: number | null, +): FeatureFlagRouterExecutionConfig { return new FeatureFlagRouterExecutionConfig({ engineConfig: routerConfig.engineConfig, subgraphs: routerConfig.subgraphs, version: routerConfig.version, + trafficPercentage: trafficPercentage ?? undefined, }); } diff --git a/controlplane/src/core/composition/rewriteOverrideTargets.ts b/controlplane/src/core/composition/rewriteOverrideTargets.ts new file mode 100644 index 0000000000..38930a303f --- /dev/null +++ b/controlplane/src/core/composition/rewriteOverrideTargets.ts @@ -0,0 +1,79 @@ +import { type ArgumentNode, type DirectiveNode, Kind, parse, print, visit } from 'graphql'; + +/** + * Rewrites `@override(from: "")` -> `@override(from: "")` + * for every (oldName -> newName) entry in `replacements`. Returns the input + * SDL unchanged when no overrides match - callers can use referential + * equality (`result === input`) to skip cloning the surrounding DTO. + * + * Used by the feature-flag composition path: when a feature subgraph + * replaces a base subgraph by name in `getFeatureFlagRelatedSubgraphsToCompose`, + * any sibling subgraph with `@override(from: "")` would otherwise + * become orphaned and trip a `@shareable` collision in the composer - + * silently producing a router config with no `featureFlagConfigs` entry, + * so the router falls back to `baseMux` and the rollout no-ops. + * + * Following the swap into other subgraphs' override targets preserves the + * original semantics for the FF composition without touching the base + * composition. + * + * Scope is intentionally bounded: federation v2's `@override` is the only + * directive whose argument is a subgraph-name string. Other `String!`-typed + * directive arguments (`@is(fields:)`, `@requestScoped(key:)`, + * `@composeDirective(name:)`, `@tag(name:)`, etc.) reference fields, cache + * keys, directive names, or tags - never subgraphs. + */ +export function rewriteOverrideTargets(schemaSDL: string, replacements: Map): string { + if (replacements.size === 0) { + return schemaSDL; + } + + let document; + try { + document = parse(schemaSDL); + } catch { + // Malformed SDL is a separate problem; let the composer surface the parse + // error with its own context rather than fail-fast here. + return schemaSDL; + } + + let mutated = false; + + const rewritten = visit(document, { + Directive(node: DirectiveNode) { + if (node.name.value !== 'override') { + return; + } + if (!node.arguments || node.arguments.length === 0) { + return; + } + + let directiveMutated = false; + const newArguments = node.arguments.map((arg: ArgumentNode) => { + if (arg.name.value !== 'from') { + return arg; + } + if (arg.value.kind !== Kind.STRING) { + return arg; + } + const replacement = replacements.get(arg.value.value); + if (replacement === undefined) { + return arg; + } + directiveMutated = true; + return { + ...arg, + value: { ...arg.value, value: replacement }, + }; + }); + + if (!directiveMutated) { + return; + } + mutated = true; + return { ...node, arguments: newArguments }; + }, + }); + + return mutated ? print(rewritten) : schemaSDL; +} diff --git a/controlplane/src/core/repositories/FeatureFlagRepository.ts b/controlplane/src/core/repositories/FeatureFlagRepository.ts index 921a027388..7dc6c433a9 100644 --- a/controlplane/src/core/repositories/FeatureFlagRepository.ts +++ b/controlplane/src/core/repositories/FeatureFlagRepository.ts @@ -6,6 +6,7 @@ import { FastifyBaseLogger } from 'fastify'; import { validate as isValidUuid } from 'uuid'; import { parse } from 'graphql'; import { alias } from 'drizzle-orm/pg-core'; +import { rewriteOverrideTargets } from '../composition/rewriteOverrideTargets.js'; import * as schema from '../../db/schema.js'; import { featureFlagToFeatureSubgraphs, @@ -40,6 +41,9 @@ export interface FeatureFlagWithFeatureSubgraphs { id: string; name: string; featureSubgraphs: FeatureSubgraphDTO[]; + // null → preview-only flag (header/cookie-pinned). + // 0..100 → rollout flag, traffic_percentage written into router config proto. + trafficPercentage: number | null; } export interface SubgraphsToCompose { @@ -48,6 +52,9 @@ export interface SubgraphsToCompose { isFeatureFlagComposition: boolean; featureFlagName: string; featureFlagId: string; + // Carried through composition so routerConfigToFeatureFlagExecutionConfig + // can populate the FeatureFlagRouterExecutionConfig.traffic_percentage proto field. + trafficPercentage?: number | null; } export interface FeatureFlagListFilterOptions { @@ -854,6 +861,7 @@ export class FeatureFlagRepository { name: featureFlags.name, labels: featureFlags.labels, isEnabled: featureFlags.isEnabled, + trafficPercentage: featureFlags.trafficPercentage, }) .from(featureFlags) .innerJoin(featureFlagToFeatureSubgraphs, eq(featureFlags.id, featureFlagToFeatureSubgraphs.featureFlagId)) @@ -1054,6 +1062,7 @@ export class FeatureFlagRepository { id: featureFlag.id, name: featureFlag.name, featureSubgraphs: filteredFeatureSubgraphs, + trafficPercentage: featureFlag.trafficPercentage, }); } return featureFlagWithEnabledFeatureGraphs; @@ -1081,12 +1090,35 @@ export class FeatureFlagRepository { }); subgraphDTOs.push(featureGraph); } + + // Follow the base->feature subgraph swap into other subgraphs' + // @override(from:) targets. Without this, a sibling subgraph that + // says @override(from: "") gets orphaned by the swap and + // the FF composition fails with a @shareable collision - silently + // producing a router config with no featureFlagConfigs entry, so + // the router falls back to baseMux and the rollout no-ops. + // Worker re-parses each DTO from `schemaSDL` (composeGraphs.worker.ts + // toCompositionSubgraphs), so writing the rewrite back to schemaSDL + // is what counts; the parallel `compositionSubgraphs.definitions` + // AST is dead in this code path. .map() produces new DTO objects so + // the base composition entry pushed earlier with the original + // subgraph references stays untouched. + const overrideReplacements = new Map(); + for (const fg of flag.featureSubgraphs) { + overrideReplacements.set(fg.baseSubgraphName, fg.name); + } + subgraphDTOs = subgraphDTOs.map((dto) => { + const rewritten = rewriteOverrideTargets(dto.schemaSDL, overrideReplacements); + return rewritten === dto.schemaSDL ? dto : { ...dto, schemaSDL: rewritten }; + }); + subgraphsToCompose.push({ compositionSubgraphs, isFeatureFlagComposition: true, featureFlagName: flag.name, featureFlagId: flag.id, subgraphs: subgraphDTOs, + trafficPercentage: flag.trafficPercentage, }); } return subgraphsToCompose; diff --git a/controlplane/src/core/repositories/FederatedGraphRepository.ts b/controlplane/src/core/repositories/FederatedGraphRepository.ts index d04d57ae25..9d56679f5e 100644 --- a/controlplane/src/core/repositories/FederatedGraphRepository.ts +++ b/controlplane/src/core/repositories/FederatedGraphRepository.ts @@ -1578,6 +1578,7 @@ export class FederatedGraphRepository { isFeatureFlagComposition: subgraphsToCompose.isFeatureFlagComposition, featureFlagName: subgraphsToCompose.featureFlagName, featureFlagId: subgraphsToCompose.featureFlagId, + trafficPercentage: subgraphsToCompose.trafficPercentage, })), tagOptionsByContractName, compositionOptions, @@ -1667,7 +1668,7 @@ export class FederatedGraphRepository { } baseCompositionData.featureFlagRouterExecutionConfigByFeatureFlagName.set( compositionResult.featureFlagName, - routerConfigToFeatureFlagExecutionConfig(routerExecutionConfig), + routerConfigToFeatureFlagExecutionConfig(routerExecutionConfig, compositionResult.trafficPercentage), ); // Otherwise, this is the base composition, so store the schema version id } else { @@ -1772,7 +1773,10 @@ export class FederatedGraphRepository { } existingContractBaseCompositionData.featureFlagRouterExecutionConfigByFeatureFlagName.set( compositionResult.featureFlagName, - routerConfigToFeatureFlagExecutionConfig(contractRouterExecutionConfig), + routerConfigToFeatureFlagExecutionConfig( + contractRouterExecutionConfig, + compositionResult.trafficPercentage, + ), ); } } diff --git a/controlplane/src/core/repositories/ProposalRepository.ts b/controlplane/src/core/repositories/ProposalRepository.ts index 4e336075ce..45976f85c7 100644 --- a/controlplane/src/core/repositories/ProposalRepository.ts +++ b/controlplane/src/core/repositories/ProposalRepository.ts @@ -853,4 +853,63 @@ export class ProposalRepository { return proposalMatches; } + + // Returns the feature flag (id, name, current trafficPercentage) created for + // this proposal via BulkUpdateProposalRolloutPercentages, or undefined if + // none exists. Used by the rollout RPCs and by the auto-teardown hook on + // PUBLISHED. + public async getLinkedRolloutFlag( + proposalId: string, + ): Promise<{ id: string; name: string; trafficPercentage: number | null } | undefined> { + // Defense-in-depth: scope by organizationId even though all callers + // pre-validate via ById/ByName. Cheap and prevents a future careless + // caller from leaking a sibling org's flag. + const rows = await this.db + .select({ + id: schema.featureFlags.id, + name: schema.featureFlags.name, + trafficPercentage: schema.featureFlags.trafficPercentage, + }) + .from(schema.featureFlags) + .where( + and( + eq(schema.featureFlags.proposalId, proposalId), + eq(schema.featureFlags.organizationId, this.organizationId), + ), + ) + .limit(1); + return rows[0]; + } + + // Persists the link from a proposal to the feature flag created by + // BulkUpdateProposalRolloutPercentages on the first-deploy path. Idempotent: + // a re-deploy from the same proposal overwrites the flag's percentage rather + // than creating a new flag. + public async setLinkedRolloutFlag({ + featureFlagId, + proposalId, + trafficPercentage, + }: { + featureFlagId: string; + proposalId: string; + trafficPercentage: number; + }) { + await this.db + .update(schema.featureFlags) + .set({ proposalId, trafficPercentage, updatedAt: new Date() }) + .where(eq(schema.featureFlags.id, featureFlagId)); + } + + public async updateRolloutPercentage({ + featureFlagId, + trafficPercentage, + }: { + featureFlagId: string; + trafficPercentage: number; + }) { + await this.db + .update(schema.featureFlags) + .set({ trafficPercentage, updatedAt: new Date() }) + .where(eq(schema.featureFlags.id, featureFlagId)); + } } diff --git a/controlplane/src/db/schema.ts b/controlplane/src/db/schema.ts index 80d68dd9cf..d7fa3b4447 100644 --- a/controlplane/src/db/schema.ts +++ b/controlplane/src/db/schema.ts @@ -1,6 +1,8 @@ import { relations, sql } from 'drizzle-orm'; import { + AnyPgColumn, boolean, + check, integer, bigint, pgEnum, @@ -326,6 +328,17 @@ export const featureFlags = pgTable( }), labels: text('labels').array(), isEnabled: boolean('is_enabled').default(false).notNull(), + // Percentage of unpinned traffic to route to this flag's variant. + // null → preview-only flag (header/cookie-pinned). + // 0..100 → rollout flag, header pins ignored. + trafficPercentage: integer('traffic_percentage'), + // When the flag was created from a proposal's "Deploy as rollout" action, + // this links back so the UI can navigate proposal ↔ rollout, and so the + // proposal state-transition handler can auto-teardown on PUBLISHED. + // ON DELETE CASCADE: deleting a proposal also deletes its rollout flag, so + // we never leave an orphaned flag routing traffic against a vanished + // proposal. Forward reference to the `proposals` table defined later. + proposalId: uuid('proposal_id').references((): AnyPgColumn => proposals.id, { onDelete: 'cascade' }), createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(), updatedAt: timestamp('updated_at', { withTimezone: true }), createdBy: uuid('created_by').references(() => users.id, { @@ -337,6 +350,18 @@ export const featureFlags = pgTable( organizationIdIndex: index('ff_organization_id_idx').on(t.organizationId), namespaceIdIndex: index('ff_namespace_id_idx').on(t.namespaceId), createdByIndex: index('ff_created_by_idx').on(t.createdBy), + proposalIdIndex: index('ff_proposal_id_idx').on(t.proposalId), + // At most one rollout flag per proposal — keeps getLinkedRolloutFlag's + // LIMIT 1 deterministic and prevents race-introduced duplicates. + proposalIdUnique: uniqueIndex('ff_proposal_id_uniq_idx') + .on(t.proposalId) + .where(sql`${t.proposalId} IS NOT NULL`), + // Mirror the DB CHECK from migration 0137: percentage is null + // (preview-only flag) or in [0, 100] (rollout flag). + trafficPercentageRange: check( + 'feature_flags_traffic_percentage_range_chk', + sql`${t.trafficPercentage} IS NULL OR (${t.trafficPercentage} BETWEEN 0 AND 100)`, + ), }; }, ); diff --git a/controlplane/test/composition/rewriteOverrideTargets.test.ts b/controlplane/test/composition/rewriteOverrideTargets.test.ts new file mode 100644 index 0000000000..88989105ed --- /dev/null +++ b/controlplane/test/composition/rewriteOverrideTargets.test.ts @@ -0,0 +1,125 @@ +import { describe, expect, test } from 'vitest'; +import { rewriteOverrideTargets } from '../../src/core/composition/rewriteOverrideTargets.js'; + +describe('rewriteOverrideTargets', () => { + test('rewrites a single override target', () => { + const sdl = ` + type Employee @key(fields: "id") { + id: ID! + notes: String @override(from: "employees") + } + `; + const result = rewriteOverrideTargets(sdl, new Map([['employees', 'p-16/a1__employees__rollout']])); + + expect(result).not.toBe(sdl); + expect(result).toContain('@override(from: "p-16/a1__employees__rollout")'); + expect(result).not.toContain('@override(from: "employees")'); + }); + + test('rewrites multiple overrides on the same type, mixing matching and non-matching targets', () => { + const sdl = ` + type Employee @key(fields: "id") { + id: ID! + notes: String @override(from: "employees") + salary: Int @override(from: "payroll") + } + `; + const result = rewriteOverrideTargets(sdl, new Map([['employees', 'employees__rollout']])); + + expect(result).toContain('@override(from: "employees__rollout")'); + // payroll wasn't in the replacements map and must be left intact + expect(result).toContain('@override(from: "payroll")'); + }); + + test('returns the input unchanged when no override targets match the replacements', () => { + const sdl = ` + type Employee @key(fields: "id") { + id: ID! + notes: String @override(from: "payroll") + } + `; + const result = rewriteOverrideTargets(sdl, new Map([['employees', 'employees__rollout']])); + + // Referential equality is part of the contract — callers depend on it + // to skip cloning the surrounding DTO when nothing changed. + expect(result).toBe(sdl); + }); + + test('returns the input unchanged when replacements is empty', () => { + const sdl = ` + type Employee @key(fields: "id") { + id: ID! + notes: String @override(from: "employees") + } + `; + const result = rewriteOverrideTargets(sdl, new Map()); + + expect(result).toBe(sdl); + }); + + test('returns the input unchanged when SDL contains no @override at all', () => { + const sdl = ` + type Query { + hello: String! + } + `; + const result = rewriteOverrideTargets(sdl, new Map([['employees', 'employees__rollout']])); + + expect(result).toBe(sdl); + }); + + test('leaves @override with a non-string `from` argument alone', () => { + // Federation requires `from` to be a string literal; this is purely a + // defensive case to ensure we don't crash on weird SDL. + const sdl = ` + type Employee @key(fields: "id") { + id: ID! + notes: String @override(from: 42) + } + `; + // SDL with a non-string arg fails GraphQL parsing strictly, but if a + // future variant of @override permitted other types we shouldn't crash — + // assert the helper short-circuits to the input on parse failure. + const result = rewriteOverrideTargets(sdl, new Map([['employees', 'employees__rollout']])); + expect(result).toBe(sdl); + }); + + test('rewrites multiple replacements in one pass', () => { + const sdl = ` + type Employee @key(fields: "id") { + id: ID! + notes: String @override(from: "employees") + } + type Product @key(fields: "upc") { + upc: ID! + price: Int @override(from: "products") + } + `; + const result = rewriteOverrideTargets( + sdl, + new Map([ + ['employees', 'employees__rollout'], + ['products', 'products__rollout'], + ]), + ); + + expect(result).toContain('@override(from: "employees__rollout")'); + expect(result).toContain('@override(from: "products__rollout")'); + expect(result).not.toContain('@override(from: "employees")'); + expect(result).not.toContain('@override(from: "products")'); + }); + + test('ignores directives named `override` that are not the federation directive (no `from` argument)', () => { + // Edge case: a custom directive that happens to be called `override`. + // We only rewrite when there's a `from:` arg matching a replacement key, + // so a no-arg call is left alone. + const sdl = ` + directive @override on FIELD_DEFINITION + type Query { + hello: String! @override + } + `; + const result = rewriteOverrideTargets(sdl, new Map([['employees', 'employees__rollout']])); + expect(result).toBe(sdl); + }); +}); diff --git a/controlplane/test/proposal/caching-rollout.test.ts b/controlplane/test/proposal/caching-rollout.test.ts new file mode 100644 index 0000000000..a8a35d2dc4 --- /dev/null +++ b/controlplane/test/proposal/caching-rollout.test.ts @@ -0,0 +1,483 @@ +import { PromiseClient } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { PlatformService } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_connect'; +import { ProposalNamingConvention, ProposalOrigin } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { joinLabel } from '@wundergraph/cosmo-shared'; +import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, onTestFinished, test, vi } from 'vitest'; +import { ClickHouseClient } from '../../src/core/clickhouse/index.js'; +import { afterAllSetup, beforeAllSetup, genID, genUniqueLabel } from '../../src/core/test-util.js'; +import { + createFederatedGraph, + createThenPublishSubgraph, + DEFAULT_NAMESPACE, + DEFAULT_ROUTER_URL, + DEFAULT_SUBGRAPH_URL_ONE, + SetupTest, +} from '../test-util.js'; + +let dbname = ''; + +vi.mock('../../src/core/clickhouse/index.js', () => { + const ClickHouseClient = vi.fn(); + ClickHouseClient.prototype.queryPromise = vi.fn(); + return { ClickHouseClient }; +}); + +type Client = PromiseClient; + +function enableProposalsForNamespace(client: Client, namespace = DEFAULT_NAMESPACE) { + return client.enableProposalsForNamespace({ namespace, enableProposals: true }); +} + +async function setupGraphAndCachingProposal(client: Client, opts: { name: string; subgraphPrefix?: string }) { + const subgraphName = genID(opts.subgraphPrefix ?? 'cache_subgraph'); + const fedGraphName = genID('cache_fedgraph'); + const label = genUniqueLabel('label'); + + const baseSDL = ` + type Query { hello: String! } + `; + + await createThenPublishSubgraph(client, subgraphName, DEFAULT_NAMESPACE, baseSDL, [label], DEFAULT_SUBGRAPH_URL_ONE); + + await createFederatedGraph(client, fedGraphName, DEFAULT_NAMESPACE, [joinLabel(label)], DEFAULT_ROUTER_URL); + await enableProposalsForNamespace(client); + + // Caching proposals tweak cache directives but leave the external SDL shape + // unchanged. The real mechanism (e.g. @entityCache(ttl:)) lives in subgraph + // schemas in prod; here we just need a valid SDL that composes. + const tunedSDL = ` + type Query { hello: String! } + `; + + const create = await client.createProposal({ + federatedGraphName: fedGraphName, + namespace: DEFAULT_NAMESPACE, + name: opts.name, + namingConvention: ProposalNamingConvention.NORMAL, + origin: ProposalOrigin.INTERNAL, + subgraphs: [ + { + name: subgraphName, + schemaSDL: tunedSDL, + isDeleted: false, + isNew: false, + labels: [], + }, + ], + }); + + return { create, subgraphName, fedGraphName }; +} + +async function approveProposal(client: Client, opts: { proposalName: string; federatedGraphName: string }) { + const upd = await client.updateProposal({ + proposalName: opts.proposalName, + federatedGraphName: opts.federatedGraphName, + namespace: DEFAULT_NAMESPACE, + updateAction: { case: 'state', value: 'APPROVED' }, + }); + expect(upd.response?.code).toBe(EnumStatusCode.OK); +} + +describe('Caching proposal kind + rollout RPCs', () => { + let chClient: ClickHouseClient; + + beforeEach(() => { + chClient = new ClickHouseClient(); + }); + + afterEach(() => { + vi.clearAllMocks(); + }); + + beforeAll(async () => { + dbname = await beforeAllSetup(); + }); + + afterAll(async () => { + await afterAllSetup(dbname); + }); + + test('proposal kind is persisted and returned', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + const proposalName = genID('proposal'); + const { create } = await setupGraphAndCachingProposal(client, { name: proposalName }); + expect(create.response?.code).toBe(EnumStatusCode.OK); + + const getResp = await client.getProposal({ proposalId: create.proposalId }); + expect(getResp.response?.code).toBe(EnumStatusCode.OK); + // No deploy yet → rollout fields should be absent. + expect(getResp.proposal?.rolloutFeatureFlagId).toBeFalsy(); + expect(getResp.proposal?.rolloutPercentage).toBeFalsy(); + }); + + test('BulkUpdateProposalRolloutPercentages rejects unknown proposal id', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + const resp = await client.bulkUpdateProposalRolloutPercentages({ + items: [{ proposalId: '00000000-0000-0000-0000-000000000000', percentage: 25 }], + }); + expect(resp.response?.code).toBe(EnumStatusCode.ERR_NOT_FOUND); + }); + + test('BulkUpdateProposalRolloutPercentages rejects DRAFT proposal on first deploy', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + const proposalName = genID('proposal'); + const { create } = await setupGraphAndCachingProposal(client, { name: proposalName }); + expect(create.response?.code).toBe(EnumStatusCode.OK); + + // Proposal is DRAFT by default — first-deploy path requires APPROVED. + const resp = await client.bulkUpdateProposalRolloutPercentages({ + items: [{ proposalId: create.proposalId, percentage: 10 }], + }); + expect(resp.response?.code).toBe(EnumStatusCode.ERR); + expect(resp.response?.details).toContain('APPROVED'); + }); + + test('BulkUpdateProposalRolloutPercentages rejects out-of-range percentage', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + const proposalName = genID('proposal'); + const { create } = await setupGraphAndCachingProposal(client, { name: proposalName }); + expect(create.response?.code).toBe(EnumStatusCode.OK); + + const resp = await client.bulkUpdateProposalRolloutPercentages({ + items: [{ proposalId: create.proposalId, percentage: 150 }], + }); + expect(resp.response?.code).toBe(EnumStatusCode.ERR); + expect(resp.response?.details).toContain('[0, 100]'); + }); + + test('BulkUpdateProposalRolloutPercentages rejects negative percentage', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + const proposalName = genID('proposal'); + const { create } = await setupGraphAndCachingProposal(client, { name: proposalName }); + expect(create.response?.code).toBe(EnumStatusCode.OK); + + const resp = await client.bulkUpdateProposalRolloutPercentages({ + items: [{ proposalId: create.proposalId, percentage: -5 }], + }); + expect(resp.response?.code).toBe(EnumStatusCode.ERR); + expect(resp.response?.details).toContain('[0, 100]'); + }); + + test('BulkUpdateProposalRolloutPercentages rejects duplicate proposalId in batch', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + const proposalName = genID('proposal'); + const { create, fedGraphName } = await setupGraphAndCachingProposal(client, { name: proposalName }); + expect(create.response?.code).toBe(EnumStatusCode.OK); + await approveProposal(client, { proposalName, federatedGraphName: fedGraphName }); + + const resp = await client.bulkUpdateProposalRolloutPercentages({ + items: [ + { proposalId: create.proposalId, percentage: 10 }, + { proposalId: create.proposalId, percentage: 90 }, + ], + }); + expect(resp.response?.code).toBe(EnumStatusCode.ERR); + expect(resp.response?.details).toContain('duplicate'); + }); + + test('happy path: APPROVED proposal first deploy creates rollout flag and links it', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + const proposalName = genID('proposal'); + const { create, fedGraphName } = await setupGraphAndCachingProposal(client, { name: proposalName }); + expect(create.response?.code).toBe(EnumStatusCode.OK); + await approveProposal(client, { proposalName, federatedGraphName: fedGraphName }); + + const resp = await client.bulkUpdateProposalRolloutPercentages({ + items: [{ proposalId: create.proposalId, percentage: 25 }], + }); + expect(resp.response?.code).toBe(EnumStatusCode.OK); + expect(resp.items).toHaveLength(1); + expect(resp.items[0].percentage).toBe(25); + + const getResp = await client.getProposal({ proposalId: create.proposalId }); + expect(getResp.proposal?.rolloutFeatureFlagId).toBeTruthy(); + expect(getResp.proposal?.rolloutPercentage).toBe(25); + }); + + test('happy path: re-deploy updates percentage without creating a new flag', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + const proposalName = genID('proposal'); + const { create, fedGraphName } = await setupGraphAndCachingProposal(client, { name: proposalName }); + expect(create.response?.code).toBe(EnumStatusCode.OK); + await approveProposal(client, { proposalName, federatedGraphName: fedGraphName }); + + const first = await client.bulkUpdateProposalRolloutPercentages({ + items: [{ proposalId: create.proposalId, percentage: 10 }], + }); + expect(first.response?.code).toBe(EnumStatusCode.OK); + const flagIdAfterFirst = (await client.getProposal({ proposalId: create.proposalId })).proposal + ?.rolloutFeatureFlagId; + expect(flagIdAfterFirst).toBeTruthy(); + + const second = await client.bulkUpdateProposalRolloutPercentages({ + items: [{ proposalId: create.proposalId, percentage: 75 }], + }); + expect(second.response?.code).toBe(EnumStatusCode.OK); + const after = await client.getProposal({ proposalId: create.proposalId }); + expect(after.proposal?.rolloutFeatureFlagId).toBe(flagIdAfterFirst); + expect(after.proposal?.rolloutPercentage).toBe(75); + }); + + test('cumulative >100 across siblings on the same federated graph is rejected', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + // Setup ONE federated graph + ONE base subgraph, then two proposals on it. + const subgraphName = genID('cache_subgraph'); + const fedGraphName = genID('cache_fedgraph'); + const label = genUniqueLabel('label'); + const sdl = 'type Query { hello: String! }'; + + await createThenPublishSubgraph(client, subgraphName, DEFAULT_NAMESPACE, sdl, [label], DEFAULT_SUBGRAPH_URL_ONE); + await createFederatedGraph(client, fedGraphName, DEFAULT_NAMESPACE, [joinLabel(label)], DEFAULT_ROUTER_URL); + await enableProposalsForNamespace(client); + + const proposalAName = genID('proposalA'); + const proposalBName = genID('proposalB'); + + const createA = await client.createProposal({ + federatedGraphName: fedGraphName, + namespace: DEFAULT_NAMESPACE, + name: proposalAName, + namingConvention: ProposalNamingConvention.NORMAL, + origin: ProposalOrigin.INTERNAL, + subgraphs: [{ name: subgraphName, schemaSDL: sdl, isDeleted: false, isNew: false, labels: [] }], + }); + expect(createA.response?.code).toBe(EnumStatusCode.OK); + const createB = await client.createProposal({ + federatedGraphName: fedGraphName, + namespace: DEFAULT_NAMESPACE, + name: proposalBName, + namingConvention: ProposalNamingConvention.NORMAL, + origin: ProposalOrigin.INTERNAL, + subgraphs: [{ name: subgraphName, schemaSDL: sdl, isDeleted: false, isNew: false, labels: [] }], + }); + expect(createB.response?.code).toBe(EnumStatusCode.OK); + + await approveProposal(client, { proposalName: proposalAName, federatedGraphName: fedGraphName }); + await approveProposal(client, { proposalName: proposalBName, federatedGraphName: fedGraphName }); + + // First batch deploys both at 60 + 41 = 101 — over budget, rejected. + const overBudget = await client.bulkUpdateProposalRolloutPercentages({ + items: [ + { proposalId: createA.proposalId, percentage: 60 }, + { proposalId: createB.proposalId, percentage: 41 }, + ], + }); + expect(overBudget.response?.code).toBe(EnumStatusCode.ERR); + expect(overBudget.response?.details).toContain('exceeding 100'); + + // Same total at 100 — accepted. + const ok = await client.bulkUpdateProposalRolloutPercentages({ + items: [ + { proposalId: createA.proposalId, percentage: 60 }, + { proposalId: createB.proposalId, percentage: 40 }, + ], + }); + expect(ok.response?.code).toBe(EnumStatusCode.OK); + }); + + test('multi-graph batch is rejected', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + // Set up two independent federated graphs in the same namespace BEFORE + // enabling proposals — once proposals are enabled, every subsequent + // publish must match an approved proposal, which would block the second + // graph's setup. + const subgraphA = genID('cache_subgraph_a'); + const fedA = genID('cache_fedgraph_a'); + const labelA = genUniqueLabel('label_a'); + const subgraphB = genID('cache_subgraph_b'); + const fedB = genID('cache_fedgraph_b'); + const labelB = genUniqueLabel('label_b'); + const sdl = 'type Query { hello: String! }'; + + await createThenPublishSubgraph(client, subgraphA, DEFAULT_NAMESPACE, sdl, [labelA], DEFAULT_SUBGRAPH_URL_ONE); + await createFederatedGraph(client, fedA, DEFAULT_NAMESPACE, [joinLabel(labelA)], DEFAULT_ROUTER_URL); + await createThenPublishSubgraph(client, subgraphB, DEFAULT_NAMESPACE, sdl, [labelB], DEFAULT_SUBGRAPH_URL_ONE); + await createFederatedGraph(client, fedB, DEFAULT_NAMESPACE, [joinLabel(labelB)], DEFAULT_ROUTER_URL); + + await enableProposalsForNamespace(client); + + const proposalAName = genID('proposalA'); + const proposalBName = genID('proposalB'); + + const createA = await client.createProposal({ + federatedGraphName: fedA, + namespace: DEFAULT_NAMESPACE, + name: proposalAName, + namingConvention: ProposalNamingConvention.NORMAL, + origin: ProposalOrigin.INTERNAL, + subgraphs: [{ name: subgraphA, schemaSDL: sdl, isDeleted: false, isNew: false, labels: [] }], + }); + expect(createA.response?.code).toBe(EnumStatusCode.OK); + const createB = await client.createProposal({ + federatedGraphName: fedB, + namespace: DEFAULT_NAMESPACE, + name: proposalBName, + namingConvention: ProposalNamingConvention.NORMAL, + origin: ProposalOrigin.INTERNAL, + subgraphs: [{ name: subgraphB, schemaSDL: sdl, isDeleted: false, isNew: false, labels: [] }], + }); + expect(createB.response?.code).toBe(EnumStatusCode.OK); + + // Both proposals are DRAFT — the per-item DRAFT-rejection runs before the + // multi-graph aggregation, so we'd see ERR either way. The point of this + // test is that a multi-graph batch never reaches the deploy path. + const resp = await client.bulkUpdateProposalRolloutPercentages({ + items: [ + { proposalId: createA.proposalId, percentage: 10 }, + { proposalId: createB.proposalId, percentage: 10 }, + ], + }); + expect(resp.response?.code).toBe(EnumStatusCode.ERR); + }); + + test('TeardownProposalRollout is idempotent when no rollout exists', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + const proposalName = genID('proposal'); + const { create } = await setupGraphAndCachingProposal(client, { name: proposalName }); + expect(create.response?.code).toBe(EnumStatusCode.OK); + + const teardown = await client.teardownProposalRollout({ proposalId: create.proposalId }); + expect(teardown.response?.code).toBe(EnumStatusCode.OK); + }); + + test('TeardownProposalRollout deletes the linked flag after a deploy', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + const proposalName = genID('proposal'); + const { create, fedGraphName } = await setupGraphAndCachingProposal(client, { name: proposalName }); + expect(create.response?.code).toBe(EnumStatusCode.OK); + await approveProposal(client, { proposalName, federatedGraphName: fedGraphName }); + + const deploy = await client.bulkUpdateProposalRolloutPercentages({ + items: [{ proposalId: create.proposalId, percentage: 30 }], + }); + expect(deploy.response?.code).toBe(EnumStatusCode.OK); + const beforeTeardown = await client.getProposal({ proposalId: create.proposalId }); + expect(beforeTeardown.proposal?.rolloutFeatureFlagId).toBeTruthy(); + + const teardown = await client.teardownProposalRollout({ proposalId: create.proposalId }); + expect(teardown.response?.code).toBe(EnumStatusCode.OK); + + const afterTeardown = await client.getProposal({ proposalId: create.proposalId }); + expect(afterTeardown.proposal?.rolloutFeatureFlagId).toBeFalsy(); + expect(afterTeardown.proposal?.rolloutPercentage).toBeFalsy(); + }); + + test('PUBLISHED transition auto-tears down the rollout', async () => { + const { client, server } = await SetupTest({ + dbname, + chClient, + setupBilling: { plan: 'enterprise' }, + enabledFeatures: ['proposals'], + }); + onTestFinished(() => server.close()); + + const proposalName = genID('proposal'); + const { create, fedGraphName } = await setupGraphAndCachingProposal(client, { name: proposalName }); + expect(create.response?.code).toBe(EnumStatusCode.OK); + await approveProposal(client, { proposalName, federatedGraphName: fedGraphName }); + + const deploy = await client.bulkUpdateProposalRolloutPercentages({ + items: [{ proposalId: create.proposalId, percentage: 50 }], + }); + expect(deploy.response?.code).toBe(EnumStatusCode.OK); + const beforePublish = await client.getProposal({ proposalId: create.proposalId }); + expect(beforePublish.proposal?.rolloutFeatureFlagId).toBeTruthy(); + + const publish = await client.updateProposal({ + proposalName, + federatedGraphName: fedGraphName, + namespace: DEFAULT_NAMESPACE, + updateAction: { case: 'state', value: 'PUBLISHED' }, + }); + expect(publish.response?.code).toBe(EnumStatusCode.OK); + + const afterPublish = await client.getProposal({ proposalId: create.proposalId }); + expect(afterPublish.proposal?.rolloutFeatureFlagId).toBeFalsy(); + }); +}); diff --git a/controlplane/test/test-util.ts b/controlplane/test/test-util.ts index 881ffc888f..7f0fdff08c 100644 --- a/controlplane/test/test-util.ts +++ b/controlplane/test/test-util.ts @@ -444,11 +444,28 @@ export const SetupKeycloak = async ({ } } - return addKeycloakUser({ - keycloakClient, - userTestData, - realmName, - }); + // Keycloak's admin API occasionally returns "Realm not found" immediately + // after a successful realm.create (or 409) under parallel test load — + // a brief realm-cache race in keycloak. Retry a few times with backoff + // before giving up so true failures still surface. + let lastError: any; + for (let attempt = 0; attempt < 3; attempt++) { + try { + return await addKeycloakUser({ + keycloakClient, + userTestData, + realmName, + }); + } catch (e: any) { + lastError = e; + if (typeof e?.message === 'string' && e.message.includes('Realm not found')) { + await new Promise((resolve) => setTimeout(resolve, 250 * (attempt + 1))); + continue; + } + throw e; + } + } + throw lastError; }; export async function createOrganizationGroup( diff --git a/proto/wg/cosmo/node/v1/node.proto b/proto/wg/cosmo/node/v1/node.proto index f9d2d6d1ed..41720e06ed 100644 --- a/proto/wg/cosmo/node/v1/node.proto +++ b/proto/wg/cosmo/node/v1/node.proto @@ -18,6 +18,15 @@ message FeatureFlagRouterExecutionConfig { EngineConfiguration engine_config = 1; string version = 2; repeated Subgraph subgraphs = 3; + // Optional traffic percentage in [0, 100] for percentage-based rollouts. + // When set, the flag is reachable only via the rollout selector and + // header/cookie pins targeting it are ignored. + // + // The `optional` is load-bearing: explicit `0` means a paused rollout (no + // traffic, but still part of the cumulative budget), which is distinct from + // unset (preview-only flag, header/cookie-pinned). Do not drop `optional` — + // proto3 presence is the only way to tell the two apart. + optional uint32 traffic_percentage = 4; } message RouterConfig { diff --git a/proto/wg/cosmo/platform/v1/platform.proto b/proto/wg/cosmo/platform/v1/platform.proto index 9a31fa2d2a..d1be60a9c8 100644 --- a/proto/wg/cosmo/platform/v1/platform.proto +++ b/proto/wg/cosmo/platform/v1/platform.proto @@ -2864,6 +2864,11 @@ message Proposal { bool latestCheckSuccess = 9; string latestCheckId = 10; ProposalOrigin origin = 11; + // Set when a proposal has been deployed as a rollout. Points back to the + // feature flag created by BulkUpdateProposalRolloutPercentages. + optional string rolloutFeatureFlagId = 13; + // Current traffic % of the linked rollout (mirrors feature_flags.traffic_percentage). + optional uint32 rolloutPercentage = 14; } message ProposalSubgraph { @@ -2879,6 +2884,44 @@ enum ProposalOrigin { EXTERNAL = 1; } +// Atomic create-or-update of rollout percentages across one or more proposals +// on the same federated graph. For proposals without a linked rollout flag, +// the handler creates feature subgraphs + a feature flag and links them +// (deploy semantics). For proposals already rolled out, only the percentage +// is updated. +// +// Why bulk: the router falls all unpinned traffic back to base when cumulative +// traffic_percentage > 100 (router/core/feature_flag_rollout.go), so adjusting +// one branch in isolation can silently break sibling rollouts. Doing all +// changes in one call gives atomic budget enforcement and collapses N +// composeAndDeployGraphs invocations into a single composition + CDN push +// (one router config reload, not N). +message BulkUpdateProposalRolloutPercentagesRequest { + message Item { + string proposalId = 1; + uint32 percentage = 2; + } + repeated Item items = 1; +} + +message BulkUpdateProposalRolloutPercentagesItemResult { + string proposalId = 1; + uint32 percentage = 2; +} + +message BulkUpdateProposalRolloutPercentagesResponse { + Response response = 1; + repeated BulkUpdateProposalRolloutPercentagesItemResult items = 2; +} + +message TeardownProposalRolloutRequest { + string proposalId = 1; +} + +message TeardownProposalRolloutResponse { + Response response = 1; +} + enum ProposalNamingConvention { NORMAL = 0; INCREMENTAL = 1; @@ -3594,6 +3637,16 @@ service PlatformService { rpc GetProposalsByFederatedGraph(GetProposalsByFederatedGraphRequest) returns (GetProposalsByFederatedGraphResponse) {} // GetProposalChecks returns checks for a proposal. rpc GetProposalChecks(GetProposalChecksRequest) returns (GetProposalChecksResponse) {} + // BulkUpdateProposalRolloutPercentages atomically creates or updates rollout + // percentages across one or more proposals on the same federated graph. For + // proposals without an existing rollout, the handler creates feature subgraphs + // and a feature flag linked to the proposal (deploy semantics). For proposals + // already rolled out, only the percentage is updated. Single transaction + + // single composeAndDeployGraphs; sibling rollouts not in the batch keep their + // stored percentages. + rpc BulkUpdateProposalRolloutPercentages(BulkUpdateProposalRolloutPercentagesRequest) returns (BulkUpdateProposalRolloutPercentagesResponse) {} + // TeardownProposalRollout deletes the linked feature flag and feature subgraphs. + rpc TeardownProposalRollout(TeardownProposalRolloutRequest) returns (TeardownProposalRolloutResponse) {} // GetOperations returns the operations of a federated graph. rpc GetOperations(GetOperationsRequest) returns (GetOperationsResponse) {} // GetClientsFromAnalytics returns all the clients of the federated graph from the analytics diff --git a/router/gen/proto/wg/cosmo/node/v1/node.pb.go b/router/gen/proto/wg/cosmo/node/v1/node.pb.go index 380577187f..12614d5168 100644 --- a/router/gen/proto/wg/cosmo/node/v1/node.pb.go +++ b/router/gen/proto/wg/cosmo/node/v1/node.pb.go @@ -533,12 +533,21 @@ func (x *FeatureFlagRouterExecutionConfigs) GetConfigByFeatureFlagName() map[str } type FeatureFlagRouterExecutionConfig struct { - state protoimpl.MessageState `protogen:"open.v1"` - EngineConfig *EngineConfiguration `protobuf:"bytes,1,opt,name=engine_config,json=engineConfig,proto3" json:"engine_config,omitempty"` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` - Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + EngineConfig *EngineConfiguration `protobuf:"bytes,1,opt,name=engine_config,json=engineConfig,proto3" json:"engine_config,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Subgraphs []*Subgraph `protobuf:"bytes,3,rep,name=subgraphs,proto3" json:"subgraphs,omitempty"` + // Optional traffic percentage in [0, 100] for percentage-based rollouts. + // When set, the flag is reachable only via the rollout selector and + // header/cookie pins targeting it are ignored. + // + // The `optional` is load-bearing: explicit `0` means a paused rollout (no + // traffic, but still part of the cumulative budget), which is distinct from + // unset (preview-only flag, header/cookie-pinned). Do not drop `optional` — + // proto3 presence is the only way to tell the two apart. + TrafficPercentage *uint32 `protobuf:"varint,4,opt,name=traffic_percentage,json=trafficPercentage,proto3,oneof" json:"traffic_percentage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FeatureFlagRouterExecutionConfig) Reset() { @@ -592,6 +601,13 @@ func (x *FeatureFlagRouterExecutionConfig) GetSubgraphs() []*Subgraph { return nil } +func (x *FeatureFlagRouterExecutionConfig) GetTrafficPercentage() uint32 { + if x != nil && x.TrafficPercentage != nil { + return *x.TrafficPercentage + } + return 0 +} + type RouterConfig struct { state protoimpl.MessageState `protogen:"open.v1"` EngineConfig *EngineConfiguration `protobuf:"bytes,1,opt,name=engine_config,json=engineConfig,proto3" json:"engine_config,omitempty"` @@ -5146,11 +5162,13 @@ const file_wg_cosmo_node_v1_node_proto_rawDesc = "" + "\x1bconfig_by_feature_flag_name\x18\x01 \x03(\v2P.wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigs.ConfigByFeatureFlagNameEntryR\x17configByFeatureFlagName\x1a~\n" + "\x1cConfigByFeatureFlagNameEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12H\n" + - "\x05value\x18\x02 \x01(\v22.wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigR\x05value:\x028\x01\"\xc2\x01\n" + + "\x05value\x18\x02 \x01(\v22.wg.cosmo.node.v1.FeatureFlagRouterExecutionConfigR\x05value:\x028\x01\"\x8d\x02\n" + " FeatureFlagRouterExecutionConfig\x12J\n" + "\rengine_config\x18\x01 \x01(\v2%.wg.cosmo.node.v1.EngineConfigurationR\fengineConfig\x12\x18\n" + "\aversion\x18\x02 \x01(\tR\aversion\x128\n" + - "\tsubgraphs\x18\x03 \x03(\v2\x1a.wg.cosmo.node.v1.SubgraphR\tsubgraphs\"\xe8\x02\n" + + "\tsubgraphs\x18\x03 \x03(\v2\x1a.wg.cosmo.node.v1.SubgraphR\tsubgraphs\x122\n" + + "\x12traffic_percentage\x18\x04 \x01(\rH\x00R\x11trafficPercentage\x88\x01\x01B\x15\n" + + "\x13_traffic_percentage\"\xe8\x02\n" + "\fRouterConfig\x12J\n" + "\rengine_config\x18\x01 \x01(\v2%.wg.cosmo.node.v1.EngineConfigurationR\fengineConfig\x12\x18\n" + "\aversion\x18\x02 \x01(\tR\aversion\x128\n" + @@ -5805,6 +5823,7 @@ func file_wg_cosmo_node_v1_node_proto_init() { if File_wg_cosmo_node_v1_node_proto != nil { return } + file_wg_cosmo_node_v1_node_proto_msgTypes[2].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[3].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[4].OneofWrappers = []any{} file_wg_cosmo_node_v1_node_proto_msgTypes[9].OneofWrappers = []any{}