As pointed out by Rob, this makes it clearer what the action actually is. We were sort of torn on it before, but I've definitely come around to it.
240 lines
8.4 KiB
Protocol Buffer
240 lines
8.4 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/targets/v1/target.proto";
|
|
|
|
service TargetService {
|
|
|
|
// GetTarget returns a stored Target if present. The provided request
|
|
// must include the Target ID for the Target being retrieved. If
|
|
// that ID is missing, malformed or reference a non existing
|
|
// resource an error is returned.
|
|
rpc GetTarget(GetTargetRequest) returns (GetTargetResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/targets/{id}"
|
|
response_body: "item"
|
|
};
|
|
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
|
|
summary: "Gets a single Target."
|
|
};
|
|
}
|
|
|
|
// ListTargets returns a list of stored Targets which exist inside the project
|
|
// referenced inside the request. The request must include the scope ID for
|
|
// the Targets being retrieved. If the scope ID is missing, malformed, or
|
|
// reference a non existing scope, an error is returned.
|
|
rpc ListTargets(ListTargetsRequest) returns (ListTargetsResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/targets"
|
|
};
|
|
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
|
|
summary: "Lists all Targets."
|
|
};
|
|
}
|
|
|
|
// CreateTarget creates and stores a Target in boundary. The provided
|
|
// request must include the scope id in which the Target 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 Target in the same scope, an error is returned.
|
|
rpc CreateTarget(CreateTargetRequest) returns (CreateTargetResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/targets"
|
|
body: "item"
|
|
response_body: "item"
|
|
};
|
|
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
|
|
summary: "Creates a single Target."
|
|
};
|
|
}
|
|
|
|
// UpdateTarget updates an existing Target in boundary. The provided
|
|
// Target 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 Target. An error is returned if the Target 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 UpdateTarget(UpdateTargetRequest) returns (UpdateTargetResponse) {
|
|
option (google.api.http) = {
|
|
patch: "/v1/targets/{id}"
|
|
body: "item"
|
|
response_body: "item"
|
|
};
|
|
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
|
|
summary: "Updates a Target."
|
|
};
|
|
}
|
|
|
|
// DeleteTarget removes a Target from Boundary. If the provided Target ID
|
|
// is malformed or not provided an error is returned.
|
|
rpc DeleteTarget(DeleteTargetRequest) returns (DeleteTargetResponse) {
|
|
option (google.api.http) = {
|
|
delete: "/v1/targets/{id}"
|
|
};
|
|
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
|
|
summary: "Deletes a Target."
|
|
};
|
|
}
|
|
|
|
// AuthorizeSession creates authorization information from a given Target.
|
|
rpc AuthorizeSession(AuthorizeSessionRequest) returns (AuthorizeSessionResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/targets/{id}:authorize-session"
|
|
body: "*"
|
|
response_body: "item"
|
|
};
|
|
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
|
|
summary: "Authorizes a Session."
|
|
};
|
|
}
|
|
|
|
// AddTargetHostSets adds Host Sets to this Target. The provided request must
|
|
// include the Target ID to which the Host Sets will be added.
|
|
// All Host Sets added to the provided Target must be a child of a Catalog that
|
|
// is a child of the same scope as this Target. If the scope or Target IDs are
|
|
// missing, malformed, or reference non-existing resources, an error is
|
|
// returned. An error is returned if a Host Set is attempted to be added
|
|
// to a target that is already present on the Target.
|
|
rpc AddTargetHostSets(AddTargetHostSetsRequest) returns (AddTargetHostSetsResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/targets/{id}:add-host-sets"
|
|
body: "*"
|
|
response_body: "item"
|
|
};
|
|
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
|
|
summary: "Adds existing Host Sets to a Target."
|
|
};
|
|
}
|
|
|
|
// SetTargetHostSets sets the Target's Host Sets. Any existing Host Sets on the
|
|
// Target are deleted if they are not included in this request. The
|
|
// provided request must include the scope, and the Target ID on which the
|
|
// Host Sets will be set. All Host Sets in the request must be a child of
|
|
// a Catalog that is in the same scope as the provided Target. If any
|
|
// IDs are missing, malformed, or references a non-existing resource, an
|
|
// error is returned.
|
|
rpc SetTargetHostSets(SetTargetHostSetsRequest) returns (SetTargetHostSetsResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/targets/{id}:set-host-sets"
|
|
body: "*"
|
|
response_body: "item"
|
|
};
|
|
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
|
|
summary: "Sets the Host Sets on the Target."
|
|
};
|
|
}
|
|
|
|
// RemoveTargetHostSets removes the Host Sets from the specified Target. The
|
|
// provided request must include the Target ID for the Target
|
|
// from which the Host Sets will be removed. If the ID is missing,
|
|
// malformed, or references a non-existing scope or Catalog, an error is
|
|
// returned. An error is returned if a Host Set is attempted to be
|
|
// removed from the Target when the Target does not have the Host Set.
|
|
rpc RemoveTargetHostSets(RemoveTargetHostSetsRequest) returns (RemoveTargetHostSetsResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/targets/{id}:remove-host-sets"
|
|
body: "*"
|
|
response_body: "item"
|
|
};
|
|
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
|
|
summary: "Removes Host Sets from the Target."
|
|
};
|
|
}
|
|
|
|
}
|
|
|
|
message GetTargetRequest {
|
|
string id = 1;
|
|
}
|
|
|
|
message GetTargetResponse {
|
|
resources.targets.v1.Target item = 1;
|
|
}
|
|
|
|
message ListTargetsRequest {
|
|
string scope_id = 1;
|
|
}
|
|
|
|
message ListTargetsResponse {
|
|
repeated resources.targets.v1.Target items = 1;
|
|
}
|
|
|
|
message CreateTargetRequest {
|
|
resources.targets.v1.Target item = 1;
|
|
}
|
|
|
|
message CreateTargetResponse {
|
|
string uri = 1;
|
|
resources.targets.v1.Target item = 2;
|
|
}
|
|
|
|
message UpdateTargetRequest {
|
|
string id = 1;
|
|
resources.targets.v1.Target item = 2;
|
|
google.protobuf.FieldMask update_mask = 3 [json_name="update_mask"];
|
|
}
|
|
|
|
message UpdateTargetResponse {
|
|
resources.targets.v1.Target item = 1;
|
|
}
|
|
|
|
message DeleteTargetRequest {
|
|
string id = 1;
|
|
}
|
|
|
|
message DeleteTargetResponse {}
|
|
|
|
message AddTargetHostSetsRequest {
|
|
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;
|
|
repeated string host_set_ids = 3 [json_name="host_set_ids"];
|
|
}
|
|
|
|
message AddTargetHostSetsResponse {
|
|
api.resources.targets.v1.Target item = 1;
|
|
}
|
|
|
|
message SetTargetHostSetsRequest {
|
|
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;
|
|
repeated string host_set_ids = 3 [json_name="host_set_ids"];
|
|
}
|
|
|
|
message SetTargetHostSetsResponse {
|
|
api.resources.targets.v1.Target item = 1;
|
|
}
|
|
|
|
message RemoveTargetHostSetsRequest {
|
|
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;
|
|
repeated string host_set_ids = 3 [json_name="host_set_ids"];
|
|
}
|
|
|
|
message RemoveTargetHostSetsResponse {
|
|
api.resources.targets.v1.Target item = 1;
|
|
}
|
|
|
|
message AuthorizeSessionRequest {
|
|
string id = 1;
|
|
|
|
// An optional parameter allowing specification of the particular Host within the Target's configured Host Sets to connect to during this Session.
|
|
string host_id = 2 [json_name="host_id"];
|
|
}
|
|
|
|
message AuthorizeSessionResponse {
|
|
api.resources.targets.v1.SessionAuthorization item = 1;
|
|
} |