diff --git a/cmd/ninja/cmd/plugin.go b/cmd/ninja/cmd/plugin.go index 6cac8a6..45b4a5e 100644 --- a/cmd/ninja/cmd/plugin.go +++ b/cmd/ninja/cmd/plugin.go @@ -483,7 +483,7 @@ func newPluginStatusCmd() *cobra.Command { continue } for _, p := range gs.Msg.Plugins { - fmt.Printf(" @%s/%s [%s]\n", s.Slug, p.Name, p.Visibility) + fmt.Printf(" @%s/%s [%s]\n", s.Slug, p.Name, core.VisibilityLabel(p.Visibility)) } } return nil diff --git a/go.mod b/go.mod index 082707f..c958475 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module git.dev.alexdunmow.com/block/core -go 1.26 +go 1.26.4 require ( connectrpc.com/connect v1.20.0 diff --git a/internal/api/orchestrator/v1/orchestratorv1connect/plugin_registry.connect.go b/internal/api/orchestrator/v1/orchestratorv1connect/plugin_registry.connect.go index 6ae0adf..d7c29a5 100644 --- a/internal/api/orchestrator/v1/orchestratorv1connect/plugin_registry.connect.go +++ b/internal/api/orchestrator/v1/orchestratorv1connect/plugin_registry.connect.go @@ -66,6 +66,18 @@ const ( // PluginRegistryServiceListCategoriesProcedure is the fully-qualified name of the // PluginRegistryService's ListCategories RPC. PluginRegistryServiceListCategoriesProcedure = "/orchestrator.v1.PluginRegistryService/ListCategories" + // PluginRegistryServiceListPrivatePluginsProcedure is the fully-qualified name of the + // PluginRegistryService's ListPrivatePlugins RPC. + PluginRegistryServiceListPrivatePluginsProcedure = "/orchestrator.v1.PluginRegistryService/ListPrivatePlugins" + // PluginRegistryServiceDeletePrivatePluginProcedure is the fully-qualified name of the + // PluginRegistryService's DeletePrivatePlugin RPC. + PluginRegistryServiceDeletePrivatePluginProcedure = "/orchestrator.v1.PluginRegistryService/DeletePrivatePlugin" + // PluginRegistryServiceDeletePrivatePluginVersionProcedure is the fully-qualified name of the + // PluginRegistryService's DeletePrivatePluginVersion RPC. + PluginRegistryServiceDeletePrivatePluginVersionProcedure = "/orchestrator.v1.PluginRegistryService/DeletePrivatePluginVersion" + // PluginRegistryServiceListPrivatePluginInstallSitesProcedure is the fully-qualified name of the + // PluginRegistryService's ListPrivatePluginInstallSites RPC. + PluginRegistryServiceListPrivatePluginInstallSitesProcedure = "/orchestrator.v1.PluginRegistryService/ListPrivatePluginInstallSites" // PluginPublishServicePublishVersionProcedure is the fully-qualified name of the // PluginPublishService's PublishVersion RPC. PluginPublishServicePublishVersionProcedure = "/orchestrator.v1.PluginPublishService/PublishVersion" @@ -87,6 +99,9 @@ const ( // PluginAuthServiceWhoamiProcedure is the fully-qualified name of the PluginAuthService's Whoami // RPC. PluginAuthServiceWhoamiProcedure = "/orchestrator.v1.PluginAuthService/Whoami" + // PluginAuthServiceListMyAccountsProcedure is the fully-qualified name of the PluginAuthService's + // ListMyAccounts RPC. + PluginAuthServiceListMyAccountsProcedure = "/orchestrator.v1.PluginAuthService/ListMyAccounts" ) // PluginScopeServiceClient is a client for the orchestrator.v1.PluginScopeService service. @@ -219,6 +234,12 @@ type PluginRegistryServiceClient interface { GetVersion(context.Context, *connect.Request[v1.GetVersionRequest]) (*connect.Response[v1.GetVersionResponse], error) ResolveInstall(context.Context, *connect.Request[v1.ResolveInstallRequest]) (*connect.Response[v1.ResolveInstallResponse], error) ListCategories(context.Context, *connect.Request[v1.ListCategoriesRequest]) (*connect.Response[v1.ListCategoriesResponse], error) + // Private-plugin RPCs. All require the caller to be a member of the target + // account; the server resolves account membership from the bearer token. + ListPrivatePlugins(context.Context, *connect.Request[v1.ListPrivatePluginsRequest]) (*connect.Response[v1.ListPrivatePluginsResponse], error) + DeletePrivatePlugin(context.Context, *connect.Request[v1.DeletePrivatePluginRequest]) (*connect.Response[v1.DeletePrivatePluginResponse], error) + DeletePrivatePluginVersion(context.Context, *connect.Request[v1.DeletePrivatePluginVersionRequest]) (*connect.Response[v1.DeletePrivatePluginVersionResponse], error) + ListPrivatePluginInstallSites(context.Context, *connect.Request[v1.ListPrivatePluginInstallSitesRequest]) (*connect.Response[v1.ListPrivatePluginInstallSitesResponse], error) } // NewPluginRegistryServiceClient constructs a client for the orchestrator.v1.PluginRegistryService @@ -268,17 +289,45 @@ func NewPluginRegistryServiceClient(httpClient connect.HTTPClient, baseURL strin connect.WithSchema(pluginRegistryServiceMethods.ByName("ListCategories")), connect.WithClientOptions(opts...), ), + listPrivatePlugins: connect.NewClient[v1.ListPrivatePluginsRequest, v1.ListPrivatePluginsResponse]( + httpClient, + baseURL+PluginRegistryServiceListPrivatePluginsProcedure, + connect.WithSchema(pluginRegistryServiceMethods.ByName("ListPrivatePlugins")), + connect.WithClientOptions(opts...), + ), + deletePrivatePlugin: connect.NewClient[v1.DeletePrivatePluginRequest, v1.DeletePrivatePluginResponse]( + httpClient, + baseURL+PluginRegistryServiceDeletePrivatePluginProcedure, + connect.WithSchema(pluginRegistryServiceMethods.ByName("DeletePrivatePlugin")), + connect.WithClientOptions(opts...), + ), + deletePrivatePluginVersion: connect.NewClient[v1.DeletePrivatePluginVersionRequest, v1.DeletePrivatePluginVersionResponse]( + httpClient, + baseURL+PluginRegistryServiceDeletePrivatePluginVersionProcedure, + connect.WithSchema(pluginRegistryServiceMethods.ByName("DeletePrivatePluginVersion")), + connect.WithClientOptions(opts...), + ), + listPrivatePluginInstallSites: connect.NewClient[v1.ListPrivatePluginInstallSitesRequest, v1.ListPrivatePluginInstallSitesResponse]( + httpClient, + baseURL+PluginRegistryServiceListPrivatePluginInstallSitesProcedure, + connect.WithSchema(pluginRegistryServiceMethods.ByName("ListPrivatePluginInstallSites")), + connect.WithClientOptions(opts...), + ), } } // pluginRegistryServiceClient implements PluginRegistryServiceClient. type pluginRegistryServiceClient struct { - createPlugin *connect.Client[v1.CreatePluginRequest, v1.CreatePluginResponse] - getPlugin *connect.Client[v1.GetPluginRequest, v1.GetPluginResponse] - listPlugins *connect.Client[v1.ListPluginsRequest, v1.ListPluginsResponse] - getVersion *connect.Client[v1.GetVersionRequest, v1.GetVersionResponse] - resolveInstall *connect.Client[v1.ResolveInstallRequest, v1.ResolveInstallResponse] - listCategories *connect.Client[v1.ListCategoriesRequest, v1.ListCategoriesResponse] + createPlugin *connect.Client[v1.CreatePluginRequest, v1.CreatePluginResponse] + getPlugin *connect.Client[v1.GetPluginRequest, v1.GetPluginResponse] + listPlugins *connect.Client[v1.ListPluginsRequest, v1.ListPluginsResponse] + getVersion *connect.Client[v1.GetVersionRequest, v1.GetVersionResponse] + resolveInstall *connect.Client[v1.ResolveInstallRequest, v1.ResolveInstallResponse] + listCategories *connect.Client[v1.ListCategoriesRequest, v1.ListCategoriesResponse] + listPrivatePlugins *connect.Client[v1.ListPrivatePluginsRequest, v1.ListPrivatePluginsResponse] + deletePrivatePlugin *connect.Client[v1.DeletePrivatePluginRequest, v1.DeletePrivatePluginResponse] + deletePrivatePluginVersion *connect.Client[v1.DeletePrivatePluginVersionRequest, v1.DeletePrivatePluginVersionResponse] + listPrivatePluginInstallSites *connect.Client[v1.ListPrivatePluginInstallSitesRequest, v1.ListPrivatePluginInstallSitesResponse] } // CreatePlugin calls orchestrator.v1.PluginRegistryService.CreatePlugin. @@ -311,6 +360,28 @@ func (c *pluginRegistryServiceClient) ListCategories(ctx context.Context, req *c return c.listCategories.CallUnary(ctx, req) } +// ListPrivatePlugins calls orchestrator.v1.PluginRegistryService.ListPrivatePlugins. +func (c *pluginRegistryServiceClient) ListPrivatePlugins(ctx context.Context, req *connect.Request[v1.ListPrivatePluginsRequest]) (*connect.Response[v1.ListPrivatePluginsResponse], error) { + return c.listPrivatePlugins.CallUnary(ctx, req) +} + +// DeletePrivatePlugin calls orchestrator.v1.PluginRegistryService.DeletePrivatePlugin. +func (c *pluginRegistryServiceClient) DeletePrivatePlugin(ctx context.Context, req *connect.Request[v1.DeletePrivatePluginRequest]) (*connect.Response[v1.DeletePrivatePluginResponse], error) { + return c.deletePrivatePlugin.CallUnary(ctx, req) +} + +// DeletePrivatePluginVersion calls +// orchestrator.v1.PluginRegistryService.DeletePrivatePluginVersion. +func (c *pluginRegistryServiceClient) DeletePrivatePluginVersion(ctx context.Context, req *connect.Request[v1.DeletePrivatePluginVersionRequest]) (*connect.Response[v1.DeletePrivatePluginVersionResponse], error) { + return c.deletePrivatePluginVersion.CallUnary(ctx, req) +} + +// ListPrivatePluginInstallSites calls +// orchestrator.v1.PluginRegistryService.ListPrivatePluginInstallSites. +func (c *pluginRegistryServiceClient) ListPrivatePluginInstallSites(ctx context.Context, req *connect.Request[v1.ListPrivatePluginInstallSitesRequest]) (*connect.Response[v1.ListPrivatePluginInstallSitesResponse], error) { + return c.listPrivatePluginInstallSites.CallUnary(ctx, req) +} + // PluginRegistryServiceHandler is an implementation of the orchestrator.v1.PluginRegistryService // service. type PluginRegistryServiceHandler interface { @@ -320,6 +391,12 @@ type PluginRegistryServiceHandler interface { GetVersion(context.Context, *connect.Request[v1.GetVersionRequest]) (*connect.Response[v1.GetVersionResponse], error) ResolveInstall(context.Context, *connect.Request[v1.ResolveInstallRequest]) (*connect.Response[v1.ResolveInstallResponse], error) ListCategories(context.Context, *connect.Request[v1.ListCategoriesRequest]) (*connect.Response[v1.ListCategoriesResponse], error) + // Private-plugin RPCs. All require the caller to be a member of the target + // account; the server resolves account membership from the bearer token. + ListPrivatePlugins(context.Context, *connect.Request[v1.ListPrivatePluginsRequest]) (*connect.Response[v1.ListPrivatePluginsResponse], error) + DeletePrivatePlugin(context.Context, *connect.Request[v1.DeletePrivatePluginRequest]) (*connect.Response[v1.DeletePrivatePluginResponse], error) + DeletePrivatePluginVersion(context.Context, *connect.Request[v1.DeletePrivatePluginVersionRequest]) (*connect.Response[v1.DeletePrivatePluginVersionResponse], error) + ListPrivatePluginInstallSites(context.Context, *connect.Request[v1.ListPrivatePluginInstallSitesRequest]) (*connect.Response[v1.ListPrivatePluginInstallSitesResponse], error) } // NewPluginRegistryServiceHandler builds an HTTP handler from the service implementation. It @@ -365,6 +442,30 @@ func NewPluginRegistryServiceHandler(svc PluginRegistryServiceHandler, opts ...c connect.WithSchema(pluginRegistryServiceMethods.ByName("ListCategories")), connect.WithHandlerOptions(opts...), ) + pluginRegistryServiceListPrivatePluginsHandler := connect.NewUnaryHandler( + PluginRegistryServiceListPrivatePluginsProcedure, + svc.ListPrivatePlugins, + connect.WithSchema(pluginRegistryServiceMethods.ByName("ListPrivatePlugins")), + connect.WithHandlerOptions(opts...), + ) + pluginRegistryServiceDeletePrivatePluginHandler := connect.NewUnaryHandler( + PluginRegistryServiceDeletePrivatePluginProcedure, + svc.DeletePrivatePlugin, + connect.WithSchema(pluginRegistryServiceMethods.ByName("DeletePrivatePlugin")), + connect.WithHandlerOptions(opts...), + ) + pluginRegistryServiceDeletePrivatePluginVersionHandler := connect.NewUnaryHandler( + PluginRegistryServiceDeletePrivatePluginVersionProcedure, + svc.DeletePrivatePluginVersion, + connect.WithSchema(pluginRegistryServiceMethods.ByName("DeletePrivatePluginVersion")), + connect.WithHandlerOptions(opts...), + ) + pluginRegistryServiceListPrivatePluginInstallSitesHandler := connect.NewUnaryHandler( + PluginRegistryServiceListPrivatePluginInstallSitesProcedure, + svc.ListPrivatePluginInstallSites, + connect.WithSchema(pluginRegistryServiceMethods.ByName("ListPrivatePluginInstallSites")), + connect.WithHandlerOptions(opts...), + ) return "/orchestrator.v1.PluginRegistryService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case PluginRegistryServiceCreatePluginProcedure: @@ -379,6 +480,14 @@ func NewPluginRegistryServiceHandler(svc PluginRegistryServiceHandler, opts ...c pluginRegistryServiceResolveInstallHandler.ServeHTTP(w, r) case PluginRegistryServiceListCategoriesProcedure: pluginRegistryServiceListCategoriesHandler.ServeHTTP(w, r) + case PluginRegistryServiceListPrivatePluginsProcedure: + pluginRegistryServiceListPrivatePluginsHandler.ServeHTTP(w, r) + case PluginRegistryServiceDeletePrivatePluginProcedure: + pluginRegistryServiceDeletePrivatePluginHandler.ServeHTTP(w, r) + case PluginRegistryServiceDeletePrivatePluginVersionProcedure: + pluginRegistryServiceDeletePrivatePluginVersionHandler.ServeHTTP(w, r) + case PluginRegistryServiceListPrivatePluginInstallSitesProcedure: + pluginRegistryServiceListPrivatePluginInstallSitesHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -412,6 +521,22 @@ func (UnimplementedPluginRegistryServiceHandler) ListCategories(context.Context, return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginRegistryService.ListCategories is not implemented")) } +func (UnimplementedPluginRegistryServiceHandler) ListPrivatePlugins(context.Context, *connect.Request[v1.ListPrivatePluginsRequest]) (*connect.Response[v1.ListPrivatePluginsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginRegistryService.ListPrivatePlugins is not implemented")) +} + +func (UnimplementedPluginRegistryServiceHandler) DeletePrivatePlugin(context.Context, *connect.Request[v1.DeletePrivatePluginRequest]) (*connect.Response[v1.DeletePrivatePluginResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginRegistryService.DeletePrivatePlugin is not implemented")) +} + +func (UnimplementedPluginRegistryServiceHandler) DeletePrivatePluginVersion(context.Context, *connect.Request[v1.DeletePrivatePluginVersionRequest]) (*connect.Response[v1.DeletePrivatePluginVersionResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginRegistryService.DeletePrivatePluginVersion is not implemented")) +} + +func (UnimplementedPluginRegistryServiceHandler) ListPrivatePluginInstallSites(context.Context, *connect.Request[v1.ListPrivatePluginInstallSitesRequest]) (*connect.Response[v1.ListPrivatePluginInstallSitesResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginRegistryService.ListPrivatePluginInstallSites is not implemented")) +} + // PluginPublishServiceClient is a client for the orchestrator.v1.PluginPublishService service. type PluginPublishServiceClient interface { PublishVersion(context.Context, *connect.Request[v1.PublishVersionRequest]) (*connect.Response[v1.PublishVersionResponse], error) @@ -491,6 +616,10 @@ type PluginAuthServiceClient interface { DenyDevice(context.Context, *connect.Request[v1.DenyDeviceRequest]) (*connect.Response[v1.DenyDeviceResponse], error) GetDeviceStatus(context.Context, *connect.Request[v1.GetDeviceStatusRequest]) (*connect.Response[v1.GetDeviceStatusResponse], error) Whoami(context.Context, *connect.Request[v1.WhoamiRequest]) (*connect.Response[v1.WhoamiResponse], error) + // ListMyAccounts returns the accounts the authenticated user belongs to. + // Used by `ninja login` (forced selection when multiple) and + // `ninja account list`. + ListMyAccounts(context.Context, *connect.Request[v1.ListMyAccountsRequest]) (*connect.Response[v1.ListMyAccountsResponse], error) } // NewPluginAuthServiceClient constructs a client for the orchestrator.v1.PluginAuthService service. @@ -540,6 +669,12 @@ func NewPluginAuthServiceClient(httpClient connect.HTTPClient, baseURL string, o connect.WithSchema(pluginAuthServiceMethods.ByName("Whoami")), connect.WithClientOptions(opts...), ), + listMyAccounts: connect.NewClient[v1.ListMyAccountsRequest, v1.ListMyAccountsResponse]( + httpClient, + baseURL+PluginAuthServiceListMyAccountsProcedure, + connect.WithSchema(pluginAuthServiceMethods.ByName("ListMyAccounts")), + connect.WithClientOptions(opts...), + ), } } @@ -551,6 +686,7 @@ type pluginAuthServiceClient struct { denyDevice *connect.Client[v1.DenyDeviceRequest, v1.DenyDeviceResponse] getDeviceStatus *connect.Client[v1.GetDeviceStatusRequest, v1.GetDeviceStatusResponse] whoami *connect.Client[v1.WhoamiRequest, v1.WhoamiResponse] + listMyAccounts *connect.Client[v1.ListMyAccountsRequest, v1.ListMyAccountsResponse] } // StartDevice calls orchestrator.v1.PluginAuthService.StartDevice. @@ -583,6 +719,11 @@ func (c *pluginAuthServiceClient) Whoami(ctx context.Context, req *connect.Reque return c.whoami.CallUnary(ctx, req) } +// ListMyAccounts calls orchestrator.v1.PluginAuthService.ListMyAccounts. +func (c *pluginAuthServiceClient) ListMyAccounts(ctx context.Context, req *connect.Request[v1.ListMyAccountsRequest]) (*connect.Response[v1.ListMyAccountsResponse], error) { + return c.listMyAccounts.CallUnary(ctx, req) +} + // PluginAuthServiceHandler is an implementation of the orchestrator.v1.PluginAuthService service. type PluginAuthServiceHandler interface { StartDevice(context.Context, *connect.Request[v1.StartDeviceRequest]) (*connect.Response[v1.StartDeviceResponse], error) @@ -591,6 +732,10 @@ type PluginAuthServiceHandler interface { DenyDevice(context.Context, *connect.Request[v1.DenyDeviceRequest]) (*connect.Response[v1.DenyDeviceResponse], error) GetDeviceStatus(context.Context, *connect.Request[v1.GetDeviceStatusRequest]) (*connect.Response[v1.GetDeviceStatusResponse], error) Whoami(context.Context, *connect.Request[v1.WhoamiRequest]) (*connect.Response[v1.WhoamiResponse], error) + // ListMyAccounts returns the accounts the authenticated user belongs to. + // Used by `ninja login` (forced selection when multiple) and + // `ninja account list`. + ListMyAccounts(context.Context, *connect.Request[v1.ListMyAccountsRequest]) (*connect.Response[v1.ListMyAccountsResponse], error) } // NewPluginAuthServiceHandler builds an HTTP handler from the service implementation. It returns @@ -636,6 +781,12 @@ func NewPluginAuthServiceHandler(svc PluginAuthServiceHandler, opts ...connect.H connect.WithSchema(pluginAuthServiceMethods.ByName("Whoami")), connect.WithHandlerOptions(opts...), ) + pluginAuthServiceListMyAccountsHandler := connect.NewUnaryHandler( + PluginAuthServiceListMyAccountsProcedure, + svc.ListMyAccounts, + connect.WithSchema(pluginAuthServiceMethods.ByName("ListMyAccounts")), + connect.WithHandlerOptions(opts...), + ) return "/orchestrator.v1.PluginAuthService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case PluginAuthServiceStartDeviceProcedure: @@ -650,6 +801,8 @@ func NewPluginAuthServiceHandler(svc PluginAuthServiceHandler, opts ...connect.H pluginAuthServiceGetDeviceStatusHandler.ServeHTTP(w, r) case PluginAuthServiceWhoamiProcedure: pluginAuthServiceWhoamiHandler.ServeHTTP(w, r) + case PluginAuthServiceListMyAccountsProcedure: + pluginAuthServiceListMyAccountsHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -682,3 +835,7 @@ func (UnimplementedPluginAuthServiceHandler) GetDeviceStatus(context.Context, *c func (UnimplementedPluginAuthServiceHandler) Whoami(context.Context, *connect.Request[v1.WhoamiRequest]) (*connect.Response[v1.WhoamiResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginAuthService.Whoami is not implemented")) } + +func (UnimplementedPluginAuthServiceHandler) ListMyAccounts(context.Context, *connect.Request[v1.ListMyAccountsRequest]) (*connect.Response[v1.ListMyAccountsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginAuthService.ListMyAccounts is not implemented")) +} diff --git a/internal/api/orchestrator/v1/plugin_registry.pb.go b/internal/api/orchestrator/v1/plugin_registry.pb.go index 3470ec1..627df89 100644 --- a/internal/api/orchestrator/v1/plugin_registry.pb.go +++ b/internal/api/orchestrator/v1/plugin_registry.pb.go @@ -22,6 +22,68 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// PluginVisibility is the lifecycle/access state of a plugin in the registry. +// PRIVATE plugins are scoped to a single account; PUBLIC plugins are visible +// to all. UNDER_REVIEW / REJECTED / TAKEN_DOWN are public-registry moderation +// states and do not apply to private plugins. +type PluginVisibility int32 + +const ( + PluginVisibility_PLUGIN_VISIBILITY_UNSPECIFIED PluginVisibility = 0 + PluginVisibility_PLUGIN_VISIBILITY_PRIVATE PluginVisibility = 1 + PluginVisibility_PLUGIN_VISIBILITY_UNDER_REVIEW PluginVisibility = 2 + PluginVisibility_PLUGIN_VISIBILITY_PUBLIC PluginVisibility = 3 + PluginVisibility_PLUGIN_VISIBILITY_REJECTED PluginVisibility = 4 + PluginVisibility_PLUGIN_VISIBILITY_TAKEN_DOWN PluginVisibility = 5 +) + +// Enum value maps for PluginVisibility. +var ( + PluginVisibility_name = map[int32]string{ + 0: "PLUGIN_VISIBILITY_UNSPECIFIED", + 1: "PLUGIN_VISIBILITY_PRIVATE", + 2: "PLUGIN_VISIBILITY_UNDER_REVIEW", + 3: "PLUGIN_VISIBILITY_PUBLIC", + 4: "PLUGIN_VISIBILITY_REJECTED", + 5: "PLUGIN_VISIBILITY_TAKEN_DOWN", + } + PluginVisibility_value = map[string]int32{ + "PLUGIN_VISIBILITY_UNSPECIFIED": 0, + "PLUGIN_VISIBILITY_PRIVATE": 1, + "PLUGIN_VISIBILITY_UNDER_REVIEW": 2, + "PLUGIN_VISIBILITY_PUBLIC": 3, + "PLUGIN_VISIBILITY_REJECTED": 4, + "PLUGIN_VISIBILITY_TAKEN_DOWN": 5, + } +) + +func (x PluginVisibility) Enum() *PluginVisibility { + p := new(PluginVisibility) + *p = x + return p +} + +func (x PluginVisibility) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PluginVisibility) Descriptor() protoreflect.EnumDescriptor { + return file_orchestrator_v1_plugin_registry_proto_enumTypes[0].Descriptor() +} + +func (PluginVisibility) Type() protoreflect.EnumType { + return &file_orchestrator_v1_plugin_registry_proto_enumTypes[0] +} + +func (x PluginVisibility) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PluginVisibility.Descriptor instead. +func (PluginVisibility) EnumDescriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{0} +} + type Scope struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` @@ -91,20 +153,23 @@ func (x *Scope) GetCreatedAt() *timestamppb.Timestamp { } type Plugin struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - ScopeSlug string `protobuf:"bytes,2,opt,name=scope_slug,json=scopeSlug,proto3" json:"scope_slug,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Visibility string `protobuf:"bytes,4,opt,name=visibility,proto3" json:"visibility,omitempty"` - Premium bool `protobuf:"varint,5,opt,name=premium,proto3" json:"premium,omitempty"` - Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` - HomepageUrl string `protobuf:"bytes,7,opt,name=homepage_url,json=homepageUrl,proto3" json:"homepage_url,omitempty"` - Categories []string `protobuf:"bytes,8,rep,name=categories,proto3" json:"categories,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Kind string `protobuf:"bytes,10,opt,name=kind,proto3" json:"kind,omitempty"` - DisplayName string `protobuf:"bytes,11,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ScopeSlug string `protobuf:"bytes,2,opt,name=scope_slug,json=scopeSlug,proto3" json:"scope_slug,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Visibility PluginVisibility `protobuf:"varint,4,opt,name=visibility,proto3,enum=orchestrator.v1.PluginVisibility" json:"visibility,omitempty"` + Premium bool `protobuf:"varint,5,opt,name=premium,proto3" json:"premium,omitempty"` + Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` + HomepageUrl string `protobuf:"bytes,7,opt,name=homepage_url,json=homepageUrl,proto3" json:"homepage_url,omitempty"` + Categories []string `protobuf:"bytes,8,rep,name=categories,proto3" json:"categories,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Kind string `protobuf:"bytes,10,opt,name=kind,proto3" json:"kind,omitempty"` + DisplayName string `protobuf:"bytes,11,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // owner_account_id is set for private plugins and identifies the account + // that owns the plugin. Empty for public plugins. + OwnerAccountId string `protobuf:"bytes,12,opt,name=owner_account_id,json=ownerAccountId,proto3" json:"owner_account_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Plugin) Reset() { @@ -158,11 +223,11 @@ func (x *Plugin) GetName() string { return "" } -func (x *Plugin) GetVisibility() string { +func (x *Plugin) GetVisibility() PluginVisibility { if x != nil { return x.Visibility } - return "" + return PluginVisibility_PLUGIN_VISIBILITY_UNSPECIFIED } func (x *Plugin) GetPremium() bool { @@ -214,6 +279,84 @@ func (x *Plugin) GetDisplayName() string { return "" } +func (x *Plugin) GetOwnerAccountId() string { + if x != nil { + return x.OwnerAccountId + } + return "" +} + +// Account is a multi-user organisational unit in the orchestrator. The +// authenticated user may belong to one or more accounts via account_users. +type Account struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"` + DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // role of the authenticated caller in this account: owner | manager | member. + Role string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Account) Reset() { + *x = Account{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Account) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Account) ProtoMessage() {} + +func (x *Account) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[2] + 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 Account.ProtoReflect.Descriptor instead. +func (*Account) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{2} +} + +func (x *Account) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Account) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *Account) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *Account) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + type Category struct { state protoimpl.MessageState `protogen:"open.v1"` Slug string `protobuf:"bytes,1,opt,name=slug,proto3" json:"slug,omitempty"` @@ -226,7 +369,7 @@ type Category struct { func (x *Category) Reset() { *x = Category{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[2] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -238,7 +381,7 @@ func (x *Category) String() string { func (*Category) ProtoMessage() {} func (x *Category) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[2] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -251,7 +394,7 @@ func (x *Category) ProtoReflect() protoreflect.Message { // Deprecated: Use Category.ProtoReflect.Descriptor instead. func (*Category) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{2} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{3} } func (x *Category) GetSlug() string { @@ -298,7 +441,7 @@ type Version struct { func (x *Version) Reset() { *x = Version{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[3] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -310,7 +453,7 @@ func (x *Version) String() string { func (*Version) ProtoMessage() {} func (x *Version) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[3] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -323,7 +466,7 @@ func (x *Version) ProtoReflect() protoreflect.Message { // Deprecated: Use Version.ProtoReflect.Descriptor instead. func (*Version) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{3} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{4} } func (x *Version) GetId() string { @@ -393,7 +536,7 @@ type Requirement struct { func (x *Requirement) Reset() { *x = Requirement{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[4] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -405,7 +548,7 @@ func (x *Requirement) String() string { func (*Requirement) ProtoMessage() {} func (x *Requirement) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[4] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -418,7 +561,7 @@ func (x *Requirement) ProtoReflect() protoreflect.Message { // Deprecated: Use Requirement.ProtoReflect.Descriptor instead. func (*Requirement) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{4} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{5} } func (x *Requirement) GetScopeSlug() string { @@ -452,7 +595,7 @@ type CreateScopeRequest struct { func (x *CreateScopeRequest) Reset() { *x = CreateScopeRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[5] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -464,7 +607,7 @@ func (x *CreateScopeRequest) String() string { func (*CreateScopeRequest) ProtoMessage() {} func (x *CreateScopeRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[5] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -477,7 +620,7 @@ func (x *CreateScopeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateScopeRequest.ProtoReflect.Descriptor instead. func (*CreateScopeRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{5} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{6} } func (x *CreateScopeRequest) GetSlug() string { @@ -503,7 +646,7 @@ type CreateScopeResponse struct { func (x *CreateScopeResponse) Reset() { *x = CreateScopeResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[6] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -515,7 +658,7 @@ func (x *CreateScopeResponse) String() string { func (*CreateScopeResponse) ProtoMessage() {} func (x *CreateScopeResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[6] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -528,7 +671,7 @@ func (x *CreateScopeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateScopeResponse.ProtoReflect.Descriptor instead. func (*CreateScopeResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{6} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{7} } func (x *CreateScopeResponse) GetScope() *Scope { @@ -546,7 +689,7 @@ type ListMyScopesRequest struct { func (x *ListMyScopesRequest) Reset() { *x = ListMyScopesRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[7] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -558,7 +701,7 @@ func (x *ListMyScopesRequest) String() string { func (*ListMyScopesRequest) ProtoMessage() {} func (x *ListMyScopesRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[7] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -571,7 +714,7 @@ func (x *ListMyScopesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMyScopesRequest.ProtoReflect.Descriptor instead. func (*ListMyScopesRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{7} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{8} } type ListMyScopesResponse struct { @@ -583,7 +726,7 @@ type ListMyScopesResponse struct { func (x *ListMyScopesResponse) Reset() { *x = ListMyScopesResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[8] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -595,7 +738,7 @@ func (x *ListMyScopesResponse) String() string { func (*ListMyScopesResponse) ProtoMessage() {} func (x *ListMyScopesResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[8] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -608,7 +751,7 @@ func (x *ListMyScopesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMyScopesResponse.ProtoReflect.Descriptor instead. func (*ListMyScopesResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{8} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{9} } func (x *ListMyScopesResponse) GetScopes() []*Scope { @@ -627,7 +770,7 @@ type GetScopeRequest struct { func (x *GetScopeRequest) Reset() { *x = GetScopeRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[9] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -639,7 +782,7 @@ func (x *GetScopeRequest) String() string { func (*GetScopeRequest) ProtoMessage() {} func (x *GetScopeRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[9] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -652,7 +795,7 @@ func (x *GetScopeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScopeRequest.ProtoReflect.Descriptor instead. func (*GetScopeRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{9} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{10} } func (x *GetScopeRequest) GetSlug() string { @@ -672,7 +815,7 @@ type GetScopeResponse struct { func (x *GetScopeResponse) Reset() { *x = GetScopeResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[10] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -684,7 +827,7 @@ func (x *GetScopeResponse) String() string { func (*GetScopeResponse) ProtoMessage() {} func (x *GetScopeResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[10] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -697,7 +840,7 @@ func (x *GetScopeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScopeResponse.ProtoReflect.Descriptor instead. func (*GetScopeResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{10} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{11} } func (x *GetScopeResponse) GetScope() *Scope { @@ -715,20 +858,28 @@ func (x *GetScopeResponse) GetPlugins() []*Plugin { } type CreatePluginRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - ScopeSlug string `protobuf:"bytes,1,opt,name=scope_slug,json=scopeSlug,proto3" json:"scope_slug,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"` - Categories []string `protobuf:"bytes,5,rep,name=categories,proto3" json:"categories,omitempty"` - DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ScopeSlug string `protobuf:"bytes,1,opt,name=scope_slug,json=scopeSlug,proto3" json:"scope_slug,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Kind string `protobuf:"bytes,4,opt,name=kind,proto3" json:"kind,omitempty"` + Categories []string `protobuf:"bytes,5,rep,name=categories,proto3" json:"categories,omitempty"` + DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // visibility is the requested visibility of the plugin. UNSPECIFIED defers + // to the registry's default (public for explicit scopes, private for the + // "@private" sentinel). + Visibility PluginVisibility `protobuf:"varint,7,opt,name=visibility,proto3,enum=orchestrator.v1.PluginVisibility" json:"visibility,omitempty"` + // active_account_id is required when visibility = PRIVATE; the server + // verifies the caller is a member of this account before creating the + // private plugin under it. + ActiveAccountId string `protobuf:"bytes,8,opt,name=active_account_id,json=activeAccountId,proto3" json:"active_account_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreatePluginRequest) Reset() { *x = CreatePluginRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[11] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -740,7 +891,7 @@ func (x *CreatePluginRequest) String() string { func (*CreatePluginRequest) ProtoMessage() {} func (x *CreatePluginRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[11] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -753,7 +904,7 @@ func (x *CreatePluginRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatePluginRequest.ProtoReflect.Descriptor instead. func (*CreatePluginRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{11} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{12} } func (x *CreatePluginRequest) GetScopeSlug() string { @@ -798,6 +949,20 @@ func (x *CreatePluginRequest) GetDisplayName() string { return "" } +func (x *CreatePluginRequest) GetVisibility() PluginVisibility { + if x != nil { + return x.Visibility + } + return PluginVisibility_PLUGIN_VISIBILITY_UNSPECIFIED +} + +func (x *CreatePluginRequest) GetActiveAccountId() string { + if x != nil { + return x.ActiveAccountId + } + return "" +} + type CreatePluginResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Plugin *Plugin `protobuf:"bytes,1,opt,name=plugin,proto3" json:"plugin,omitempty"` @@ -807,7 +972,7 @@ type CreatePluginResponse struct { func (x *CreatePluginResponse) Reset() { *x = CreatePluginResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[12] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -819,7 +984,7 @@ func (x *CreatePluginResponse) String() string { func (*CreatePluginResponse) ProtoMessage() {} func (x *CreatePluginResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[12] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -832,7 +997,7 @@ func (x *CreatePluginResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatePluginResponse.ProtoReflect.Descriptor instead. func (*CreatePluginResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{12} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{13} } func (x *CreatePluginResponse) GetPlugin() *Plugin { @@ -852,7 +1017,7 @@ type GetPluginRequest struct { func (x *GetPluginRequest) Reset() { *x = GetPluginRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[13] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -864,7 +1029,7 @@ func (x *GetPluginRequest) String() string { func (*GetPluginRequest) ProtoMessage() {} func (x *GetPluginRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[13] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -877,7 +1042,7 @@ func (x *GetPluginRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPluginRequest.ProtoReflect.Descriptor instead. func (*GetPluginRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{13} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{14} } func (x *GetPluginRequest) GetScopeSlug() string { @@ -905,7 +1070,7 @@ type GetPluginResponse struct { func (x *GetPluginResponse) Reset() { *x = GetPluginResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[14] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -917,7 +1082,7 @@ func (x *GetPluginResponse) String() string { func (*GetPluginResponse) ProtoMessage() {} func (x *GetPluginResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[14] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -930,7 +1095,7 @@ func (x *GetPluginResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPluginResponse.ProtoReflect.Descriptor instead. func (*GetPluginResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{14} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{15} } func (x *GetPluginResponse) GetPlugin() *Plugin { @@ -967,7 +1132,7 @@ type ListPluginsRequest struct { func (x *ListPluginsRequest) Reset() { *x = ListPluginsRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[15] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -979,7 +1144,7 @@ func (x *ListPluginsRequest) String() string { func (*ListPluginsRequest) ProtoMessage() {} func (x *ListPluginsRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[15] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -992,7 +1157,7 @@ func (x *ListPluginsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPluginsRequest.ProtoReflect.Descriptor instead. func (*ListPluginsRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{15} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{16} } func (x *ListPluginsRequest) GetLimit() int32 { @@ -1039,7 +1204,7 @@ type ListPluginsResponse struct { func (x *ListPluginsResponse) Reset() { *x = ListPluginsResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[16] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1051,7 +1216,7 @@ func (x *ListPluginsResponse) String() string { func (*ListPluginsResponse) ProtoMessage() {} func (x *ListPluginsResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[16] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1064,7 +1229,7 @@ func (x *ListPluginsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPluginsResponse.ProtoReflect.Descriptor instead. func (*ListPluginsResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{16} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{17} } func (x *ListPluginsResponse) GetPlugins() []*Plugin { @@ -1082,7 +1247,7 @@ type ListCategoriesRequest struct { func (x *ListCategoriesRequest) Reset() { *x = ListCategoriesRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[17] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1094,7 +1259,7 @@ func (x *ListCategoriesRequest) String() string { func (*ListCategoriesRequest) ProtoMessage() {} func (x *ListCategoriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[17] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1107,7 +1272,7 @@ func (x *ListCategoriesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListCategoriesRequest.ProtoReflect.Descriptor instead. func (*ListCategoriesRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{17} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{18} } type ListCategoriesResponse struct { @@ -1119,7 +1284,7 @@ type ListCategoriesResponse struct { func (x *ListCategoriesResponse) Reset() { *x = ListCategoriesResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[18] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1131,7 +1296,7 @@ func (x *ListCategoriesResponse) String() string { func (*ListCategoriesResponse) ProtoMessage() {} func (x *ListCategoriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[18] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1144,7 +1309,7 @@ func (x *ListCategoriesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListCategoriesResponse.ProtoReflect.Descriptor instead. func (*ListCategoriesResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{18} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{19} } func (x *ListCategoriesResponse) GetCategories() []*Category { @@ -1154,6 +1319,512 @@ func (x *ListCategoriesResponse) GetCategories() []*Category { return nil } +type ListPrivatePluginsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // account_id selects which account's private plugins to list. The caller + // must be a member of this account. + AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPrivatePluginsRequest) Reset() { + *x = ListPrivatePluginsRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPrivatePluginsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPrivatePluginsRequest) ProtoMessage() {} + +func (x *ListPrivatePluginsRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[20] + 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 ListPrivatePluginsRequest.ProtoReflect.Descriptor instead. +func (*ListPrivatePluginsRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{20} +} + +func (x *ListPrivatePluginsRequest) GetAccountId() string { + if x != nil { + return x.AccountId + } + return "" +} + +type ListPrivatePluginsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Plugins []*PrivatePluginSummary `protobuf:"bytes,1,rep,name=plugins,proto3" json:"plugins,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPrivatePluginsResponse) Reset() { + *x = ListPrivatePluginsResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPrivatePluginsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPrivatePluginsResponse) ProtoMessage() {} + +func (x *ListPrivatePluginsResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[21] + 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 ListPrivatePluginsResponse.ProtoReflect.Descriptor instead. +func (*ListPrivatePluginsResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{21} +} + +func (x *ListPrivatePluginsResponse) GetPlugins() []*PrivatePluginSummary { + if x != nil { + return x.Plugins + } + return nil +} + +// PrivatePluginSummary is the row shape used by the publisher dashboard and +// by the CMS "Private" installer tab. It bundles a Plugin with the latest +// version per channel and an installation count. +type PrivatePluginSummary struct { + state protoimpl.MessageState `protogen:"open.v1"` + Plugin *Plugin `protobuf:"bytes,1,opt,name=plugin,proto3" json:"plugin,omitempty"` + // channel_versions maps channel name -> latest version string published on + // that channel (e.g. "latest" -> "0.3.0", "beta" -> "0.4.0-beta.1"). + ChannelVersions map[string]string `protobuf:"bytes,2,rep,name=channel_versions,json=channelVersions,proto3" json:"channel_versions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // installed_site_count is the number of CMS sites in the owning account + // that currently have any version of this plugin installed. Used to gate + // delete-plugin in the dashboard. + InstalledSiteCount int32 `protobuf:"varint,3,opt,name=installed_site_count,json=installedSiteCount,proto3" json:"installed_site_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PrivatePluginSummary) Reset() { + *x = PrivatePluginSummary{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PrivatePluginSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrivatePluginSummary) ProtoMessage() {} + +func (x *PrivatePluginSummary) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[22] + 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 PrivatePluginSummary.ProtoReflect.Descriptor instead. +func (*PrivatePluginSummary) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{22} +} + +func (x *PrivatePluginSummary) GetPlugin() *Plugin { + if x != nil { + return x.Plugin + } + return nil +} + +func (x *PrivatePluginSummary) GetChannelVersions() map[string]string { + if x != nil { + return x.ChannelVersions + } + return nil +} + +func (x *PrivatePluginSummary) GetInstalledSiteCount() int32 { + if x != nil { + return x.InstalledSiteCount + } + return 0 +} + +type DeletePrivatePluginRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + PluginName string `protobuf:"bytes,2,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeletePrivatePluginRequest) Reset() { + *x = DeletePrivatePluginRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeletePrivatePluginRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePrivatePluginRequest) ProtoMessage() {} + +func (x *DeletePrivatePluginRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[23] + 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 DeletePrivatePluginRequest.ProtoReflect.Descriptor instead. +func (*DeletePrivatePluginRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{23} +} + +func (x *DeletePrivatePluginRequest) GetAccountId() string { + if x != nil { + return x.AccountId + } + return "" +} + +func (x *DeletePrivatePluginRequest) GetPluginName() string { + if x != nil { + return x.PluginName + } + return "" +} + +type DeletePrivatePluginResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeletePrivatePluginResponse) Reset() { + *x = DeletePrivatePluginResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeletePrivatePluginResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePrivatePluginResponse) ProtoMessage() {} + +func (x *DeletePrivatePluginResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[24] + 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 DeletePrivatePluginResponse.ProtoReflect.Descriptor instead. +func (*DeletePrivatePluginResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{24} +} + +type DeletePrivatePluginVersionRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + PluginName string `protobuf:"bytes,2,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeletePrivatePluginVersionRequest) Reset() { + *x = DeletePrivatePluginVersionRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeletePrivatePluginVersionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePrivatePluginVersionRequest) ProtoMessage() {} + +func (x *DeletePrivatePluginVersionRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[25] + 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 DeletePrivatePluginVersionRequest.ProtoReflect.Descriptor instead. +func (*DeletePrivatePluginVersionRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{25} +} + +func (x *DeletePrivatePluginVersionRequest) GetAccountId() string { + if x != nil { + return x.AccountId + } + return "" +} + +func (x *DeletePrivatePluginVersionRequest) GetPluginName() string { + if x != nil { + return x.PluginName + } + return "" +} + +func (x *DeletePrivatePluginVersionRequest) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +type DeletePrivatePluginVersionResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeletePrivatePluginVersionResponse) Reset() { + *x = DeletePrivatePluginVersionResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeletePrivatePluginVersionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePrivatePluginVersionResponse) ProtoMessage() {} + +func (x *DeletePrivatePluginVersionResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[26] + 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 DeletePrivatePluginVersionResponse.ProtoReflect.Descriptor instead. +func (*DeletePrivatePluginVersionResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{26} +} + +type ListPrivatePluginInstallSitesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AccountId string `protobuf:"bytes,1,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + PluginName string `protobuf:"bytes,2,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPrivatePluginInstallSitesRequest) Reset() { + *x = ListPrivatePluginInstallSitesRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPrivatePluginInstallSitesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPrivatePluginInstallSitesRequest) ProtoMessage() {} + +func (x *ListPrivatePluginInstallSitesRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[27] + 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 ListPrivatePluginInstallSitesRequest.ProtoReflect.Descriptor instead. +func (*ListPrivatePluginInstallSitesRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{27} +} + +func (x *ListPrivatePluginInstallSitesRequest) GetAccountId() string { + if x != nil { + return x.AccountId + } + return "" +} + +func (x *ListPrivatePluginInstallSitesRequest) GetPluginName() string { + if x != nil { + return x.PluginName + } + return "" +} + +type ListPrivatePluginInstallSitesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Sites []*PrivatePluginInstallSite `protobuf:"bytes,1,rep,name=sites,proto3" json:"sites,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPrivatePluginInstallSitesResponse) Reset() { + *x = ListPrivatePluginInstallSitesResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPrivatePluginInstallSitesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPrivatePluginInstallSitesResponse) ProtoMessage() {} + +func (x *ListPrivatePluginInstallSitesResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[28] + 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 ListPrivatePluginInstallSitesResponse.ProtoReflect.Descriptor instead. +func (*ListPrivatePluginInstallSitesResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{28} +} + +func (x *ListPrivatePluginInstallSitesResponse) GetSites() []*PrivatePluginInstallSite { + if x != nil { + return x.Sites + } + return nil +} + +type PrivatePluginInstallSite struct { + state protoimpl.MessageState `protogen:"open.v1"` + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + SiteDisplayName string `protobuf:"bytes,2,opt,name=site_display_name,json=siteDisplayName,proto3" json:"site_display_name,omitempty"` + InstalledVersion string `protobuf:"bytes,3,opt,name=installed_version,json=installedVersion,proto3" json:"installed_version,omitempty"` + PinnedChannel string `protobuf:"bytes,4,opt,name=pinned_channel,json=pinnedChannel,proto3" json:"pinned_channel,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PrivatePluginInstallSite) Reset() { + *x = PrivatePluginInstallSite{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PrivatePluginInstallSite) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrivatePluginInstallSite) ProtoMessage() {} + +func (x *PrivatePluginInstallSite) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[29] + 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 PrivatePluginInstallSite.ProtoReflect.Descriptor instead. +func (*PrivatePluginInstallSite) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{29} +} + +func (x *PrivatePluginInstallSite) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +func (x *PrivatePluginInstallSite) GetSiteDisplayName() string { + if x != nil { + return x.SiteDisplayName + } + return "" +} + +func (x *PrivatePluginInstallSite) GetInstalledVersion() string { + if x != nil { + return x.InstalledVersion + } + return "" +} + +func (x *PrivatePluginInstallSite) GetPinnedChannel() string { + if x != nil { + return x.PinnedChannel + } + return "" +} + type GetVersionRequest struct { state protoimpl.MessageState `protogen:"open.v1"` ScopeSlug string `protobuf:"bytes,1,opt,name=scope_slug,json=scopeSlug,proto3" json:"scope_slug,omitempty"` @@ -1165,7 +1836,7 @@ type GetVersionRequest struct { func (x *GetVersionRequest) Reset() { *x = GetVersionRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[19] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1177,7 +1848,7 @@ func (x *GetVersionRequest) String() string { func (*GetVersionRequest) ProtoMessage() {} func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[19] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1190,7 +1861,7 @@ func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVersionRequest.ProtoReflect.Descriptor instead. func (*GetVersionRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{19} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{30} } func (x *GetVersionRequest) GetScopeSlug() string { @@ -1226,7 +1897,7 @@ type GetVersionResponse struct { func (x *GetVersionResponse) Reset() { *x = GetVersionResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[20] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1238,7 +1909,7 @@ func (x *GetVersionResponse) String() string { func (*GetVersionResponse) ProtoMessage() {} func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[20] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1251,7 +1922,7 @@ func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVersionResponse.ProtoReflect.Descriptor instead. func (*GetVersionResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{20} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{31} } func (x *GetVersionResponse) GetVersion() *Version { @@ -1293,7 +1964,7 @@ type ResolveInstallRequest struct { func (x *ResolveInstallRequest) Reset() { *x = ResolveInstallRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[21] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1305,7 +1976,7 @@ func (x *ResolveInstallRequest) String() string { func (*ResolveInstallRequest) ProtoMessage() {} func (x *ResolveInstallRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[21] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1318,7 +1989,7 @@ func (x *ResolveInstallRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveInstallRequest.ProtoReflect.Descriptor instead. func (*ResolveInstallRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{21} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{32} } func (x *ResolveInstallRequest) GetScopeSlug() string { @@ -1361,7 +2032,7 @@ type ResolveInstallResponse struct { func (x *ResolveInstallResponse) Reset() { *x = ResolveInstallResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[22] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1373,7 +2044,7 @@ func (x *ResolveInstallResponse) String() string { func (*ResolveInstallResponse) ProtoMessage() {} func (x *ResolveInstallResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[22] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1386,7 +2057,7 @@ func (x *ResolveInstallResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ResolveInstallResponse.ProtoReflect.Descriptor instead. func (*ResolveInstallResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{22} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{33} } func (x *ResolveInstallResponse) GetVersionId() string { @@ -1480,7 +2151,7 @@ type PublishVersionRequest struct { func (x *PublishVersionRequest) Reset() { *x = PublishVersionRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[23] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1492,7 +2163,7 @@ func (x *PublishVersionRequest) String() string { func (*PublishVersionRequest) ProtoMessage() {} func (x *PublishVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[23] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1505,7 +2176,7 @@ func (x *PublishVersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishVersionRequest.ProtoReflect.Descriptor instead. func (*PublishVersionRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{23} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{34} } func (x *PublishVersionRequest) GetPluginId() string { @@ -1561,7 +2232,7 @@ type PublishVersionResponse struct { func (x *PublishVersionResponse) Reset() { *x = PublishVersionResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[24] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1573,7 +2244,7 @@ func (x *PublishVersionResponse) String() string { func (*PublishVersionResponse) ProtoMessage() {} func (x *PublishVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[24] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1586,7 +2257,7 @@ func (x *PublishVersionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishVersionResponse.ProtoReflect.Descriptor instead. func (*PublishVersionResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{24} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{35} } func (x *PublishVersionResponse) GetVersion() *Version { @@ -1619,7 +2290,7 @@ type StartDeviceRequest struct { func (x *StartDeviceRequest) Reset() { *x = StartDeviceRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[25] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1631,7 +2302,7 @@ func (x *StartDeviceRequest) String() string { func (*StartDeviceRequest) ProtoMessage() {} func (x *StartDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[25] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1644,7 +2315,7 @@ func (x *StartDeviceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StartDeviceRequest.ProtoReflect.Descriptor instead. func (*StartDeviceRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{25} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{36} } func (x *StartDeviceRequest) GetScopes() []string { @@ -1667,7 +2338,7 @@ type StartDeviceResponse struct { func (x *StartDeviceResponse) Reset() { *x = StartDeviceResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[26] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1679,7 +2350,7 @@ func (x *StartDeviceResponse) String() string { func (*StartDeviceResponse) ProtoMessage() {} func (x *StartDeviceResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[26] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1692,7 +2363,7 @@ func (x *StartDeviceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StartDeviceResponse.ProtoReflect.Descriptor instead. func (*StartDeviceResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{26} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{37} } func (x *StartDeviceResponse) GetDeviceCode() string { @@ -1739,7 +2410,7 @@ type PollDeviceRequest struct { func (x *PollDeviceRequest) Reset() { *x = PollDeviceRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[27] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1751,7 +2422,7 @@ func (x *PollDeviceRequest) String() string { func (*PollDeviceRequest) ProtoMessage() {} func (x *PollDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[27] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1764,7 +2435,7 @@ func (x *PollDeviceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PollDeviceRequest.ProtoReflect.Descriptor instead. func (*PollDeviceRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{27} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{38} } func (x *PollDeviceRequest) GetDeviceCode() string { @@ -1784,7 +2455,7 @@ type PollDeviceResponse struct { func (x *PollDeviceResponse) Reset() { *x = PollDeviceResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[28] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1796,7 +2467,7 @@ func (x *PollDeviceResponse) String() string { func (*PollDeviceResponse) ProtoMessage() {} func (x *PollDeviceResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[28] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1809,7 +2480,7 @@ func (x *PollDeviceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PollDeviceResponse.ProtoReflect.Descriptor instead. func (*PollDeviceResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{28} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{39} } func (x *PollDeviceResponse) GetAccessToken() string { @@ -1835,7 +2506,7 @@ type ApproveDeviceRequest struct { func (x *ApproveDeviceRequest) Reset() { *x = ApproveDeviceRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[29] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1847,7 +2518,7 @@ func (x *ApproveDeviceRequest) String() string { func (*ApproveDeviceRequest) ProtoMessage() {} func (x *ApproveDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[29] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1860,7 +2531,7 @@ func (x *ApproveDeviceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ApproveDeviceRequest.ProtoReflect.Descriptor instead. func (*ApproveDeviceRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{29} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{40} } func (x *ApproveDeviceRequest) GetUserCode() string { @@ -1878,7 +2549,7 @@ type ApproveDeviceResponse struct { func (x *ApproveDeviceResponse) Reset() { *x = ApproveDeviceResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[30] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1890,7 +2561,7 @@ func (x *ApproveDeviceResponse) String() string { func (*ApproveDeviceResponse) ProtoMessage() {} func (x *ApproveDeviceResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[30] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1903,7 +2574,7 @@ func (x *ApproveDeviceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ApproveDeviceResponse.ProtoReflect.Descriptor instead. func (*ApproveDeviceResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{30} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{41} } type DenyDeviceRequest struct { @@ -1915,7 +2586,7 @@ type DenyDeviceRequest struct { func (x *DenyDeviceRequest) Reset() { *x = DenyDeviceRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[31] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1927,7 +2598,7 @@ func (x *DenyDeviceRequest) String() string { func (*DenyDeviceRequest) ProtoMessage() {} func (x *DenyDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[31] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1940,7 +2611,7 @@ func (x *DenyDeviceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DenyDeviceRequest.ProtoReflect.Descriptor instead. func (*DenyDeviceRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{31} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{42} } func (x *DenyDeviceRequest) GetUserCode() string { @@ -1958,7 +2629,7 @@ type DenyDeviceResponse struct { func (x *DenyDeviceResponse) Reset() { *x = DenyDeviceResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[32] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1970,7 +2641,7 @@ func (x *DenyDeviceResponse) String() string { func (*DenyDeviceResponse) ProtoMessage() {} func (x *DenyDeviceResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[32] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1983,7 +2654,7 @@ func (x *DenyDeviceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DenyDeviceResponse.ProtoReflect.Descriptor instead. func (*DenyDeviceResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{32} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{43} } type GetDeviceStatusRequest struct { @@ -1995,7 +2666,7 @@ type GetDeviceStatusRequest struct { func (x *GetDeviceStatusRequest) Reset() { *x = GetDeviceStatusRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[33] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2007,7 +2678,7 @@ func (x *GetDeviceStatusRequest) String() string { func (*GetDeviceStatusRequest) ProtoMessage() {} func (x *GetDeviceStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[33] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2020,7 +2691,7 @@ func (x *GetDeviceStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDeviceStatusRequest.ProtoReflect.Descriptor instead. func (*GetDeviceStatusRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{33} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{44} } func (x *GetDeviceStatusRequest) GetUserCode() string { @@ -2042,7 +2713,7 @@ type GetDeviceStatusResponse struct { func (x *GetDeviceStatusResponse) Reset() { *x = GetDeviceStatusResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[34] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2054,7 +2725,7 @@ func (x *GetDeviceStatusResponse) String() string { func (*GetDeviceStatusResponse) ProtoMessage() {} func (x *GetDeviceStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[34] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2067,7 +2738,7 @@ func (x *GetDeviceStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDeviceStatusResponse.ProtoReflect.Descriptor instead. func (*GetDeviceStatusResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{34} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{45} } func (x *GetDeviceStatusResponse) GetValid() bool { @@ -2106,7 +2777,7 @@ type WhoamiRequest struct { func (x *WhoamiRequest) Reset() { *x = WhoamiRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[35] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2118,7 +2789,7 @@ func (x *WhoamiRequest) String() string { func (*WhoamiRequest) ProtoMessage() {} func (x *WhoamiRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[35] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2131,7 +2802,7 @@ func (x *WhoamiRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WhoamiRequest.ProtoReflect.Descriptor instead. func (*WhoamiRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{35} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{46} } type WhoamiResponse struct { @@ -2145,7 +2816,7 @@ type WhoamiResponse struct { func (x *WhoamiResponse) Reset() { *x = WhoamiResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[36] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2157,7 +2828,7 @@ func (x *WhoamiResponse) String() string { func (*WhoamiResponse) ProtoMessage() {} func (x *WhoamiResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[36] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2170,7 +2841,7 @@ func (x *WhoamiResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WhoamiResponse.ProtoReflect.Descriptor instead. func (*WhoamiResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{36} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{47} } func (x *WhoamiResponse) GetUserId() string { @@ -2194,6 +2865,86 @@ func (x *WhoamiResponse) GetDisplayName() string { return "" } +type ListMyAccountsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListMyAccountsRequest) Reset() { + *x = ListMyAccountsRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListMyAccountsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListMyAccountsRequest) ProtoMessage() {} + +func (x *ListMyAccountsRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[48] + 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 ListMyAccountsRequest.ProtoReflect.Descriptor instead. +func (*ListMyAccountsRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{48} +} + +type ListMyAccountsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Accounts []*Account `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListMyAccountsResponse) Reset() { + *x = ListMyAccountsResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListMyAccountsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListMyAccountsResponse) ProtoMessage() {} + +func (x *ListMyAccountsResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[49] + 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 ListMyAccountsResponse.ProtoReflect.Descriptor instead. +func (*ListMyAccountsResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{49} +} + +func (x *ListMyAccountsResponse) GetAccounts() []*Account { + if x != nil { + return x.Accounts + } + return nil +} + var File_orchestrator_v1_plugin_registry_proto protoreflect.FileDescriptor const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + @@ -2204,14 +2955,14 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\x04slug\x18\x02 \x01(\tR\x04slug\x12!\n" + "\fdisplay_name\x18\x03 \x01(\tR\vdisplayName\x129\n" + "\n" + - "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"\xdc\x02\n" + + "created_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"\xa9\x03\n" + "\x06Plugin\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n" + "\n" + "scope_slug\x18\x02 \x01(\tR\tscopeSlug\x12\x12\n" + - "\x04name\x18\x03 \x01(\tR\x04name\x12\x1e\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12A\n" + "\n" + - "visibility\x18\x04 \x01(\tR\n" + + "visibility\x18\x04 \x01(\x0e2!.orchestrator.v1.PluginVisibilityR\n" + "visibility\x12\x18\n" + "\apremium\x18\x05 \x01(\bR\apremium\x12 \n" + "\vdescription\x18\x06 \x01(\tR\vdescription\x12!\n" + @@ -2223,7 +2974,13 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "updated_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x12\n" + "\x04kind\x18\n" + " \x01(\tR\x04kind\x12!\n" + - "\fdisplay_name\x18\v \x01(\tR\vdisplayName\"\x82\x01\n" + + "\fdisplay_name\x18\v \x01(\tR\vdisplayName\x12(\n" + + "\x10owner_account_id\x18\f \x01(\tR\x0eownerAccountId\"d\n" + + "\aAccount\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + + "\x04slug\x18\x02 \x01(\tR\x04slug\x12!\n" + + "\fdisplay_name\x18\x03 \x01(\tR\vdisplayName\x12\x12\n" + + "\x04role\x18\x04 \x01(\tR\x04role\"\x82\x01\n" + "\bCategory\x12\x12\n" + "\x04slug\x18\x01 \x01(\tR\x04slug\x12!\n" + "\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12 \n" + @@ -2257,7 +3014,7 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\x04slug\x18\x01 \x01(\tR\x04slug\"s\n" + "\x10GetScopeResponse\x12,\n" + "\x05scope\x18\x01 \x01(\v2\x16.orchestrator.v1.ScopeR\x05scope\x121\n" + - "\aplugins\x18\x02 \x03(\v2\x17.orchestrator.v1.PluginR\aplugins\"\xc1\x01\n" + + "\aplugins\x18\x02 \x03(\v2\x17.orchestrator.v1.PluginR\aplugins\"\xb0\x02\n" + "\x13CreatePluginRequest\x12\x1d\n" + "\n" + "scope_slug\x18\x01 \x01(\tR\tscopeSlug\x12\x12\n" + @@ -2267,7 +3024,11 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\n" + "categories\x18\x05 \x03(\tR\n" + "categories\x12!\n" + - "\fdisplay_name\x18\x06 \x01(\tR\vdisplayName\"G\n" + + "\fdisplay_name\x18\x06 \x01(\tR\vdisplayName\x12A\n" + + "\n" + + "visibility\x18\a \x01(\x0e2!.orchestrator.v1.PluginVisibilityR\n" + + "visibility\x12*\n" + + "\x11active_account_id\x18\b \x01(\tR\x0factiveAccountId\"G\n" + "\x14CreatePluginResponse\x12/\n" + "\x06plugin\x18\x01 \x01(\v2\x17.orchestrator.v1.PluginR\x06plugin\"E\n" + "\x10GetPluginRequest\x12\x1d\n" + @@ -2295,7 +3056,45 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\x16ListCategoriesResponse\x129\n" + "\n" + "categories\x18\x01 \x03(\v2\x19.orchestrator.v1.CategoryR\n" + - "categories\"m\n" + + "categories\":\n" + + "\x19ListPrivatePluginsRequest\x12\x1d\n" + + "\n" + + "account_id\x18\x01 \x01(\tR\taccountId\"]\n" + + "\x1aListPrivatePluginsResponse\x12?\n" + + "\aplugins\x18\x01 \x03(\v2%.orchestrator.v1.PrivatePluginSummaryR\aplugins\"\xa4\x02\n" + + "\x14PrivatePluginSummary\x12/\n" + + "\x06plugin\x18\x01 \x01(\v2\x17.orchestrator.v1.PluginR\x06plugin\x12e\n" + + "\x10channel_versions\x18\x02 \x03(\v2:.orchestrator.v1.PrivatePluginSummary.ChannelVersionsEntryR\x0fchannelVersions\x120\n" + + "\x14installed_site_count\x18\x03 \x01(\x05R\x12installedSiteCount\x1aB\n" + + "\x14ChannelVersionsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\\\n" + + "\x1aDeletePrivatePluginRequest\x12\x1d\n" + + "\n" + + "account_id\x18\x01 \x01(\tR\taccountId\x12\x1f\n" + + "\vplugin_name\x18\x02 \x01(\tR\n" + + "pluginName\"\x1d\n" + + "\x1bDeletePrivatePluginResponse\"}\n" + + "!DeletePrivatePluginVersionRequest\x12\x1d\n" + + "\n" + + "account_id\x18\x01 \x01(\tR\taccountId\x12\x1f\n" + + "\vplugin_name\x18\x02 \x01(\tR\n" + + "pluginName\x12\x18\n" + + "\aversion\x18\x03 \x01(\tR\aversion\"$\n" + + "\"DeletePrivatePluginVersionResponse\"f\n" + + "$ListPrivatePluginInstallSitesRequest\x12\x1d\n" + + "\n" + + "account_id\x18\x01 \x01(\tR\taccountId\x12\x1f\n" + + "\vplugin_name\x18\x02 \x01(\tR\n" + + "pluginName\"h\n" + + "%ListPrivatePluginInstallSitesResponse\x12?\n" + + "\x05sites\x18\x01 \x03(\v2).orchestrator.v1.PrivatePluginInstallSiteR\x05sites\"\xbb\x01\n" + + "\x18PrivatePluginInstallSite\x12\x1f\n" + + "\vinstance_id\x18\x01 \x01(\tR\n" + + "instanceId\x12*\n" + + "\x11site_display_name\x18\x02 \x01(\tR\x0fsiteDisplayName\x12+\n" + + "\x11installed_version\x18\x03 \x01(\tR\x10installedVersion\x12%\n" + + "\x0epinned_channel\x18\x04 \x01(\tR\rpinnedChannel\"m\n" + "\x11GetVersionRequest\x12\x1d\n" + "\n" + "scope_slug\x18\x01 \x01(\tR\tscopeSlug\x12\x1f\n" + @@ -2376,11 +3175,21 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\x0eWhoamiResponse\x12\x17\n" + "\auser_id\x18\x01 \x01(\tR\x06userId\x12\x14\n" + "\x05email\x18\x02 \x01(\tR\x05email\x12!\n" + - "\fdisplay_name\x18\x03 \x01(\tR\vdisplayName2\x9c\x02\n" + + "\fdisplay_name\x18\x03 \x01(\tR\vdisplayName\"\x17\n" + + "\x15ListMyAccountsRequest\"N\n" + + "\x16ListMyAccountsResponse\x124\n" + + "\baccounts\x18\x01 \x03(\v2\x18.orchestrator.v1.AccountR\baccounts*\xd8\x01\n" + + "\x10PluginVisibility\x12!\n" + + "\x1dPLUGIN_VISIBILITY_UNSPECIFIED\x10\x00\x12\x1d\n" + + "\x19PLUGIN_VISIBILITY_PRIVATE\x10\x01\x12\"\n" + + "\x1ePLUGIN_VISIBILITY_UNDER_REVIEW\x10\x02\x12\x1c\n" + + "\x18PLUGIN_VISIBILITY_PUBLIC\x10\x03\x12\x1e\n" + + "\x1aPLUGIN_VISIBILITY_REJECTED\x10\x04\x12 \n" + + "\x1cPLUGIN_VISIBILITY_TAKEN_DOWN\x10\x052\x9c\x02\n" + "\x12PluginScopeService\x12X\n" + "\vCreateScope\x12#.orchestrator.v1.CreateScopeRequest\x1a$.orchestrator.v1.CreateScopeResponse\x12[\n" + "\fListMyScopes\x12$.orchestrator.v1.ListMyScopesRequest\x1a%.orchestrator.v1.ListMyScopesResponse\x12O\n" + - "\bGetScope\x12 .orchestrator.v1.GetScopeRequest\x1a!.orchestrator.v1.GetScopeResponse2\xbf\x04\n" + + "\bGetScope\x12 .orchestrator.v1.GetScopeRequest\x1a!.orchestrator.v1.GetScopeResponse2\xb9\b\n" + "\x15PluginRegistryService\x12[\n" + "\fCreatePlugin\x12$.orchestrator.v1.CreatePluginRequest\x1a%.orchestrator.v1.CreatePluginResponse\x12R\n" + "\tGetPlugin\x12!.orchestrator.v1.GetPluginRequest\x1a\".orchestrator.v1.GetPluginResponse\x12X\n" + @@ -2388,9 +3197,13 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\n" + "GetVersion\x12\".orchestrator.v1.GetVersionRequest\x1a#.orchestrator.v1.GetVersionResponse\x12a\n" + "\x0eResolveInstall\x12&.orchestrator.v1.ResolveInstallRequest\x1a'.orchestrator.v1.ResolveInstallResponse\x12a\n" + - "\x0eListCategories\x12&.orchestrator.v1.ListCategoriesRequest\x1a'.orchestrator.v1.ListCategoriesResponse2y\n" + + "\x0eListCategories\x12&.orchestrator.v1.ListCategoriesRequest\x1a'.orchestrator.v1.ListCategoriesResponse\x12m\n" + + "\x12ListPrivatePlugins\x12*.orchestrator.v1.ListPrivatePluginsRequest\x1a+.orchestrator.v1.ListPrivatePluginsResponse\x12p\n" + + "\x13DeletePrivatePlugin\x12+.orchestrator.v1.DeletePrivatePluginRequest\x1a,.orchestrator.v1.DeletePrivatePluginResponse\x12\x85\x01\n" + + "\x1aDeletePrivatePluginVersion\x122.orchestrator.v1.DeletePrivatePluginVersionRequest\x1a3.orchestrator.v1.DeletePrivatePluginVersionResponse\x12\x8e\x01\n" + + "\x1dListPrivatePluginInstallSites\x125.orchestrator.v1.ListPrivatePluginInstallSitesRequest\x1a6.orchestrator.v1.ListPrivatePluginInstallSitesResponse2y\n" + "\x14PluginPublishService\x12a\n" + - "\x0ePublishVersion\x12&.orchestrator.v1.PublishVersionRequest\x1a'.orchestrator.v1.PublishVersionResponse2\xac\x04\n" + + "\x0ePublishVersion\x12&.orchestrator.v1.PublishVersionRequest\x1a'.orchestrator.v1.PublishVersionResponse2\x8f\x05\n" + "\x11PluginAuthService\x12X\n" + "\vStartDevice\x12#.orchestrator.v1.StartDeviceRequest\x1a$.orchestrator.v1.StartDeviceResponse\x12U\n" + "\n" + @@ -2399,7 +3212,8 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\n" + "DenyDevice\x12\".orchestrator.v1.DenyDeviceRequest\x1a#.orchestrator.v1.DenyDeviceResponse\x12d\n" + "\x0fGetDeviceStatus\x12'.orchestrator.v1.GetDeviceStatusRequest\x1a(.orchestrator.v1.GetDeviceStatusResponse\x12I\n" + - "\x06Whoami\x12\x1e.orchestrator.v1.WhoamiRequest\x1a\x1f.orchestrator.v1.WhoamiResponseB\xd6\x01\n" + + "\x06Whoami\x12\x1e.orchestrator.v1.WhoamiRequest\x1a\x1f.orchestrator.v1.WhoamiResponse\x12a\n" + + "\x0eListMyAccounts\x12&.orchestrator.v1.ListMyAccountsRequest\x1a'.orchestrator.v1.ListMyAccountsResponseB\xd6\x01\n" + "\x13com.orchestrator.v1B\x13PluginRegistryProtoP\x01ZMgit.dev.alexdunmow.com/block/core/internal/api/orchestrator/v1;orchestratorv1\xa2\x02\x03OXX\xaa\x02\x0fOrchestrator.V1\xca\x02\x0fOrchestrator\\V1\xe2\x02\x1bOrchestrator\\V1\\GPBMetadata\xea\x02\x10Orchestrator::V1b\x06proto3" var ( @@ -2414,103 +3228,136 @@ func file_orchestrator_v1_plugin_registry_proto_rawDescGZIP() []byte { return file_orchestrator_v1_plugin_registry_proto_rawDescData } -var file_orchestrator_v1_plugin_registry_proto_msgTypes = make([]protoimpl.MessageInfo, 38) +var file_orchestrator_v1_plugin_registry_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_orchestrator_v1_plugin_registry_proto_msgTypes = make([]protoimpl.MessageInfo, 52) var file_orchestrator_v1_plugin_registry_proto_goTypes = []any{ - (*Scope)(nil), // 0: orchestrator.v1.Scope - (*Plugin)(nil), // 1: orchestrator.v1.Plugin - (*Category)(nil), // 2: orchestrator.v1.Category - (*Version)(nil), // 3: orchestrator.v1.Version - (*Requirement)(nil), // 4: orchestrator.v1.Requirement - (*CreateScopeRequest)(nil), // 5: orchestrator.v1.CreateScopeRequest - (*CreateScopeResponse)(nil), // 6: orchestrator.v1.CreateScopeResponse - (*ListMyScopesRequest)(nil), // 7: orchestrator.v1.ListMyScopesRequest - (*ListMyScopesResponse)(nil), // 8: orchestrator.v1.ListMyScopesResponse - (*GetScopeRequest)(nil), // 9: orchestrator.v1.GetScopeRequest - (*GetScopeResponse)(nil), // 10: orchestrator.v1.GetScopeResponse - (*CreatePluginRequest)(nil), // 11: orchestrator.v1.CreatePluginRequest - (*CreatePluginResponse)(nil), // 12: orchestrator.v1.CreatePluginResponse - (*GetPluginRequest)(nil), // 13: orchestrator.v1.GetPluginRequest - (*GetPluginResponse)(nil), // 14: orchestrator.v1.GetPluginResponse - (*ListPluginsRequest)(nil), // 15: orchestrator.v1.ListPluginsRequest - (*ListPluginsResponse)(nil), // 16: orchestrator.v1.ListPluginsResponse - (*ListCategoriesRequest)(nil), // 17: orchestrator.v1.ListCategoriesRequest - (*ListCategoriesResponse)(nil), // 18: orchestrator.v1.ListCategoriesResponse - (*GetVersionRequest)(nil), // 19: orchestrator.v1.GetVersionRequest - (*GetVersionResponse)(nil), // 20: orchestrator.v1.GetVersionResponse - (*ResolveInstallRequest)(nil), // 21: orchestrator.v1.ResolveInstallRequest - (*ResolveInstallResponse)(nil), // 22: orchestrator.v1.ResolveInstallResponse - (*PublishVersionRequest)(nil), // 23: orchestrator.v1.PublishVersionRequest - (*PublishVersionResponse)(nil), // 24: orchestrator.v1.PublishVersionResponse - (*StartDeviceRequest)(nil), // 25: orchestrator.v1.StartDeviceRequest - (*StartDeviceResponse)(nil), // 26: orchestrator.v1.StartDeviceResponse - (*PollDeviceRequest)(nil), // 27: orchestrator.v1.PollDeviceRequest - (*PollDeviceResponse)(nil), // 28: orchestrator.v1.PollDeviceResponse - (*ApproveDeviceRequest)(nil), // 29: orchestrator.v1.ApproveDeviceRequest - (*ApproveDeviceResponse)(nil), // 30: orchestrator.v1.ApproveDeviceResponse - (*DenyDeviceRequest)(nil), // 31: orchestrator.v1.DenyDeviceRequest - (*DenyDeviceResponse)(nil), // 32: orchestrator.v1.DenyDeviceResponse - (*GetDeviceStatusRequest)(nil), // 33: orchestrator.v1.GetDeviceStatusRequest - (*GetDeviceStatusResponse)(nil), // 34: orchestrator.v1.GetDeviceStatusResponse - (*WhoamiRequest)(nil), // 35: orchestrator.v1.WhoamiRequest - (*WhoamiResponse)(nil), // 36: orchestrator.v1.WhoamiResponse - nil, // 37: orchestrator.v1.GetPluginResponse.ChannelsEntry - (*timestamppb.Timestamp)(nil), // 38: google.protobuf.Timestamp + (PluginVisibility)(0), // 0: orchestrator.v1.PluginVisibility + (*Scope)(nil), // 1: orchestrator.v1.Scope + (*Plugin)(nil), // 2: orchestrator.v1.Plugin + (*Account)(nil), // 3: orchestrator.v1.Account + (*Category)(nil), // 4: orchestrator.v1.Category + (*Version)(nil), // 5: orchestrator.v1.Version + (*Requirement)(nil), // 6: orchestrator.v1.Requirement + (*CreateScopeRequest)(nil), // 7: orchestrator.v1.CreateScopeRequest + (*CreateScopeResponse)(nil), // 8: orchestrator.v1.CreateScopeResponse + (*ListMyScopesRequest)(nil), // 9: orchestrator.v1.ListMyScopesRequest + (*ListMyScopesResponse)(nil), // 10: orchestrator.v1.ListMyScopesResponse + (*GetScopeRequest)(nil), // 11: orchestrator.v1.GetScopeRequest + (*GetScopeResponse)(nil), // 12: orchestrator.v1.GetScopeResponse + (*CreatePluginRequest)(nil), // 13: orchestrator.v1.CreatePluginRequest + (*CreatePluginResponse)(nil), // 14: orchestrator.v1.CreatePluginResponse + (*GetPluginRequest)(nil), // 15: orchestrator.v1.GetPluginRequest + (*GetPluginResponse)(nil), // 16: orchestrator.v1.GetPluginResponse + (*ListPluginsRequest)(nil), // 17: orchestrator.v1.ListPluginsRequest + (*ListPluginsResponse)(nil), // 18: orchestrator.v1.ListPluginsResponse + (*ListCategoriesRequest)(nil), // 19: orchestrator.v1.ListCategoriesRequest + (*ListCategoriesResponse)(nil), // 20: orchestrator.v1.ListCategoriesResponse + (*ListPrivatePluginsRequest)(nil), // 21: orchestrator.v1.ListPrivatePluginsRequest + (*ListPrivatePluginsResponse)(nil), // 22: orchestrator.v1.ListPrivatePluginsResponse + (*PrivatePluginSummary)(nil), // 23: orchestrator.v1.PrivatePluginSummary + (*DeletePrivatePluginRequest)(nil), // 24: orchestrator.v1.DeletePrivatePluginRequest + (*DeletePrivatePluginResponse)(nil), // 25: orchestrator.v1.DeletePrivatePluginResponse + (*DeletePrivatePluginVersionRequest)(nil), // 26: orchestrator.v1.DeletePrivatePluginVersionRequest + (*DeletePrivatePluginVersionResponse)(nil), // 27: orchestrator.v1.DeletePrivatePluginVersionResponse + (*ListPrivatePluginInstallSitesRequest)(nil), // 28: orchestrator.v1.ListPrivatePluginInstallSitesRequest + (*ListPrivatePluginInstallSitesResponse)(nil), // 29: orchestrator.v1.ListPrivatePluginInstallSitesResponse + (*PrivatePluginInstallSite)(nil), // 30: orchestrator.v1.PrivatePluginInstallSite + (*GetVersionRequest)(nil), // 31: orchestrator.v1.GetVersionRequest + (*GetVersionResponse)(nil), // 32: orchestrator.v1.GetVersionResponse + (*ResolveInstallRequest)(nil), // 33: orchestrator.v1.ResolveInstallRequest + (*ResolveInstallResponse)(nil), // 34: orchestrator.v1.ResolveInstallResponse + (*PublishVersionRequest)(nil), // 35: orchestrator.v1.PublishVersionRequest + (*PublishVersionResponse)(nil), // 36: orchestrator.v1.PublishVersionResponse + (*StartDeviceRequest)(nil), // 37: orchestrator.v1.StartDeviceRequest + (*StartDeviceResponse)(nil), // 38: orchestrator.v1.StartDeviceResponse + (*PollDeviceRequest)(nil), // 39: orchestrator.v1.PollDeviceRequest + (*PollDeviceResponse)(nil), // 40: orchestrator.v1.PollDeviceResponse + (*ApproveDeviceRequest)(nil), // 41: orchestrator.v1.ApproveDeviceRequest + (*ApproveDeviceResponse)(nil), // 42: orchestrator.v1.ApproveDeviceResponse + (*DenyDeviceRequest)(nil), // 43: orchestrator.v1.DenyDeviceRequest + (*DenyDeviceResponse)(nil), // 44: orchestrator.v1.DenyDeviceResponse + (*GetDeviceStatusRequest)(nil), // 45: orchestrator.v1.GetDeviceStatusRequest + (*GetDeviceStatusResponse)(nil), // 46: orchestrator.v1.GetDeviceStatusResponse + (*WhoamiRequest)(nil), // 47: orchestrator.v1.WhoamiRequest + (*WhoamiResponse)(nil), // 48: orchestrator.v1.WhoamiResponse + (*ListMyAccountsRequest)(nil), // 49: orchestrator.v1.ListMyAccountsRequest + (*ListMyAccountsResponse)(nil), // 50: orchestrator.v1.ListMyAccountsResponse + nil, // 51: orchestrator.v1.GetPluginResponse.ChannelsEntry + nil, // 52: orchestrator.v1.PrivatePluginSummary.ChannelVersionsEntry + (*timestamppb.Timestamp)(nil), // 53: google.protobuf.Timestamp } var file_orchestrator_v1_plugin_registry_proto_depIdxs = []int32{ - 38, // 0: orchestrator.v1.Scope.created_at:type_name -> google.protobuf.Timestamp - 38, // 1: orchestrator.v1.Plugin.updated_at:type_name -> google.protobuf.Timestamp - 38, // 2: orchestrator.v1.Version.published_at:type_name -> google.protobuf.Timestamp - 0, // 3: orchestrator.v1.CreateScopeResponse.scope:type_name -> orchestrator.v1.Scope - 0, // 4: orchestrator.v1.ListMyScopesResponse.scopes:type_name -> orchestrator.v1.Scope - 0, // 5: orchestrator.v1.GetScopeResponse.scope:type_name -> orchestrator.v1.Scope - 1, // 6: orchestrator.v1.GetScopeResponse.plugins:type_name -> orchestrator.v1.Plugin - 1, // 7: orchestrator.v1.CreatePluginResponse.plugin:type_name -> orchestrator.v1.Plugin - 1, // 8: orchestrator.v1.GetPluginResponse.plugin:type_name -> orchestrator.v1.Plugin - 3, // 9: orchestrator.v1.GetPluginResponse.versions:type_name -> orchestrator.v1.Version - 37, // 10: orchestrator.v1.GetPluginResponse.channels:type_name -> orchestrator.v1.GetPluginResponse.ChannelsEntry - 1, // 11: orchestrator.v1.ListPluginsResponse.plugins:type_name -> orchestrator.v1.Plugin - 2, // 12: orchestrator.v1.ListCategoriesResponse.categories:type_name -> orchestrator.v1.Category - 3, // 13: orchestrator.v1.GetVersionResponse.version:type_name -> orchestrator.v1.Version - 4, // 14: orchestrator.v1.GetVersionResponse.requires:type_name -> orchestrator.v1.Requirement - 4, // 15: orchestrator.v1.ResolveInstallResponse.requires:type_name -> orchestrator.v1.Requirement - 3, // 16: orchestrator.v1.PublishVersionResponse.version:type_name -> orchestrator.v1.Version - 5, // 17: orchestrator.v1.PluginScopeService.CreateScope:input_type -> orchestrator.v1.CreateScopeRequest - 7, // 18: orchestrator.v1.PluginScopeService.ListMyScopes:input_type -> orchestrator.v1.ListMyScopesRequest - 9, // 19: orchestrator.v1.PluginScopeService.GetScope:input_type -> orchestrator.v1.GetScopeRequest - 11, // 20: orchestrator.v1.PluginRegistryService.CreatePlugin:input_type -> orchestrator.v1.CreatePluginRequest - 13, // 21: orchestrator.v1.PluginRegistryService.GetPlugin:input_type -> orchestrator.v1.GetPluginRequest - 15, // 22: orchestrator.v1.PluginRegistryService.ListPlugins:input_type -> orchestrator.v1.ListPluginsRequest - 19, // 23: orchestrator.v1.PluginRegistryService.GetVersion:input_type -> orchestrator.v1.GetVersionRequest - 21, // 24: orchestrator.v1.PluginRegistryService.ResolveInstall:input_type -> orchestrator.v1.ResolveInstallRequest - 17, // 25: orchestrator.v1.PluginRegistryService.ListCategories:input_type -> orchestrator.v1.ListCategoriesRequest - 23, // 26: orchestrator.v1.PluginPublishService.PublishVersion:input_type -> orchestrator.v1.PublishVersionRequest - 25, // 27: orchestrator.v1.PluginAuthService.StartDevice:input_type -> orchestrator.v1.StartDeviceRequest - 27, // 28: orchestrator.v1.PluginAuthService.PollDevice:input_type -> orchestrator.v1.PollDeviceRequest - 29, // 29: orchestrator.v1.PluginAuthService.ApproveDevice:input_type -> orchestrator.v1.ApproveDeviceRequest - 31, // 30: orchestrator.v1.PluginAuthService.DenyDevice:input_type -> orchestrator.v1.DenyDeviceRequest - 33, // 31: orchestrator.v1.PluginAuthService.GetDeviceStatus:input_type -> orchestrator.v1.GetDeviceStatusRequest - 35, // 32: orchestrator.v1.PluginAuthService.Whoami:input_type -> orchestrator.v1.WhoamiRequest - 6, // 33: orchestrator.v1.PluginScopeService.CreateScope:output_type -> orchestrator.v1.CreateScopeResponse - 8, // 34: orchestrator.v1.PluginScopeService.ListMyScopes:output_type -> orchestrator.v1.ListMyScopesResponse - 10, // 35: orchestrator.v1.PluginScopeService.GetScope:output_type -> orchestrator.v1.GetScopeResponse - 12, // 36: orchestrator.v1.PluginRegistryService.CreatePlugin:output_type -> orchestrator.v1.CreatePluginResponse - 14, // 37: orchestrator.v1.PluginRegistryService.GetPlugin:output_type -> orchestrator.v1.GetPluginResponse - 16, // 38: orchestrator.v1.PluginRegistryService.ListPlugins:output_type -> orchestrator.v1.ListPluginsResponse - 20, // 39: orchestrator.v1.PluginRegistryService.GetVersion:output_type -> orchestrator.v1.GetVersionResponse - 22, // 40: orchestrator.v1.PluginRegistryService.ResolveInstall:output_type -> orchestrator.v1.ResolveInstallResponse - 18, // 41: orchestrator.v1.PluginRegistryService.ListCategories:output_type -> orchestrator.v1.ListCategoriesResponse - 24, // 42: orchestrator.v1.PluginPublishService.PublishVersion:output_type -> orchestrator.v1.PublishVersionResponse - 26, // 43: orchestrator.v1.PluginAuthService.StartDevice:output_type -> orchestrator.v1.StartDeviceResponse - 28, // 44: orchestrator.v1.PluginAuthService.PollDevice:output_type -> orchestrator.v1.PollDeviceResponse - 30, // 45: orchestrator.v1.PluginAuthService.ApproveDevice:output_type -> orchestrator.v1.ApproveDeviceResponse - 32, // 46: orchestrator.v1.PluginAuthService.DenyDevice:output_type -> orchestrator.v1.DenyDeviceResponse - 34, // 47: orchestrator.v1.PluginAuthService.GetDeviceStatus:output_type -> orchestrator.v1.GetDeviceStatusResponse - 36, // 48: orchestrator.v1.PluginAuthService.Whoami:output_type -> orchestrator.v1.WhoamiResponse - 33, // [33:49] is the sub-list for method output_type - 17, // [17:33] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 53, // 0: orchestrator.v1.Scope.created_at:type_name -> google.protobuf.Timestamp + 0, // 1: orchestrator.v1.Plugin.visibility:type_name -> orchestrator.v1.PluginVisibility + 53, // 2: orchestrator.v1.Plugin.updated_at:type_name -> google.protobuf.Timestamp + 53, // 3: orchestrator.v1.Version.published_at:type_name -> google.protobuf.Timestamp + 1, // 4: orchestrator.v1.CreateScopeResponse.scope:type_name -> orchestrator.v1.Scope + 1, // 5: orchestrator.v1.ListMyScopesResponse.scopes:type_name -> orchestrator.v1.Scope + 1, // 6: orchestrator.v1.GetScopeResponse.scope:type_name -> orchestrator.v1.Scope + 2, // 7: orchestrator.v1.GetScopeResponse.plugins:type_name -> orchestrator.v1.Plugin + 0, // 8: orchestrator.v1.CreatePluginRequest.visibility:type_name -> orchestrator.v1.PluginVisibility + 2, // 9: orchestrator.v1.CreatePluginResponse.plugin:type_name -> orchestrator.v1.Plugin + 2, // 10: orchestrator.v1.GetPluginResponse.plugin:type_name -> orchestrator.v1.Plugin + 5, // 11: orchestrator.v1.GetPluginResponse.versions:type_name -> orchestrator.v1.Version + 51, // 12: orchestrator.v1.GetPluginResponse.channels:type_name -> orchestrator.v1.GetPluginResponse.ChannelsEntry + 2, // 13: orchestrator.v1.ListPluginsResponse.plugins:type_name -> orchestrator.v1.Plugin + 4, // 14: orchestrator.v1.ListCategoriesResponse.categories:type_name -> orchestrator.v1.Category + 23, // 15: orchestrator.v1.ListPrivatePluginsResponse.plugins:type_name -> orchestrator.v1.PrivatePluginSummary + 2, // 16: orchestrator.v1.PrivatePluginSummary.plugin:type_name -> orchestrator.v1.Plugin + 52, // 17: orchestrator.v1.PrivatePluginSummary.channel_versions:type_name -> orchestrator.v1.PrivatePluginSummary.ChannelVersionsEntry + 30, // 18: orchestrator.v1.ListPrivatePluginInstallSitesResponse.sites:type_name -> orchestrator.v1.PrivatePluginInstallSite + 5, // 19: orchestrator.v1.GetVersionResponse.version:type_name -> orchestrator.v1.Version + 6, // 20: orchestrator.v1.GetVersionResponse.requires:type_name -> orchestrator.v1.Requirement + 6, // 21: orchestrator.v1.ResolveInstallResponse.requires:type_name -> orchestrator.v1.Requirement + 5, // 22: orchestrator.v1.PublishVersionResponse.version:type_name -> orchestrator.v1.Version + 3, // 23: orchestrator.v1.ListMyAccountsResponse.accounts:type_name -> orchestrator.v1.Account + 7, // 24: orchestrator.v1.PluginScopeService.CreateScope:input_type -> orchestrator.v1.CreateScopeRequest + 9, // 25: orchestrator.v1.PluginScopeService.ListMyScopes:input_type -> orchestrator.v1.ListMyScopesRequest + 11, // 26: orchestrator.v1.PluginScopeService.GetScope:input_type -> orchestrator.v1.GetScopeRequest + 13, // 27: orchestrator.v1.PluginRegistryService.CreatePlugin:input_type -> orchestrator.v1.CreatePluginRequest + 15, // 28: orchestrator.v1.PluginRegistryService.GetPlugin:input_type -> orchestrator.v1.GetPluginRequest + 17, // 29: orchestrator.v1.PluginRegistryService.ListPlugins:input_type -> orchestrator.v1.ListPluginsRequest + 31, // 30: orchestrator.v1.PluginRegistryService.GetVersion:input_type -> orchestrator.v1.GetVersionRequest + 33, // 31: orchestrator.v1.PluginRegistryService.ResolveInstall:input_type -> orchestrator.v1.ResolveInstallRequest + 19, // 32: orchestrator.v1.PluginRegistryService.ListCategories:input_type -> orchestrator.v1.ListCategoriesRequest + 21, // 33: orchestrator.v1.PluginRegistryService.ListPrivatePlugins:input_type -> orchestrator.v1.ListPrivatePluginsRequest + 24, // 34: orchestrator.v1.PluginRegistryService.DeletePrivatePlugin:input_type -> orchestrator.v1.DeletePrivatePluginRequest + 26, // 35: orchestrator.v1.PluginRegistryService.DeletePrivatePluginVersion:input_type -> orchestrator.v1.DeletePrivatePluginVersionRequest + 28, // 36: orchestrator.v1.PluginRegistryService.ListPrivatePluginInstallSites:input_type -> orchestrator.v1.ListPrivatePluginInstallSitesRequest + 35, // 37: orchestrator.v1.PluginPublishService.PublishVersion:input_type -> orchestrator.v1.PublishVersionRequest + 37, // 38: orchestrator.v1.PluginAuthService.StartDevice:input_type -> orchestrator.v1.StartDeviceRequest + 39, // 39: orchestrator.v1.PluginAuthService.PollDevice:input_type -> orchestrator.v1.PollDeviceRequest + 41, // 40: orchestrator.v1.PluginAuthService.ApproveDevice:input_type -> orchestrator.v1.ApproveDeviceRequest + 43, // 41: orchestrator.v1.PluginAuthService.DenyDevice:input_type -> orchestrator.v1.DenyDeviceRequest + 45, // 42: orchestrator.v1.PluginAuthService.GetDeviceStatus:input_type -> orchestrator.v1.GetDeviceStatusRequest + 47, // 43: orchestrator.v1.PluginAuthService.Whoami:input_type -> orchestrator.v1.WhoamiRequest + 49, // 44: orchestrator.v1.PluginAuthService.ListMyAccounts:input_type -> orchestrator.v1.ListMyAccountsRequest + 8, // 45: orchestrator.v1.PluginScopeService.CreateScope:output_type -> orchestrator.v1.CreateScopeResponse + 10, // 46: orchestrator.v1.PluginScopeService.ListMyScopes:output_type -> orchestrator.v1.ListMyScopesResponse + 12, // 47: orchestrator.v1.PluginScopeService.GetScope:output_type -> orchestrator.v1.GetScopeResponse + 14, // 48: orchestrator.v1.PluginRegistryService.CreatePlugin:output_type -> orchestrator.v1.CreatePluginResponse + 16, // 49: orchestrator.v1.PluginRegistryService.GetPlugin:output_type -> orchestrator.v1.GetPluginResponse + 18, // 50: orchestrator.v1.PluginRegistryService.ListPlugins:output_type -> orchestrator.v1.ListPluginsResponse + 32, // 51: orchestrator.v1.PluginRegistryService.GetVersion:output_type -> orchestrator.v1.GetVersionResponse + 34, // 52: orchestrator.v1.PluginRegistryService.ResolveInstall:output_type -> orchestrator.v1.ResolveInstallResponse + 20, // 53: orchestrator.v1.PluginRegistryService.ListCategories:output_type -> orchestrator.v1.ListCategoriesResponse + 22, // 54: orchestrator.v1.PluginRegistryService.ListPrivatePlugins:output_type -> orchestrator.v1.ListPrivatePluginsResponse + 25, // 55: orchestrator.v1.PluginRegistryService.DeletePrivatePlugin:output_type -> orchestrator.v1.DeletePrivatePluginResponse + 27, // 56: orchestrator.v1.PluginRegistryService.DeletePrivatePluginVersion:output_type -> orchestrator.v1.DeletePrivatePluginVersionResponse + 29, // 57: orchestrator.v1.PluginRegistryService.ListPrivatePluginInstallSites:output_type -> orchestrator.v1.ListPrivatePluginInstallSitesResponse + 36, // 58: orchestrator.v1.PluginPublishService.PublishVersion:output_type -> orchestrator.v1.PublishVersionResponse + 38, // 59: orchestrator.v1.PluginAuthService.StartDevice:output_type -> orchestrator.v1.StartDeviceResponse + 40, // 60: orchestrator.v1.PluginAuthService.PollDevice:output_type -> orchestrator.v1.PollDeviceResponse + 42, // 61: orchestrator.v1.PluginAuthService.ApproveDevice:output_type -> orchestrator.v1.ApproveDeviceResponse + 44, // 62: orchestrator.v1.PluginAuthService.DenyDevice:output_type -> orchestrator.v1.DenyDeviceResponse + 46, // 63: orchestrator.v1.PluginAuthService.GetDeviceStatus:output_type -> orchestrator.v1.GetDeviceStatusResponse + 48, // 64: orchestrator.v1.PluginAuthService.Whoami:output_type -> orchestrator.v1.WhoamiResponse + 50, // 65: orchestrator.v1.PluginAuthService.ListMyAccounts:output_type -> orchestrator.v1.ListMyAccountsResponse + 45, // [45:66] is the sub-list for method output_type + 24, // [24:45] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name } func init() { file_orchestrator_v1_plugin_registry_proto_init() } @@ -2523,13 +3370,14 @@ func file_orchestrator_v1_plugin_registry_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_orchestrator_v1_plugin_registry_proto_rawDesc), len(file_orchestrator_v1_plugin_registry_proto_rawDesc)), - NumEnums: 0, - NumMessages: 38, + NumEnums: 1, + NumMessages: 52, NumExtensions: 0, NumServices: 4, }, GoTypes: file_orchestrator_v1_plugin_registry_proto_goTypes, DependencyIndexes: file_orchestrator_v1_plugin_registry_proto_depIdxs, + EnumInfos: file_orchestrator_v1_plugin_registry_proto_enumTypes, MessageInfos: file_orchestrator_v1_plugin_registry_proto_msgTypes, }.Build() File_orchestrator_v1_plugin_registry_proto = out.File diff --git a/plugin/mod.go b/plugin/mod.go index 3e22f4c..ceca26a 100644 --- a/plugin/mod.go +++ b/plugin/mod.go @@ -4,8 +4,31 @@ import ( "strings" tomlpkg "github.com/BurntSushi/toml" + + v1 "git.dev.alexdunmow.com/block/core/internal/api/orchestrator/v1" ) +// VisibilityLabel returns the lowercase, user-facing form of a PluginVisibility +// value (e.g. "private", "public", "under_review"). The default for the +// UNSPECIFIED zero value is "public", matching pre-enum behaviour for plugins +// that don't carry an explicit visibility. +func VisibilityLabel(v v1.PluginVisibility) string { + switch v { + case v1.PluginVisibility_PLUGIN_VISIBILITY_PRIVATE: + return "private" + case v1.PluginVisibility_PLUGIN_VISIBILITY_UNDER_REVIEW: + return "under_review" + case v1.PluginVisibility_PLUGIN_VISIBILITY_PUBLIC, + v1.PluginVisibility_PLUGIN_VISIBILITY_UNSPECIFIED: + return "public" + case v1.PluginVisibility_PLUGIN_VISIBILITY_REJECTED: + return "rejected" + case v1.PluginVisibility_PLUGIN_VISIBILITY_TAKEN_DOWN: + return "taken_down" + } + return "unknown" +} + type ModFile struct { Plugin ModPlugin `toml:"plugin"` Compatibility *ModCompat `toml:"compatibility"` @@ -30,6 +53,11 @@ type ModPlugin struct { Version string `toml:"version"` Kind string `toml:"kind,omitempty"` Categories []string `toml:"categories,omitempty"` + // Private marks the plugin as account-scoped. When true, Coords() returns + // the canonical "@private/@" form regardless of the Scope + // field, and the publish flow attributes the plugin to the publisher's + // active account rather than to a public scope. + Private bool `toml:"private,omitempty"` } type ModCompat struct { @@ -60,9 +88,17 @@ func (m *ModFile) Coords() string { if m == nil { return "" } + if m.Plugin.Private { + return "@" + PrivateScopeSlug + "/" + m.Plugin.Name + "@" + m.Plugin.Version + } scope := strings.TrimPrefix(m.Plugin.Scope, "@") if scope == "" { return m.Plugin.Name + "@" + m.Plugin.Version } return "@" + scope + "/" + m.Plugin.Name + "@" + m.Plugin.Version } + +// PrivateScopeSlug is the registry namespace under which all private plugins +// live. Coords for private plugins resolve to "@private/@"; +// uniqueness is enforced by (owner_account_id, name), not by the slug. +const PrivateScopeSlug = "private" diff --git a/plugin/mod_test.go b/plugin/mod_test.go index 1c98585..05b79cc 100644 --- a/plugin/mod_test.go +++ b/plugin/mod_test.go @@ -114,6 +114,61 @@ func TestCoords_AcceptsScopeWithOrWithoutAt(t *testing.T) { } } +func TestParseModFull_PrivateField(t *testing.T) { + src := []byte(` +[plugin] +name = "internal-tool" +version = "0.1.0" +private = true +`) + m, err := ParseModFull(src) + if err != nil { + t.Fatalf("ParseModFull err: %v", err) + } + if !m.Plugin.Private { + t.Errorf("Private = false, want true") + } +} + +func TestParseModFull_PrivateDefaultsFalse(t *testing.T) { + src := []byte(` +[plugin] +name = "public-thing" +scope = "themes" +version = "0.1.0" +`) + m, err := ParseModFull(src) + if err != nil { + t.Fatalf("ParseModFull err: %v", err) + } + if m.Plugin.Private { + t.Errorf("Private = true, want false (default)") + } +} + +func TestCoords_PrivateOverridesScope(t *testing.T) { + m := &ModFile{Plugin: ModPlugin{ + Name: "myplugin", + Scope: "@themes", + Version: "0.1.0", + Private: true, + }} + if got := m.Coords(); got != "@private/myplugin@0.1.0" { + t.Errorf("Coords() = %q, want @private/myplugin@0.1.0", got) + } +} + +func TestCoords_PrivateNoScope(t *testing.T) { + m := &ModFile{Plugin: ModPlugin{ + Name: "myplugin", + Version: "0.1.0", + Private: true, + }} + if got := m.Coords(); got != "@private/myplugin@0.1.0" { + t.Errorf("Coords() = %q, want @private/myplugin@0.1.0", got) + } +} + func TestParseModFull_RequiresAndCompat(t *testing.T) { src := []byte(` [plugin] diff --git a/proto/orchestrator/v1/plugin_registry.proto b/proto/orchestrator/v1/plugin_registry.proto index cc6e9e7..d192e56 100644 --- a/proto/orchestrator/v1/plugin_registry.proto +++ b/proto/orchestrator/v1/plugin_registry.proto @@ -21,6 +21,13 @@ service PluginRegistryService { rpc GetVersion(GetVersionRequest) returns (GetVersionResponse); rpc ResolveInstall(ResolveInstallRequest) returns (ResolveInstallResponse); rpc ListCategories(ListCategoriesRequest) returns (ListCategoriesResponse); + + // Private-plugin RPCs. All require the caller to be a member of the target + // account; the server resolves account membership from the bearer token. + rpc ListPrivatePlugins(ListPrivatePluginsRequest) returns (ListPrivatePluginsResponse); + rpc DeletePrivatePlugin(DeletePrivatePluginRequest) returns (DeletePrivatePluginResponse); + rpc DeletePrivatePluginVersion(DeletePrivatePluginVersionRequest) returns (DeletePrivatePluginVersionResponse); + rpc ListPrivatePluginInstallSites(ListPrivatePluginInstallSitesRequest) returns (ListPrivatePluginInstallSitesResponse); } // PluginPublishService is called by the ninja CLI to publish a version. @@ -36,6 +43,10 @@ service PluginAuthService { rpc DenyDevice(DenyDeviceRequest) returns (DenyDeviceResponse); rpc GetDeviceStatus(GetDeviceStatusRequest) returns (GetDeviceStatusResponse); rpc Whoami(WhoamiRequest) returns (WhoamiResponse); + // ListMyAccounts returns the accounts the authenticated user belongs to. + // Used by `ninja login` (forced selection when multiple) and + // `ninja account list`. + rpc ListMyAccounts(ListMyAccountsRequest) returns (ListMyAccountsResponse); } // --- Shared messages --- @@ -47,11 +58,24 @@ message Scope { google.protobuf.Timestamp created_at = 4; } +// PluginVisibility is the lifecycle/access state of a plugin in the registry. +// PRIVATE plugins are scoped to a single account; PUBLIC plugins are visible +// to all. UNDER_REVIEW / REJECTED / TAKEN_DOWN are public-registry moderation +// states and do not apply to private plugins. +enum PluginVisibility { + PLUGIN_VISIBILITY_UNSPECIFIED = 0; + PLUGIN_VISIBILITY_PRIVATE = 1; + PLUGIN_VISIBILITY_UNDER_REVIEW = 2; + PLUGIN_VISIBILITY_PUBLIC = 3; + PLUGIN_VISIBILITY_REJECTED = 4; + PLUGIN_VISIBILITY_TAKEN_DOWN = 5; +} + message Plugin { string id = 1; string scope_slug = 2; string name = 3; - string visibility = 4; + PluginVisibility visibility = 4; bool premium = 5; string description = 6; string homepage_url = 7; @@ -59,6 +83,19 @@ message Plugin { google.protobuf.Timestamp updated_at = 9; string kind = 10; string display_name = 11; + // owner_account_id is set for private plugins and identifies the account + // that owns the plugin. Empty for public plugins. + string owner_account_id = 12; +} + +// Account is a multi-user organisational unit in the orchestrator. The +// authenticated user may belong to one or more accounts via account_users. +message Account { + string id = 1; + string slug = 2; + string display_name = 3; + // role of the authenticated caller in this account: owner | manager | member. + string role = 4; } message Category { @@ -103,6 +140,14 @@ message CreatePluginRequest { string kind = 4; repeated string categories = 5; string display_name = 6; + // visibility is the requested visibility of the plugin. UNSPECIFIED defers + // to the registry's default (public for explicit scopes, private for the + // "@private" sentinel). + PluginVisibility visibility = 7; + // active_account_id is required when visibility = PRIVATE; the server + // verifies the caller is a member of this account before creating the + // private plugin under it. + string active_account_id = 8; } message CreatePluginResponse { Plugin plugin = 1; @@ -127,6 +172,58 @@ message ListPluginsResponse { repeated Plugin plugins = 1; } message ListCategoriesRequest {} message ListCategoriesResponse { repeated Category categories = 1; } +// --- Private plugin RPC messages --- + +message ListPrivatePluginsRequest { + // account_id selects which account's private plugins to list. The caller + // must be a member of this account. + string account_id = 1; +} +message ListPrivatePluginsResponse { + repeated PrivatePluginSummary plugins = 1; +} + +// PrivatePluginSummary is the row shape used by the publisher dashboard and +// by the CMS "Private" installer tab. It bundles a Plugin with the latest +// version per channel and an installation count. +message PrivatePluginSummary { + Plugin plugin = 1; + // channel_versions maps channel name -> latest version string published on + // that channel (e.g. "latest" -> "0.3.0", "beta" -> "0.4.0-beta.1"). + map channel_versions = 2; + // installed_site_count is the number of CMS sites in the owning account + // that currently have any version of this plugin installed. Used to gate + // delete-plugin in the dashboard. + int32 installed_site_count = 3; +} + +message DeletePrivatePluginRequest { + string account_id = 1; + string plugin_name = 2; +} +message DeletePrivatePluginResponse {} + +message DeletePrivatePluginVersionRequest { + string account_id = 1; + string plugin_name = 2; + string version = 3; +} +message DeletePrivatePluginVersionResponse {} + +message ListPrivatePluginInstallSitesRequest { + string account_id = 1; + string plugin_name = 2; +} +message ListPrivatePluginInstallSitesResponse { + repeated PrivatePluginInstallSite sites = 1; +} +message PrivatePluginInstallSite { + string instance_id = 1; + string site_display_name = 2; + string installed_version = 3; + string pinned_channel = 4; +} + message GetVersionRequest { string scope_slug = 1; string plugin_name = 2; @@ -211,3 +308,8 @@ message WhoamiResponse { string email = 2; string display_name = 3; } + +message ListMyAccountsRequest {} +message ListMyAccountsResponse { + repeated Account accounts = 1; +}