aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1
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/mdb/mysql/v1
parent6db3b8ca95e44179e48306a58656fb1f9317d9c3 (diff)
downloadydb-07f57e35443ab7f09471caf2dbf1afbcced4d9f7.tar.gz
add contrib/python/yandexcloud to import
03b7d3cad2237366b55b393e18d4dc5eb222798c
Diffstat (limited to 'contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1')
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/backup.proto56
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/backup_service.proto79
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/cluster.proto327
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/cluster_service.proto989
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/config/mysql5_7.proto594
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/config/mysql8_0.proto555
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/database.proto27
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/database_service.proto132
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/maintenance.proto57
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/resource_preset.proto25
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/resource_preset_service.proto60
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/user.proto188
-rw-r--r--contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/user_service.proto250
13 files changed, 3339 insertions, 0 deletions
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/backup.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/backup.proto
new file mode 100644
index 0000000000..0e56cd6961
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/backup.proto
@@ -0,0 +1,56 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.v1;
+
+import "yandex/cloud/validation.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1";
+
+// An object that represents MySQL backup.
+//
+// See [the documentation](/docs/managed-mysql/concepts/backup) for details.
+message Backup {
+ enum BackupCreationType {
+ BACKUP_CREATION_TYPE_UNSPECIFIED = 0;
+
+ // Backup created by automated daily schedule
+ AUTOMATED = 1;
+
+ // Backup created by user request
+ MANUAL = 2;
+ }
+ enum BackupStatus {
+ BACKUP_STATUS_UNSPECIFIED = 0;
+
+ // Backup is done
+ DONE = 1;
+
+ // Backup is creating
+ CREATING = 2;
+ }
+ // ID of the backup.
+ string id = 1 [(required) = true];
+
+ // ID of the folder that the backup belongs to.
+ string folder_id = 2;
+
+ // Creation timestamp (the time when the backup operation was completed).
+ google.protobuf.Timestamp created_at = 3;
+
+ // ID of the cluster that the backup was created for.
+ string source_cluster_id = 4;
+
+ // Start timestamp (the time when the backup operation was started).
+ google.protobuf.Timestamp started_at = 5;
+
+ // Size of backup, in bytes
+ int64 size = 6;
+
+ // How this backup was created (manual/automatic/etc...)
+ BackupCreationType type = 7;
+
+ // Status of backup
+ BackupStatus status = 8;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/backup_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/backup_service.proto
new file mode 100644
index 0000000000..e793fff6a1
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/backup_service.proto
@@ -0,0 +1,79 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.v1;
+
+import "google/api/annotations.proto";
+import "yandex/cloud/validation.proto";
+import "yandex/cloud/mdb/mysql/v1/backup.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1";
+
+// A set of methods for managing MySQL backups.
+//
+// See [the documentation](/docs/managed-mysql/operations/cluster-backups) for details.
+service BackupService {
+
+ // Retrieves information about the specified backup.
+ rpc Get (GetBackupRequest) returns (Backup) {
+ option (google.api.http) = { get: "/managed-mysql/v1/backups/{backup_id}" };
+ }
+
+ // Retrieves the list of backups in a folder.
+ //
+ // To list backups for an existing cluster, make a [ClusterService.ListBackups] request.
+ rpc List (ListBackupsRequest) returns (ListBackupsResponse) {
+ option (google.api.http) = { get: "/managed-mysql/v1/backups" };
+ }
+}
+
+message GetBackupRequest {
+
+ // ID of the backup to return information about.
+ //
+ // To get this ID, make a [BackupService.List] request (lists all backups in a folder) or a [ClusterService.ListBackups] request (lists all backups for an existing cluster).
+ string backup_id = 1 [(required) = true];
+}
+
+message ListBackupsRequest {
+
+ // ID of the folder to list backups in.
+ //
+ // To get this ID, make 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 API returns a [ListBackupsResponse.next_page_token] that can be used to get the next page of results in the subsequent [BackupService.List] requests.
+ int64 page_size = 2 [(value) = "<=1000"];
+
+ // Page token that can be used to iterate through multiple pages of results.
+ //
+ // To get the next page of results, set [page_token] to the [ListBackupsResponse.next_page_token] returned by the previous [BackupService.List] request.
+ string page_token = 3 [(length) = "<=100"];
+}
+
+message ListBackupsResponse {
+
+ // List of backups.
+ repeated Backup backups = 1;
+
+ // The token that can be used to get the next page of results.
+ //
+ // If the number of results is larger than [ListBackupsRequest.page_size], use the [next_page_token] as the value for the [ListBackupsRequest.page_token] in the subsequent [BackupService.List] request to iterate through multiple pages of results.
+ //
+ // Each of the subsequent [BackupService.List] requests should use the [next_page_token] value returned by the previous request to continue paging through the results.
+ string next_page_token = 2 [(length) = "<=100"];
+}
+
+message DeleteBackupRequest {
+ // Required. ID of the backup to delete.
+ string backup_id = 1 [(required) = true];
+}
+
+message DeleteBackupMetadata {
+ // Required. ID of the MySQL backup that is currently being deleted.
+ string backup_id = 1;
+ // ID of the MySQL backup that is being deleted.
+ string cluster_id = 2;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/cluster.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/cluster.proto
new file mode 100644
index 0000000000..28021cb9e9
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/cluster.proto
@@ -0,0 +1,327 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.v1;
+
+import "google/protobuf/timestamp.proto";
+import "google/protobuf/wrappers.proto";
+import "google/type/timeofday.proto";
+import "yandex/cloud/validation.proto";
+import "yandex/cloud/mdb/mysql/v1/config/mysql5_7.proto";
+import "yandex/cloud/mdb/mysql/v1/config/mysql8_0.proto";
+import "yandex/cloud/mdb/mysql/v1/maintenance.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1";
+
+// An object that represents MySQL cluster.
+//
+// See [the documentation](/docs/managed-mysql/concepts) for details.
+message Cluster {
+ enum Environment {
+ ENVIRONMENT_UNSPECIFIED = 0;
+
+ // Environment for stable versions of your apps.
+ // A conservative update policy is in effect: only bug fixes are applied during regular maintenance.
+ PRODUCTION = 1;
+
+ // Environment for testing, including the Managed Service for MySQL itself.
+ // This environment gets new features, improvements, and bug fixes in the first place, compared to the production environment.
+ // However, not every update ensures backward compatibility.
+ PRESTABLE = 2;
+ }
+
+ enum Health {
+
+ // Health of the cluster is unknown ([Host.health] for every host in the cluster is `UNKNOWN`).
+ HEALTH_UNKNOWN = 0;
+
+ // Cluster is alive and well ([Host.health] for every host in the cluster is `ALIVE`).
+ ALIVE = 1;
+
+ // Cluster is inoperable ([Host.health] for every host in the cluster is `DEAD`).
+ DEAD = 2;
+
+ // Cluster is degraded ([Host.health] for at least one host in the cluster is not `ALIVE`).
+ DEGRADED = 3;
+ }
+
+ enum Status {
+
+ // Cluster state is unknown.
+ STATUS_UNKNOWN = 0;
+
+ // Cluster is being created.
+ CREATING = 1;
+
+ // Cluster is running normally.
+ RUNNING = 2;
+
+ // Cluster encountered a problem and cannot operate.
+ ERROR = 3;
+
+ // Cluster is being updated.
+ UPDATING = 4;
+
+ // Cluster is stopping.
+ STOPPING = 5;
+
+ // Cluster is stopped.
+ STOPPED = 6;
+
+ // Cluster is starting.
+ STARTING = 7;
+ }
+
+ // ID of the cluster.
+ //
+ // This ID is assigned by the platform at the time of creation.
+ string id = 1;
+
+ // ID of the folder that the cluster belongs to.
+ string folder_id = 2;
+
+ // Creation timestamp of the cluster.
+ google.protobuf.Timestamp created_at = 3;
+
+ // Name of the cluster.
+ string name = 4;
+
+ // Description of the cluster.
+ string description = 5;
+
+ // Custom labels for the cluster as `key:value` pairs.
+ map<string, string> labels = 6;
+
+ // Deployment environment of the MySQL cluster.
+ Environment environment = 7;
+
+ // Monitoring systems data that is relevant to the cluster.
+ repeated Monitoring monitoring = 8;
+
+ // Configuration of the cluster.
+ ClusterConfig config = 9;
+
+ // ID of the network that the cluster belongs to.
+ string network_id = 10;
+
+ // Aggregated health of the cluster.
+ Health health = 11;
+
+ // Current state of the cluster.
+ Status status = 12;
+
+ // Maintenance window settings for the cluster.
+ MaintenanceWindow maintenance_window = 13;
+
+ // Planned maintenance operation to be started for the cluster within the nearest [maintenance_window].
+ MaintenanceOperation planned_operation = 14;
+
+ // Effective list of security group IDs applied to the cluster.
+ repeated string security_group_ids = 15;
+
+ // This option prevents unintended deletion of the cluster.
+ bool deletion_protection = 16;
+
+ // Host groups hosting VMs of the cluster.
+ repeated string host_group_ids = 17;
+}
+
+// Cluster-related monitoring system data.
+message Monitoring {
+
+ // Name of the monitoring system.
+ string name = 1;
+
+ // Description of the monitoring system.
+ string description = 2;
+
+ // Link to the monitoring system charts for the cluster.
+ string link = 3;
+}
+
+message ClusterConfig {
+
+ // Version of MySQL used in the cluster.
+ string version = 1;
+
+ // Cluster-wide MySQL configuration.
+ oneof mysql_config {
+
+ // Configuration of a MySQL 5.7 server.
+ config.MysqlConfigSet5_7 mysql_config_5_7 = 2 [json_name="mysqlConfig_5_7"];
+
+ // Configuration of a MySQL 8.0 server.
+ config.MysqlConfigSet8_0 mysql_config_8_0 = 6 [json_name="mysqlConfig_8_0"];
+ }
+
+ // Resource preset for the cluster hosts.
+ Resources resources = 3;
+
+ // Time to start the daily backup, in the UTC timezone.
+ google.type.TimeOfDay backup_window_start = 4;
+
+ // Access policy for external services.
+ Access access = 5;
+
+ // Configuration of the performance diagnostics service.
+ PerformanceDiagnostics performance_diagnostics = 7;
+
+ // Retention policy of automated backups.
+ google.protobuf.Int64Value backup_retain_period_days = 8 [(value) = "7-60"];
+}
+
+message Host {
+
+ enum Role {
+
+ // Role of the host is unknown. Default value.
+ ROLE_UNKNOWN = 0;
+
+ // Host is the master.
+ MASTER = 1;
+
+ // Host is a replica.
+ REPLICA = 2;
+ }
+
+ enum Health {
+
+ // Health of the host is unknown. Default value.
+ HEALTH_UNKNOWN = 0;
+
+ // Host is performing all its functions normally.
+ ALIVE = 1;
+
+ // Host is inoperable, and cannot perform any of its essential functions.
+ DEAD = 2;
+
+ // Host is degraded, and can perform only some of its essential functions.
+ DEGRADED = 3;
+
+ // Host is alive, but in read-only mode.
+ READONLY = 4;
+ }
+
+ // Name of the host.
+ //
+ // This name is assigned by the platform at the time of creation.
+ // The name is unique across all MDB hosts that exist on the platform, as it defines the FQDN of the host.
+ string name = 1;
+
+ // ID of the cluster the host belongs to.
+ string cluster_id = 2;
+
+ // ID of the availability zone where the host resides.
+ string zone_id = 3;
+
+ // Resources allocated to the host.
+ Resources resources = 4;
+
+ // Role of the host in the cluster. If the field has default value, it is not returned in the response.
+ Role role = 5;
+
+ // Aggregated health of the host. If the field has default value, it is not returned in the response.
+ Health health = 6;
+
+ // List of services provided by the host.
+ repeated Service services = 7;
+
+ // ID of the subnet that the host belongs to.
+ string subnet_id = 8;
+
+ // Flag that shows if public IP address is assigned to the host so that the host can be accessed from the internet.
+ bool assign_public_ip = 9;
+
+ // Name of the host to be used as the replication source for cascading replication.
+ string replication_source = 10;
+
+ // Host backup priority.
+ int64 backup_priority = 11 [(value) = "0-100"];
+
+ // Host master promotion priority.
+ int64 priority = 12 [(value) = "0-100"];
+}
+
+
+message Service {
+
+ enum Type {
+ // Service type of the host is unspecified. Default value.
+ TYPE_UNSPECIFIED = 0;
+
+ // The host is a MySQL server.
+ MYSQL = 1;
+ }
+
+ enum Health {
+
+ // Health of the service is unknown. Default value.
+ HEALTH_UNKNOWN = 0;
+
+ // The service is working normally.
+ ALIVE = 1;
+
+ // The service is dead or unresponsive.
+ DEAD = 2;
+
+ // The service is in read-only mode.
+ READONLY = 3;
+ }
+
+ // Type of the service provided by the host. If the field has default value, it is not returned in the response.
+ Type type = 1;
+
+ // Aggregated health of the service. If the field has default value, it is not returned in the response.
+ Health health = 2;
+}
+
+// Cluster resource preset.
+message Resources {
+
+ // ID of the resource preset that defines available computational resources (vCPU, RAM, etc.) for a cluster host.
+ //
+ // All available presets are listed in [the documentation](/docs/managed-mysql/concepts/instance-types).
+ string resource_preset_id = 1;
+
+ // Volume of the storage (for each cluster host, in bytes).
+ int64 disk_size = 2;
+
+ // Type of the storage.
+ //
+ // Possible values:
+ // * `network-hdd` - standard network storage
+ // * `network-ssd` - fast network storage
+ // * `network-ssd-nonreplicated` - fast network nonreplicated storage
+ // * `local-ssd` - fast local storage.
+ //
+ // See [the documentation](/docs/managed-mysql/concepts/storage) for details.
+ string disk_type_id = 3;
+}
+
+message Access {
+
+ // Allows access from DataLens.
+ //
+ // See [the documentation](/docs/managed-mysql/operations/datalens-connect) for details.
+ bool data_lens = 1;
+
+ // Allows SQL queries to the cluster databases from management console.
+ //
+ // See [the documentation](/docs/managed-mysql/operations/web-sql-query) for details.
+ bool web_sql = 2;
+
+ // Allow access for DataTransfer.
+ bool data_transfer = 3;
+}
+
+message PerformanceDiagnostics {
+
+ // Flag that shows if performance statistics gathering is enabled for the cluster.
+ bool enabled = 1;
+
+ // Interval (in seconds) for `my_session` sampling.
+ int64 sessions_sampling_interval = 2 [(value) = "1-86400"];
+
+ // Interval (in seconds) for `my_statements` sampling.
+ int64 statements_sampling_interval = 3 [(value) = "1-86400"];
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/cluster_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/cluster_service.proto
new file mode 100644
index 0000000000..a61b6d622e
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/cluster_service.proto
@@ -0,0 +1,989 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.v1;
+
+import "google/api/annotations.proto";
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/timestamp.proto";
+import "google/protobuf/wrappers.proto";
+import "google/type/timeofday.proto";
+import "yandex/cloud/api/operation.proto";
+import "yandex/cloud/mdb/mysql/v1/backup.proto";
+import "yandex/cloud/mdb/mysql/v1/cluster.proto";
+import "yandex/cloud/mdb/mysql/v1/config/mysql5_7.proto";
+import "yandex/cloud/mdb/mysql/v1/config/mysql8_0.proto";
+import "yandex/cloud/mdb/mysql/v1/database.proto";
+import "yandex/cloud/mdb/mysql/v1/maintenance.proto";
+import "yandex/cloud/mdb/mysql/v1/user.proto";
+import "yandex/cloud/operation/operation.proto";
+import "yandex/cloud/validation.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1";
+
+// A set of methods for managing MySQL clusters.
+service ClusterService {
+ // Retrieves information about a cluster.
+ rpc Get(GetClusterRequest) returns (Cluster) {
+ option (google.api.http) = {get: "/managed-mysql/v1/clusters/{cluster_id}"};
+ }
+
+ // Retrieves the list of clusters in a folder.
+ rpc List(ListClustersRequest) returns (ListClustersResponse) {
+ option (google.api.http) = {get: "/managed-mysql/v1/clusters"};
+ }
+
+ // Creates a cluster in a folder.
+ rpc Create(CreateClusterRequest) returns (operation.Operation) {
+ option (google.api.http) = {
+ post: "/managed-mysql/v1/clusters"
+ body: "*"
+ };
+ option (yandex.cloud.api.operation) = {
+ metadata: "CreateClusterMetadata"
+ response: "Cluster"
+ };
+ }
+
+ // Updates a cluster.
+ rpc Update(UpdateClusterRequest) returns (operation.Operation) {
+ option (google.api.http) = {
+ patch: "/managed-mysql/v1/clusters/{cluster_id}"
+ body: "*"
+ };
+ option (yandex.cloud.api.operation) = {
+ metadata: "UpdateClusterMetadata"
+ response: "Cluster"
+ };
+ }
+
+ // Deletes a cluster.
+ rpc Delete(DeleteClusterRequest) returns (operation.Operation) {
+ option (google.api.http) = {delete: "/managed-mysql/v1/clusters/{cluster_id}"};
+ option (yandex.cloud.api.operation) = {
+ metadata: "DeleteClusterMetadata"
+ response: "google.protobuf.Empty"
+ };
+ }
+
+ // Starts a cluster.
+ rpc Start(StartClusterRequest) returns (operation.Operation) {
+ option (google.api.http) = {post: "/managed-mysql/v1/clusters/{cluster_id}:start"};
+ option (yandex.cloud.api.operation) = {
+ metadata: "StartClusterMetadata"
+ response: "Cluster"
+ };
+ }
+
+ // Stops a cluster.
+ rpc Stop(StopClusterRequest) returns (operation.Operation) {
+ option (google.api.http) = {post: "/managed-mysql/v1/clusters/{cluster_id}:stop"};
+ option (yandex.cloud.api.operation) = {
+ metadata: "StopClusterMetadata"
+ response: "Cluster"
+ };
+ }
+
+ // Moves a cluster to a folder.
+ rpc Move(MoveClusterRequest) returns (operation.Operation) {
+ option (google.api.http) = {
+ post: "/managed-mysql/v1/clusters/{cluster_id}:move"
+ body: "*"
+ };
+ option (yandex.cloud.api.operation) = {
+ metadata: "MoveClusterMetadata"
+ response: "Cluster"
+ };
+ }
+
+ // Creates a backup for a cluster.
+ //
+ // To get information about a backup, make a [BackupService.Get] request.
+ rpc Backup(BackupClusterRequest) returns (operation.Operation) {
+ option (google.api.http) = {post: "/managed-mysql/v1/clusters/{cluster_id}:backup"};
+ option (yandex.cloud.api.operation) = {
+ metadata: "BackupClusterMetadata"
+ response: "Cluster"
+ };
+ }
+
+ // Restores a backup to a new cluster.
+ //
+ // See [the documentation](/docs/managed-mysql/concepts/backup) for details.
+ rpc Restore(RestoreClusterRequest) returns (operation.Operation) {
+ option (google.api.http) = {
+ post: "/managed-mysql/v1/clusters:restore"
+ body: "*"
+ };
+ option (yandex.cloud.api.operation) = {
+ metadata: "RestoreClusterMetadata"
+ response: "Cluster"
+ };
+ }
+
+ // Reschedules planned maintenance operation.
+ rpc RescheduleMaintenance(RescheduleMaintenanceRequest) returns (operation.Operation) {
+ option (google.api.http) = {
+ post: "/managed-mysql/v1/clusters/{cluster_id}:rescheduleMaintenance"
+ body: "*"
+ };
+ option (yandex.cloud.api.operation) = {
+ metadata: "RescheduleMaintenanceMetadata"
+ response: "Cluster"
+ };
+ }
+
+ // Starts a manual failover for a cluster.
+ rpc StartFailover(StartClusterFailoverRequest) returns (operation.Operation) {
+ option (google.api.http) = {
+ post: "/managed-mysql/v1/clusters/{cluster_id}:startFailover"
+ body: "*"
+ };
+ option (yandex.cloud.api.operation) = {
+ metadata: "StartClusterFailoverMetadata"
+ response: "Cluster"
+ };
+ }
+
+ // Retrieves logs for a cluster.
+ //
+ // Alternatively, logs can be streamed using [StreamLogs].
+ rpc ListLogs(ListClusterLogsRequest) returns (ListClusterLogsResponse) {
+ option (google.api.http) = {get: "/managed-mysql/v1/clusters/{cluster_id}:logs"};
+ }
+
+ // Retrieves a log stream for a cluster.
+ //
+ // This method is similar to [ListLogs], but uses server-side streaming, which allows for the `tail -f` command semantics.
+ rpc StreamLogs(StreamClusterLogsRequest) returns (stream StreamLogRecord) {
+ option (google.api.http) = {get: "/managed-mysql/v1/clusters/{cluster_id}:stream_logs"};
+ }
+
+ // Retrieves a list of operations for a cluster.
+ rpc ListOperations(ListClusterOperationsRequest) returns (ListClusterOperationsResponse) {
+ option (google.api.http) = {get: "/managed-mysql/v1/clusters/{cluster_id}/operations"};
+ }
+
+ // Retrieves a list of backups for a cluster.
+ //
+ // To list all backups in a folder, make a [BackupService.List] request.
+ rpc ListBackups(ListClusterBackupsRequest) returns (ListClusterBackupsResponse) {
+ option (google.api.http) = {get: "/managed-mysql/v1/clusters/{cluster_id}/backups"};
+ }
+
+ // Retrieves a list of hosts for a cluster.
+ rpc ListHosts(ListClusterHostsRequest) returns (ListClusterHostsResponse) {
+ option (google.api.http) = {get: "/managed-mysql/v1/clusters/{cluster_id}/hosts"};
+ }
+
+ // Adds new hosts in a cluster.
+ rpc AddHosts(AddClusterHostsRequest) returns (operation.Operation) {
+ option (google.api.http) = {
+ post: "/managed-mysql/v1/clusters/{cluster_id}/hosts:batchCreate"
+ body: "*"
+ };
+ option (yandex.cloud.api.operation) = {
+ metadata: "AddClusterHostsMetadata"
+ response: "google.protobuf.Empty"
+ };
+ }
+
+ // Updates the specified hosts.
+ rpc UpdateHosts(UpdateClusterHostsRequest) returns (operation.Operation) {
+ option (google.api.http) = {
+ post: "/managed-mysql/v1/clusters/{cluster_id}/hosts:batchUpdate"
+ body: "*"
+ };
+ option (yandex.cloud.api.operation) = {
+ metadata: "UpdateClusterHostsMetadata"
+ response: "google.protobuf.Empty"
+ };
+ }
+
+ // Deletes the specified hosts for a cluster.
+ rpc DeleteHosts(DeleteClusterHostsRequest) returns (operation.Operation) {
+ option (google.api.http) = {
+ post: "/managed-mysql/v1/clusters/{cluster_id}/hosts:batchDelete"
+ body: "*"
+ };
+ option (yandex.cloud.api.operation) = {
+ metadata: "DeleteClusterHostsMetadata"
+ response: "google.protobuf.Empty"
+ };
+ }
+}
+
+message GetClusterRequest {
+ // ID of the cluster to return information about.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+}
+
+message ListClustersRequest {
+ // ID of the folder to list clusters in.
+ //
+ // To get this ID, make 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 API returns a [ListClustersResponse.next_page_token] that can be used to get the next page of results in the subsequent [ClusterService.List] requests.
+ int64 page_size = 2 [(value) = "0-1000"];
+
+ // Page token that can be used to iterate through multiple pages of results.
+ //
+ // To get the next page of results, set [page_token] to the [ListClustersResponse.next_page_token] returned by the previous [ClusterService.List] request.
+ string page_token = 3 [(length) = "<=100"];
+
+ // A filter expression that selects clusters listed in the response.
+ //
+ // The expression must specify:
+ // 1. The field name. Currently you can only use filtering with the [Cluster.name] field.
+ // 2. An `=` operator.
+ // 3. The value in double quotes (`"`). Must be 1-63 characters long and match the regular expression `[a-zA-Z0-9_-]+`.
+ string filter = 4 [(length) = "<=1000"];
+}
+
+message ListClustersResponse {
+ // List of clusters.
+ repeated Cluster clusters = 1;
+
+ // The token that can be used to get the next page of results.
+ //
+ // If the number of results is larger than [ListClustersRequest.page_size], use the [next_page_token] as the value for the [ListClustersRequest.page_token] in the subsequent [ClusterService.List] request to iterate through multiple pages of results.
+ //
+ // Each of the subsequent [ClusterService.List] requests should use the [next_page_token] value returned by the previous request to continue paging through the results.
+ string next_page_token = 2;
+}
+
+message CreateClusterRequest {
+ // ID of the folder to create the cluster in.
+ //
+ // To get this ID, make a [yandex.cloud.resourcemanager.v1.FolderService.List] request.
+ string folder_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+
+ // Name of the cluster. The name must be unique within the folder.
+ string name = 2 [
+ (required) = true,
+ (length) = "<=63",
+ (pattern) = "[a-zA-Z0-9_-]*"
+ ];
+
+ // Description of the cluster.
+ string description = 3 [(length) = "<=256"];
+
+ // Custom labels for the cluster 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]*"
+ ];
+
+ // Deployment environment of the MySQL cluster.
+ Cluster.Environment environment = 5;
+
+ // Configuration of the cluster.
+ ConfigSpec config_spec = 6;
+
+ // Configuration of databases in the cluster.
+ repeated DatabaseSpec database_specs = 7;
+
+ // Configuration of database users in the cluster.
+ repeated UserSpec user_specs = 8;
+
+ // Configuration of hosts in the cluster.
+ repeated HostSpec host_specs = 9;
+
+ // ID of the network to create the cluster in.
+ string network_id = 10 [(length) = "<=50"];
+
+ // List of security group IDs to apply to the cluster.
+ repeated string security_group_ids = 11;
+
+ // This option prevents unintended deletion of the cluster.
+ bool deletion_protection = 12;
+
+ // Host groups hosting VMs of the cluster.
+ repeated string host_group_ids = 13;
+}
+
+message CreateClusterMetadata {
+ // ID of the cluster that is being created.
+ string cluster_id = 1;
+}
+
+message UpdateClusterRequest {
+ // ID of the cluster to update.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+
+ // Field mask that specifies which settings of the cluster should be updated.
+ google.protobuf.FieldMask update_mask = 2;
+
+ // New description of the cluster.
+ string description = 3 [(length) = "<=256"];
+
+ // New set of custom labels for the cluster as `key:value` pairs.
+ //
+ // This set will completely replace the current one.
+ // To add a label, request the current label set with the [ClusterService.Get] request, then send an [ClusterService.Update] request with the new label added to the current set.
+ 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]*"
+ ];
+
+ // New configuration of the cluster.
+ ConfigSpec config_spec = 5;
+
+ // New name of the cluster.
+ string name = 6 [
+ (length) = "<=63",
+ (pattern) = "[a-zA-Z0-9_-]*"
+ ];
+
+ // Configuration of a maintenance window in an MySQL cluster.
+ MaintenanceWindow maintenance_window = 7;
+
+ // New list of security group IDs to apply to the cluster.
+ repeated string security_group_ids = 8;
+
+ // This option prevents unintended deletion of the cluster.
+ bool deletion_protection = 9;
+
+ // Host groups hosting VMs of the cluster.
+ //repeated string host_group_ids = 10;
+}
+
+message UpdateClusterMetadata {
+ // ID of the cluster that is being updated.
+ string cluster_id = 1;
+}
+
+message DeleteClusterRequest {
+ // ID of the cluster to delete.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+}
+
+message DeleteClusterMetadata {
+ // ID of the cluster that is being deleted.
+ string cluster_id = 1;
+}
+
+message BackupClusterRequest {
+ // ID of the cluster to back up.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+}
+
+message BackupClusterMetadata {
+ // ID of the cluster that is being backed up.
+ string cluster_id = 1;
+ // ID of the MySQL backup that is created.
+ string backup_id = 2;
+}
+
+message RestoreClusterRequest {
+ reserved 3;
+
+ // ID of the backup to restore from.
+ //
+ // To get this ID, make a [BackupService.List] request (lists all backups in a folder) or a [ClusterService.ListBackups] request (lists all backups for an existing cluster).
+ string backup_id = 1 [(required) = true];
+
+ // Timestamp of the moment to which the MySQL cluster should be restored.
+ google.protobuf.Timestamp time = 2 [(required) = true];
+
+ // Name of the new MySQL cluster the backup will be restored to. The name must be unique within the folder.
+ string name = 4 [
+ (required) = true,
+ (pattern) = "[a-zA-Z0-9_-]*"
+ ];
+
+ // Description of the new cluster.
+ string description = 5 [(length) = "<=256"];
+
+ // Custom labels for the new cluster as `key:value` pairs.
+ map<string, string> labels = 6 [
+ (yandex.cloud.size) = "<=64",
+ (length) = "<=63",
+ (pattern) = "[-_0-9a-z]*",
+ (map_key).length = "1-63",
+ (map_key).pattern = "[a-z][-_0-9a-z]*"
+ ];
+
+ // Deployment environment of the new cluster.
+ Cluster.Environment environment = 7;
+
+ // Configuration of the new cluster.
+ ConfigSpec config_spec = 8;
+
+ // Configuration of hosts in the new cluster.
+ repeated HostSpec host_specs = 9;
+
+ // ID of the network to create the new cluster in.
+ string network_id = 10 [(length) = "<=50"];
+
+ // ID of the folder to create the new cluster in.
+ string folder_id = 11 [(length) = "<=50"];
+
+ // List of security group IDs to apply to the new cluster.
+ repeated string security_group_ids = 12;
+
+ // Deletion Protection inhibits deletion of the cluster
+ bool deletion_protection = 13;
+
+ // Host groups hosting VMs of the cluster.
+ repeated string host_group_ids = 14;
+}
+
+message RestoreClusterMetadata {
+ // ID of the new cluster that is being created from a backup.
+ string cluster_id = 1;
+
+ // ID of the backup that is being used for creating a cluster.
+ string backup_id = 2;
+}
+
+message StartClusterFailoverRequest {
+ // ID of the cluster to start failover for.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+
+ // Host name to switch master role to.
+ // If not provided, then the master role is switched to the most up-to-date replica host.
+ //
+ // To get this name, make a [ClusterService.ListHosts] request.
+ string host_name = 2 [(length) = "<=253"];
+}
+
+message StartClusterFailoverMetadata {
+ // ID of the cluster that is being failovered.
+ string cluster_id = 1;
+}
+
+message RescheduleMaintenanceRequest {
+ // ID of the cluster to reschedule the maintenance operation for.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+
+ enum RescheduleType {
+ RESCHEDULE_TYPE_UNSPECIFIED = 0;
+
+ // Start the maintenance operation immediately.
+ IMMEDIATE = 1;
+
+ // Start the maintenance operation within the next available maintenance window.
+ NEXT_AVAILABLE_WINDOW = 2;
+
+ // Start the maintenance operation at the specific time.
+ SPECIFIC_TIME = 3;
+ }
+
+ // The type of reschedule request.
+ RescheduleType reschedule_type = 2 [(required) = true];
+
+ // The time until which this maintenance operation should be delayed.
+ // The value should be ahead of the first time when the maintenance operation has been scheduled for no more than two weeks.
+ // The value can also point to the past moment of time if `IMMEDIATE` reschedule type is chosen.
+ google.protobuf.Timestamp delayed_until = 3;
+}
+
+message RescheduleMaintenanceMetadata {
+ reserved 2 to 3;
+
+ // ID of the cluster the maintenance operation is being rescheduled for.
+ string cluster_id = 1;
+
+ // The time until which this maintenance operation is to be delayed.
+ google.protobuf.Timestamp delayed_until = 4;
+}
+
+// A single log record.
+message LogRecord {
+ // Timestamp of the log record.
+ google.protobuf.Timestamp timestamp = 1;
+
+ // Contents of the log record.
+ map<string, string> message = 2;
+}
+
+message ListClusterLogsRequest {
+ // ID of the cluster to request logs for.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+
+ // Columns from the logs table to request.
+ // If no columns are specified, complete log records are returned.
+ repeated string column_filter = 2;
+
+ // The log type.
+ ServiceType service_type = 3;
+
+ enum ServiceType {
+ SERVICE_TYPE_UNSPECIFIED = 0;
+
+ // MySQL error log.
+ MYSQL_ERROR = 1;
+
+ // MySQL general query log.
+ MYSQL_GENERAL = 2;
+
+ // MySQL slow query log.
+ MYSQL_SLOW_QUERY = 3;
+
+ // MySQL audit log.
+ MYSQL_AUDIT = 4;
+ }
+
+ // Start timestamp for the logs request.
+ // The logs in the response will be within [from_time] to [to_time] range.
+ google.protobuf.Timestamp from_time = 4;
+
+ // End timestamp for the logs request.
+ // The logs in the response will be within [from_time] to [to_time] range.
+ google.protobuf.Timestamp to_time = 5;
+
+ // The maximum number of results per page to return.
+ //
+ // If the number of available results is larger than [page_size], the API returns a [ListClusterLogsResponse.next_page_token] that can be used to get the next page of results in the subsequent [ClusterService.ListLogs] requests.
+ int64 page_size = 6 [(value) = "0-1000"];
+
+ // Page token that can be used to iterate through multiple pages of results.
+ //
+ // To get the next page of results, set [page_token] to the [ListClusterLogsResponse.next_page_token] returned by the previous [ClusterService.ListLogs] request.
+ string page_token = 7 [(length) = "<=100"];
+
+ // Option that controls the behavior of result pagination.
+ // If it is set to `true`, then [ListClusterLogsResponse.next_page_token] will always be returned, even if the current page is empty.
+ bool always_next_page_token = 8;
+}
+
+message ListClusterLogsResponse {
+ // Requested log records.
+ repeated LogRecord logs = 1;
+
+ // The token that can be used to get the next page of results.
+ //
+ // If the number of results is larger than [ListClusterLogsRequest.page_size], use the [next_page_token] as the value for the [ListClusterLogsRequest.page_token] in the subsequent [ClusterService.ListLogs] request to iterate through multiple pages of results.
+ //
+ // Each of the subsequent [ClusterService.ListLogs] requests should use the [next_page_token] value returned by the previous request to continue paging through the results.
+ //
+ // This value is interchangeable with [StreamLogRecord.next_record_token] from [ClusterService.StreamLogs] method.
+ string next_page_token = 2;
+}
+
+// A single log record in the logs stream.
+message StreamLogRecord {
+ // One of the requested log records.
+ LogRecord record = 1;
+
+ // The token that can be used to continue streaming logs starting from the exact same record.
+ // To continue streaming, specify value of [next_record_token] as the [StreamClusterLogsRequest.record_token] value in the next [ClusterService.StreamLogs] request.
+ //
+ // This value is interchangeable with [ListClusterLogsResponse.next_page_token] from [ClusterService.ListLogs] method.
+ string next_record_token = 2;
+}
+
+message StreamClusterLogsRequest {
+ // ID of the cluster to stream logs for.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+
+ // Columns from the logs table to request.
+ // If no columns are specified, complete log records are returned.
+ repeated string column_filter = 2;
+
+ // The log type.
+ ServiceType service_type = 3;
+
+ enum ServiceType {
+ SERVICE_TYPE_UNSPECIFIED = 0;
+
+ // MySQL error log.
+ MYSQL_ERROR = 1;
+
+ // MySQL general query log.
+ MYSQL_GENERAL = 2;
+
+ // MySQL slow query log.
+ MYSQL_SLOW_QUERY = 3;
+
+ // MySQL audit log.
+ MYSQL_AUDIT = 4;
+ }
+
+ // Start timestamp for the logs request.
+ google.protobuf.Timestamp from_time = 4;
+
+ // End timestamp for the logs request.
+ // If this field is not set, all existing log records beginning from [from_time] will be returned first, and then the new records will be returned as they appear.
+ //
+ // In essence it has `tail -f` command semantics.
+ google.protobuf.Timestamp to_time = 5;
+
+ // Record token that can be used to control logs streaming.
+ //
+ // Set [record_token] to the [StreamLogRecord.next_record_token], returned by the previous [ClusterService.StreamLogs] request to start streaming from the next log record.
+ string record_token = 6 [(length) = "<=100"];
+
+ // A filter expression that selects clusters logs listed in the response.
+ //
+ // The expression must specify:
+ // 1. The field name. Currently filtering can be applied to the [LogRecord.logs.hostname] 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]`.
+ // Examples of a filter: `message.hostname='node1.db.cloud.yandex.net'`
+ string filter = 7 [(length) = "<=1000"];
+}
+
+message ListClusterOperationsRequest {
+ // ID of the cluster to list operations for.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_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 API returns a [ListClusterOperationsResponse.next_page_token] that can be used to get the next page of results in the subsequent [ClusterService.ListOperations] requests.
+ int64 page_size = 2 [(value) = "0-1000"];
+
+ // Page token that can be used to iterate through multiple pages of results.
+ //
+ // To get the next page of results, set [page_token] to the [ListClusterOperationsResponse.next_page_token] returned by the previous [ClusterService.ListOperations] request.
+ string page_token = 3 [(length) = "<=100"];
+}
+
+message ListClusterOperationsResponse {
+ // List of operations in the cluster.
+ repeated operation.Operation operations = 1;
+
+ // The token that can be used to get the next page of results.
+ //
+ // If the number of results is larger than [ListClusterOperationsRequest.page_size], use the [next_page_token] as the value for the [ListClusterOperationsRequest.page_token] in the subsequent [ClusterService.ListOperations] request to iterate through multiple pages of results.
+ //
+ // Each of the subsequent [ClusterService.ListOperations] requests should use the [next_page_token] value returned by the previous request to continue paging through the results.
+ string next_page_token = 2;
+}
+
+message ListClusterBackupsRequest {
+ // ID of the cluster to list backups for.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_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 API returns a [ListClusterBackupsResponse.next_page_token] that can be used to get the next page of results in the subsequent [ClusterService.ListBackups] requests.
+ int64 page_size = 2 [(value) = "<=1000"];
+
+ // Page token that can be used to iterate through multiple pages of results.
+ //
+ // To get the next page of results, set [page_token] to the [ListClusterBackupsResponse.next_page_token] returned by the previous [ClusterService.ListBackups] request.
+ string page_token = 3 [(length) = "<=100"];
+}
+
+message ListClusterBackupsResponse {
+ // List of the cluster backups.
+ repeated Backup backups = 1;
+
+ // The token that can be used to get the next page of results.
+ //
+ // If the number of results is larger than [ListClusterBackupsRequest.page_size], use the [next_page_token] as the value for the [ListClusterBackupsRequest.page_token] in the subsequent [ClusterService.ListBackups] request to iterate through multiple pages of results.
+ //
+ // Each of the subsequent [ClusterService.ListBackups] requests should use the [next_page_token] value returned by the previous request to continue paging through the results.
+ string next_page_token = 2;
+}
+
+message ListClusterHostsRequest {
+ // ID of the cluster to list hosts for.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_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 API returns a [ListClusterHostsResponse.next_page_token] that can be used to get the next page of results in the subsequent [ClusterService.ListHosts] requests.
+ int64 page_size = 2 [(value) = "0-1000"];
+
+ // Page token that can be used to iterate through multiple pages of results.
+ //
+ // To get the next page of results, set [page_token] to the [ListClusterHostsResponse.next_page_token] returned by the previous [ClusterService.ListHosts] request.
+ string page_token = 3 [(length) = "<=100"];
+}
+
+message ListClusterHostsResponse {
+ // List of hosts in the cluster.
+ repeated Host hosts = 1;
+
+ // The token that can be used to get the next page of results.
+ //
+ // If the number of results is larger than [ListClusterHostsRequest.page_size], use the [next_page_token] as the value for the [ListClusterHostsRequest.page_token] in the subsequent [ClusterService.ListHosts] request to iterate through multiple pages of results.
+ //
+ // Each of the subsequent [ClusterService.ListHosts] requests should use the [next_page_token] value returned by the previous request to continue paging through the results.
+ string next_page_token = 2;
+}
+
+message AddClusterHostsRequest {
+ // ID of the cluster to add hosts to.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+
+ // Configuration of the newly added hosts.
+ repeated HostSpec host_specs = 2 [(size) = ">0"];
+}
+
+message AddClusterHostsMetadata {
+ // ID of the cluster to which the hosts are being added.
+ string cluster_id = 1;
+
+ // Names of hosts that are being added.
+ repeated string host_names = 2;
+}
+
+message DeleteClusterHostsRequest {
+ // ID of the cluster to delete hosts from.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+
+ // Names of hosts to delete.
+ //
+ // To get these names, make a [ClusterService.ListHosts] request.
+ repeated string host_names = 2 [
+ (size) = ">0",
+ (length) = "<=253"
+ ];
+}
+
+message DeleteClusterHostsMetadata {
+ // ID of the cluster from which the hosts are being deleted.
+ string cluster_id = 1;
+
+ // Names of hosts that are being deleted.
+ repeated string host_names = 2;
+}
+
+message StartClusterRequest {
+ // ID of the cluster to start.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+}
+
+message StartClusterMetadata {
+ // ID of the cluster that is being started.
+ string cluster_id = 1;
+}
+
+message StopClusterRequest {
+ // ID of the cluster to stop.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+}
+
+message StopClusterMetadata {
+ // ID of the cluster that is being stopped.
+ string cluster_id = 1;
+}
+
+message MoveClusterRequest {
+ // ID of the cluster to move.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+
+ // ID of the destination folder.
+ //
+ // To get this ID, make a [yandex.cloud.resourcemanager.v1.FolderService.List] request.
+ string destination_folder_id = 2 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+}
+
+message MoveClusterMetadata {
+ // ID of the cluster that is being moved.
+ string cluster_id = 1;
+
+ // ID of the source folder.
+ string source_folder_id = 2;
+
+ // ID of the destination folder.
+ string destination_folder_id = 3;
+}
+
+message UpdateClusterHostsRequest {
+ // ID of the MySQL cluster to update hosts in.
+ // To get the MySQL cluster ID, use a [ClusterService.List] request.
+ string cluster_id = 1 [
+ (required) = true,
+ (length) = "<=50"
+ ];
+
+ // New configurations to apply to hosts.
+ repeated UpdateHostSpec update_host_specs = 2 [(size) = ">0"];
+}
+
+message UpdateClusterHostsMetadata {
+ // ID of the cluster in which the hosts are being updated.
+ string cluster_id = 1;
+
+ // Names of hosts that are being updated.
+ repeated string host_names = 2;
+}
+
+message UpdateHostSpec {
+ // Name of the host to update.
+ // To get a MySQL host name, use a [ClusterService.ListHosts] request.
+ string host_name = 1 [(required) = true];
+
+ // [Host.name] of the host to be used as the replication source (for cascading replication).
+ // To get a MySQL host name, use a [ClusterService.ListHosts] request.
+ string replication_source = 2;
+
+ // Field mask that specifies which settings of the MySQL host should be updated.
+ google.protobuf.FieldMask update_mask = 3;
+
+ // Host backup priority.
+ int64 backup_priority = 4 [(value) = "0-100"];
+
+ // Whether the host should get a public IP address on creation.
+ bool assign_public_ip = 5;
+
+ // Host master promotion priority.
+ int64 priority = 6 [(value) = "0-100"];
+}
+
+message HostSpec {
+ // ID of the availability zone where the host resides.
+ //
+ // To get a list of available zones, make the [yandex.cloud.compute.v1.ZoneService.List] request.
+ string zone_id = 1 [(length) = "<=50"];
+
+ // ID of the subnet to assign to the host.
+ //
+ // This subnet should be a part of the cluster network (the network ID is specified in the [ClusterService.CreateClusterRequest.network_id]).
+ string subnet_id = 2 [(length) = "<=50"];
+
+ // Option that enables public IP address for the host so that the host can be accessed from the internet.
+ //
+ // After a host has been created, this setting cannot be changed.
+ // To remove an assigned public IP address, or to assign a public IP address to a host without one, recreate the host with the appropriate [assign_public_ip] value set.
+ //
+ // Possible values:
+ // * `false` - don't assign a public IP address to the host.
+ // * `true` - assign a public IP address to the host.
+ bool assign_public_ip = 3;
+
+ // [Host.name] of the host to be used as the replication source (for cascading replication).
+ string replication_source = 4;
+
+ // Host backup priority
+ int64 backup_priority = 5 [(value) = "0-100"];
+
+ // Host master promotion priority
+ int64 priority = 6 [(value) = "0-100"];
+}
+
+message ConfigSpec {
+ // Version of MySQL used in the cluster.
+ //
+ // Possible values: `5.7`, `8.0`.
+ string version = 1; // No formal validation, a list of supported versions should suffice.
+
+ // Cluster-wide MySQL configuration.
+ oneof mysql_config {
+ // Configuration for a MySQL 5.7 cluster.
+ config.MysqlConfig5_7 mysql_config_5_7 = 2 [json_name = "mysqlConfig_5_7"];
+
+ // Configuration for a MySQL 8.0 cluster.
+ config.MysqlConfig8_0 mysql_config_8_0 = 6 [json_name = "mysqlConfig_8_0"];
+ }
+
+ // Resource preset for the cluster hosts.
+ Resources resources = 3;
+
+ // Time to start the daily backup, in the UTC timezone.
+ google.type.TimeOfDay backup_window_start = 4;
+
+ // Access policy for external services.
+ //
+ // If the specific services need to access the cluster, then set the necessary values in this policy.
+ Access access = 5;
+
+ // Configuration of the performance diagnostics service.
+ PerformanceDiagnostics performance_diagnostics = 7;
+
+ // Retention policy of automated backups.
+ google.protobuf.Int64Value backup_retain_period_days = 8 [(value) = "7-60"];
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/config/mysql5_7.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/config/mysql5_7.proto
new file mode 100644
index 0000000000..f18a19b71a
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/config/mysql5_7.proto
@@ -0,0 +1,594 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.v1.config;
+
+import "google/protobuf/wrappers.proto";
+import "yandex/cloud/validation.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1/config;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1.config";
+
+// Options and structure of `MysqlConfig5_7` reflects MySQL 5.7 configuration file.
+message MysqlConfig5_7 {
+ enum SQLMode {
+ SQLMODE_UNSPECIFIED = 0;
+
+ ALLOW_INVALID_DATES = 1;
+
+ ANSI_QUOTES = 2;
+
+ ERROR_FOR_DIVISION_BY_ZERO = 3;
+
+ HIGH_NOT_PRECEDENCE = 4;
+
+ IGNORE_SPACE = 5;
+
+ NO_AUTO_VALUE_ON_ZERO = 6;
+
+ NO_BACKSLASH_ESCAPES = 7;
+
+ NO_ENGINE_SUBSTITUTION = 8;
+
+ NO_UNSIGNED_SUBTRACTION = 9;
+
+ NO_ZERO_DATE = 10;
+
+ NO_ZERO_IN_DATE = 11;
+
+ NO_FIELD_OPTIONS = 12;
+
+ NO_KEY_OPTIONS = 13;
+
+ NO_TABLE_OPTIONS = 14;
+
+ ONLY_FULL_GROUP_BY = 15;
+
+ PAD_CHAR_TO_FULL_LENGTH = 16;
+
+ PIPES_AS_CONCAT = 17;
+
+ REAL_AS_FLOAT = 18;
+
+ STRICT_ALL_TABLES = 19;
+
+ STRICT_TRANS_TABLES = 20;
+
+ ANSI = 21;
+
+ TRADITIONAL = 22;
+
+ DB2 = 23;
+
+ MAXDB = 24;
+
+ MSSQL = 25;
+
+ MYSQL323 = 26;
+
+ MYSQL40 = 27;
+
+ ORACLE = 28;
+
+ POSTGRESQL = 29;
+
+ NO_AUTO_CREATE_USER = 30;
+
+ NO_DIR_IN_CREATE = 31;
+ }
+
+ enum AuthPlugin {
+ AUTH_PLUGIN_UNSPECIFIED = 0;
+
+ // Using [Native Pluggable Authentication](https://dev.mysql.com/doc/refman/5.7/en/native-pluggable-authentication.html).
+ MYSQL_NATIVE_PASSWORD = 1;
+
+ CACHING_SHA2_PASSWORD = 2 [deprecated=true];
+
+ // Using [SHA-256 Pluggable Authentication](https://dev.mysql.com/doc/refman/5.7/en/sha256-pluggable-authentication.html).
+ SHA256_PASSWORD = 3;
+ }
+
+ enum TransactionIsolation {
+ TRANSACTION_ISOLATION_UNSPECIFIED = 0;
+
+ READ_COMMITTED = 1;
+
+ REPEATABLE_READ = 2;
+
+ SERIALIZABLE = 3;
+ }
+
+ enum BinlogRowImage {
+ BINLOG_ROW_IMAGE_UNSPECIFIED = 0;
+
+ FULL = 1;
+
+ MINIMAL = 2;
+
+ NOBLOB = 3;
+ }
+
+ enum SlaveParallelType {
+ SLAVE_PARALLEL_TYPE_UNSPECIFIED = 0;
+
+ DATABASE = 1;
+
+ LOGICAL_CLOCK = 2;
+ }
+
+ enum LogSlowRateType {
+ LOG_SLOW_RATE_TYPE_UNSPECIFIED = 0;
+
+ SESSION = 1;
+
+ QUERY = 2;
+ }
+
+ enum LogSlowFilterType {
+ LOG_SLOW_FILTER_TYPE_UNSPECIFIED = 0;
+
+ FULL_SCAN = 1;
+
+ FULL_JOIN = 2;
+
+ TMP_TABLE = 3;
+
+ TMP_TABLE_ON_DISK = 4;
+
+ FILESORT = 5;
+
+ FILESORT_ON_DISK = 6;
+ }
+
+ enum BinlogTransactionDependencyTracking {
+ BINLOG_TRANSACTION_DEPENDENCY_TRACKING_UNSPECIFIED = 0;
+
+ COMMIT_ORDER = 1;
+
+ WRITESET = 2;
+
+ WRITESET_SESSION = 3;
+ }
+
+ // Size of the InnoDB buffer pool used for caching table and index data.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_buffer_pool_size) for details.
+ google.protobuf.Int64Value innodb_buffer_pool_size = 1 [(value) = ">=5242880"];
+
+ // The maximum permitted number of simultaneous client connections.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_connections) for details.
+ google.protobuf.Int64Value max_connections = 2 [(value) = "10-16384"];
+
+ // Time that it takes to process a query before it is considered slow.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_long_query_time) for details.
+ google.protobuf.DoubleValue long_query_time = 3 [(value) = "0-3600"];
+
+ // Enable writing of general query log of MySQL.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_general_log) for details.
+ google.protobuf.BoolValue general_log = 4;
+
+ // Enable writing of audit log of MySQL.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/mysql-security-excerpt/5.7/en/audit-log-reference.html#audit-log-options-variables) for details.
+ google.protobuf.BoolValue audit_log = 5;
+
+ // Server SQL mode of MySQL.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-setting) for details.
+ repeated SQLMode sql_mode = 6;
+
+ // The maximum size in bytes of one packet.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_allowed_packet) for details.
+ google.protobuf.Int64Value max_allowed_packet = 7 [(value) = "1024-1073741824"];
+
+ // Authentication plugin used in the managed MySQL cluster.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_default_authentication_plugin) for details.
+ AuthPlugin default_authentication_plugin = 8;
+
+ // Transaction log flush behaviour.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit) for details.
+ google.protobuf.Int64Value innodb_flush_log_at_trx_commit = 9 [(value) = "1-2"];
+
+ // Max time in seconds for a transaction to wait for a row lock.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_lock_wait_timeout) for details.
+ google.protobuf.Int64Value innodb_lock_wait_timeout = 10 [(value) = "1-28800"];
+
+ // Default transaction isolation level.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_transaction_isolation) for details.
+ TransactionIsolation transaction_isolation = 11;
+
+ // Print information about deadlocks in error log.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_print_all_deadlocks) for details.
+ google.protobuf.BoolValue innodb_print_all_deadlocks = 12;
+
+ // The number of seconds to wait for more data from a connection before aborting the read.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_net_read_timeout) for details.
+ google.protobuf.Int64Value net_read_timeout = 13 [(value) = "1-1200"];
+
+ // The number of seconds to wait for a block to be written to a connection before aborting the write.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_net_write_timeout) for details.
+ google.protobuf.Int64Value net_write_timeout = 14 [(value) = "1-1200"];
+
+ // The maximum permitted result length in bytes for the GROUP_CONCAT() function.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_group_concat_max_len) for details.
+ google.protobuf.Int64Value group_concat_max_len = 15 [(value) = "4-33554432"];
+
+ // The maximum size of internal in-memory temporary tables.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_tmp_table_size) for details.
+ google.protobuf.Int64Value tmp_table_size = 16 [(value) = "1024-536870912"];
+
+ // This variable sets the maximum size to which user-created MEMORY tables are permitted to grow.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_heap_table_size) for details.
+ google.protobuf.Int64Value max_heap_table_size = 17 [(value) = "16384-536870912"];
+
+ // The servers default time zone.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_default-time-zone) for details.
+ string default_time_zone = 18;
+
+ // The servers default character set.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_character_set_server) for details.
+ string character_set_server = 19;
+
+ // The server default collation.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_collation_server) for details.
+ string collation_server = 20;
+
+ // Enables InnoDB adaptive hash index.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_adaptive_hash_index) for details.
+ google.protobuf.BoolValue innodb_adaptive_hash_index = 21;
+
+ // Enables the NUMA interleave memory policy for allocation of the InnoDB buffer pool.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_numa_interleave) for details.
+ google.protobuf.BoolValue innodb_numa_interleave = 22;
+
+ // The size in bytes of the buffer that InnoDB uses to write to the log files on disk.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_log_buffer_size) for details.
+ google.protobuf.Int64Value innodb_log_buffer_size = 23 [(value) = "1048576-268435456"];
+
+ // The size in bytes of the single InnoDB Redo log file.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_log_file_size) for details.
+ google.protobuf.Int64Value innodb_log_file_size = 24 [(value) = "268435456-4294967296"];
+
+ // Limits IO available for InnoDB background tasks.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_io_capacity) for details.
+ google.protobuf.Int64Value innodb_io_capacity = 25 [(value) = "100-100000"];
+
+ // Limits IO available for InnoDB background tasks.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_io_capacity_max) for details.
+ google.protobuf.Int64Value innodb_io_capacity_max = 26 [(value) = "100-100000"];
+
+ // The number of I/O threads for read operations in InnoDB.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_read_io_threads) for details.
+ google.protobuf.Int64Value innodb_read_io_threads = 27 [(value) = "1-16"];
+
+ // The number of I/O threads for write operations in InnoDB.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_write_io_threads) for details.
+ google.protobuf.Int64Value innodb_write_io_threads = 28 [(value) = "1-16"];
+
+ // The number of background threads devoted to the InnoDB purge operation.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_purge_threads) for details.
+ google.protobuf.Int64Value innodb_purge_threads = 29 [(value) = "1-16"];
+
+ // Defines the maximum number of threads permitted inside of InnoDB.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_thread_concurrency) for details.
+ google.protobuf.Int64Value innodb_thread_concurrency = 30 [(value) = "0-1000"];
+
+ // Limits the max size of InnoDB temp tablespace.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_temp_data_file_path) for details.
+ google.protobuf.Int64Value innodb_temp_data_file_max_size = 31 [(value) = "0-107374182400"];
+
+ // A number of threads the server should cache for reuse.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_thread_cache_size) for details.
+ google.protobuf.Int64Value thread_cache_size = 32 [(value) = "10-10000"];
+
+ // The stack size for each thread. The default is large enough for normal operation.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_thread_stack) for details.
+ google.protobuf.Int64Value thread_stack = 33 [(value) = "131072-16777216"];
+
+ // The minimum size of the buffer that is used for plain index scans, range index scans, and joins that do not use indexes and thus perform full table scans.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_join_buffer_size) for details.
+ google.protobuf.Int64Value join_buffer_size = 34 [(value) = "1024-16777216"];
+
+ // Each session that must perform a sort allocates a buffer of this size.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_sort_buffer_size) for details.
+ google.protobuf.Int64Value sort_buffer_size = 35 [(value) = "1024-16777216"];
+
+ // The number of table definitions that can be stored in the definition cache.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_table_definition_cache) for details.
+ google.protobuf.Int64Value table_definition_cache = 36 [(value) = "400-524288"];
+
+ // The number of open tables for all threads.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_table_open_cache) for details.
+ google.protobuf.Int64Value table_open_cache = 37 [(value) = "400-524288"];
+
+ // The number of open tables cache instances.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_table_open_cache_instances) for details.
+ google.protobuf.Int64Value table_open_cache_instances = 38 [(value) = "1-32"];
+
+ // Determines whether the server enables certain nonstandard behaviors for default values and NULL-value handling in TIMESTAMP columns.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp) for details.
+ google.protobuf.BoolValue explicit_defaults_for_timestamp = 39;
+
+ // Can be used to control the operation of AUTO_INCREMENT columns.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/replication-options-source.html#sysvar_auto_increment_increment) for details.
+ google.protobuf.Int64Value auto_increment_increment = 40 [(value) = "1-65535"];
+
+ // Can be used to control the operation of AUTO_INCREMENT columns.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/replication-options-source.html#sysvar_auto_increment_offset) for details.
+ google.protobuf.Int64Value auto_increment_offset = 41 [(value) = "1-65535"];
+
+ // Controls how often the MySQL server synchronizes the binary log to disk.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_sync_binlog) for details.
+ google.protobuf.Int64Value sync_binlog = 42 [(value) = "0-4096"];
+
+ // The size of the cache to hold changes to the binary log during a transaction.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_binlog_cache_size) for details.
+ google.protobuf.Int64Value binlog_cache_size = 43 [(value) = "4096-67108864"];
+
+ // Controls how many microseconds the binary log commit waits before synchronizing the binary log file to disk.
+ //
+ // See [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_binlog_group_commit_sync_delay) for details.
+ google.protobuf.Int64Value binlog_group_commit_sync_delay = 44 [(value) = "0-50000"];
+
+ // For MySQL row-based replication, this variable determines how row images are written to the binary log.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_binlog_row_image) for details.
+ BinlogRowImage binlog_row_image = 45;
+
+ // When enabled, it causes the server to write informational log events such as row query log events into its binary log.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_binlog_rows_query_log_events) for details.
+ google.protobuf.BoolValue binlog_rows_query_log_events = 46;
+
+ // The number of replica acknowledgments the source must receive per transaction before proceeding.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/replication-options-source.html#sysvar_rpl_semi_sync_master_wait_for_slave_count) for details.
+ google.protobuf.Int64Value rpl_semi_sync_master_wait_for_slave_count = 47 [(value) = "1-2"];
+
+ // When using a multi-threaded replica, this variable specifies the policy used to decide which transactions are allowed to execute in parallel on the replica.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/replication-options-replica.html#sysvar_slave_parallel_type) for details.
+ SlaveParallelType slave_parallel_type = 48;
+
+ // Sets the number of applier threads for executing replication transactions in parallel.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/replication-options-replica.html#sysvar_slave_parallel_workers) for details.
+ google.protobuf.Int64Value slave_parallel_workers = 49 [(value) = "0-64"];
+
+ // The size of the binary log to hold.
+ google.protobuf.Int64Value mdb_preserve_binlog_bytes = 50 [(value) = "1073741824-1099511627776"];
+
+ // The number of seconds the server waits for activity on an interactive connection before closing it.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_interactive_timeout) for details.
+ google.protobuf.Int64Value interactive_timeout = 51 [(value) = "600-86400"];
+
+ // The number of seconds the server waits for activity on a noninteractive connection before closing it.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_wait_timeout) for details.
+ google.protobuf.Int64Value wait_timeout = 52 [(value) = "600-86400"];
+
+ // Replication lag threshold (seconds) which will switch MySQL to 'offline_mode = ON' to prevent users from reading stale data.
+ google.protobuf.Int64Value mdb_offline_mode_enable_lag = 53 [(value) = "600-432000"];
+
+ // Replication lag threshold (seconds) which will switch MySQL to 'offline_mode = OFF'.
+ // Should be less than mdb_offline_mode_enable_lag value.
+ google.protobuf.Int64Value mdb_offline_mode_disable_lag = 54 [(value) = "60-86400"];
+
+ // The limit on memory consumption for the range optimizer.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_range_optimizer_max_mem_size) for details.
+ google.protobuf.Int64Value range_optimizer_max_mem_size = 55 [(value) = "1048576-268435456"];
+
+ // Manages slow query log.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_slow_query_log) for details.
+ google.protobuf.BoolValue slow_query_log = 56;
+
+ // Query execution time, after which query to be logged unconditionally, that is, `log_slow_rate_limit`` will not apply to it.
+ //
+ // See [Percona documentation](https://www.percona.com/doc/percona-server/8.0/diagnostics/slow_extended.html#slow_query_log_always_write_time) for details.
+ google.protobuf.DoubleValue slow_query_log_always_write_time = 57;
+
+ // Specifies slow log granularity for `log_slow_rate_limit` values QUERY or SESSION.
+ //
+ // See [Percona documentation](https://www.percona.com/doc/percona-server/8.0/diagnostics/slow_extended.html#log_slow_rate_type) for details.
+ LogSlowRateType log_slow_rate_type = 58;
+
+ // Specifies what fraction of session/query should be logged. Logging is enabled for every nth session/query.
+ //
+ // See [Percona documentation](https://www.percona.com/doc/percona-server/8.0/diagnostics/slow_extended.html#log_slow_rate_limit) for details.
+ google.protobuf.Int64Value log_slow_rate_limit = 59 [(value) = "1-1000"];
+
+ // When TRUE, statements executed by stored procedures are logged to the slow log.
+ //
+ // See [Percona documentation](https://www.percona.com/doc/percona-server/8.0/diagnostics/slow_extended.html#log_slow_sp_statements) for details.
+ google.protobuf.BoolValue log_slow_sp_statements = 60;
+
+ // Filters the slow log by the query's execution plan.
+ //
+ // See [Percona documentation](https://www.percona.com/doc/percona-server/8.0/diagnostics/slow_extended.html#log_slow_filter) for details.
+ repeated LogSlowFilterType log_slow_filter = 61;
+
+ // Replication lag threshold (seconds) which allows replica to be promoted to master while executing "switchover from".
+ // Should be less than mdb_offline_mode_disable_lag.
+ google.protobuf.Int64Value mdb_priority_choice_max_lag = 62 [(value) = "0-86400"];
+
+ // Specifies the page size for InnoDB tablespaces.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_page_size).
+ google.protobuf.Int64Value innodb_page_size = 63 [(value) = "4096-65536"];
+
+ // The limit in bytes on the size of the temporary log files used during online DDL operations
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_online_alter_log_max_size).
+ google.protobuf.Int64Value innodb_online_alter_log_max_size = 64 [(value) = "65536-107374182400"];
+
+ // Minimum length of words that are stored in an InnoDB FULLTEXT index
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_ft_min_token_size).
+ google.protobuf.Int64Value innodb_ft_min_token_size = 65 [(value) = "0-16"];
+
+ // Maximum length of words that are stored in an InnoDB FULLTEXT index
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_ft_max_token_size).
+ google.protobuf.Int64Value innodb_ft_max_token_size = 66 [(value) = "10-84"];
+
+ // Table names storage and comparison strategy
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_lower_case_table_names).
+ google.protobuf.Int64Value lower_case_table_names = 67 [(value) = "0-1"];
+
+ // Manages MySQL 5.6 compatibility
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_show_compatibility_56).
+ google.protobuf.BoolValue show_compatibility_56 = 68 [json_name = "showCompatibility_56"];
+
+ // The number of times that any given stored procedure may be called recursively.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_sp_recursion_depth).
+ google.protobuf.Int64Value max_sp_recursion_depth = 69 [(value) = "0-255"];
+
+ // The level of zlib compression to use for InnoDB compressed tables and indexes.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_compression_level).
+ google.protobuf.Int64Value innodb_compression_level = 70 [(value) = "0-9"];
+
+ // Specifies how the source mysqld generates the dependency information that it writes in the binary log to help replicas determine which transactions can be executed in parallel.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_binlog_transaction_dependency_tracking).
+ BinlogTransactionDependencyTracking binlog_transaction_dependency_tracking = 71;
+
+ // Config specific will be all changes to a table take effect immediately or you must use COMMIT to accept a transaction or ROLLBACK to cancel it.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_autocommit).
+ google.protobuf.BoolValue autocommit = 72;
+
+ // Enables or disables periodic output for the standard InnoDB Monitor.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_status_output).
+ google.protobuf.BoolValue innodb_status_output = 73;
+
+ // When innodb_strict_mode is enabled, InnoDB returns errors rather than warnings when checking for invalid or incompatible table options.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_strict_mode).
+ google.protobuf.BoolValue innodb_strict_mode = 74;
+
+ // Makes InnoDB to write information about all lock wait timeout errors into the log file.
+ //
+ // For details, see [Percona documentation for the variable](https://docs.percona.com/percona-server/5.7/diagnostics/innodb_show_status.html?highlight=innodb_print_lock_wait_timeout_info).
+ google.protobuf.BoolValue innodb_print_lock_wait_timeout_info = 75;
+
+ // System variable specifies the verbosity for handling events intended for the error log
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_log_error_verbosity).
+ google.protobuf.Int64Value log_error_verbosity = 76 [(value) = "1-3"];
+
+ // The maximum number of bytes of memory reserved per session for computation of normalized statement digests.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_digest_length).
+ google.protobuf.Int64Value max_digest_length = 77 [(value) = "0-1048576"];
+
+ // Do not cache results that are larger than this number of bytes.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_query_cache_limit).
+ google.protobuf.Int64Value query_cache_limit = 78;
+
+ // The amount of memory allocated for caching query results.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_query_cache_size).
+ google.protobuf.Int64Value query_cache_size = 79;
+
+ // Set the query cache type.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_query_cache_type).
+ google.protobuf.Int64Value query_cache_type = 80 [(value) = "0-2"];
+
+ // // This variable specifies the timeout in seconds for attempts to acquire metadata locks
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_lock_wait_timeout).
+ google.protobuf.Int64Value lock_wait_timeout = 81 [(value) = "1-31536000"];
+
+ // This variable limits the total number of prepared statements in the server.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_prepared_stmt_count).
+ google.protobuf.Int64Value max_prepared_stmt_count = 82 [(value) = "0-1048576"];
+
+ // The system variable enables control over optimizer behavior.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_optimizer_switch)
+ // https://dev.mysql.com/doc/refman/5.7/en/switchable-optimizations.html
+ string optimizer_switch = 83;
+
+ // The maximum depth of search performed by the query optimizer
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html)
+ google.protobuf.Int64Value optimizer_search_depth = 84 [(value) = "0-62"];
+
+ // Enables and disables collection of query times
+ //
+ // For details, see [Percona documentation for the variable](https://docs.percona.com/percona-server/5.7/diagnostics/response_time_distribution.html#query_response_time_stats).
+ google.protobuf.BoolValue query_response_time_stats = 85;
+
+ // Enables or disables collection of statistics
+ //
+ // For details, see [Percona documentation for the variable](https://docs.percona.com/percona-server/5.7/diagnostics/user_stats.html#userstat).
+ google.protobuf.BoolValue userstat = 86;
+
+ // The execution timeout for SELECT statements, in milliseconds. If the value is 0, timeouts are not enabled.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_execution_time)
+ google.protobuf.Int64Value max_execution_time = 87 [(value) = "0-4294967295"];
+}
+
+message MysqlConfigSet5_7 {
+ // Effective settings for a MySQL 5.7 cluster (a combination of settings defined
+ // in [user_config] and [default_config]).
+ MysqlConfig5_7 effective_config = 1;
+
+ // User-defined settings for a MySQL 5.7 cluster.
+ MysqlConfig5_7 user_config = 2;
+
+ // Default configuration for a MySQL 5.7 cluster.
+ MysqlConfig5_7 default_config = 3;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/config/mysql8_0.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/config/mysql8_0.proto
new file mode 100644
index 0000000000..4ee908bb5e
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/config/mysql8_0.proto
@@ -0,0 +1,555 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.v1.config;
+
+import "google/protobuf/wrappers.proto";
+import "yandex/cloud/validation.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1/config;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1.config";
+
+// Options and structure of `MysqlConfig8_0` reflects MySQL 8.0 configuration file.
+message MysqlConfig8_0 {
+ enum SQLMode {
+ SQLMODE_UNSPECIFIED = 0;
+
+ ALLOW_INVALID_DATES = 1;
+
+ ANSI_QUOTES = 2;
+
+ ERROR_FOR_DIVISION_BY_ZERO = 3;
+
+ HIGH_NOT_PRECEDENCE = 4;
+
+ IGNORE_SPACE = 5;
+
+ NO_AUTO_VALUE_ON_ZERO = 6;
+
+ NO_BACKSLASH_ESCAPES = 7;
+
+ NO_ENGINE_SUBSTITUTION = 8;
+
+ NO_UNSIGNED_SUBTRACTION = 9;
+
+ NO_ZERO_DATE = 10;
+
+ NO_ZERO_IN_DATE = 11;
+
+ ONLY_FULL_GROUP_BY = 15;
+
+ PAD_CHAR_TO_FULL_LENGTH = 16;
+
+ PIPES_AS_CONCAT = 17;
+
+ REAL_AS_FLOAT = 18;
+
+ STRICT_ALL_TABLES = 19;
+
+ STRICT_TRANS_TABLES = 20;
+
+ TIME_TRUNCATE_FRACTIONAL = 21;
+
+ ANSI = 22;
+
+ TRADITIONAL = 23;
+
+ NO_DIR_IN_CREATE = 24;
+ }
+
+ enum AuthPlugin {
+ AUTH_PLUGIN_UNSPECIFIED = 0;
+
+ // Using [Native Pluggable Authentication](https://dev.mysql.com/doc/refman/8.0/en/native-pluggable-authentication.html).
+ MYSQL_NATIVE_PASSWORD = 1;
+
+ // Using [Caching SHA-2 Pluggable Authentication](https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html).
+ CACHING_SHA2_PASSWORD = 2;
+
+ // Using [SHA-256 Pluggable Authentication](https://dev.mysql.com/doc/refman/8.0/en/sha256-pluggable-authentication.html).
+ SHA256_PASSWORD = 3;
+ }
+
+ enum TransactionIsolation {
+ TRANSACTION_ISOLATION_UNSPECIFIED = 0;
+
+ READ_COMMITTED = 1;
+
+ REPEATABLE_READ = 2;
+
+ SERIALIZABLE = 3;
+ }
+
+ enum BinlogRowImage {
+ BINLOG_ROW_IMAGE_UNSPECIFIED = 0;
+
+ FULL = 1;
+
+ MINIMAL = 2;
+
+ NOBLOB = 3;
+ }
+
+ enum SlaveParallelType {
+ SLAVE_PARALLEL_TYPE_UNSPECIFIED = 0;
+
+ DATABASE = 1;
+
+ LOGICAL_CLOCK = 2;
+ }
+
+ enum LogSlowRateType {
+ LOG_SLOW_RATE_TYPE_UNSPECIFIED = 0;
+
+ SESSION = 1;
+
+ QUERY = 2;
+ }
+
+ enum LogSlowFilterType {
+ LOG_SLOW_FILTER_TYPE_UNSPECIFIED = 0;
+
+ FULL_SCAN = 1;
+
+ FULL_JOIN = 2;
+
+ TMP_TABLE = 3;
+
+ TMP_TABLE_ON_DISK = 4;
+
+ FILESORT = 5;
+
+ FILESORT_ON_DISK = 6;
+ }
+
+ enum BinlogTransactionDependencyTracking {
+ BINLOG_TRANSACTION_DEPENDENCY_TRACKING_UNSPECIFIED = 0;
+
+ COMMIT_ORDER = 1;
+
+ WRITESET = 2;
+
+ WRITESET_SESSION = 3;
+ }
+
+ // Size of the InnoDB buffer pool used for caching table and index data.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_buffer_pool_size) for details.
+ google.protobuf.Int64Value innodb_buffer_pool_size = 1 [(value) = ">=5242880"];
+
+ // The maximum permitted number of simultaneous client connections.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_connections) for details.
+ google.protobuf.Int64Value max_connections = 2 [(value) = "10-16384"];
+
+ // Time that it takes to process a query before it is considered slow.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_long_query_time) for details.
+ google.protobuf.DoubleValue long_query_time = 3;
+
+ // Enable writing of general query log of MySQL.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_general_log) for details.
+ google.protobuf.BoolValue general_log = 4;
+
+ // Enable writing of audit log of MySQL.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/audit-log-reference.html#audit-log-options-variables) for details.
+ google.protobuf.BoolValue audit_log = 5;
+
+ // Server SQL mode of MySQL.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sql-mode-setting) for details.
+ repeated SQLMode sql_mode = 6;
+
+ // The maximum size in bytes of one packet.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_allowed_packet) for details.
+ google.protobuf.Int64Value max_allowed_packet = 7 [(value) = "1024-1073741824"];
+
+ // Authentication plugin used in the managed MySQL cluster.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin) for details.
+ AuthPlugin default_authentication_plugin = 8;
+
+ // Transaction log flush behaviour.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit) for details.
+ google.protobuf.Int64Value innodb_flush_log_at_trx_commit = 9 [(value) = "1-2"];
+
+ // Max time in seconds for a transaction to wait for a row lock.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_lock_wait_timeout) for details.
+ google.protobuf.Int64Value innodb_lock_wait_timeout = 10 [(value) = "1-28800"];
+
+ // Default transaction isolation level.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_transaction_isolation) for details.
+ TransactionIsolation transaction_isolation = 11;
+
+ // Print information about deadlocks in error log.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_print_all_deadlocks) for details.
+ google.protobuf.BoolValue innodb_print_all_deadlocks = 12;
+
+ // The number of seconds to wait for more data from a connection before aborting the read.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_net_read_timeout) for details.
+ google.protobuf.Int64Value net_read_timeout = 13 [(value) = "1-1200"];
+
+ // The number of seconds to wait for a block to be written to a connection before aborting the write.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_net_write_timeout) for details.
+ google.protobuf.Int64Value net_write_timeout = 14 [(value) = "1-1200"];
+
+ // The maximum permitted result length in bytes for the GROUP_CONCAT() function.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len) for details.
+ google.protobuf.Int64Value group_concat_max_len = 15 [(value) = "4-33554432"];
+
+ // The maximum size of internal in-memory temporary tables.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmp_table_size) for details.
+ google.protobuf.Int64Value tmp_table_size = 16 [(value) = "1024-536870912"];
+
+ // This variable sets the maximum size to which user-created MEMORY tables are permitted to grow.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_heap_table_size) for details.
+ google.protobuf.Int64Value max_heap_table_size = 17 [(value) = "16384-536870912"];
+
+ // The servers default time zone.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_default-time-zone) for details.
+ string default_time_zone = 18;
+
+ // The servers default character set.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_character_set_server) for details.
+ string character_set_server = 19;
+
+ // The server default collation.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_collation_server) for details.
+ string collation_server = 20;
+
+ // Enables InnoDB adaptive hash index.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_adaptive_hash_index) for details.
+ google.protobuf.BoolValue innodb_adaptive_hash_index = 21;
+
+ // Enables the NUMA interleave memory policy for allocation of the InnoDB buffer pool.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_numa_interleave) for details.
+ google.protobuf.BoolValue innodb_numa_interleave = 22;
+
+ // The size in bytes of the buffer that InnoDB uses to write to the log files on disk.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_log_buffer_size) for details.
+ google.protobuf.Int64Value innodb_log_buffer_size = 23 [(value) = "1048576-268435456"];
+
+ // The size in bytes of the single InnoDB Redo log file.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_log_file_size) for details.
+ google.protobuf.Int64Value innodb_log_file_size = 24 [(value) = "268435456-4294967296"];
+
+ // Limits IO available for InnoDB background tasks.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_io_capacity) for details.
+ google.protobuf.Int64Value innodb_io_capacity = 25 [(value) = "100-100000"];
+
+ // Limits IO available for InnoDB background tasks.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_io_capacity_max) for details.
+ google.protobuf.Int64Value innodb_io_capacity_max = 26 [(value) = "100-100000"];
+
+ // The number of I/O threads for read operations in InnoDB.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_read_io_threads) for details.
+ google.protobuf.Int64Value innodb_read_io_threads = 27 [(value) = "1-16"];
+
+ // The number of I/O threads for write operations in InnoDB.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_write_io_threads) for details.
+ google.protobuf.Int64Value innodb_write_io_threads = 28 [(value) = "1-16"];
+
+ // The number of background threads devoted to the InnoDB purge operation.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_purge_threads) for details.
+ google.protobuf.Int64Value innodb_purge_threads = 29 [(value) = "1-16"];
+
+ // Defines the maximum number of threads permitted inside of InnoDB.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_thread_concurrency) for details.
+ google.protobuf.Int64Value innodb_thread_concurrency = 30 [(value) = "0-1000"];
+
+ // Limits the max size of InnoDB temp tablespace.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_temp_data_file_path) for details.
+ google.protobuf.Int64Value innodb_temp_data_file_max_size = 31 [(value) = "0-107374182400"];
+
+ // How many threads the server should cache for reuse.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_thread_cache_size) for details.
+ google.protobuf.Int64Value thread_cache_size = 32 [(value) = "10-10000"];
+
+ // The stack size for each thread. The default is large enough for normal operation.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_thread_stack) for details.
+ google.protobuf.Int64Value thread_stack = 33 [(value) = "131072-16777216"];
+
+ // The minimum size of the buffer that is used for plain index scans, range index scans, and joins that do not use indexes and thus perform full table scans.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_join_buffer_size) for details.
+ google.protobuf.Int64Value join_buffer_size = 34 [(value) = "1024-16777216"];
+
+ // Each session that must perform a sort allocates a buffer of this size.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_sort_buffer_size) for details.
+ google.protobuf.Int64Value sort_buffer_size = 35 [(value) = "1024-16777216"];
+
+ // The number of table definitions that can be stored in the definition cache.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_table_definition_cache) for details.
+ google.protobuf.Int64Value table_definition_cache = 36 [(value) = "400-524288"];
+
+ // The number of open tables for all threads.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_table_open_cache) for details.
+ google.protobuf.Int64Value table_open_cache = 37 [(value) = "400-524288"];
+
+ // The number of open tables cache instances.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_table_open_cache_instances) for details.
+ google.protobuf.Int64Value table_open_cache_instances = 38 [(value) = "1-32"];
+
+ // Determines whether the server enables certain nonstandard behaviors for default values and NULL-value handling in TIMESTAMP columns.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp) for details.
+ google.protobuf.BoolValue explicit_defaults_for_timestamp = 39;
+
+ // Can be used to control the operation of AUTO_INCREMENT columns.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/replication-options-source.html#sysvar_auto_increment_increment) for details.
+ google.protobuf.Int64Value auto_increment_increment = 40 [(value) = "1-65535"];
+
+ // Can be used to control the operation of AUTO_INCREMENT columns.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/replication-options-source.html#sysvar_auto_increment_offset) for details.
+ google.protobuf.Int64Value auto_increment_offset = 41 [(value) = "1-65535"];
+
+ // Controls how often the MySQL server synchronizes the binary log to disk.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_sync_binlog) for details.
+ google.protobuf.Int64Value sync_binlog = 42 [(value) = "0-4096"];
+
+ // The size of the cache to hold changes to the binary log during a transaction.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_binlog_cache_size) for details.
+ google.protobuf.Int64Value binlog_cache_size = 43 [(value) = "4096-67108864"];
+
+ // Controls how many microseconds the binary log commit waits before synchronizing the binary log file to disk.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_binlog_group_commit_sync_delay) for details.
+ google.protobuf.Int64Value binlog_group_commit_sync_delay = 44 [(value) = "0-50000"];
+
+ // For MySQL row-based replication, this variable determines how row images are written to the binary log.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_binlog_row_image) for details.
+ BinlogRowImage binlog_row_image = 45;
+
+ // When enabled, it causes the server to write informational log events such as row query log events into its binary log.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_binlog_rows_query_log_events) for details.
+ google.protobuf.BoolValue binlog_rows_query_log_events = 46;
+
+ // The number of replica acknowledgments the source must receive per transaction before proceeding.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/replication-options-source.html#sysvar_rpl_semi_sync_master_wait_for_slave_count) for details.
+ google.protobuf.Int64Value rpl_semi_sync_master_wait_for_slave_count = 47 [(value) = "1-2"];
+
+ // When using a multi-threaded replica, this variable specifies the policy used to decide which transactions are allowed to execute in parallel on the replica.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html#sysvar_slave_parallel_type) for details.
+ SlaveParallelType slave_parallel_type = 48;
+
+ // Sets the number of applier threads for executing replication transactions in parallel.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html#sysvar_slave_parallel_workers) for details.
+ google.protobuf.Int64Value slave_parallel_workers = 49 [(value) = "0-64"];
+
+ // The time limit for regular expression matching operations performed by REGEXP_LIKE and similar functions.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html#sysvar_regexp_time_limit) for details.
+ google.protobuf.Int64Value regexp_time_limit = 50 [(value) = "0-1048576"];
+
+ // The size of the binary log to hold.
+ google.protobuf.Int64Value mdb_preserve_binlog_bytes = 51 [(value) = "1073741824-1099511627776"];
+
+ // The number of seconds the server waits for activity on an interactive connection before closing it.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_interactive_timeout) for details.
+ google.protobuf.Int64Value interactive_timeout = 52 [(value) = "600-86400"];
+
+ // The number of seconds the server waits for activity on a noninteractive connection before closing it.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_wait_timeout) for details.
+ google.protobuf.Int64Value wait_timeout = 53 [(value) = "600-86400"];
+
+ // Replication lag threshold (seconds) which will switch MySQL to 'offline_mode = ON' to prevent users from reading stale data.
+ google.protobuf.Int64Value mdb_offline_mode_enable_lag = 54 [(value) = "600-432000"];
+
+ // Replication lag threshold (seconds) which will switch MySQL to 'offline_mode = OFF'.
+ // Should be less than mdb_offline_mode_enable_lag.
+ google.protobuf.Int64Value mdb_offline_mode_disable_lag = 55 [(value) = "60-86400"];
+
+ // The limit on memory consumption for the range optimizer.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_range_optimizer_max_mem_size) for details.
+ google.protobuf.Int64Value range_optimizer_max_mem_size = 56 [(value) = "1048576-268435456"];
+
+ // Manages slow query log.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_slow_query_log) for details.
+ google.protobuf.BoolValue slow_query_log = 57;
+
+ // Query execution time, after which query to be logged unconditionally, that is, `log_slow_rate_limit` will not apply to it.
+ //
+ // See [Percona documentation](https://www.percona.com/doc/percona-server/8.0/diagnostics/slow_extended.html#slow_query_log_always_write_time) for details.
+ google.protobuf.DoubleValue slow_query_log_always_write_time = 58;
+
+ // Specifies slow log granularity for `log_slow_rate_limit` QUERY or SESSION value.
+ //
+ // See [Percona documentation](https://www.percona.com/doc/percona-server/8.0/diagnostics/slow_extended.html#log_slow_rate_type) for details.
+ LogSlowRateType log_slow_rate_type = 59;
+
+ // Specifies what fraction of session/query should be logged. Logging is enabled for every nth session/query.
+ //
+ // See [Percona documentation](https://www.percona.com/doc/percona-server/8.0/diagnostics/slow_extended.html#log_slow_rate_limit) for details.
+ google.protobuf.Int64Value log_slow_rate_limit = 60 [(value) = "1-1000"];
+
+ // When TRUE, statements executed by stored procedures are logged to the slow log.
+ //
+ // See [Percona documentation](https://www.percona.com/doc/percona-server/8.0/diagnostics/slow_extended.html#log_slow_sp_statements) for details.
+ google.protobuf.BoolValue log_slow_sp_statements = 61;
+
+ // Filters the slow log by the query's execution plan.
+ //
+ // See [Percona documentation](https://www.percona.com/doc/percona-server/8.0/diagnostics/slow_extended.html#log_slow_filter) for details.
+ repeated LogSlowFilterType log_slow_filter = 62;
+
+ // Replication lag threshold (seconds) which allows replica to be promoted to master while executing "switchover from".
+ // Should be less than mdb_offline_mode_disable_lag.
+ google.protobuf.Int64Value mdb_priority_choice_max_lag = 63 [(value) = "0-86400"];
+
+ // Specifies the page size for InnoDB tablespaces.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_page_size).
+ google.protobuf.Int64Value innodb_page_size = 64 [(value) = "4096-65536"];
+
+ // The limit in bytes on the size of the temporary log files used during online DDL operations
+ //
+ // See [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_online_alter_log_max_size) for details.
+ google.protobuf.Int64Value innodb_online_alter_log_max_size = 65 [(value) = "65536-107374182400"];
+
+ // Minimum length of words that are stored in an InnoDB FULLTEXT index
+ //
+ // See [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_ft_min_token_size) for details.
+ google.protobuf.Int64Value innodb_ft_min_token_size = 66 [(value) = "0-16"];
+
+ // Maximum length of words that are stored in an InnoDB FULLTEXT index
+ //
+ // See [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_ft_max_token_size) for details.
+ google.protobuf.Int64Value innodb_ft_max_token_size = 67 [(value) = "10-84"];
+
+ // Table names storage and comparison strategy
+ //
+ // See [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_lower_case_table_names) for details.
+ google.protobuf.Int64Value lower_case_table_names = 68 [(value) = "0-1"];
+
+ // The number of times that any given stored procedure may be called recursively.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_sp_recursion_depth).
+ google.protobuf.Int64Value max_sp_recursion_depth = 69 [(value) = "0-255"];
+
+ // The level of zlib compression to use for InnoDB compressed tables and indexes.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_compression_level).
+ google.protobuf.Int64Value innodb_compression_level = 70 [(value) = "0-9"];
+
+ // Specifies how the source mysqld generates the dependency information that it writes in the binary log to help replicas determine which transactions can be executed in parallel.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_binlog_transaction_dependency_tracking).
+ BinlogTransactionDependencyTracking binlog_transaction_dependency_tracking = 71;
+
+ // Config specific will be all changes to a table take effect immediately or you must use COMMIT to accept a transaction or ROLLBACK to cancel it.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_autocommit).
+ google.protobuf.BoolValue autocommit = 72;
+
+ // Enables or disables periodic output for the standard InnoDB Monitor.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_status_output).
+ google.protobuf.BoolValue innodb_status_output = 73;
+
+ // When innodb_strict_mode is enabled, InnoDB returns errors rather than warnings when checking for invalid or incompatible table options.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_strict_mode).
+ google.protobuf.BoolValue innodb_strict_mode = 74;
+
+ // Makes InnoDB to write information about all lock wait timeout errors into the log file.
+ //
+ // For details, see [Percona documentation for the variable](https://docs.percona.com/percona-server/8.0/diagnostics/innodb_show_status.html?highlight=innodb_print_lock_wait_timeout_info).
+ google.protobuf.BoolValue innodb_print_lock_wait_timeout_info = 75;
+
+ // System variable specifies the verbosity for handling events intended for the error log
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_log_error_verbosity).
+ google.protobuf.Int64Value log_error_verbosity = 76 [(value) = "1-3"];
+
+ // The maximum number of bytes of memory reserved per session for computation of normalized statement digests.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_digest_length).
+ google.protobuf.Int64Value max_digest_length = 77 [(value) = "0-1048576"];
+
+ // This variable specifies the timeout in seconds for attempts to acquire metadata locks
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_lock_wait_timeout).
+ google.protobuf.Int64Value lock_wait_timeout = 78 [(value) = "1-31536000"];
+
+ // This variable limits the total number of prepared statements in the server.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_prepared_stmt_count).
+ google.protobuf.Int64Value max_prepared_stmt_count = 79 [(value) = "0-4194304"];
+
+ // The system variable enables control over optimizer behavior.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_optimizer_switch)
+ // https://dev.mysql.com/doc/refman/8.0/en/switchable-optimizations.html
+ string optimizer_switch = 80;
+
+ // The maximum depth of search performed by the query optimizer
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html)
+ google.protobuf.Int64Value optimizer_search_depth = 81 [(value) = "0-62"];
+
+ // Enables or disables collection of statistics
+ //
+ // For details, see [Percona documentation for the variable](https://docs.percona.com/percona-server/8.0/diagnostics/user_stats.html#userstat).
+ google.protobuf.BoolValue userstat = 82;
+
+ // The execution timeout for SELECT statements, in milliseconds. If the value is 0, timeouts are not enabled.
+ //
+ // For details, see [MySQL documentation for the variable](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_execution_time)
+ google.protobuf.Int64Value max_execution_time = 83 [(value) = "0-4294967295"];
+}
+
+message MysqlConfigSet8_0 {
+ // Effective settings for a MySQL 8.0 cluster (a combination of settings defined
+ // in [user_config] and [default_config]).
+ MysqlConfig8_0 effective_config = 1;
+
+ // User-defined settings for a MySQL 8.0 cluster.
+ MysqlConfig8_0 user_config = 2;
+
+ // Default configuration for a MySQL 8.0 cluster.
+ MysqlConfig8_0 default_config = 3;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/database.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/database.proto
new file mode 100644
index 0000000000..6e9aee5a0a
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/database.proto
@@ -0,0 +1,27 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.v1;
+
+import "yandex/cloud/validation.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1";
+
+// An object that represents MySQL database.
+//
+// See [the documentation](/docs/managed-mysql/operations/databases) for details.
+message Database {
+
+ // Name of the database.
+ string name = 1;
+
+ // ID of the cluster that the database belongs to.
+ string cluster_id = 2;
+}
+
+
+message DatabaseSpec {
+
+ // Name of the database.
+ string name = 1 [(required) = true, (length) = "<=63", (pattern) = "[a-zA-Z0-9_-]*"];
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/database_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/database_service.proto
new file mode 100644
index 0000000000..9939ead989
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/database_service.proto
@@ -0,0 +1,132 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.v1;
+
+import "google/api/annotations.proto";
+import "yandex/cloud/api/operation.proto";
+import "yandex/cloud/operation/operation.proto";
+import "yandex/cloud/validation.proto";
+import "yandex/cloud/mdb/mysql/v1/database.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1";
+
+// A set of methods for managing MySQL databases in a cluster.
+//
+// See [the documentation](/docs/managed-mysql/operations/databases) for details.
+service DatabaseService {
+
+ // Retrieves information about the specified database.
+ rpc Get (GetDatabaseRequest) returns (Database) {
+ option (google.api.http) = { get: "/managed-mysql/v1/clusters/{cluster_id}/databases/{database_name}" };
+ }
+
+ // Retrieves the list of databases in a cluster.
+ rpc List (ListDatabasesRequest) returns (ListDatabasesResponse) {
+ option (google.api.http) = { get: "/managed-mysql/v1/clusters/{cluster_id}/databases" };
+ }
+
+ // Creates a new database in a cluster.
+ rpc Create (CreateDatabaseRequest) returns (operation.Operation) {
+ option (google.api.http) = { post: "/managed-mysql/v1/clusters/{cluster_id}/databases" body: "*" };
+ option (yandex.cloud.api.operation) = {
+ metadata: "CreateDatabaseMetadata"
+ response: "Database"
+ };
+ }
+
+ // Deletes a database from a cluster.
+ rpc Delete (DeleteDatabaseRequest) returns (operation.Operation) {
+ option (google.api.http) = { delete: "/managed-mysql/v1/clusters/{cluster_id}/databases/{database_name}" };
+ option (yandex.cloud.api.operation) = {
+ metadata: "DeleteDatabaseMetadata"
+ response: "google.protobuf.Empty"
+ };
+ }
+}
+
+message GetDatabaseRequest {
+
+ // ID of the cluster that the database belongs to.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [(required) = true, (length) = "<=50"];
+
+ // Name of the database to return information about.
+ //
+ // To get this name, make a [DatabaseService.List] request.
+ string database_name = 2 [(required) = true, (length) = "<=63", (pattern) = "[a-zA-Z0-9_-]*"];
+}
+
+message ListDatabasesRequest {
+
+ // ID of the cluster to list databases in.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_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 API returns a [ListDatabasesResponse.next_page_token] that can be used to get the next page of results in the subsequent [DatabaseService.List] requests.
+ int64 page_size = 2 [(value) = "0-1000"];
+
+ // Page token that can be used to iterate through multiple pages of results.
+ //
+ // To get the next page of results, set [page_token] to the [ListDatabasesResponse.next_page_token] returned by the previous [DatabaseService.List] request.
+ string page_token = 3 [(length) = "<=100"];
+}
+
+message ListDatabasesResponse {
+
+ // List of databases.
+ repeated Database databases = 1;
+
+ // The token that can be used to get the next page of results.
+ //
+ // If the number of results is larger than [ListDatabasesRequest.page_size], use the [next_page_token] as the value for the [ListDatabasesRequest.page_token] in the subsequent [DatabaseService.List] request to iterate through multiple pages of results.
+ //
+ // Each of the subsequent [DatabaseService.List] requests should use the [next_page_token] value returned by the previous request to continue paging through the results.
+ string next_page_token = 2;
+}
+
+message CreateDatabaseRequest {
+
+ // ID of the cluster to create the database in.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [(required) = true, (length) = "<=50"];
+
+ // Configuration of the database.
+ DatabaseSpec database_spec = 2 [(required) = true];
+}
+
+message CreateDatabaseMetadata {
+
+ // ID of the cluster the database is being created in.
+ string cluster_id = 1;
+
+ // Name of the database that is being created.
+ string database_name = 2;
+}
+
+message DeleteDatabaseRequest {
+
+ // ID of the cluster to delete the database from.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [(required) = true, (length) = "<=50"];
+
+ // Name of the database to delete.
+ //
+ // To get this name, make a [DatabaseService.List] request.
+ string database_name = 2 [(required) = true, (length) = "<=63", (pattern) = "[a-zA-Z0-9_-]*"];
+}
+
+message DeleteDatabaseMetadata {
+
+ // ID of the cluster the database is being deleted from.
+ string cluster_id = 1;
+
+ // Name of the database that is being deleted.
+ string database_name = 2;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/maintenance.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/maintenance.proto
new file mode 100644
index 0000000000..ccf58f417b
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/maintenance.proto
@@ -0,0 +1,57 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.v1;
+
+import "google/protobuf/timestamp.proto";
+
+import "yandex/cloud/validation.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1";
+
+// Configuration of a maintenance window in a MySQL cluster.
+message MaintenanceWindow {
+
+ // The maintenance policy in effect.
+ oneof policy {
+ option (exactly_one) = true;
+
+ // Maintenance operation can be scheduled anytime.
+ AnytimeMaintenanceWindow anytime = 1;
+
+ // Maintenance operation can be scheduled on a weekly basis.
+ WeeklyMaintenanceWindow weekly_maintenance_window = 2;
+ }
+}
+
+message AnytimeMaintenanceWindow {}
+
+// Weelky maintenance window settings.
+message WeeklyMaintenanceWindow {
+ enum WeekDay {
+ WEEK_DAY_UNSPECIFIED = 0;
+ MON = 1;
+ TUE = 2;
+ WED = 3;
+ THU = 4;
+ FRI = 5;
+ SAT = 6;
+ SUN = 7;
+ }
+
+ // Day of the week (in `DDD` format).
+ WeekDay day = 1;
+
+ // Hour of the day in UTC (in `HH` format).
+ int64 hour = 2 [(value) = "1-24"];
+}
+
+// A planned maintenance operation.
+message MaintenanceOperation {
+
+ // Information about this maintenance operation.
+ string info = 1 [(length) = "<=256"];
+
+ // Time until which this maintenance operation is delayed.
+ google.protobuf.Timestamp delayed_until = 2;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/resource_preset.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/resource_preset.proto
new file mode 100644
index 0000000000..60877f9c3c
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/resource_preset.proto
@@ -0,0 +1,25 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.v1;
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1";
+
+// An object that represents MySQL resource preset.
+// A resource preset defines hardware configuration for cluster hosts.
+//
+// See [the documentation](/docs/managed-mysql/concepts/instance-types) for details.
+message ResourcePreset {
+
+ // ID of the resource preset that defines available computational resources (vCPU, RAM, etc.) for a cluster host.
+ string id = 1;
+
+ // IDs of availability zones where the resource preset is available.
+ repeated string zone_ids = 2;
+
+ // Number of CPU cores for a MySQL host created with the preset.
+ int64 cores = 3;
+
+ // RAM volume for a MySQL host created with the preset, in bytes.
+ int64 memory = 4;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/resource_preset_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/resource_preset_service.proto
new file mode 100644
index 0000000000..b3bd568cbc
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/resource_preset_service.proto
@@ -0,0 +1,60 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.v1;
+
+import "google/api/annotations.proto";
+import "yandex/cloud/mdb/mysql/v1/resource_preset.proto";
+import "yandex/cloud/validation.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1";
+
+// A set of methods for managing MySQL resource presets.
+//
+// See [the documentation](/docs/managed-mysql/concepts/instance-types) for details.
+service ResourcePresetService {
+
+ // Retrieves information about a resource preset.
+ rpc Get (GetResourcePresetRequest) returns (ResourcePreset) {
+ option (google.api.http) = { get: "/managed-mysql/v1/resourcePresets/{resource_preset_id}" };
+ }
+
+ // Retrieves the list of available resource presets.
+ rpc List (ListResourcePresetsRequest) returns (ListResourcePresetsResponse) {
+ option (google.api.http) = { get: "/managed-mysql/v1/resourcePresets" };
+ }
+}
+
+message GetResourcePresetRequest {
+
+ // ID of the resource preset to return information about.
+ //
+ // To get this ID, make a [ResourcePresetService.List] request.
+ string resource_preset_id = 1 [(required) = true];
+}
+
+message ListResourcePresetsRequest {
+
+ // The maximum number of results per page to return.
+ //
+ // If the number of available results is larger than [page_size], the API returns a [ListResourcePresetsResponse.next_page_token] that can be used to get the next page of results in the subsequent [ResourcePresetService.List] requests.
+ int64 page_size = 2 [(value) = "0-1000"];
+
+ // Page token that can be used to iterate through multiple pages of results.
+ //
+ // To get the next page of results, set [page_token] to the [ListResourcePresetsResponse.next_page_token] returned by the previous [ResourcePresetService.List] request.
+ string page_token = 3 [(length) = "<=100"];
+}
+
+message ListResourcePresetsResponse {
+
+ // List of resource presets.
+ repeated ResourcePreset resource_presets = 1;
+
+ // The token that can be used to get the next page of results.
+ //
+ // If the number of results is larger than [ListResourcePresetsRequest.page_size], use the [next_page_token] as the value for the [ListResourcePresetsRequest.page_token] in the subsequent [ResourcePresetService.List] request to iterate through multiple pages of results.
+ //
+ // Each of the subsequent [ResourcePresetService.List] requests should use the [next_page_token] value returned by the previous request to continue paging through the results.
+ string next_page_token = 2 [(length) = "<=100"];
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/user.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/user.proto
new file mode 100644
index 0000000000..cf2dbb9a2d
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/user.proto
@@ -0,0 +1,188 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.v1;
+
+import "google/protobuf/wrappers.proto";
+import "yandex/cloud/validation.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1";
+
+// An object that represents MySQL user.
+//
+// See [the documentation](/docs/managed-mysql/operations/cluster-users) for details.
+message User {
+
+ // Name of the user.
+ string name = 1;
+
+ // ID of the cluster the user belongs to.
+ string cluster_id = 2;
+
+ // Set of permissions granted to the user.
+ repeated Permission permissions = 3;
+
+ // Set of global permissions to grant to the user.
+ repeated GlobalPermission global_permissions = 4;
+
+ // Set of user connection limits.
+ ConnectionLimits connection_limits = 5;
+
+ // User authentication plugin.
+ AuthPlugin authentication_plugin = 6;
+}
+
+message Permission {
+ enum Privilege {
+ PRIVILEGE_UNSPECIFIED = 0;
+
+ // All privileges that can be made available to the user.
+ ALL_PRIVILEGES = 1;
+
+ // Altering tables.
+ ALTER = 2;
+
+ // Altering stored routines and functions.
+ ALTER_ROUTINE = 3;
+
+ // Creating tables or indexes.
+ CREATE = 4;
+
+ // Creating stored routines.
+ CREATE_ROUTINE = 5;
+
+ // Creating temporary tables.
+ CREATE_TEMPORARY_TABLES = 6;
+
+ // Creating views.
+ CREATE_VIEW = 7;
+
+ // Deleting tables.
+ DELETE = 8;
+
+ // Removing tables or views.
+ DROP = 9;
+
+ // Creating, altering, dropping, or displaying events for the Event Scheduler.
+ EVENT = 10;
+
+ // Executing stored routines.
+ EXECUTE = 11;
+
+ // Creating and removing indexes.
+ INDEX = 12;
+
+ // Inserting rows into the database.
+ INSERT = 13;
+
+ // Using `LOCK TABLES` statement for tables available with `SELECT` privilege.
+ LOCK_TABLES = 14;
+
+ // Selecting rows from tables.
+ //
+ // Some `SELECT` statements can be allowed without the `SELECT` privilege. All statements that read column values require the `SELECT` privilege.
+ //
+ // See [MySQL documentation](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_select) for details.
+ SELECT = 15;
+
+ // Using the `SHOW CREATE VIEW` statement. Also needed for views used with `EXPLAIN`.
+ SHOW_VIEW = 16;
+
+ // Creating, removing, executing, or displaying triggers for a table.
+ TRIGGER = 17;
+
+ // Updating rows in the database.
+ UPDATE = 18;
+
+ // Creation of a foreign key constraint for the parent table.
+ REFERENCES = 19;
+ }
+
+ // Name of the database that the permission grants access to.
+ string database_name = 1;
+
+ // Roles granted to the user within the database.
+ //
+ // See [the documentation](/docs/managed-mysql/operations/grant) for details.
+ repeated Privilege roles = 2 [(size) = ">=1"];
+}
+
+enum GlobalPermission {
+ GLOBAL_PERMISSION_UNSPECIFIED = 0;
+
+ // Enables use of the `SHOW MASTER STATUS`, `SHOW SLAVE STATUS`, and `SHOW BINARY LOGS` statements.
+ REPLICATION_CLIENT = 1;
+
+ // Enables the account to request updates that have been made to databases on the master server,
+ // using the `SHOW SLAVE HOSTS`, `SHOW RELAYLOG EVENTS` and `SHOW BINLOG EVENTS` statements.
+ REPLICATION_SLAVE = 2;
+
+ // Enables display of information about the the statements currently being performed by sessions (the set of threads executing within the server).
+ //
+ // The privilege enables use of `SHOW PROCESSLIST` or `mysqladmin` processlist to see threads belonging to other users.
+ // You can always see your own threads. The `PROCESS` privilege also enables use of `SHOW ENGINE`.
+ PROCESS = 3;
+
+ // Enables use of the `FLUSH OPTIMIZER_COSTS` statement.
+ FLUSH_OPTIMIZER_COSTS = 4;
+
+ // Enables a user to access definitions and properties of all stored routines (stored procedures and functions), even those for which the user is not named as the routine DEFINER.
+ // This access includes:
+ // The contents of the Information Schema `ROUTINES` table.
+ // The `SHOW CREATE FUNCTION` and `SHOW CREATE PROCEDURE` statements.
+ // The `SHOW FUNCTION CODE` and `SHOW PROCEDURE CODE` statements.
+ // The SHOW `FUNCTION STATUS` and `SHOW PROCEDURE STATUS` statements.
+ SHOW_ROUTINE = 5;
+}
+
+message ConnectionLimits {
+
+ // The maximum permitted number of user questions per hour.
+ google.protobuf.Int64Value max_questions_per_hour = 1 [(value) = ">=0"];
+
+ // The maximum permitted number of user updates per hour.
+ google.protobuf.Int64Value max_updates_per_hour = 2 [(value) = ">=0"];
+
+ // The maximum permitted number of simultaneous client connections per hour.
+ google.protobuf.Int64Value max_connections_per_hour = 3 [(value) = ">=0"];
+
+ // The maximum number of simultaneous connections permitted to any given MySQL user account.
+ google.protobuf.Int64Value max_user_connections = 4 [(value) = ">=0"];
+}
+
+enum AuthPlugin {
+ AUTH_PLUGIN_UNSPECIFIED = 0;
+
+ // Use [Native Pluggable Authentication](https://dev.mysql.com/doc/refman/8.0/en/native-pluggable-authentication.html).
+ MYSQL_NATIVE_PASSWORD = 1;
+
+ // Use [Caching SHA-2 Pluggable Authentication](https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html).
+ CACHING_SHA2_PASSWORD = 2;
+
+ // Use [SHA-256 Pluggable Authentication](https://dev.mysql.com/doc/refman/8.0/en/sha256-pluggable-authentication.html).
+ SHA256_PASSWORD = 3;
+}
+
+message UserSpec {
+
+ // Name of the user.
+ string name = 1 [(required) = true, (length) = "<=32", (pattern) = "[a-zA-Z0-9_-]*"];
+
+ // Password of the user.
+ string password = 2 [(required) = true, (length) = "8-128"];
+
+ // Set of permissions granted to the user to access specific databases.
+ // One permission per database.
+ //
+ // When a permission for a database is set, the user will have access to the database.
+ repeated Permission permissions = 3;
+
+ // Set of global permissions to grant to the user.
+ repeated GlobalPermission global_permissions = 4;
+
+ // Set of user connection limits.
+ ConnectionLimits connection_limits = 5;
+
+ // User authentication plugin.
+ AuthPlugin authentication_plugin = 6;
+}
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/user_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/user_service.proto
new file mode 100644
index 0000000000..5422357cbe
--- /dev/null
+++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/mysql/v1/user_service.proto
@@ -0,0 +1,250 @@
+syntax = "proto3";
+
+package yandex.cloud.mdb.mysql.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/mdb/mysql/v1/user.proto";
+
+option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/mysql/v1;mysql";
+option java_package = "yandex.cloud.api.mdb.mysql.v1";
+
+// A set of methods for managing MySQL users.
+//
+// See [the documentation](/docs/managed-mysql/operations/cluster-users) for details.
+service UserService {
+
+ // Retrieves information about the specified user.
+ rpc Get (GetUserRequest) returns (User) {
+ option (google.api.http) = { get: "/managed-mysql/v1/clusters/{cluster_id}/users/{user_name}" };
+ }
+
+ // Retrieves the list of users in a cluster.
+ rpc List (ListUsersRequest) returns (ListUsersResponse) {
+ option (google.api.http) = { get: "/managed-mysql/v1/clusters/{cluster_id}/users" };
+ }
+
+ // Creates a user in a cluster.
+ rpc Create (CreateUserRequest) returns (operation.Operation) {
+ option (google.api.http) = { post: "/managed-mysql/v1/clusters/{cluster_id}/users" body: "*" };
+ option (yandex.cloud.api.operation) = {
+ metadata: "CreateUserMetadata"
+ response: "User"
+ };
+ }
+
+ // Updates a user in a cluster.
+ rpc Update (UpdateUserRequest) returns (operation.Operation) {
+ option (google.api.http) = { patch: "/managed-mysql/v1/clusters/{cluster_id}/users/{user_name}" body: "*" };
+ option (yandex.cloud.api.operation) = {
+ metadata: "UpdateUserMetadata"
+ response: "User"
+ };
+ }
+
+ // Deletes a user in a cluster.
+ rpc Delete (DeleteUserRequest) returns (operation.Operation) {
+ option (google.api.http) = { delete: "/managed-mysql/v1/clusters/{cluster_id}/users/{user_name}" };
+ option (yandex.cloud.api.operation) = {
+ metadata: "DeleteUserMetadata"
+ response: "google.protobuf.Empty"
+ };
+ }
+
+ // Grants permission to access a database to a user in a cluster.
+ rpc GrantPermission (GrantUserPermissionRequest) returns (operation.Operation) {
+ option (google.api.http) = { post: "/managed-mysql/v1/clusters/{cluster_id}/users/{user_name}:grantPermission" body: "*" };
+ option (yandex.cloud.api.operation) = {
+ metadata: "GrantUserPermissionMetadata"
+ response: "User"
+ };
+ }
+
+ // Revokes permission to access a database from a user in a cluster.
+ rpc RevokePermission (RevokeUserPermissionRequest) returns (operation.Operation) {
+ option (google.api.http) = { post: "/managed-mysql/v1/clusters/{cluster_id}/users/{user_name}:revokePermission" body: "*" };
+ option (yandex.cloud.api.operation) = {
+ metadata: "RevokeUserPermissionMetadata"
+ response: "User"
+ };
+ }
+}
+
+message GetUserRequest {
+
+ // ID of the cluster the user belongs to.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [(required) = true, (length) = "<=50"];
+
+ // Name of the user to return information about.
+ //
+ // To get this name, make a [UserService.List] request.
+ string user_name = 2 [(required) = true, (length) = "<=63", (pattern) = "[a-zA-Z0-9_-]*"];
+}
+
+message ListUsersRequest {
+
+ // ID of the cluster to list the users in.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_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 API returns a [ListUsersResponse.next_page_token] that can be used to get the next page of results in the subsequent [UserService.List] requests.
+ int64 page_size = 2 [(value) = "0-1000"];
+
+ // Page token that can be used to iterate through multiple pages of results.
+ //
+ // To get the next page of results, set [page_token] to the [ListUsersResponse.next_page_token] returned by the previous [UserService.List] request.
+ string page_token = 3 [(length) = "<=100"];
+}
+
+message ListUsersResponse {
+
+ // List of users.
+ repeated User users = 1;
+
+ // The token that can be used to get the next page of results.
+ //
+ // If the number of results is larger than [ListUsersRequest.page_size], use the [next_page_token] as the value for the [ListUsersRequest.page_token] in the subsequent [UserService.List] request to iterate through multiple pages of results.
+ //
+ // Each of the subsequent [UserService.List] requests should use the [next_page_token] value returned by the previous request to continue paging through the results.
+ string next_page_token = 2;
+}
+
+message CreateUserRequest {
+
+ // ID of the cluster to create the user in.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [(required) = true, (length) = "<=50"];
+
+ // Configuration of the user.
+ UserSpec user_spec = 2 [(required) = true];
+}
+
+message CreateUserMetadata {
+
+ // ID of the cluster the user is being created in.
+ string cluster_id = 1;
+
+ // Name of the user that is being created.
+ string user_name = 2;
+}
+
+message UpdateUserRequest {
+
+ // ID of the cluster to update the user in.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [(required) = true, (length) = "<=50"];
+
+ // Name of the user to update.
+ //
+ // To get this name, make a [UserService.List] request.
+ string user_name = 2 [(required) = true, (length) = "<=63", (pattern) = "[a-zA-Z0-9_-]*"];
+
+ // Field mask that specifies which settings of the user should be updated.
+ google.protobuf.FieldMask update_mask = 3;
+
+ // New password for the user.
+ string password = 4 [(length) = "8-128"];
+
+ // A new set of permissions that should be granted to the user.
+ repeated Permission permissions = 5;
+
+ // New set of global permissions to grant to the user.
+ repeated GlobalPermission global_permissions = 6;
+
+ // Set of changed user connection limits.
+ ConnectionLimits connection_limits = 7;
+
+ // New user authentication plugin.
+ AuthPlugin authentication_plugin = 8;
+}
+
+message UpdateUserMetadata {
+
+ // ID of the cluster the user is being updated in.
+ string cluster_id = 1;
+
+ // Name of the user that is being updated.
+ string user_name = 2;
+}
+
+message DeleteUserRequest {
+
+ // ID of the cluster to delete the user from.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [(required) = true, (length) = "<=50"];
+
+ // Name of the user to delete.
+ //
+ // To get this name, make a [UserService.List] request.
+ string user_name = 2 [(required) = true, (length) = "<=63", (pattern) = "[a-zA-Z0-9_-]*"];
+}
+
+message DeleteUserMetadata {
+
+ // ID of the cluster the user is being deleted from.
+ string cluster_id = 1;
+
+ // Name of the user that is being deleted.
+ string user_name = 2;
+}
+
+message GrantUserPermissionRequest {
+
+ // ID of the cluster to grant permission to the user in.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [(required) = true, (length) = "<=50"];
+
+ // Name of the user to grant permission to.
+ //
+ // To get this name, make a [UserService.List] request.
+ string user_name = 2 [(required) = true, (length) = "<=63", (pattern) = "[a-zA-Z0-9_-]*"];
+
+ // Permission that should be granted to the specified user.
+ Permission permission = 3 [(required) = true];
+}
+
+message GrantUserPermissionMetadata {
+
+ // ID of the cluster the user is being granted a permission in.
+ string cluster_id = 1;
+
+ // Name of the user that is being granted a permission.
+ string user_name = 2;
+}
+
+message RevokeUserPermissionRequest {
+
+ // ID of the cluster to revoke permission from the user in.
+ //
+ // To get this ID, make a [ClusterService.List] request.
+ string cluster_id = 1 [(required) = true, (length) = "<=50"];
+
+ // Name of the user to revoke permission from.
+ //
+ // To get this name, make a [UserService.List] request.
+ string user_name = 2 [(required) = true, (length) = "<=63", (pattern) = "[a-zA-Z0-9_-]*"];
+
+ // Permission that should be revoked from the user.
+ Permission permission = 3 [(required) = true];
+}
+
+message RevokeUserPermissionMetadata {
+
+ // ID of the cluster the user is being revoked a permission in.
+ string cluster_id = 1;
+
+ // Name of the user whose permission is being revoked.
+ string user_name = 2;
+}