Files
threshold/internal/proto/controller/api/services/v1/user_service.proto
T
Johan Brandhorst-Satzkorn b1d6a1da9a Switch to buf for protobuf generation (#1944)
* Install buf with go install

This reduces the impact of using buf on our dependency
closure, which was significant. It also avoids potential
issues with building buf given our own internal dependency
constraints. This has caused issues (including crashes!)
in the past.

See https://github.com/cockroachdb/cockroach/issues/67216#issuecomment-874176186
for more discussion on using tool dependencies generally, and
https://github.com/bufbuild/buf/issues/52
for an example of where this sort of thing caused an issue for a user.

* Upgrade buf version

We should migrate to v1 sooner rather than later, as it has some
breaking changes from v0.

* Change buf lint/breaking commands

These commands were moved up one level for v1

* Migrate to buf.yaml to v1

* Remove unused imports

These were uncovered by using "buf lint".

* Use buf v1.3.1

* Depend on googleapis and grpc-gateway via BSR

* Switch to buf for proto generation

* Remove third party dependency

* Remove unused tools and scripts

* Move local protos up one level

* Temporarily don't fail on breaking changes

* Generate CI config

* Fix generation of controller.json

* Replace use of deprecated flag

* Remove unused import, regenerate files

* Remove temporary skipping over breaking check
2022-04-04 13:55:42 -04:00

213 lines
7.2 KiB
Protocol Buffer

syntax = "proto3";
package controller.api.services.v1;
option go_package = "github.com/hashicorp/boundary/internal/gen/controller/api/services;services";
import "protoc-gen-openapiv2/options/annotations.proto";
import "google/api/annotations.proto";
import "google/protobuf/field_mask.proto";
import "controller/api/resources/users/v1/user.proto";
service UserService {
// GetUser returns a stored User if present. The provided request
// must include the User ID for the User being retrieved. If
// that ID is missing, malformed or reference a non existing
// resource an error is returned.
rpc GetUser(GetUserRequest) returns (GetUserResponse) {
option (google.api.http) = {
get: "/v1/users/{id}"
response_body: "item"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Gets a single User."
};
}
// ListUsers returns a list of stored Users which exist inside the provided
// scope. The request must include the scope ID for the Users being listed.
// If the scope ID is missing, malformed, or reference a non existing scope,
// an error is returned.
rpc ListUsers(ListUsersRequest) returns (ListUsersResponse) {
option (google.api.http) = {
get: "/v1/users"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Lists all Users."
};
}
// CreateUser creates and stores a User in boundary. The provided
// request must include the Scope id in which the User will be created.
// If the Scope id is missing, malformed or references a non existing
// resource, an error is returned. If a name is provided that is in
// use in another User in the same scope, an error is returned.
rpc CreateUser(CreateUserRequest) returns (CreateUserResponse) {
option (google.api.http) = {
post: "/v1/users"
body: "item"
response_body: "item"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Creates a single User."
};
}
// UpdateUser updates an existing User in boundary. The provided
// User 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 User. An error is returned if either the User 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
// in this Scope.
rpc UpdateUser(UpdateUserRequest) returns (UpdateUserResponse) {
option (google.api.http) = {
patch: "/v1/users/{id}"
body: "item"
response_body: "item"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Updates a User."
};
}
// DeleteUser removes a User from Boundary. If the provided User ID
// is malformed or not provided an error is returned.
rpc DeleteUser(DeleteUserRequest) returns (DeleteUserResponse) {
option (google.api.http) = {
delete: "/v1/users/{id}"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Deletes a User."
};
}
// AddUserAccounts adds Users as members to a group. The provided request
// must include the User id which the Account will be added to. If that id is
// missing, malformed or references a non existing resource, an error is
// returned. If any of the Accounts are associated with another User an
// error is returned.
rpc AddUserAccounts(AddUserAccountsRequest) returns (AddUserAccountsResponse) {
option (google.api.http) = {
post: "/v1/users/{id}:add-accounts"
body: "*"
response_body: "item"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Associates an Account to a User."
};
}
// SetUserAccounts sets the Accounts associated with this User.
// Any existing Accounts are removed if they are not included in this request.
// The provided request must include the User ID which the Accounts will be
// associated with. Any Accounts not included in this request but previously
// associated with this user will be disassociated.
// If the User ID is missing, malformed or references a non existing resource,
// an error is returned.
// If any of the Accounts are associated with another User an error is returned.
rpc SetUserAccounts(SetUserAccountsRequest) returns (SetUserAccountsResponse) {
option (google.api.http) = {
post: "/v1/users/{id}:set-accounts"
body: "*"
response_body: "item"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Set the Accounts associated to the User to exactly the list of provided in the request, removing any Accounts that are not specified."
};
}
// RemoveUserAccounts removes Accounts from the specified User.
// The provided request must include the User id which the Accounts
// will be removed from. If the provided Account ids is not associated with the
// provided User, an error is returned.
rpc RemoveUserAccounts(RemoveUserAccountsRequest) returns (RemoveUserAccountsResponse) {
option (google.api.http) = {
post: "/v1/users/{id}:remove-accounts"
body: "*"
response_body: "item"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Removes the specified Accounts from being associated with the provided User."
};
}
}
message GetUserRequest {
string id = 1;
}
message GetUserResponse {
resources.users.v1.User item = 1;
}
message ListUsersRequest {
string scope_id = 1;
bool recursive = 20 [json_name="recursive"];
string filter = 30 [json_name="filter"];
}
message ListUsersResponse {
repeated resources.users.v1.User items = 1;
}
message CreateUserRequest {
resources.users.v1.User item = 1;
}
message CreateUserResponse {
string uri = 1;
resources.users.v1.User item = 2;
}
message UpdateUserRequest {
string id = 1;
resources.users.v1.User item = 2;
google.protobuf.FieldMask update_mask = 3 [json_name="update_mask"];
}
message UpdateUserResponse {
resources.users.v1.User item = 1;
}
message DeleteUserRequest {
string id = 1;
}
message DeleteUserResponse {}
message AddUserAccountsRequest {
string id = 1;
// The version ensures the User hasn't changed since it was last retrieved and if it has the request will fail.
uint32 version = 2;
repeated string account_ids = 3 [json_name="account_ids"];
}
message AddUserAccountsResponse {
resources.users.v1.User item = 1;
}
message SetUserAccountsRequest {
string id = 1;
// The version ensures the User hasn't changed since it was last retrieved and if it has the request will fail.
uint32 version = 2;
repeated string account_ids = 3 [json_name="account_ids"];
}
message SetUserAccountsResponse {
resources.users.v1.User item = 1;
}
message RemoveUserAccountsRequest {
string id = 1;
// The version ensures the User hasn't changed since it was last retrieved and if it has the request will fail.
uint32 version = 2;
repeated string account_ids = 3 [json_name="account_ids"];
}
message RemoveUserAccountsResponse {
resources.users.v1.User item = 1;
}