api/v1/proto/api.proto (239 lines of code) (raw):
syntax = "proto3";
import "google/api/annotations.proto";
import "google/protobuf/empty.proto";
import "buf/validate/validate.proto";
import "proto/log.proto";
import "protoc-gen-openapiv2/options/annotations.proto";
import "google/protobuf/timestamp.proto";
// https://protobuf.dev/reference/go/go-generated/#package
option go_package = "dev.azure.com/service-hub-flg/service_hub_validation/_git/service_hub_validation_service.git/mygreeterv3/api/v1";
// More info on how to use REST api
// https://cloud.google.com/endpoints/docs/grpc/transcoding#map_a_get_method
// The greeting service definition.
service MyGreeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {
option (google.api.http) = {
post: "/v1/hello"
body: "*"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Send a greeting"
description: "This operation sends a greeting to the user."
};
}
// Creates a resource group
rpc CreateResourceGroup (CreateResourceGroupRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
post: "/v1/resourcegroups"
body: "*"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Create a resource group"
description: "This operation creates a new resource group."
};
}
// Reads a resource group
rpc ReadResourceGroup (ReadResourceGroupRequest) returns (ReadResourceGroupResponse) {
option (google.api.http) = {
get: "/v1/resourcegroups/{name}"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Read a resource group"
description: "This operation reads the details of a resource group."
};
}
// Deletes a resource group
rpc DeleteResourceGroup (DeleteResourceGroupRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1/resourcegroups/{name}"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Delete a resource group"
description: "This operation deletes a resource group."
};
}
// Updates a resource group
rpc UpdateResourceGroup (UpdateResourceGroupRequest) returns (UpdateResourceGroupResponse) {
option (google.api.http) = {
put: "/v1/resourcegroups/{name}"
body: "tags"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Update a resource group"
description: "This operation updates the tags of a resource group."
};
}
// Lists all resource groups
rpc ListResourceGroups (google.protobuf.Empty) returns (ListResourceGroupResponse) {
option (google.api.http) = {
get: "/v1/resourcegroups"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "List all resource groups"
description: "This operation lists all the resource groups."
};
}
// Creates a storage account
rpc CreateStorageAccount (CreateStorageAccountRequest) returns (CreateStorageAccountResponse) {
option (google.api.http) = {
post: "/v1/resourcegroups/{rgName}/storageaccounts"
body: "*"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Create a storage account"
description: "This operation creates a new storage account."
};
}
// Reads a storage account
rpc ReadStorageAccount (ReadStorageAccountRequest) returns (ReadStorageAccountResponse) {
option (google.api.http) = {
get: "/v1/resourcegroups/{rgName}/storageaccounts/{saName}"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Read a storage account"
description: "This operation reads the details of a storage account."
};
}
// Deletes a storage account
rpc DeleteStorageAccount (DeleteStorageAccountRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1/resourcegroups/{rgName}/storageaccounts/{saName}"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Delete a storage account"
description: "This operation deletes a storage account."
};
}
// Updates a storage account
rpc UpdateStorageAccount (UpdateStorageAccountRequest) returns (UpdateStorageAccountResponse) {
option (google.api.http) = {
put: "/v1/resourcegroups/{rgName}/storageaccounts/{saName}"
body: "tags"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Update a storage account"
description: "This operation updates the tags of a storage account."
};
}
// Lists all storage accounts
rpc ListStorageAccounts (ListStorageAccountRequest) returns (ListStorageAccountResponse) {
option (google.api.http) = {
get: "/v1/resourcegroups/{rgName}/storageaccounts"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "List all storage accounts"
description: "This operation lists all the storage accounts."
};
}
// ********************ASYNC OPERATIONS********************
// Enqueue into the queue
rpc StartLongRunningOperation (StartLongRunningOperationRequest) returns (StartLongRunningOperationResponse) {
option (google.api.http) = {
post: "/v1/async/longrunningoperation"
body: "*"
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Start a long running operation."
description: "This call starts an async long running operation."
};
}
}
message HelloRequest {
string name = 1 [(buf.validate.field).string.min_len = 2];
int32 age = 2 [(buf.validate.field).int32 = {
gte: 1,
lt: 150
}, (servicehub.fieldoptions.loggable) = false];
string email = 3 [(buf.validate.field).string = {
min_len: 1,
pattern: "^[\\w.-]+@[\\w.-]+\\.[\\w]{2,}$"
}, (servicehub.fieldoptions.loggable) = false];
optional Address address = 4;
}
message HelloReply {
string message = 1;
}
message Address {
string city = 1 [(buf.validate.field).string.min_len = 1]; // The city name
string state = 2 [(buf.validate.field).string.min_len = 1, (servicehub.fieldoptions.loggable) = false]; // The state name
int32 zipcode = 3 [(buf.validate.field).int32 = {
gte: 10000,
lt: 99999
}]; // The zip code
string street = 4 [(buf.validate.field).string.min_len = 1, (servicehub.fieldoptions.loggable) = false]; // The street name
}
message CreateResourceGroupRequest {
string name = 1;
string region = 2;
}
message ReadResourceGroupRequest {
string name = 1;
}
message ReadResourceGroupResponse {
ResourceGroup resourceGroup = 1;
}
message DeleteResourceGroupRequest {
string name = 1;
}
message UpdateResourceGroupRequest {
string name = 1;
map<string, string> tags = 2;
}
message UpdateResourceGroupResponse {
ResourceGroup resourceGroup = 1;
}
message ListResourceGroupResponse {
repeated ResourceGroup rgList = 1;
}
message ResourceGroup {
string id = 1;
string name = 2;
string location = 3;
}
message CreateStorageAccountRequest {
string rgName = 1;
string region = 2;
}
message CreateStorageAccountResponse {
string name = 1;
}
message ReadStorageAccountRequest {
string rgName = 1;
string saName = 2;
}
message ReadStorageAccountResponse {
StorageAccount storageAccount = 1;
}
message DeleteStorageAccountRequest {
string rgName = 1;
string saName = 2;
}
message UpdateStorageAccountRequest {
string rgName = 1;
string saName = 2;
map<string, string> tags = 3;
}
message UpdateStorageAccountResponse {
StorageAccount storageAccount = 1;
}
message ListStorageAccountRequest {
string rgName = 1;
}
message ListStorageAccountResponse {
repeated StorageAccount saList = 1;
}
message StorageAccount {
string id = 1;
string name = 2;
string location = 3;
}
// ********************ASYNC OPERATIONS********************
message StartLongRunningOperationRequest {
string entityId = 1;
string entityType = 2;
google.protobuf.Timestamp expirationTimestamp = 3;
}
message StartLongRunningOperationResponse {
string operationId = 1;
}