aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc
diff options
context:
space:
mode:
authoriddqd <iddqd@yandex-team.com>2024-06-11 10:12:13 +0300
committeriddqd <iddqd@yandex-team.com>2024-06-11 10:22:43 +0300
commit07f57e35443ab7f09471caf2dbf1afbcced4d9f7 (patch)
treea4a7b66ead62e83fa988a2ec2ce6576311c1f4b1 /contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc
parent6db3b8ca95e44179e48306a58656fb1f9317d9c3 (diff)
downloadydb-07f57e35443ab7f09471caf2dbf1afbcced4d9f7.tar.gz
add contrib/python/yandexcloud to import
03b7d3cad2237366b55b393e18d4dc5eb222798c
Diffstat (limited to 'contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc')
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/address.proto110
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/address_service.proto328
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/gateway.proto39
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/gateway_service.proto229
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/network.proto33
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/network_service.proto312
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/route_table.proto54
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/route_table_service.proto215
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/security_group.proto122
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/security_group_service.proto330
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/subnet.proto63
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/vpc/v1/subnet_service.proto396
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;
+}