diff options
author | iddqd <iddqd@yandex-team.com> | 2024-06-11 10:12:13 +0300 |
---|---|---|
committer | iddqd <iddqd@yandex-team.com> | 2024-06-11 10:22:43 +0300 |
commit | 07f57e35443ab7f09471caf2dbf1afbcced4d9f7 (patch) | |
tree | a4a7b66ead62e83fa988a2ec2ce6576311c1f4b1 /contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc | |
parent | 6db3b8ca95e44179e48306a58656fb1f9317d9c3 (diff) | |
download | ydb-07f57e35443ab7f09471caf2dbf1afbcced4d9f7.tar.gz |
add contrib/python/yandexcloud to import
03b7d3cad2237366b55b393e18d4dc5eb222798c
Diffstat (limited to 'contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc')
12 files changed, 2231 insertions, 0 deletions
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/address.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/address.proto new file mode 100644 index 0000000000..246b04ba6b --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/address.proto @@ -0,0 +1,110 @@ +syntax = "proto3"; + +package yandex.cloud.vpc.v1; + +import "google/protobuf/timestamp.proto"; +import "yandex/cloud/validation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1;vpc"; +option java_package = "yandex.cloud.api.vpc.v1"; + +// An Address resource. For more information, see [Address](/docs/vpc/concepts/address). +message Address { + reserved 8 to 14; + enum Type { + TYPE_UNSPECIFIED = 0; + + // Internal IP address. + INTERNAL = 1; + + // Public IP address. + EXTERNAL = 2; + } + + enum IpVersion { + IP_VERSION_UNSPECIFIED = 0; + + // IPv4 address. + IPV4 = 1; + + // IPv6 address. + IPV6 = 2; + } + + // ID of the address. Generated at creation time. + string id = 1; + + // ID of the folder that the address belongs to. + string folder_id = 2; + + // Creation timestamp. + google.protobuf.Timestamp created_at = 3; + + // Name of the address. + // The name is unique within the folder. + string name = 4; + + // Description of the address. + string description = 5; + + // Resource labels as `key:value` pairs. + map<string, string> labels = 6; + + // External ipv4 address specification. + oneof address { + option (exactly_one) = true; + + ExternalIpv4Address external_ipv4_address = 7; + } + + // Specifies if address is reserved or not. + bool reserved = 15; + + // Specifies if address is used or not. + bool used = 16; + + // Type of the IP address. + Type type = 17; + + // Version of the IP address. + IpVersion ip_version = 18; + + // Specifies if address protected from deletion. + bool deletion_protection = 19; + + // Optional DNS record specifications + repeated DnsRecord dns_records = 20; +} + +message ExternalIpv4Address { + // Value of address. + string address = 1; + + // Availability zone from which the address will be allocated. + string zone_id = 2; + + // Parameters of the allocated address, for example DDoS Protection. + AddressRequirements requirements = 3; +} + +message AddressRequirements { + // DDoS protection provider ID. + string ddos_protection_provider = 1; + + // Capability to send SMTP traffic. + string outgoing_smtp_capability = 2; +} + +message DnsRecord { + // DNS record name (absolute or relative to the DNS zone in use). + string fqdn = 1; + + // ID of the public DNS zone. + string dns_zone_id = 2; + + // TTL of record. + int64 ttl = 3; + + // If the PTR record is required, this parameter must be set to "true". + bool ptr = 4; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/address_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/address_service.proto new file mode 100644 index 0000000000..f79d25b822 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/address_service.proto @@ -0,0 +1,328 @@ +syntax = "proto3"; + +package yandex.cloud.vpc.v1; + +import "google/api/annotations.proto"; +import "google/protobuf/field_mask.proto"; +import "yandex/cloud/api/operation.proto"; +import "yandex/cloud/operation/operation.proto"; +import "yandex/cloud/validation.proto"; +import "yandex/cloud/vpc/v1/address.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1;vpc"; +option java_package = "yandex.cloud.api.vpc.v1"; + +// A set of methods for managing Address resources. +service AddressService { + // Returns the specified Address resource. + // + // To get the list of all available Address resources, make a [List] request. + rpc Get(GetAddressRequest) returns (Address) { + option (google.api.http) = {get: "/vpc/v1/addresses/{address_id}"}; + } + + // Returns the specified Address resource by a given value. + // + // To get the list of all available Address resources, make a [List] request. + rpc GetByValue(GetAddressByValueRequest) returns (Address) { + option (google.api.http) = {get: "/vpc/v1/addresses:byValue"}; + } + + // Retrieves the list of Address resources in the specified folder. + rpc List(ListAddressesRequest) returns (ListAddressesResponse) { + option (google.api.http) = {get: "/vpc/v1/addresses"}; + } + + // Creates an address in the specified folder and network. + rpc Create(CreateAddressRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/vpc/v1/addresses" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "CreateAddressMetadata" + response: "Address" + }; + } + + // Updates the specified address. + rpc Update(UpdateAddressRequest) returns (operation.Operation) { + option (google.api.http) = { + patch: "/vpc/v1/addresses/{address_id}" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "UpdateAddressMetadata" + response: "Address" + }; + } + + // Deletes the specified address. + rpc Delete(DeleteAddressRequest) returns (operation.Operation) { + option (google.api.http) = {delete: "/vpc/v1/addresses/{address_id}"}; + option (yandex.cloud.api.operation) = { + metadata: "DeleteAddressMetadata" + response: "google.protobuf.Empty" + }; + } + + // List operations for the specified address. + rpc ListOperations(ListAddressOperationsRequest) returns (ListAddressOperationsResponse) { + option (google.api.http) = {get: "/vpc/v1/addresses/{address_id}/operations"}; + } + + // Move an address to another folder + rpc Move(MoveAddressRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/vpc/v1/addresses/{address_id}:move" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "MoveAddressMetadata" + response: "Address" + }; + } +} + +message GetAddressRequest { + // ID of the Address resource to return. + // + // To get Address resource ID make a [AddressService.List] request. + string address_id = 1 [ + (required) = true, + (length) = "<=50" + ]; +} + +message GetAddressByValueRequest { + // External ipv4 address specification. + oneof address { + string external_ipv4_address = 1; + } +} + +message ListAddressesRequest { + // ID of the folder to list addresses in. + // + // To get the folder ID use a [yandex.cloud.resourcemanager.v1.FolderService.List] request. + string folder_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // The maximum number of results per page to return. If the number of available + // results is larger than `page_size`, the service returns a [ListAddressesResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. + // Default value: 100. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. To get the next page of results, set `page_token` to the + // [ListAddressesResponse.next_page_token] returned by a previous list request. + string page_token = 3 [(length) = "<=100"]; + + // A filter expression that filters Address listed in the response. + // + // The expression must specify: + // 1. The field name. Currently you can use filtering only on [Address.name] field. + // 2. An `=` operator. + // 3. The value in double quotes (`"`). Must be 3-63 characters long and match the regular expression `[a-z][-a-z0-9]{1,61}[a-z0-9]`. + // Example of a filter: `name=my-address`. + string filter = 4; +} + +message ListAddressesResponse { + // List of addresses. + repeated Address addresses = 1; + + // Token for getting the next page of the list. If the number of results is greater than + // the specified [ListAddressesRequest.page_size], use `next_page_token` as the value + // for the [ListAddressesRequest.page_token] parameter in the next list request. + // + // Each subsequent page will have its own `next_page_token` to continue paging through the results. + string next_page_token = 2; +} + +message CreateAddressRequest { + reserved 6 to 9; + // ID of the folder to create a address in. + // + // To get a folder ID make a [yandex.cloud.resourcemanager.v1.FolderService.List] request. + string folder_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // Name of the address. + // The name must be unique within the folder. + string name = 2 [(pattern) = "|[a-zA-Z]([-_a-zA-Z0-9]{0,61}[a-zA-Z0-9])?"]; + + // Description of the address. + string description = 3 [(length) = "<=256"]; + + // Address labels as `key:value` pairs. + map<string, string> labels = 4 [ + (yandex.cloud.size) = "<=64", + (length) = "<=63", + (pattern) = "[-_0-9a-z]*", + (map_key).length = "1-63", + (map_key).pattern = "[a-z][-_0-9a-z]*" + ]; + + // External ipv4 address specification. + oneof address_spec { + ExternalIpv4AddressSpec external_ipv4_address_spec = 5; + } + // Specifies if address protected from deletion. + bool deletion_protection = 10; + + // Optional DNS record specifications + repeated DnsRecordSpec dns_record_specs = 11; +} + +message ExternalIpv4AddressSpec { + // Value of address. + string address = 1; // if unspecified, one will be automatically allocated from other params + + // Availability zone from which the address will be allocated. + string zone_id = 2; // only if address unspecified + + // Parameters of the allocated address, for example DDoS Protection. + AddressRequirements requirements = 3; +} + +message DnsRecordSpec { + // Required. DNS record name (absolute or relative to the DNS zone in use). + string fqdn = 1 [(required) = true]; + + // Required. ID of the public DNS zone. The maximum string length in characters is 20. + string dns_zone_id = 2 [ + (required) = true, + (length) = "20" + ]; + + // TTL of record. Acceptable values are 0 to 86400, inclusive. + int64 ttl = 3 [(value) = "0-86400"]; + + // Optional. If the PTR record is required, this parameter must be set to "true". + bool ptr = 4; +} + +message CreateAddressMetadata { + // ID of the address that is being created. + string address_id = 1; +} + +message UpdateAddressRequest { + // ID of the address to update. + // + // To get the address ID make a [AddressService.List] request. + string address_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // Field mask that specifies which attributes of the Address should be updated. + google.protobuf.FieldMask update_mask = 2; + + // New name for the address. + // The name must be unique within the folder. + string name = 3 [(pattern) = "|[a-zA-Z]([-_a-zA-Z0-9]{0,61}[a-zA-Z0-9])?"]; + + // New description of the address. + string description = 4 [(length) = "<=256"]; + + // Address labels as `key:value` pairs. + // + // Existing set of labels is completely replaced by the provided set, so if you just want + // to add or remove a label: + // 1. Get the current set of labels with a [AddressService.Get] request. + // 2. Add or remove a label in this set. + // 3. Send the new set in this field. + map<string, string> labels = 5 [ + (yandex.cloud.size) = "<=64", + (length) = "<=63", + (pattern) = "[-_0-9a-z]*", + (map_key).length = "1-63", + (map_key).pattern = "[a-z][-_0-9a-z]*" + ]; + + // Specifies if address is reserved or not. + bool reserved = 6; + + // Specifies if address protected from deletion. + bool deletion_protection = 7; + + // Optional DNS record specifications + repeated DnsRecordSpec dns_record_specs = 8; +} + +message UpdateAddressMetadata { + // ID of the Address that is being updated. + string address_id = 1; +} + +message DeleteAddressRequest { + // ID of the address to delete. + // + // To get a address ID make a [AddressService.List] request. + string address_id = 1 [ + (required) = true, + (length) = "<=50" + ]; +} + +message DeleteAddressMetadata { + // ID of the address that is being deleted. + string address_id = 1; +} + +message ListAddressOperationsRequest { + // ID of the address to list operations for. + // + // To get a address ID make a [AddressService.List] request. + string address_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // The maximum number of results per page to return. If the number of available + // results is larger than [page_size], the service returns a [ListAddressOperationsResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. + // Default value: 100. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. To get the next page of results, set [page_token] to the + // [ListAddressOperationsResponse.next_page_token] returned by a previous list request. + string page_token = 3 [(length) = "<=100"]; +} + +message ListAddressOperationsResponse { + // List of operations for the specified address. + repeated operation.Operation operations = 1; + + // Token for getting the next page of the list. If the number of results is greater than + // the specified [ListAddressOperationsRequest.page_size], use `next_page_token` as the value + // for the [ListAddressOperationsRequest.page_token] parameter in the next list request. + // + // Each subsequent page will have its own `next_page_token` to continue paging through the results. + string next_page_token = 2; +} + +message MoveAddressRequest { + // ID of the address that is being moved. + string address_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // ID of the folder to move address to. + string destination_folder_id = 2 [ + (required) = true, + (length) = "<=50" + ]; +} + +message MoveAddressMetadata { + // ID of the address that is being moved. + string address_id = 1; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/gateway.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/gateway.proto new file mode 100644 index 0000000000..cfcbd9022f --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/gateway.proto @@ -0,0 +1,39 @@ +syntax = "proto3"; + +package yandex.cloud.vpc.v1; + +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1;vpc"; +option java_package = "yandex.cloud.api.vpc.v1"; + +// A Gateway resource. For more information, see [Gateway](/docs/vpc/concepts/gateways). +message Gateway { + // ID of the gateway. Generated at creation time. + string id = 1; + + // ID of the folder that the gateway belongs to. + string folder_id = 2; + + // Creation timestamp. + google.protobuf.Timestamp created_at = 3; + + // Name of the gateway. + // The name is unique within the folder. + string name = 4; + + // Description of the gateway. + string description = 5; + + // Resource labels as `key:value` pairs. + map<string, string> labels = 6; + + // Gateway specification + oneof gateway { + SharedEgressGateway shared_egress_gateway = 7; + } +} + +// Shared Egress Gateway configuration +message SharedEgressGateway { +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/gateway_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/gateway_service.proto new file mode 100644 index 0000000000..758dc53810 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/gateway_service.proto @@ -0,0 +1,229 @@ +syntax = "proto3"; + +package yandex.cloud.vpc.v1; + +import "google/api/annotations.proto"; +import "google/protobuf/field_mask.proto"; +import "yandex/cloud/api/operation.proto"; +import "yandex/cloud/operation/operation.proto"; +import "yandex/cloud/validation.proto"; +import "yandex/cloud/vpc/v1/gateway.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1;vpc"; +option java_package = "yandex.cloud.api.vpc.v1"; + +service GatewayService { + // Returns the specified Gateway resource. + // + // To get the list of all available Gateway resources, make a [List] request. + rpc Get (GetGatewayRequest) returns (Gateway) { + option (google.api.http) = {get: "/vpc/v1/gateways/{gateway_id}"}; + } + + // Retrieves the list of Gateway resources in the specified folder. + rpc List (ListGatewaysRequest) returns (ListGatewaysResponse) { + option (google.api.http) = {get: "/vpc/v1/gateways"}; + } + + // Creates a gateway in the specified folder. + rpc Create (CreateGatewayRequest) returns (operation.Operation) { + option (google.api.http) = {post: "/vpc/v1/gateways" body: "*"}; + option (yandex.cloud.api.operation) = { + metadata: "CreateGatewayMetadata" + response: "Gateway" + }; + }; + + // Updates the specified gateway. + rpc Update (UpdateGatewayRequest) returns (operation.Operation) { + option (google.api.http) = {patch: "/vpc/v1/gateways/{gateway_id}" body: "*"}; + option (yandex.cloud.api.operation) = { + metadata: "UpdateGatewayMetadata" + response: "Gateway" + }; + }; + + // Deletes the specified gateway. + rpc Delete (DeleteGatewayRequest) returns (operation.Operation) { + option (google.api.http) = {delete: "/vpc/v1/gateways/{gateway_id}"}; + option (yandex.cloud.api.operation) = { + metadata: "DeleteGatewayMetadata" + response: "google.protobuf.Empty" + }; + }; + + // List operations for the specified gateway. + rpc ListOperations (ListGatewayOperationsRequest) returns (ListGatewayOperationsResponse) { + option (google.api.http) = {get: "/vpc/v1/gateways/{gateway_id}/operations"}; + } + + // Move a gateway to another folder + rpc Move (MoveGatewayRequest) returns (operation.Operation) { + option (google.api.http) = {post: "/vpc/v1/gateways/{gateway_id}:move" body: "*"}; + option (yandex.cloud.api.operation) = { + metadata: "MoveGatewayMetadata" + response: "Gateway" + }; + } +} + +message GetGatewayRequest { + // ID of the Gateway resource to return. + // + // To get Gateway resource ID make a [GatewayService.List] request. + string gateway_id = 1 [(required) = true, (length) = "<=50"]; +} + +message ListGatewaysRequest { + // ID of the folder to list gateways in. + // + // To get the folder ID use a [yandex.cloud.resourcemanager.v1.FolderService.List] request. + string folder_id = 1 [(required) = true, (length) = "<=50"]; + + // The maximum number of results per page to return. If the number of available + // results is larger than `page_size`, the service returns a [ListGatewaysResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. + // Default value: 100. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. To get the next page of results, set `page_token` to the + // [ListGatewaysResponse.next_page_token] returned by a previous list request. + string page_token = 3 [(length) = "<=100"]; + + // A filter expression that filters Gateway listed in the response. + // + // The expression must specify: + // 1. The field name. Currently you can use filtering only on [Gateway.name] field. + // 2. An `=` operator. + // 3. The value in double quotes (`"`). Must be 3-63 characters long and match the regular expression `[a-z][-a-z0-9]{1,61}[a-z0-9]`. + // Example of a filter: `name=my-gateway`. + string filter = 4 [(length) = "<=1000"]; +} + +message ListGatewaysResponse { + // List of gateways. + repeated Gateway gateways = 1; + + // Token for getting the next page of the list. If the number of results is greater than + // the specified [ListGatewaysRequest.page_size], use `next_page_token` as the value + // for the [ListGatewaysRequest.page_token] parameter in the next list request. + // + // Each subsequent page will have its own `next_page_token` to continue paging through the results. + string next_page_token = 2; +} + +message ListGatewayOperationsRequest { + // ID of the gateway to list operations for. + // + // To get a gateway ID make a [GatewayService.List] request. + string gateway_id = 1 [(required) = true, (length) = "<=50"]; + + // The maximum number of results per page to return. If the number of available + // results is larger than [page_size], the service returns a [ListGatewayOperationsResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. + // Default value: 100. + int64 page_size = 2 [(value) = "0-1000"]; + + // Page token. To get the next page of results, set [page_token] to the + // [ListGatewayOperationsResponse.next_page_token] returned by a previous list request. + string page_token = 3 [(length) = "<=100"]; +} + +message ListGatewayOperationsResponse { + // List of operations for the specified gateway. + repeated operation.Operation operations = 1; + + // Token for getting the next page of the list. If the number of results is greater than + // the specified [ListGatewayOperationsRequest.page_size], use `next_page_token` as the value + // for the [ListGatewayOperationsRequest.page_token] parameter in the next list request. + // + // Each subsequent page will have its own `next_page_token` to continue paging through the results. + string next_page_token = 2; +} + +message SharedEgressGatewaySpec { +} + +message CreateGatewayRequest { + // ID of the folder to create a gateway in. + // + // To get a folder ID make a [yandex.cloud.resourcemanager.v1.FolderService.List] request. + string folder_id = 1 [(required) = true, (length) = "<=50"]; + + // Name of the gateway. + // The name must be unique within the folder. + string name = 2 [(pattern) = "|[a-z]([-a-z0-9]{0,61}[a-z0-9])?"]; + + // Description of the gateway. + string description = 3 [(length) = "<=256"]; + + // Gateway labels as `key:value` pairs. + map<string, string> labels = 4 [(size) = "<=64", (length) = "<=63", (pattern) = "[-_./\\@0-9a-z]*", (map_key).length = "1-63", (map_key).pattern = "[a-z][-_./\\@0-9a-z]*"]; + + // Gateway configuration specification + oneof gateway { + SharedEgressGatewaySpec shared_egress_gateway_spec = 5; + } +} + +message CreateGatewayMetadata { + // ID of the gateway that is being created. + string gateway_id = 1; +} + +message UpdateGatewayRequest { + // ID of the gateway to update. + // + // To get the gateway ID make a [GatewayService.List] request. + string gateway_id = 1 [(required) = true, (length) = "<=50"]; + + // Field mask that specifies which attributes of the Gateway should be updated. + google.protobuf.FieldMask update_mask = 2; + + // New name for the gateway. + // The name must be unique within the folder. + string name = 3 [(pattern) = "|[a-z]([-a-z0-9]{0,61}[a-z0-9])?"]; + + // New description of the gateway. + string description = 4 [(length) = "<=256"]; + + // Gateway labels as `key:value` pairs. + // + // Existing set of labels is completely replaced by the provided set, so if you just want + // to add or remove a label: + // 1. Get the current set of labels with a [GatewayService.Get] request. + // 2. Add or remove a label in this set. + // 3. Send the new set in this field. + map<string, string> labels = 5 [(size) = "<=64", (length) = "<=63", (pattern) = "[-_./\\@0-9a-z]*", (map_key).length = "1-63", (map_key).pattern = "[a-z][-_./\\@0-9a-z]*"]; + + // New Gateway configuration specification + oneof gateway { + SharedEgressGatewaySpec shared_egress_gateway_spec = 6; + } +} + +message UpdateGatewayMetadata { + // ID of the Gateway that is being updated. + string gateway_id = 1; +} + +message DeleteGatewayRequest { + // ID of the gateway to delete. + // + // To get a gateway ID make a [GatewayService.List] request. + string gateway_id = 1 [(required) = true, (length) = "<=50"]; +} + +message DeleteGatewayMetadata { + // ID of the gateway that is being deleted. + string gateway_id = 1; +} + +message MoveGatewayRequest { + string gateway_id = 1 [(required) = true, (length) = "<=50"]; + string destination_folder_id = 2 [(required) = true, (length) = "<=50"]; +} + +message MoveGatewayMetadata { + string gateway_id = 1; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/network.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/network.proto new file mode 100644 index 0000000000..dc251261a2 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/network.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; + +package yandex.cloud.vpc.v1; + +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1;vpc"; +option java_package = "yandex.cloud.api.vpc.v1"; + +// A Network resource. For more information, see [Networks](/docs/vpc/concepts/network). +message Network { + // ID of the network. + string id = 1; + + // ID of the folder that the network belongs to. + string folder_id = 2; + + // Creation timestamp in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. + google.protobuf.Timestamp created_at = 3; + + // Name of the network. + // The name is unique within the folder. 3-63 characters long. + string name = 4; + + // Optional description of the network. 0-256 characters long. + string description = 5; + + // Resource labels as `` key:value `` pairs. Maximum of 64 per resource. + map<string, string> labels = 6; + + // ID of default security group for network. + string default_security_group_id = 7; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/network_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/network_service.proto new file mode 100644 index 0000000000..0445f497b2 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/network_service.proto @@ -0,0 +1,312 @@ +syntax = "proto3"; + +package yandex.cloud.vpc.v1; + +import "google/api/annotations.proto"; +import "google/protobuf/field_mask.proto"; +import "yandex/cloud/api/operation.proto"; +import "yandex/cloud/vpc/v1/network.proto"; +import "yandex/cloud/vpc/v1/subnet.proto"; +import "yandex/cloud/vpc/v1/security_group.proto"; +import "yandex/cloud/vpc/v1/route_table.proto"; +import "yandex/cloud/operation/operation.proto"; +import "yandex/cloud/validation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1;vpc"; +option java_package = "yandex.cloud.api.vpc.v1"; + +// A set of methods for managing Network resources. +service NetworkService { + // Returns the specified Network resource. + // + // Get the list of available Network resources by making a [List] request. + rpc Get (GetNetworkRequest) returns (Network) { + option (google.api.http) = { get: "/vpc/v1/networks/{network_id}" }; + } + + // Retrieves the list of Network resources in the specified folder. + rpc List (ListNetworksRequest) returns (ListNetworksResponse) { + option (google.api.http) = { get: "/vpc/v1/networks" }; + } + + // Creates a network in the specified folder using the data specified in the request. + // Method starts an asynchronous operation that can be cancelled while it is in progress. + rpc Create (CreateNetworkRequest) returns (operation.Operation) { + option (google.api.http) = { post: "/vpc/v1/networks" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "CreateNetworkMetadata" + response: "Network" + }; + } + + // Updates the specified network. + // Method starts an asynchronous operation that can be cancelled while it is in progress. + rpc Update (UpdateNetworkRequest) returns (operation.Operation) { + option (google.api.http) = { patch: "/vpc/v1/networks/{network_id}" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "UpdateNetworkMetadata" + response: "Network" + }; + } + + // Deletes the specified network. + rpc Delete (DeleteNetworkRequest) returns (operation.Operation) { + option (google.api.http) = { delete: "/vpc/v1/networks/{network_id}" }; + option (yandex.cloud.api.operation) = { + metadata: "DeleteNetworkMetadata" + response: "google.protobuf.Empty" + }; + } + + // Lists subnets from the specified network. + rpc ListSubnets (ListNetworkSubnetsRequest) returns (ListNetworkSubnetsResponse) { + option (google.api.http) = { get: "/vpc/v1/networks/{network_id}/subnets" }; + } + + // Lists security groups from the specified network. + rpc ListSecurityGroups (ListNetworkSecurityGroupsRequest) returns (ListNetworkSecurityGroupsResponse) { + option (google.api.http) = { get: "/vpc/v1/networks/{network_id}/security_groups" }; + } + + // Lists route tables from the specified network. + rpc ListRouteTables (ListNetworkRouteTablesRequest) returns (ListNetworkRouteTablesResponse) { + option (google.api.http) = { get: "/vpc/v1/networks/{network_id}/route_tables" }; + } + + // Lists operations for the specified network. + rpc ListOperations (ListNetworkOperationsRequest) returns (ListNetworkOperationsResponse) { + option (google.api.http) = { get: "/vpc/v1/networks/{network_id}/operations" }; + } + + // Move network to another folder. + rpc Move (MoveNetworkRequest) returns (operation.Operation) { + option (google.api.http) = { post: "/vpc/v1/networks/{network_id}:move" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "MoveNetworkMetadata" + response: "Network" + }; + } +} + +message GetNetworkRequest { + // ID of the Network resource to return. + // To get the network ID, use a [NetworkService.List] request. + string network_id = 1 [(required) = true, (length) = "<=50"]; +} + +message ListNetworksRequest { + // ID of the folder to list networks in. + // To get the folder ID, use a [yandex.cloud.resourcemanager.v1.FolderService.List] request. + string folder_id = 1 [(required) = true, (length) = "<=50"]; + + // The maximum number of results per page to return. If the number of available + // results is larger than [page_size], + // the service returns a [ListNetworksResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. Default value: 100. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. To get the next page of results, set [page_token] to the + // [ListNetworksResponse.next_page_token] returned by a previous list request. + string page_token = 3 [(length) = "<=100"]; + + // A filter expression that filters resources listed in the response. + // The expression must specify: + // 1. The field name. Currently you can use filtering only on the [Network.name] field. + // 2. An `=` operator. + // 3. The value in double quotes (`"`). Must be 3-63 characters long and match the regular expression `[a-z][-a-z0-9]{1,61}[a-z0-9]`. + string filter = 4 [(length) = "<=1000"]; +} + +message ListNetworksResponse { + // List of Network resources. + repeated Network networks = 1; + + // This token allows you to get the next page of results for list requests. If the number of results + // is larger than [ListNetworksRequest.page_size], use + // the [next_page_token] as the value + // for the [ListNetworksRequest.page_token] query parameter + // in the next list request. Subsequent list requests will have their own + // [next_page_token] to continue paging through the results. + string next_page_token = 2; +} + +message CreateNetworkRequest { + // ID of the folder for this request to create a network in. + // To get the folder ID, use a [yandex.cloud.resourcemanager.v1.FolderService.List] request. + string folder_id = 1 [(required) = true, (length) = "<=50"]; + + // Name of the network. + // The name must be unique within the folder. + string name = 2 [(pattern) = "|[a-zA-Z]([-_a-zA-Z0-9]{0,61}[a-zA-Z0-9])?"]; + + // Description of the network. + string description = 3 [(length) = "<=256"]; + + // Resource labels as `` key:value `` pairs. + map<string, string> labels = 4 [(yandex.cloud.size) = "<=64", (length) = "<=63", (pattern) = "[-_0-9a-z]*", (map_key).length = "1-63", (map_key).pattern = "[a-z][-_0-9a-z]*"]; +} + +message CreateNetworkMetadata { + // ID of the Network that is being created. + string network_id = 1; +} + +message UpdateNetworkRequest { + // ID of the Network resource to update. + // To get the network ID use a [NetworkService.List] request. + string network_id = 1 [(required) = true, (length) = "<=50"]; + + // Field mask that specifies which fields of the Network resource are going to be updated. + google.protobuf.FieldMask update_mask = 2; + + // Name of the network. + // The name must be unique within the folder. + string name = 3 [(pattern) = "|[a-zA-Z]([-_a-zA-Z0-9]{0,61}[a-zA-Z0-9])?"]; + + // Description of the network. + string description = 4 [(length) = "<=256"]; + + // Resource labels as `` key:value `` pairs. + map<string, string> labels = 5 [(yandex.cloud.size) = "<=64", (length) = "<=63", (pattern) = "[-_0-9a-z]*", (map_key).length = "1-63", (map_key).pattern = "[a-z][-_0-9a-z]*"]; +} + +message UpdateNetworkMetadata { + // ID of the Network resource that is being updated. + string network_id = 1; +} + +message DeleteNetworkRequest { + // ID of the Network resource to update. + // To get the network ID, use a [NetworkService.List] request. + string network_id = 1 [(required) = true, (length) = "<=50"]; +} + +message DeleteNetworkMetadata { + // ID of the network that is being deleted. + string network_id = 1; +} + +message ListNetworkSubnetsRequest { + // ID of the Network resource to list subnets for. + string network_id = 1 [(required) = true, (length) = "<=50"]; + + // The maximum number of results per page that should be returned. If the number of available + // results is larger than [page_size], + // the service returns a [ListNetworkSubnetsResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. Default value: 100. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. Set [page_token] + // to the [ListNetworkSubnetsResponse.next_page_token] + // returned by a previous list request to get the next page of results. + string page_token = 3 [(length) = "<=100"]; +} + +message ListNetworkSubnetsResponse { + // List of subnets that belong to the network which is specified in the request. + repeated Subnet subnets = 1; + + // This token allows you to get the next page of results for list requests. If the number of results + // is larger than [ListNetworkSubnetsRequest.page_size], use + // the [next_page_token] as the value + // for the [ListNetworkSubnetsRequest.page_token] query parameter + // in the next list request. Subsequent list requests will have their own + // [next_page_token] to continue paging through the results. + string next_page_token = 2; +} + +message ListNetworkSecurityGroupsRequest { + // ID of the Network resource to list security groups for. + string network_id = 1 [(required) = true, (length) = "<=50"]; + + // The maximum number of results per page that should be returned. If the number of available + // results is larger than [page_size], + // the service returns a [ListNetworkSecurityGroupsResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. Default value: 100. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. Set [page_token] + // to the [ListNetworkSecurityGroupsResponse.next_page_token] + // returned by a previous list request to get the next page of results. + string page_token = 3 [(length) = "<=100"]; +} + +message ListNetworkSecurityGroupsResponse { + // List of security groups that belong to the network which is specified in the request. + repeated SecurityGroup security_groups = 1; + + // This token allows you to get the next page of results for list requests. If the number of results + // is larger than [ListNetworkSecurityGroupsRequest.page_size], use + // the [next_page_token] as the value + // for the [ListNetworkSecurityGroupsRequest.page_token] query parameter + // in the next list request. Subsequent list requests will have their own + // [next_page_token] to continue paging through the results. + string next_page_token = 2; +} + +message ListNetworkRouteTablesRequest { + // ID of the Network resource to list route tables for. + string network_id = 1 [(required) = true, (length) = "<=50"]; + + // The maximum number of results per page that should be returned. If the number of available + // results is larger than [page_size], + // the service returns a [ListNetworkRouteTablesResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. Default value: 100. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. Set [page_token] + // to the [ListNetworkRouteTablesResponse.next_page_token] + // returned by a previous list request to get the next page of results. + string page_token = 3 [(length) = "<=100"]; +} + +message ListNetworkRouteTablesResponse { + // List of route tables that belong to the network which is specified in the request. + repeated RouteTable route_tables = 1; + + // This token allows you to get the next page of results for list requests. If the number of results + // is larger than [ListNetworkRouteTablesRequest.page_size], use + // the [next_page_token] as the value + // for the [ListNetworkRouteTablesRequest.page_token] query parameter + // in the next list request. Subsequent list requests will have their own + // [next_page_token] to continue paging through the results. + string next_page_token = 2; +} + +message ListNetworkOperationsRequest { + // ID of the Network resource to list operations for. + string network_id = 1 [(required) = true, (length) = "<=50"]; + + // The maximum number of results per page that should be returned. If the number of available + // results is larger than [page_size], the service returns a [ListNetworkOperationsResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. Default value: 100. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. To get the next page of results, set [page_token] to the + // [ListNetworkOperationsResponse.next_page_token] returned by a previous list request. + string page_token = 3 [(length) = "<=100"]; +} + +message ListNetworkOperationsResponse { + // List of operations for the specified network. + repeated operation.Operation operations = 1; + + // This token allows you to get the next page of results for list requests. If the number of results + // is larger than [ListNetworkOperationsRequest.page_size], use the [next_page_token] as the value + // for the [ListNetworkOperationsRequest.page_token] query parameter in the next list request. + // Each subsequent list request will have its own [next_page_token] to continue paging through the results. + string next_page_token = 2; +} + +message MoveNetworkRequest { + // ID of the Network resource to move. + string network_id = 1 [(required) = true, (length) = "<=50"]; + + // ID of the destination folder. + string destination_folder_id = 2 [(required) = true, (length) = "<=50"]; +} + +message MoveNetworkMetadata { + // ID of the network that is being moved. + string network_id = 1; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/route_table.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/route_table.proto new file mode 100644 index 0000000000..b94b64856e --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/route_table.proto @@ -0,0 +1,54 @@ +syntax = "proto3"; + +package yandex.cloud.vpc.v1; + +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1;vpc"; +option java_package = "yandex.cloud.api.vpc.v1"; + +// A RouteTable resource. For more information, see [Static Routes](/docs/vpc/concepts/static-routes). +message RouteTable { + // ID of the route table. + string id = 1; + + // ID of the folder that the route table belongs to. + string folder_id = 2; + + // Creation timestamp in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. + google.protobuf.Timestamp created_at = 3; + + // Name of the route table. The name is unique within the project. 3-63 characters long. + string name = 4; + + // Optional description of the route table. 0-256 characters long. + string description = 5; + + // Resource labels as `` key:value `` pairs. Maximum of 64 per resource. + map<string, string> labels = 6; + + // ID of the network the route table belongs to. + string network_id = 7; + + // List of static routes. + repeated StaticRoute static_routes = 8; +} + +// A StaticRoute resource. For more information, see [Static Routes](/docs/vpc/concepts/static-routes). +message StaticRoute { + + oneof destination { + // Destination subnet in CIDR notation + string destination_prefix = 1; + } + + oneof next_hop { + // Next hop IP address + string next_hop_address = 2; + // Next hop gateway id + string gateway_id = 4; + } + + // Resource labels as `` key:value `` pairs. Maximum of 64 per resource. + map<string, string> labels = 3; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/route_table_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/route_table_service.proto new file mode 100644 index 0000000000..782a3ec9d8 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/route_table_service.proto @@ -0,0 +1,215 @@ +syntax = "proto3"; + +package yandex.cloud.vpc.v1; + +import "google/api/annotations.proto"; +import "google/protobuf/field_mask.proto"; +import "yandex/cloud/api/operation.proto"; +import "yandex/cloud/vpc/v1/route_table.proto"; +import "yandex/cloud/operation/operation.proto"; +import "yandex/cloud/validation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1;vpc"; +option java_package = "yandex.cloud.api.vpc.v1"; + +// A set of methods for managing RouteTable resources. +service RouteTableService { + // Returns the specified RouteTable resource. + // + // To get the list of available RouteTable resources, make a [List] request. + rpc Get (GetRouteTableRequest) returns (RouteTable) { + option (google.api.http) = { get: "/vpc/v1/routeTables/{route_table_id}" }; + } + + // Retrieves the list of RouteTable resources in the specified folder. + rpc List (ListRouteTablesRequest) returns (ListRouteTablesResponse) { + option (google.api.http) = { get: "/vpc/v1/routeTables" }; + } + + // Creates a route table in the specified folder and network. + // Method starts an asynchronous operation that can be cancelled while it is in progress. + rpc Create (CreateRouteTableRequest) returns (operation.Operation) { + option (google.api.http) = { post: "/vpc/v1/routeTables" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "CreateRouteTableMetadata" + response: "RouteTable" + }; + } + + // Updates the specified route table. + // Method starts an asynchronous operation that can be cancelled while it is in progress. + rpc Update (UpdateRouteTableRequest) returns (operation.Operation) { + option (google.api.http) = { patch: "/vpc/v1/routeTables/{route_table_id}" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "UpdateRouteTableMetadata" + response: "RouteTable" + }; + } + + // Deletes the specified route table. + rpc Delete (DeleteRouteTableRequest) returns (operation.Operation) { + option (google.api.http) = { delete: "/vpc/v1/routeTables/{route_table_id}" }; + option (yandex.cloud.api.operation) = { + metadata: "DeleteRouteTableMetadata" + response: "google.protobuf.Empty" + }; + } + + // List operations for the specified route table. + rpc ListOperations (ListRouteTableOperationsRequest) returns (ListRouteTableOperationsResponse) { + option (google.api.http) = { get: "/vpc/v1/routeTables/{route_table_id}/operations" }; + } + + // Move route table to another folder. + rpc Move (MoveRouteTableRequest) returns (operation.Operation) { + option (google.api.http) = { post: "/vpc/v1/routeTables/{route_table_id}:move" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "MoveRouteTableMetadata" + response: "RouteTable" + }; + } +} + +message GetRouteTableRequest { + // ID of the RouteTable resource to return. + // To get the route table ID use a [RouteTableService.List] request. + string route_table_id = 1 [(required) = true, (length) = "<=50"]; +} + +message ListRouteTablesRequest { + // ID of the folder that the route table belongs to. + // To get the folder ID use a [yandex.cloud.resourcemanager.v1.FolderService.List] request. + string folder_id = 1 [(required) = true, (length) = "<=50"]; + + // The maximum number of results per page to return. If the number of available + // results is larger than [page_size], + // the service returns a [ListRouteTablesResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. Default value: 100. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. To get the next page of results, set [page_token] to the + // [ListRouteTablesResponse.next_page_token] returned by a previous list request. + string page_token = 3 [(length) = "<=100"]; + + // A filter expression that filters resources listed in the response. + // The expression must specify: + // 1. The field name. Currently you can use filtering only on [RouteTable.name] field. + // 2. An `=` operator. + // 3. The value in double quotes (`"`). Must be 3-63 characters long and match the regular expression `[a-z][-a-z0-9]{1,61}[a-z0-9]`. + string filter = 4 [(length) = "<=1000"]; +} + +message ListRouteTablesResponse { + // List of RouteTable resources. + repeated RouteTable route_tables = 1; + + // This token allows you to get the next page of results for list requests. If the number of results + // is larger than [ListRouteTablesRequest.page_size], use + // the [next_page_token] as the value + // for the [ListRouteTablesRequest.page_token] query parameter + // in the next list request. Subsequent list requests will have their own + // [next_page_token] to continue paging through the results. + string next_page_token = 2; +} + +message CreateRouteTableRequest { + // ID of the folder that the route table belongs to. + // To get the folder ID use a [yandex.cloud.resourcemanager.v1.FolderService.List] request. + string folder_id = 1 [(required) = true, (length) = "<=50"]; + + // Name of the route table. + // The name must be unique within the folder. + string name = 2 [(pattern) = "|[a-zA-Z]([-_a-zA-Z0-9]{0,61}[a-zA-Z0-9])?"]; + + // Description of the route table. + string description = 3 [(length) = "<=256"]; + + // Resource labels, `` key:value `` pairs. + map<string, string> labels = 4 [(yandex.cloud.size) = "<=64", (length) = "<=63", (pattern) = "[-_0-9a-z]*", (map_key).length = "1-63", (map_key).pattern = "[a-z][-_0-9a-z]*"]; + + // ID of the network the route table belongs to. + string network_id = 5 [(required) = true, (length) = "<=50"]; + + // List of static routes. + repeated StaticRoute static_routes = 6; +} + +message CreateRouteTableMetadata { + // ID of the route table that is being created. + string route_table_id = 1; +} + +message UpdateRouteTableRequest { + // ID of the RouteTable resource to update. + string route_table_id = 1 [(required) = true, (length) = "<=50"]; + + // Field mask that specifies which fields of the RouteTable resource are going to be updated. + google.protobuf.FieldMask update_mask = 2; + + // Name of the route table. + // The name must be unique within the folder. + string name = 3 [(pattern) = "|[a-zA-Z]([-_a-zA-Z0-9]{0,61}[a-zA-Z0-9])?"]; + + // Description of the route table. + string description = 4 [(length) = "<=256"]; + + // Resource labels as `` key:value `` pairs. + map<string, string> labels = 5 [(yandex.cloud.size) = "<=64", (length) = "<=63", (pattern) = "[-_0-9a-z]*", (map_key).length = "1-63", (map_key).pattern = "[a-z][-_0-9a-z]*"]; + + // List of static routes. + repeated StaticRoute static_routes = 6; +} + +message UpdateRouteTableMetadata { + // ID of the RouteTable resource that is being updated. + string route_table_id = 1; +} + +message DeleteRouteTableRequest { + // ID of the route table to delete. + // To get the route table ID use a [RouteTableService.List] request. + string route_table_id = 1 [(required) = true, (length) = "<=50"]; +} + +message DeleteRouteTableMetadata { + // ID of the RouteTable resource that is being deleted. + string route_table_id = 1; +} + +message ListRouteTableOperationsRequest { + // ID of the RouteTable resource to list operations for. + string route_table_id = 1 [(required) = true, (length) = "<=50"]; + + // The maximum number of results per page that should be returned. If the number of available + // results is larger than [page_size], the service returns a [ListRouteTableOperationsResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. Default value: 100. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. To get the next page of results, set [page_token] to the + // [ListRouteTableOperationsResponse.next_page_token] returned by a previous list request. + string page_token = 3 [(length) = "<=100"]; +} + +message ListRouteTableOperationsResponse { + // List of operations for the specified RouteTable resource. + repeated operation.Operation operations = 1; + + // This token allows you to get the next page of results for list requests. If the number of results + // is larger than [ListRouteTableOperationsRequest.page_size], use the [next_page_token] as the value + // for the [ListRouteTableOperationsRequest.page_token] query parameter in the next list request. + // Each subsequent list request will have its own [next_page_token] to continue paging through the results. + string next_page_token = 2; +} + +message MoveRouteTableRequest { + // ID of the RouteTable resource to move. + string route_table_id = 1 [(required) = true, (length) = "<=50"]; + + // ID of the destination folder. + string destination_folder_id = 2 [(required) = true, (length) = "<=50"]; +} + +message MoveRouteTableMetadata { + // ID of the RouteTable resource that is being moved. + string route_table_id = 1; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/security_group.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/security_group.proto new file mode 100644 index 0000000000..cbdf65b8a7 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/security_group.proto @@ -0,0 +1,122 @@ +syntax = "proto3"; + +package yandex.cloud.vpc.v1; + +import "google/protobuf/timestamp.proto"; +import "yandex/cloud/validation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1;vpc"; +option java_package = "yandex.cloud.api.vpc.v1"; + +message SecurityGroup { + + enum Status { + STATUS_UNSPECIFIED = 0; + + // Security group is being created. + CREATING = 1; + + // Security is active and it's rules are applied to the network interfaces. + ACTIVE = 2; + + // Security group is updating. Updating is a long operation because we must update all instances in SG. + UPDATING = 3; + + // Instance is being deleted. + DELETING = 4; + } + + // ID of the security group. + string id = 1; + + // ID of the folder that the security group belongs to. + string folder_id = 2; + + // Creation timestamp in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. + google.protobuf.Timestamp created_at = 3; + + // Name of the security group. 1-63 characters long. + string name = 4; + + // Description of the security group. 0-256 characters long. + string description = 5; + + // Resource labels as `` key:value `` pairs. Maximum of 64 per resource. + map<string, string> labels = 6; + + // ID of the network that the security group belongs to. + string network_id = 7; + + // Security group status. + Status status = 8; + + // List of the security group rules. + repeated SecurityGroupRule rules = 9; + + // Flag that indicates that the security group is the default for the network. + bool default_for_network = 10; +} + +message SecurityGroupRule { + // ID of the rule. + string id = 1; //generated by api server after rule creation + + // Description of the rule. 0-256 characters long. + string description = 2; + + // Resource labels as `` key:value `` pairs. Maximum of 64 per resource. + map<string, string> labels = 3; + + // The direction of network traffic allowed by this rule. + Direction direction = 4 [(required) = true]; + + // The range of ports that allow traffic to pass through. Null value means any. + PortRange ports = 5; + + // Protocol name. Null value means any protocol. + // Values from [IANA](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + string protocol_name = 6; + + // Protocol number from [IANA protocol numbers](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + int64 protocol_number = 7; + + oneof target { + // Target of the security rule. + option (exactly_one) = true; + + // CIDR blocks to allow to recieve or send traffic. + CidrBlocks cidr_blocks = 8; + + // ID of the security group to add rule to. + string security_group_id = 9; + + // Predefined target. See [security groups rules](/docs/vpc/concepts/security-groups#security-groups-rules) for more information. + string predefined_target = 10; + } + + enum Direction { + DIRECTION_UNSPECIFIED = 0; + + // Allows ingress traffic. + INGRESS = 1; + + // Allows egress traffic. + EGRESS = 2; + } +} + +message PortRange { + // The lowest port in the range. + int64 from_port = 1 [(value) = "0-65535"]; + + // The highest port in the range. + int64 to_port = 2 [(value) = "0-65535"]; +} + +message CidrBlocks { + // IPv4 CIDR blocks to allow traffic to. + repeated string v4_cidr_blocks = 1; + + // IPv6 CIDR blocks to allow traffic to. + repeated string v6_cidr_blocks = 2; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/security_group_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/security_group_service.proto new file mode 100644 index 0000000000..291f4035fb --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/security_group_service.proto @@ -0,0 +1,330 @@ +syntax = "proto3"; + +package yandex.cloud.vpc.v1; + +import "google/api/annotations.proto"; +import "google/protobuf/field_mask.proto"; +import "yandex/cloud/api/operation.proto"; +import "yandex/cloud/vpc/v1/security_group.proto"; +import "yandex/cloud/operation/operation.proto"; +import "yandex/cloud/validation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1;vpc"; +option java_package = "yandex.cloud.api.vpc.v1"; + +// A set of methods for managing SecurityGroup resources. +service SecurityGroupService { + // Returns the specified SecurityGroup resource. + // + // To get the list of all available SecurityGroup resources, make a [List] request. + rpc Get (GetSecurityGroupRequest) returns (SecurityGroup) { + option (google.api.http) = { get: "/vpc/v1/securityGroups/{security_group_id}" }; + } + + // Retrieves the list of SecurityGroup resources in the specified folder. + rpc List (ListSecurityGroupsRequest) returns (ListSecurityGroupsResponse) { + option (google.api.http) = { get: "/vpc/v1/securityGroups" }; + } + + // Creates a security group in the specified folder and network. + rpc Create (CreateSecurityGroupRequest) returns (operation.Operation) { + option (google.api.http) = { post: "/vpc/v1/securityGroups" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "CreateSecurityGroupMetadata" + response: "SecurityGroup" + }; + } + + // Updates the specified security group. + // Method starts an asynchronous operation that can be cancelled while it is in progress. + rpc Update (UpdateSecurityGroupRequest) returns (operation.Operation) { + option (google.api.http) = { patch: "/vpc/v1/securityGroups/{security_group_id}" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "UpdateSecurityGroupMetadata" + response: "SecurityGroup" + }; + } + + // Updates the rules of the specified security group. + rpc UpdateRules (UpdateSecurityGroupRulesRequest) returns (operation.Operation) { + option (google.api.http) = { patch: "/vpc/v1/securityGroups/{security_group_id}/rules" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "UpdateSecurityGroupMetadata" + response: "SecurityGroup" + }; + } + + // Updates the specified rule. + rpc UpdateRule (UpdateSecurityGroupRuleRequest) returns (operation.Operation) { + option (google.api.http) = { patch: "/vpc/v1/securityGroups/{security_group_id}/rules/{rule_id}" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "UpdateSecurityGroupRuleMetadata" + response: "SecurityGroupRule" + }; + } + + // Deletes the specified security group. + rpc Delete (DeleteSecurityGroupRequest) returns (operation.Operation) { + option (google.api.http) = { delete: "/vpc/v1/securityGroups/{security_group_id}" }; + option (yandex.cloud.api.operation) = { + metadata: "DeleteSecurityGroupMetadata" + response: "google.protobuf.Empty" + }; + } + + // Moves security groups to another folder. + rpc Move (MoveSecurityGroupRequest) returns (operation.Operation) { + option (google.api.http) = { post: "/vpc/v1/securityGroups/{security_group_id}:move" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "MoveSecurityGroupMetadata" + response: "SecurityGroup" + }; + } + + // Lists operations for the specified security groups. + rpc ListOperations (ListSecurityGroupOperationsRequest) returns (ListSecurityGroupOperationsResponse) { + option (google.api.http) = { get: "/vpc/v1/securityGroups/{security_group_id}/operations" }; + } +} + + +message GetSecurityGroupRequest { + // ID of the Security Group resource to return. + // To get the security group ID, use a [SecurityGroup.List] request. + string security_group_id = 1 [(required) = true]; +} + +message ListSecurityGroupsRequest { + // ID of the folder to list security groups in. + // To get the folder ID, use a [yandex.cloud.resourcemanager.v1.FolderService.List] request. + string folder_id = 1 [(required) = true]; + + // The maximum number of results per page to return. If the number of available + // results is larger than [page_size], + // the service returns a [ListSecurityGroupsResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. Default value: 100. + int64 page_size = 2; + + // Page token. To get the next page of results, set [page_token] to the + // [ListSecurityGroupsResponse.next_page_token] returned by a previous list request. + string page_token = 3; + + // A filter expression that filters resources listed in the response. + // The expression must specify: + // 1. The field name. Currently you can use filtering only on the [SecurityGroup.name] field. + // 2. An `=` operator. + // 3. The value in double quotes (`"`). Must be 3-63 characters long and match the regular expression `[a-z][-a-z0-9]{1,61}[a-z0-9]`. + string filter = 4; //filter by network_id is here +} + +message ListSecurityGroupsResponse { + // List of SecurityGroup resources. + repeated SecurityGroup security_groups = 1; + + // This token allows you to get the next page of results for list requests. If the number of results + // is larger than [ListNetworksRequest.page_size], use + // the [next_page_token] as the value + // for the [ListNetworksRequest.page_token] query parameter + // in the next list request. Subsequent list requests will have their own + // [next_page_token] to continue paging through the results. + string next_page_token = 2; +} + +message CreateSecurityGroupRequest { + // ID of the folder for this request to create a security group in. + // To get the folder ID, use a [yandex.cloud.resourcemanager.v1.FolderService.List] request. + string folder_id = 1 [(required) = true, (length) = "<=50"]; + + // Name of the security group. + // The name must be unique within the folder. + string name = 2 [(pattern) = "|[a-zA-Z]([-_a-zA-Z0-9]{0,61}[a-zA-Z0-9])?"]; + + // Description of the security group. + string description = 3 [(length) = "<=256"]; + + // Resource labels as `` key:value `` pairs. + map<string, string> labels = 4 [(size) = "<=64", (length) = "<=63", (pattern) = "[-_./\\@0-9a-z]*", (map_key).length = "1-63", (map_key).pattern = "[a-z][-_./\\@0-9a-z]*"]; + + // ID of the Network to create security group for. + string network_id = 5 [(required) = true]; + + // Security rules specifications. + repeated SecurityGroupRuleSpec rule_specs = 6; +} + +message SecurityGroupRuleSpec { + // Description of the security rule. + string description = 1 [(length) = "<=256"]; + + // Rule labels as `` key:value `` pairs. + map<string, string> labels = 2 [(size) = "<=64", (length) = "<=63", (pattern) = "[-_./\\@0-9a-z]*", (map_key).length = "1-63", (map_key).pattern = "[a-z][-_./\\@0-9a-z]*"]; + + // The direction of network traffic allowed by this rule. + SecurityGroupRule.Direction direction = 3 [(required) = true]; + + // The range of ports that allow traffic to pass through. Null value means any port. + PortRange ports = 4; // null value means any port + + // Values from [IANA protocol numbers](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + // Null value means any protocol. + oneof protocol { + // Protocol name. + string protocol_name = 5; + + // Protocol number from [IANA protocol numbers](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + int64 protocol_number = 6; + } + + oneof target { + // Target of the security rule. + option (exactly_one) = true; + + // CIDR blocks to allow to recieve or send traffic. + CidrBlocks cidr_blocks = 7; + + // ID of the security group to add rule to. + string security_group_id = 8; + + // Predefined target. See [security groups rules](/docs/vpc/concepts/security-groups#security-groups-rules) for more information. + string predefined_target = 9; + // string subnet_id = .. ; + } +} + +message CreateSecurityGroupMetadata { + // ID of the security group that is being created. + string security_group_id = 1; +} + +message UpdateSecurityGroupRequest { + // ID of the security group to update. + // + // To get the security group ID make a [SecurityGroupService.List] request. + string security_group_id = 1 [(required) = true, (length) = "<=50"]; + + // Field mask that specifies which attributes of the Address should be updated. + google.protobuf.FieldMask update_mask = 2; + + // New name for the security group. + // The name must be unique within the folder. + string name = 3 [(pattern) = "|[a-zA-Z]([-_a-zA-Z0-9]{0,61}[a-zA-Z0-9])?"]; + + // New description of the security group. + string description = 4 [(length) = "<=256"]; + + // Security group labels as `key:value` pairs. + // + // Existing set of labels is completely replaced by the provided set, so if you just want + // to add or remove a label: + // 1. Get the current set of labels with a [SecurityGroupService.Get] request. + // 2. Add or remove a label in this set. + // 3. Send the new set in this field. + map<string, string> labels = 5 [(size) = "<=64", (length) = "<=63", (pattern) = "[-_./\\@0-9a-z]*", (map_key).length = "1-63", (map_key).pattern = "[a-z][-_./\\@0-9a-z]*"]; + + // Updated rule list. All existing rules will be replaced with given list. + repeated SecurityGroupRuleSpec rule_specs = 6; +} + +message UpdateSecurityGroupMetadata { + // ID of the SecurityGroup that is being updated. + string security_group_id = 1; + + // List of added security rules IDs. + repeated string added_rule_ids = 2; +} + +message UpdateSecurityGroupRulesRequest { + // ID of the SecurityGroup that is being updated with new rules. + string security_group_id = 1 [(required) = true]; + + // List of rules IDs to delete. + repeated string deletion_rule_ids = 2; + + // Security rules specifications. + repeated SecurityGroupRuleSpec addition_rule_specs = 3; +} + +message UpdateSecurityGroupRuleRequest { + // ID of the SecurityGroup to update rule in. + string security_group_id = 1 [(required) = true]; + + // ID of the rule to update. + string rule_id = 2 [(required) = true]; + + // Field mask that specifies which attributes of the Address should be updated. + google.protobuf.FieldMask update_mask = 3; + + // New description of the rule. + string description = 4; + + // Rule labels as `key:value` pairs. + // + // Existing set of labels is completely replaced by the provided set, so if you just want + // to add or remove a label: + // 1. Get the current set of labels with a [AddressService.Get] request. + // 2. Add or remove a label in this set. + // 3. Send the new set in this field. + map<string, string> labels = 5; +} + +message UpdateSecurityGroupRuleMetadata { + // ID of the SecurityGroup that is being updated with new rules. + string security_group_id = 1; + + // ID of the rule that is being updated. + string rule_id = 2; +} + +message DeleteSecurityGroupRequest { + // ID of the security group to delete. + // + // To get a address ID make a [SecurityGroup.List] request. + string security_group_id = 1 [(required) = true]; +} + +message DeleteSecurityGroupMetadata { + // ID of the SecurityGroup that is being deleted. + string security_group_id = 1; +} + +message ListSecurityGroupOperationsRequest { + // ID of the address to list operations for. + // + // To get a address ID make a [SecurityGroup.List] request. + string security_group_id = 1 [(required) = true]; + + // The maximum number of results per page to return. If the number of available + // results is larger than [page_size], the service returns a [ListSecurityGroupOperationsResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. + // Default value: 100. + int64 page_size = 2; + + // Page token. To get the next page of results, set [page_token] to the + // [ListSecurityGroupOperationsResponse.next_page_token] returned by a previous list request. + string page_token = 3; +} + +message ListSecurityGroupOperationsResponse { + // List of operations for the specified security group. + repeated operation.Operation operations = 1; + + // Token for getting the next page of the list. If the number of results is greater than + // the specified [ListSecurityGroupOperationsRequest.page_size], use `next_page_token` as the value + // for the [ListSecurityGroupOperationsRequest.page_token] parameter in the next list request. + // + // Each subsequent page will have its own `next_page_token` to continue paging through the results. + string next_page_token = 2; +} + +message MoveSecurityGroupRequest { + // ID of the security group to move. + string security_group_id = 1 [(required) = true]; + + // ID of the folder to move security group to. + string destination_folder_id = 2 [(required) = true]; +} + +message MoveSecurityGroupMetadata { + // ID of the security group that is being moved. + string security_group_id = 1; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/subnet.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/subnet.proto new file mode 100644 index 0000000000..2b468c5e54 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/subnet.proto @@ -0,0 +1,63 @@ +syntax = "proto3"; + +package yandex.cloud.vpc.v1; + +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1;vpc"; +option java_package = "yandex.cloud.api.vpc.v1"; + +// A Subnet resource. For more information, see [Subnets](/docs/vpc/concepts/network#subnet). +message Subnet { + reserved 9; + // ID of the subnet. + string id = 1; + + // ID of the folder that the subnet belongs to. + string folder_id = 2; + + // Creation timestamp in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. + google.protobuf.Timestamp created_at = 3; + + // Name of the subnet. The name is unique within the project. 3-63 characters long. + string name = 4; + + // Optional description of the subnet. 0-256 characters long. + string description = 5; + + // Resource labels as `` key:value `` pairs. Maximum of 64 per resource. + map<string, string> labels = 6; + + // ID of the network the subnet belongs to. + string network_id = 7; + + // ID of the availability zone where the subnet resides. + string zone_id = 8; // if subnet will be zonal + + // CIDR block. + // The range of internal addresses that are defined for this subnet. + // This field can be set only at Subnet resource creation time and cannot be changed. + // For example, 10.0.0.0/22 or 192.168.0.0/24. + // Minimum subnet size is /28, maximum subnet size is /16. + repeated string v4_cidr_blocks = 10; + + // IPv6 not available yet. + repeated string v6_cidr_blocks = 11; + + // ID of route table the subnet is linked to. + string route_table_id = 12; + + DhcpOptions dhcp_options = 13; +} + +message DhcpOptions { + repeated string domain_name_servers = 1; + string domain_name = 2; + repeated string ntp_servers = 3; +} + +enum IpVersion { + IP_VERSION_UNSPECIFIED = 0; + IPV4 = 1; + IPV6 = 2; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/subnet_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/subnet_service.proto new file mode 100644 index 0000000000..f90e1eb796 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/subnet_service.proto @@ -0,0 +1,396 @@ +syntax = "proto3"; + +package yandex.cloud.vpc.v1; + +import "google/api/annotations.proto"; +import "google/protobuf/field_mask.proto"; +import "yandex/cloud/api/operation.proto"; +import "yandex/cloud/operation/operation.proto"; +import "yandex/cloud/reference/reference.proto"; +import "yandex/cloud/validation.proto"; +import "yandex/cloud/vpc/v1/subnet.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/vpc/v1;vpc"; +option java_package = "yandex.cloud.api.vpc.v1"; + +// A set of methods for managing Subnet resources. +service SubnetService { + // Returns the specified Subnet resource. + // + // To get the list of available Subnet resources, make a [List] request. + rpc Get(GetSubnetRequest) returns (Subnet) { + option (google.api.http) = {get: "/vpc/v1/subnets/{subnet_id}"}; + } + + // Retrieves the list of Subnet resources in the specified folder. + rpc List(ListSubnetsRequest) returns (ListSubnetsResponse) { + option (google.api.http) = {get: "/vpc/v1/subnets"}; + } + + // Creates a subnet in the specified folder and network. + // Method starts an asynchronous operation that can be cancelled while it is in progress. + rpc Create(CreateSubnetRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/vpc/v1/subnets" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "CreateSubnetMetadata" + response: "Subnet" + }; + } + + // Updates the specified subnet. + // Method starts an asynchronous operation that can be cancelled while it is in progress. + rpc Update(UpdateSubnetRequest) returns (operation.Operation) { + option (google.api.http) = { + patch: "/vpc/v1/subnets/{subnet_id}" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "UpdateSubnetMetadata" + response: "Subnet" + }; + } + + // Adds CIDR blocks to the specified subnet. + // Method starts an asynchronous operation that can be cancelled while it is in progress. + rpc AddCidrBlocks(AddSubnetCidrBlocksRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/vpc/v1/subnets/{subnet_id}:add-cidr-blocks" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "UpdateSubnetMetadata" + response: "Subnet" + }; + } + + // Removes CIDR blocks from the specified subnet. + // Method starts an asynchronous operation that can be cancelled while it is in progress. + rpc RemoveCidrBlocks(RemoveSubnetCidrBlocksRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/vpc/v1/subnets/{subnet_id}:remove-cidr-blocks" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "UpdateSubnetMetadata" + response: "Subnet" + }; + } + + // Deletes the specified subnet. + rpc Delete(DeleteSubnetRequest) returns (operation.Operation) { + option (google.api.http) = {delete: "/vpc/v1/subnets/{subnet_id}"}; + option (yandex.cloud.api.operation) = { + metadata: "DeleteSubnetMetadata" + response: "google.protobuf.Empty" + }; + } + + // List operations for the specified subnet. + rpc ListOperations(ListSubnetOperationsRequest) returns (ListSubnetOperationsResponse) { + option (google.api.http) = {get: "/vpc/v1/subnets/{subnet_id}/operations"}; + } + + // Move subnet to another folder. + rpc Move(MoveSubnetRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/vpc/v1/subnets/{subnet_id}:move" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "MoveSubnetMetadata" + response: "Subnet" + }; + } + + rpc Relocate(RelocateSubnetRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/vpc/v1/subnets/{subnet_id}:relocate" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "RelocateSubnetMetadata" + response: "Subnet" + }; + } + + // List used addresses in specified subnet. + rpc ListUsedAddresses(ListUsedAddressesRequest) returns (ListUsedAddressesResponse) { + option (google.api.http) = {get: "/vpc/v1/subnets/{subnet_id}/addresses"}; + } +} + +message GetSubnetRequest { + // ID of the Subnet resource to return. + // To get the subnet ID use a [SubnetService.List] request. + string subnet_id = 1 [ + (required) = true, + (length) = "<=50" + ]; +} + +message ListSubnetsRequest { + // ID of the folder to list subnets in. + // To get the folder ID use a [yandex.cloud.resourcemanager.v1.FolderService.List] request. + string folder_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // The maximum number of results per page to return. If the number of available + // results is larger than [page_size], + // the service returns a [ListSubnetsResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. Default value: 100. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. To get the next page of results, set [page_token] to the + // [ListSubnetsResponse.next_page_token] returned by a previous list request. + string page_token = 3 [(length) = "<=100"]; + + // A filter expression that filters resources listed in the response. + // The expression must specify: + // 1. The field name. Currently you can use filtering only on [Subnet.name] field. + // 2. An `=` operator. + // 3. The value in double quotes (`"`). Must be 3-63 characters long and match the regular expression `[a-z][-a-z0-9]{1,61}[a-z0-9]`. + string filter = 4 [(length) = "<=1000"]; +} + +message ListSubnetsResponse { + // List of Subnet resources. + repeated Subnet subnets = 1; + + // This token allows you to get the next page of results for list requests. If the number of results + // is larger than [ListSubnetsRequest.page_size], use + // the [next_page_token] as the value + // for the [ListSubnetsRequest.page_token] query parameter + // in the next list request. Subsequent list requests will have their own + // [next_page_token] to continue paging through the results. + string next_page_token = 2; +} + +message CreateSubnetRequest { + reserved 8; + // ID of the folder to create a subnet in. + // To get folder ID use a [yandex.cloud.resourcemanager.v1.FolderService.List] request. + string folder_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // Name of the subnet. + // The name must be unique within the folder. + string name = 2 [(pattern) = "|[a-zA-Z]([-_a-zA-Z0-9]{0,61}[a-zA-Z0-9])?"]; + + // Description of the subnet. + string description = 3 [(length) = "<=256"]; + + // Resource labels, `` key:value `` pairs. + map<string, string> labels = 4 [ + (yandex.cloud.size) = "<=64", + (length) = "<=63", + (pattern) = "[-_0-9a-z]*", + (map_key).length = "1-63", + (map_key).pattern = "[a-z][-_0-9a-z]*" + ]; + + // ID of the network to create subnet in. + string network_id = 5 [ + (required) = true, + (length) = "<=50" + ]; + + // ID of the availability zone where the subnet resides. + // To get a list of available zones, use the [yandex.cloud.compute.v1.ZoneService.List] request. + string zone_id = 6 [ + (required) = true, + (length) = "<=50" + ]; + + // CIDR block. + // The range of internal addresses that are defined for this subnet. + // For example, 10.0.0.0/22 or 192.168.0.0/24. + // Minimum subnet size is /28, maximum subnet size is /16. + repeated string v4_cidr_blocks = 7 [(required) = true]; + + // IPv6 not available yet. + // repeated string v6_cidr_blocks = 8; + + // ID of route table the subnet is linked to. + string route_table_id = 9 [(length) = "<=50"]; + + DhcpOptions dhcp_options = 10; +} + +message CreateSubnetMetadata { + // ID of the subnet that is being created. + string subnet_id = 1; +} + +message UpdateSubnetRequest { + // ID of the Subnet resource to update. + string subnet_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // Field mask that specifies which fields of the Subnet resource are going to be updated. + google.protobuf.FieldMask update_mask = 2; + + // Name of the subnet. + // The name must be unique within the folder. + string name = 3 [(pattern) = "|[a-zA-Z]([-_a-zA-Z0-9]{0,61}[a-zA-Z0-9])?"]; + + // Description of the subnet. + string description = 4 [(length) = "<=256"]; + + // Resource labels as `` key:value `` pairs. + map<string, string> labels = 5 [ + (yandex.cloud.size) = "<=64", + (length) = "<=63", + (pattern) = "[-_0-9a-z]*", + (map_key).length = "1-63", + (map_key).pattern = "[a-z][-_0-9a-z]*" + ]; + + // ID of route table the subnet is linked to. + string route_table_id = 6 [(length) = "<=50"]; + + DhcpOptions dhcp_options = 7; + + // New CIDR blocks which will overwrite the existing ones. + repeated string v4_cidr_blocks = 8; +} + +message UpdateSubnetMetadata { + // ID of the Subnet resource that is being updated. + string subnet_id = 1; +} + +message AddSubnetCidrBlocksRequest { + // ID of the Subnet resource that is being updated. + string subnet_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // CIDR block. + // The range of internal addresses that should be added to this subnet. + // For example, 10.0.0.0/22 or 192.168.0.0/24. + // Minimum subnet size is /28, maximum subnet size is /16. + repeated string v4_cidr_blocks = 2; +} + +message AddSubnetCidrBlocksMetadata { + // ID of the Subnet resource that is being updated. + string subnet_id = 1; +} + +message RemoveSubnetCidrBlocksRequest { + // ID of the Subnet resource that is being updated. + string subnet_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // CIDR block. + // The range of internal addresses that are removed from this subnet. + repeated string v4_cidr_blocks = 2; +} + +message RemoveSubnetCidrBlocksMetadata { + // ID of the Subnet resource that is being updated. + string subnet_id = 1; +} + +message DeleteSubnetRequest { + // ID of the subnet to delete. + // To get the subnet ID use a [SubnetService.List] request. + string subnet_id = 1 [ + (required) = true, + (length) = "<=50" + ]; +} + +message DeleteSubnetMetadata { + // ID of the Subnet resource that is being deleted. + string subnet_id = 1; +} + +message ListSubnetOperationsRequest { + // ID of the Subnet resource to list operations for. + string subnet_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // The maximum number of results per page that should be returned. If the number of available + // results is larger than [page_size], the service returns a [ListSubnetOperationsResponse.next_page_token] + // that can be used to get the next page of results in subsequent list requests. Default value: 100. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. To get the next page of results, set [page_token] to the + // [ListSubnetOperationsResponse.next_page_token] returned by a previous list request. + string page_token = 3 [(length) = "<=100"]; +} + +message ListSubnetOperationsResponse { + // List of operations for the specified Subnet resource. + repeated operation.Operation operations = 1; + + // This token allows you to get the next page of results for list requests. If the number of results + // is larger than [ListSubnetOperationsRequest.page_size], use the [next_page_token] as the value + // for the [ListSubnetOperationsRequest.page_token] query parameter in the next list request. + // Each subsequent list request will have its own [next_page_token] to continue paging through the results. + string next_page_token = 2; +} + +message MoveSubnetRequest { + // ID of the Subnet resource to move. + string subnet_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // ID of the destination folder. + string destination_folder_id = 2 [ + (required) = true, + (length) = "<=50" + ]; +} + +message MoveSubnetMetadata { + // ID of the Subnet resource that is being moved. + string subnet_id = 1; +} + +message ListUsedAddressesRequest { + string subnet_id = 1 [(required) = true]; + int64 page_size = 2; + string page_token = 3; + string filter = 4; +} + +message ListUsedAddressesResponse { + repeated UsedAddress addresses = 1; + string next_page_token = 2; +} + +message UsedAddress { + string address = 1; + IpVersion ip_version = 2; + repeated reference.Reference references = 3; +} + +message RelocateSubnetRequest { + string subnet_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + string destination_zone_id = 2 [(required) = true]; +} + +message RelocateSubnetMetadata { + string subnet_id = 1; +} |