Files
threshold/internal/proto/controller/api/services/v1/account_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

182 lines
6.1 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/accounts/v1/account.proto";
service AccountService {
// GetAccount returns a stored Account if present. The provided request must
// include the id for the Account be retrieved. If missing, malformed or
// referencing a non existing Account an error is returned.
rpc GetAccount(GetAccountRequest) returns (GetAccountResponse) {
option (google.api.http) = {
get: "/v1/accounts/{id}"
response_body: "item"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Gets a single Account."
};
}
// ListAccounts returns a list of stored Accounts which exist inside the
// provided Auth Method. The request must include the Auth Method id which
// contains the Accounts being listed. If missing or malformed an error
// is returned.
rpc ListAccounts(ListAccountsRequest) returns (ListAccountsResponse) {
option (google.api.http) = {
get: "/v1/accounts"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Lists all Accounts in a specific Auth Method."
};
}
// CreateAccount creates and stores an Account in boundary. The provided
// request must include the Auth Method ID in which the Account will be
// created. If the Auth Method ID is missing, malformed, or references a non
// existing resource an error is returned. If a name or login_name is
// provided that is in use in another Account in the same Auth Method an
// error is returned.
rpc CreateAccount(CreateAccountRequest) returns (CreateAccountResponse) {
option (google.api.http) = {
post: "/v1/accounts"
body: "item"
response_body: "item"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Creates a single Account in the provided Auth Method."
};
}
// UpdateAccount updates an existing Account in boundary. The provided Account
// 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
// Account. An error is returned if the Account id is missing or references a
// non-existing resource. An error is also returned if the request attempts
// to update the name or login_name to one that is already in use in the
// containing Auth Method.
rpc UpdateAccount(UpdateAccountRequest) returns (UpdateAccountResponse) {
option (google.api.http) = {
patch: "/v1/accounts/{id}"
body: "item"
response_body: "item"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Updates an Account."
};
}
// DeleteAccount removes an Account from Boundary. If the provided Account Id
// is malformed or not provided an error is returned.
rpc DeleteAccount(DeleteAccountRequest) returns (DeleteAccountResponse) {
option (google.api.http) = {
delete: "/v1/accounts/{id}"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Deletes an Account."
};
}
// SetPassword sets the Account's password to the one provided in the
// request. This method is intended for administration purpose and as such
// does not require the old password.
rpc SetPassword(SetPasswordRequest) returns (SetPasswordResponse) {
option (google.api.http) = {
post: "/v1/accounts/{id}:set-password"
body: "*"
response_body: "item"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Sets the password for the provided Account."
};
}
// ChangePassword changes the Account's password to the one provided in the
// request. This method is intended for end users and requires the existing
// password to be provided for authentication purposes.
rpc ChangePassword(ChangePasswordRequest) returns (ChangePasswordResponse) {
option (google.api.http) = {
post: "/v1/accounts/{id}:change-password"
body: "*"
response_body: "item"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Sets the password for the provided Account."
};
}
}
message GetAccountRequest {
string id = 1;
}
message GetAccountResponse {
resources.accounts.v1.Account item = 1;
}
message ListAccountsRequest {
string auth_method_id = 1 [json_name="auth_method_id"];
string filter = 30 [json_name="filter"];
}
message ListAccountsResponse {
repeated resources.accounts.v1.Account items = 1;
}
message CreateAccountRequest {
resources.accounts.v1.Account item = 2;
}
message CreateAccountResponse {
string uri = 1;
resources.accounts.v1.Account item = 2;
}
message UpdateAccountRequest {
string id = 1;
resources.accounts.v1.Account item = 2;
google.protobuf.FieldMask update_mask = 3 [json_name="update_mask"];
}
message UpdateAccountResponse {
resources.accounts.v1.Account item = 1;
}
message DeleteAccountRequest {
string id = 1;
}
message DeleteAccountResponse {}
message SetPasswordRequest {
string id = 1;
// Version is used to ensure this resource has not changed.
// The mutation will fail if the version does not match the latest known good version.
uint32 version = 2;
string password = 3;
}
message SetPasswordResponse {
resources.accounts.v1.Account item = 1;
}
message ChangePasswordRequest {
string id = 1;
// Version is used to ensure this resource has not changed.
// The mutation will fail if the version does not match the latest known good version.
uint32 version = 2;
string current_password = 3 [json_name="current_password"];
string new_password = 4 [json_name="new_password"];
}
message ChangePasswordResponse {
resources.accounts.v1.Account item = 1;
}