syntax = "proto3"; package controller.api.services.v1; import "controller/api/resources/scopes/v1/scope.proto"; import "google/api/annotations.proto"; import "google/protobuf/field_mask.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; option go_package = "github.com/hashicorp/boundary/internal/gen/controller/api/services;services"; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { info: { title: "Boundary Controller HTTP API" } schemes: HTTPS schemes: HTTP }; service ScopeService { // GetScope returns a stored Scope if present. The provided request // must include the scope ID for the scope being retrieved. If // that ID is missing, malformed or references a non existing // resource an error is returned. rpc GetScope(GetScopeRequest) returns (GetScopeResponse) { option (google.api.http) = { get: "/v1/scopes/{id}" response_body: "item" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "Gets a single Scope." }; } // ListScopes returns a list of stored Scopes which exist inside the provided // parent Scope id. rpc ListScopes(ListScopesRequest) returns (ListScopesResponse) { option (google.api.http) = { get: "/v1/scopes" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "Lists all Scopes within the Scope provided in the request." }; } // CreateScope creates and stores a Scope in boundary. The provided request // must include the Scope ID in which the new scope will be created. If the Scope // ID is missing, malformed or references a non existing scope, an error is // returned. If a name is provided that is in use in another Scope in the same // parent scope, an error is returned. rpc CreateScope(CreateScopeRequest) returns (CreateScopeResponse) { option (google.api.http) = { post: "/v1/scopes" body: "item" response_body: "item" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "Creates a single Scope." }; } // UpdateScope updates an existing Scope in boundary. The provided // Scope must not have any read only fields set. The update mask must be // included in the request and contain at least 1 mutable field. To unset // a field's value, include the field in the update mask and don't set it // in the provided scope. An error is returned if the Scope Id is // missing or reference a non-existing resource. An error // is also returned if the request attempts to update the name to one that is // already in use by another scope in the parent scope. rpc UpdateScope(UpdateScopeRequest) returns (UpdateScopeResponse) { option (google.api.http) = { patch: "/v1/scopes/{id}" body: "item" response_body: "item" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "Updates a Scope." }; } // DeleteScope remotes a Scope and all child resources from Boundary. If the // provided Scope IDs are malformed or not provided an error is returned. rpc DeleteScope(DeleteScopeRequest) returns (DeleteScopeResponse) { option (google.api.http) = { delete: "/v1/scopes/{id}" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "Deletes a Scope." }; } } message GetScopeRequest { string id = 1; } message GetScopeResponse { resources.scopes.v1.Scope item = 1; } message ListScopesRequest { string scope_id = 1; bool recursive = 20 [json_name = "recursive"]; string filter = 30 [json_name = "filter"]; } message ListScopesResponse { repeated resources.scopes.v1.Scope items = 1; } message CreateScopeRequest { bool skip_admin_role_creation = 1; bool skip_default_role_creation = 2; resources.scopes.v1.Scope item = 3; } message CreateScopeResponse { string uri = 1; resources.scopes.v1.Scope item = 2; } message UpdateScopeRequest { string id = 1; resources.scopes.v1.Scope item = 2; google.protobuf.FieldMask update_mask = 3 [json_name = "update_mask"]; } message UpdateScopeResponse { resources.scopes.v1.Scope item = 1; } message DeleteScopeRequest { string id = 1; } message DeleteScopeResponse {}