diff options
author | iddqd <iddqd@yandex-team.com> | 2024-06-11 10:12:13 +0300 |
---|---|---|
committer | iddqd <iddqd@yandex-team.com> | 2024-06-11 10:22:43 +0300 |
commit | 07f57e35443ab7f09471caf2dbf1afbcced4d9f7 (patch) | |
tree | a4a7b66ead62e83fa988a2ec2ce6576311c1f4b1 /contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch | |
parent | 6db3b8ca95e44179e48306a58656fb1f9317d9c3 (diff) | |
download | ydb-07f57e35443ab7f09471caf2dbf1afbcced4d9f7.tar.gz |
add contrib/python/yandexcloud to import
03b7d3cad2237366b55b393e18d4dc5eb222798c
Diffstat (limited to 'contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch')
14 files changed, 1987 insertions, 0 deletions
diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/auth.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/auth.proto new file mode 100644 index 0000000000..38eef4acb6 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/auth.proto @@ -0,0 +1,51 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1; + +import "yandex/cloud/validation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +message AuthProviders { + repeated AuthProvider providers = 1; +} + +message AuthProvider { + enum Type { + TYPE_UNSPECIFIED = 0; + NATIVE = 1; + SAML = 2; + // OPENID = 3; + // ANONYMOUS = 4; + } + + Type type = 1; + string name = 2 [(length) = "<=50", (pattern) = "[a-z][a-z0-9_-]*"]; + int64 order = 3; + bool enabled = 4; + + // selector ui settings + bool hidden = 5; + string description = 6 [(length) = "<=50"]; + string hint = 7 [(length) = "<=250"]; + string icon = 8 [(length) = "<=250"]; + + oneof settings { + SamlSettings saml = 9; + } +} + +message SamlSettings { + string idp_entity_id = 1 [(length) = "<=250"]; + bytes idp_metadata_file = 2 [(length) = "<=10000"]; + + string sp_entity_id = 3 [(length) = "<=250"]; + string kibana_url = 4 [(length) = "<=250"]; + + string attribute_principal = 5 [(length) = "<=50"]; + string attribute_groups = 6 [(length) = "<=50"]; + string attribute_name = 7 [(length) = "<=50"]; + string attribute_email = 8 [(length) = "<=50"]; + string attribute_dn = 9 [(length) = "<=50"]; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/auth_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/auth_service.proto new file mode 100644 index 0000000000..0f9741184b --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/auth_service.proto @@ -0,0 +1,158 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.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/elasticsearch/v1/auth.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +// A set of methods for managing Elasticsearch Authentication resources. +service AuthService { + + // Retrieves the list of registered auth providers for Elasticsearch cluster. + rpc ListProviders (ListAuthProvidersRequest) returns (ListAuthProvidersResponse) { + option (google.api.http) = { get: "/managed-elasticsearch/v1/clusters/{cluster_id}/auth/providers" }; + } + + // Returns registered auth provider by name. + rpc GetProvider (GetAuthProviderRequest) returns (AuthProvider) { + option (google.api.http) = { get: "/managed-elasticsearch/v1/clusters/{cluster_id}/auth/providers/{name}" }; + } + + // Adds new auth providers to Elasticsearch cluster. + rpc AddProviders (AddAuthProvidersRequest) returns (operation.Operation) { + option (google.api.http) = { post: "/managed-elasticsearch/v1/clusters/{cluster_id}/auth/providers" body: "*"}; + option (yandex.cloud.api.operation) = { + metadata: "AddAuthProvidersMetadata" + response: "AuthProviders" + }; + } + + // Replase the list of auth providers. + rpc UpdateProviders (UpdateAuthProvidersRequest) returns (operation.Operation) { + option (google.api.http) = { put: "/managed-elasticsearch/v1/clusters/{cluster_id}/auth/providers" body: "*"}; + option (yandex.cloud.api.operation) = { + metadata: "UpdateAuthProvidersMetadata" + response: "AuthProviders" + }; + } + + // Removes auth providers from Elasticsearch cluster by name. + rpc DeleteProviders (DeleteAuthProvidersRequest) returns (operation.Operation) { + option (google.api.http) = { delete: "/managed-elasticsearch/v1/clusters/{cluster_id}/auth/providers"}; + option (yandex.cloud.api.operation) = { + metadata: "DeleteAuthProvidersMetadata" + response: "google.protobuf.Empty" + }; + } + + // Updates registered auth provider. + rpc UpdateProvider (UpdateAuthProviderRequest) returns (operation.Operation) { + option (google.api.http) = { put: "/managed-elasticsearch/v1/clusters/{cluster_id}/auth/providers/{name}" body: "*"}; + option (yandex.cloud.api.operation) = { + metadata: "UpdateAuthProvidersMetadata" + response: "AuthProviders" + }; + } + + // Removes auth provider from Elasticsearch cluster by name. + rpc DeleteProvider (DeleteAuthProviderRequest) returns (operation.Operation) { + option (google.api.http) = { delete: "/managed-elasticsearch/v1/clusters/{cluster_id}/auth/providers/{name}"}; + option (yandex.cloud.api.operation) = { + metadata: "DeleteAuthProvidersMetadata" + response: "google.protobuf.Empty" + }; + } + +} + + +message ListAuthProvidersRequest { + // Required. ID of the ElasticSearch cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; +} + +message ListAuthProvidersResponse { + // List of auth providers of the Elasticsearch cluster. + repeated AuthProvider providers = 1; +} + +message GetAuthProviderRequest { + // Required. ID of the ElasticSearch cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // Required. Name of the provider to delete. + string name = 2 [(required) = true, (length) = "<=50", (pattern) = "[a-z][a-z0-9_-]*"]; +} + +message AddAuthProvidersRequest { + // Required. ID of the ElasticSearch cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // Required. List of providers to add. + repeated AuthProvider providers = 2 [(size) ="<=10"]; +} + +message UpdateAuthProvidersRequest { + // Required. ID of the ElasticSearch cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // Required. List of providers to set. + repeated AuthProvider providers = 2 [(size) ="<=10"]; +} + +message DeleteAuthProvidersRequest { + // Required. ID of the ElasticSearch cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // Required. List of providers to delete. + repeated string provider_names = 2 [(size) ="<=10", (length) = "<=50", (pattern) = "[a-z][a-z0-9_-]*"]; +} + +message UpdateAuthProviderRequest { + // Required. ID of the ElasticSearch cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // Required. Name of the provider to update. + string name = 2 [(required) = true, (length) = "<=50", (pattern) = "[a-z][a-z0-9_-]*"]; + + // Required. New provider defenition. + AuthProvider provider = 3 [(required) = true]; +} + +message DeleteAuthProviderRequest { + // Required. ID of the ElasticSearch cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // Required. Name of the provider to delete. + string name = 2 [(required) = true, (length) = "<=50", (pattern) = "[a-z][a-z0-9_-]*"]; +} + +message AddAuthProvidersMetadata { + // ID of the ElasticSearch cluster. + string cluster_id = 1; + + // Names of the providers being added. + repeated string names = 2; +} + +message UpdateAuthProvidersMetadata { + // ID of the ElasticSearch cluster. + string cluster_id = 1; + + // Names of the providers being added. + repeated string names = 2; +} + +message DeleteAuthProvidersMetadata { + // ID of the ElasticSearch cluster. + string cluster_id = 1; + + // Names of the providers being removed. + repeated string names = 2; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/backup.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/backup.proto new file mode 100644 index 0000000000..3cd55343c7 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/backup.proto @@ -0,0 +1,38 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1; + +import "google/protobuf/timestamp.proto"; +import "yandex/cloud/validation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +message Backup { + // Required. ID of the backup. + string id = 1; + + // ID of the folder that the backup belongs to. + string folder_id = 2; + + // ID of the associated Elasticsearch cluster. + string source_cluster_id = 3; + + // The time when the backup operation was started. + google.protobuf.Timestamp started_at = 4; + + // The time when the backup was created (i.e. when the backup operation completed). + google.protobuf.Timestamp created_at = 5; + + // Indices names. (max 100) + repeated string indices = 6 [(size) = "<=100"]; + + // Elasticsearch version used to create the snapshot + string elasticsearch_version = 7; + + // Total size of all indices in backup. in bytes + int64 size_bytes = 8; + + // Total count of indices in backup + int64 indices_total = 9; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/backup_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/backup_service.proto new file mode 100644 index 0000000000..fa1f83efa3 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/backup_service.proto @@ -0,0 +1,54 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1; + +import "google/api/annotations.proto"; +import "yandex/cloud/validation.proto"; +import "yandex/cloud/mdb/elasticsearch/v1/backup.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +service BackupService { + // Returns the specified backup of Elasticsearch cluster. + rpc Get (GetBackupRequest) returns (Backup) { + option (google.api.http) = { get: "/managed-elasticsearch/v1/backups/{backup_id}" }; + } + + // Returns the list of available backups for the specified Elasticsearch cluster. + rpc List (ListBackupsRequest) returns (ListBackupsResponse) { + option (google.api.http) = { get: "/managed-elasticsearch/v1/backups" }; + } +} + +message GetBackupRequest { + // Required. ID of the backup to return. + string backup_id = 1 [(required) = true]; +} + +message ListBackupsRequest { + // Required. ID of the folder to list backups in. + string folder_id = 1 [(required) = true, (length) = "<=50"]; + + // The maximum number of results per page that should be returned. If the number of available + // results is larger than `page_size`, the service returns a `next_page_token` that can be used + // to get the next page of results in subsequent ListBackups requests. + // Acceptable values are 0 to 1000, inclusive. Default value: 100. + int64 page_size = 2 [(value) = "0-1000"]; + + // Page token. Set `page_token` to the `next_page_token` returned by a previous ListBackups + // request to get the next page of results. + string page_token = 3 [(length) = "<=100"]; +} + +message ListBackupsResponse { + // Requested list of backups. + repeated Backup backups = 1; + + // This token allows you to get the next page of results for ListBackups requests, + // if the number of results is larger than `page_size` specified in the request. + // To get the next page, specify the value of `next_page_token` as a value for + // the `page_token` parameter in the next ListBackups request. Subsequent ListBackups + // requests will have their own `next_page_token` to continue paging through the results. + string next_page_token = 2; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/cluster.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/cluster.proto new file mode 100644 index 0000000000..e2662146b6 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/cluster.proto @@ -0,0 +1,268 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1; + +import "google/protobuf/timestamp.proto"; +import "yandex/cloud/mdb/elasticsearch/v1/config/elasticsearch.proto"; +import "yandex/cloud/mdb/elasticsearch/v1/maintenance.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +// An Elasticsearch cluster resource. +// For more information, see the [Concepts](/docs/managed-elasticsearch/concepts) section of the documentation. +message Cluster { + enum Environment { + ENVIRONMENT_UNSPECIFIED = 0; + + // Stable environment with a conservative update policy when only hotfixes are applied during regular maintenance. + PRODUCTION = 1; + + // Environment with a more aggressive update policy when new versions are rolled out irrespective of backward compatibility. + PRESTABLE = 2; + } + + enum Health { + + // State of the cluster is unknown ([Host.health] of all hosts in the cluster is `UNKNOWN`). + HEALTH_UNKNOWN = 0; + + // Cluster is alive and well ([Host.health] of all hosts in the cluster is `ALIVE`). + ALIVE = 1; + + // Cluster is inoperable ([Host.health] of all hosts in the cluster is `DEAD`). + DEAD = 2; + + // Cluster is in degraded state ([Host.health] of at least one of the hosts 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 stopped. + STOPPED = 6; + + // Cluster is starting. + STARTING = 7; + } + + // ID of the Elasticsearch cluster. + // This ID is assigned at creation time. + string id = 1; + + // ID of the folder that the Elasticsearch cluster belongs to. + string folder_id = 2; + + // Creation timestamp. + google.protobuf.Timestamp created_at = 3; + + // Name of the Elasticsearch cluster. + // The name must be unique within the folder. 1-63 characters long. + string name = 4; + + // Description of the Elasticsearch cluster. 0-256 characters long. + string description = 5; + + // Custom labels for the Elasticsearch cluster as `key:value` pairs. + // A maximum of 64 labels per resource is allowed. + map<string, string> labels = 6; + + // Deployment environment of the Elasticsearch cluster. + Environment environment = 7; + + // Description of monitoring systems relevant to the Elasticsearch cluster. + repeated Monitoring monitoring = 8; + + // Configuration of the Elasticsearch cluster. + ClusterConfig config = 9; + + // ID of the network that the cluster belongs to. + string network_id = 10; + + // Aggregated cluster health. + Health health = 11; + + // Current state of the cluster. + Status status = 12; + + // User security groups + repeated string security_group_ids = 13; + + // ID of the service account used for access to Object Storage. + string service_account_id = 14; + + // Deletion Protection inhibits deletion of the cluster + bool deletion_protection = 15; + + // Window of maintenance operations. + MaintenanceWindow maintenance_window = 16; + + // Maintenance operation planned at nearest maintenance_window. + MaintenanceOperation planned_operation = 17; +} + +// Metadata of monitoring system. +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 Elasticsearch cluster. + string link = 3; +} + +message ClusterConfig { + // Elasticsearch version. + string version = 1; + + // Configuration and resource allocation for Elasticsearch nodes. + Elasticsearch elasticsearch = 2; + + // ElasticSearch edition. + string edition = 3; +} + +message Elasticsearch { + message DataNode { + oneof config { + // Elasticsearch 7.x data node configuration. + config.ElasticsearchConfigSet7 elasticsearch_config_set_7 = 1 [json_name="elasticsearchConfigSet_7"]; + } + + // Resources allocated to Elasticsearch data nodes. + Resources resources = 2; + } + + message MasterNode { + // Resources allocated to Elasticsearch master nodes. + Resources resources = 1; + } + + // Configuration and resource allocation for Elasticsearch data nodes. + DataNode data_node = 1; + + // Configuration and resource allocation for Elasticsearch master nodes. + MasterNode master_node = 2; + + // Cluster wide plugins + repeated string plugins = 3; +} + +// Computational resources. +message Resources { + // ID of the preset for computational resources available to a host (CPU, memory etc.). + // All available presets are listed in the [documentation](/docs/managed-elasticsearch/concepts/instance-types). + string resource_preset_id = 1; + + // Volume of the storage available to a host, in bytes. + int64 disk_size = 2; + + // Type of the storage environment for the host. + // All available types are listed in the [documentation](/docs/managed-elasticsearch/concepts/storage). + string disk_type_id = 3; +} + +// Cluster host metadata. +message Host { + enum Type { + // Host type is unspecified. Default value. + TYPE_UNSPECIFIED = 0; + + // The host is an Elasticsearch data node. + DATA_NODE = 1; + + // The host is an Elasticsearch master node. + MASTER_NODE = 2; + } + + enum Health { + + // Health of the host is unknown. + UNKNOWN = 0; + + // The host is performing all its functions normally. + ALIVE = 1; + + // The host is inoperable and cannot perform any of its essential functions. + DEAD = 2; + + // The host is degraded and can perform only some of its essential functions. + DEGRADED = 3; + } + + // Name of the host. + string name = 1; + + // ID of the Elasticsearch cluster. + string cluster_id = 2; + + // ID of the availability zone where the host resides. + string zone_id = 3; + + // Host type. + Type type = 4; + + Resources resources = 5; + + // Aggregated host health data. If the field has default value, it is not returned in the response. + Health health = 6; + + // Services provided by the host. + repeated Service services = 7; + + // ID of the subnet the host resides in. + string subnet_id = 8; + + // The flag that defines whether a public IP address is assigned to the host. + // + // If the value is `true`, then this host is available on the Internet via it's public IP address. + bool assign_public_ip = 9; +} + +// Cluster service metadata. +message Service { + enum Type { + TYPE_UNSPECIFIED = 0; + + // The Elasticsearch service. + ELASTICSEARCH = 1; + } + + enum Health { + + // Health of the service is unknown. + UNKNOWN = 0; + + // The service is working normally. + ALIVE = 1; + + // The service is dead or unresponsive. + DEAD = 2; + } + + // Type of the service provided by the host. + Type type = 1; + + // Service health data. If the field has default value, it is not returned in the response. + Health health = 2; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/cluster_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/cluster_service.proto new file mode 100644 index 0000000000..853b24f67a --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/cluster_service.proto @@ -0,0 +1,884 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1; + +import "google/api/annotations.proto"; +import "google/protobuf/field_mask.proto"; +import "google/protobuf/timestamp.proto"; +import "yandex/cloud/api/operation.proto"; +import "yandex/cloud/mdb/elasticsearch/v1/backup.proto"; +import "yandex/cloud/mdb/elasticsearch/v1/cluster.proto"; +import "yandex/cloud/mdb/elasticsearch/v1/config/elasticsearch.proto"; +import "yandex/cloud/mdb/elasticsearch/v1/extension.proto"; +import "yandex/cloud/mdb/elasticsearch/v1/maintenance.proto"; +import "yandex/cloud/mdb/elasticsearch/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/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +// A set of methods for managing Elasticsearch clusters. +service ClusterService { + // Returns the specified Elasticsearch cluster. + // + // To get the list of available Elasticsearch clusters, make a [List] request. + rpc Get(GetClusterRequest) returns (Cluster) { + option (google.api.http) = {get: "/managed-elasticsearch/v1/clusters/{cluster_id}"}; + } + + // Retrieves the list of Elasticsearch clusters that belong to the specified folder. + rpc List(ListClustersRequest) returns (ListClustersResponse) { + option (google.api.http) = {get: "/managed-elasticsearch/v1/clusters"}; + } + + // Creates a new Elasticsearch cluster in the specified folder. + rpc Create(CreateClusterRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/managed-elasticsearch/v1/clusters" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "CreateClusterMetadata" + response: "Cluster" + }; + } + + // Updates the specified Elasticsearch cluster. + rpc Update(UpdateClusterRequest) returns (operation.Operation) { + option (google.api.http) = { + patch: "/managed-elasticsearch/v1/clusters/{cluster_id}" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "UpdateClusterMetadata" + response: "Cluster" + }; + } + + // Deletes the specified Elasticsearch cluster. + rpc Delete(DeleteClusterRequest) returns (operation.Operation) { + option (google.api.http) = {delete: "/managed-elasticsearch/v1/clusters/{cluster_id}"}; + option (yandex.cloud.api.operation) = { + metadata: "DeleteClusterMetadata" + response: "google.protobuf.Empty" + }; + } + + // Moves the specified Elasticsearch cluster to the specified folder. + rpc Move(MoveClusterRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/managed-elasticsearch/v1/clusters/{cluster_id}:move" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "MoveClusterMetadata" + response: "Cluster" + }; + } + + // Starts the specified Elasticsearch cluster. + rpc Start(StartClusterRequest) returns (operation.Operation) { + option (google.api.http) = {post: "/managed-elasticsearch/v1/clusters/{cluster_id}:start"}; + option (yandex.cloud.api.operation) = { + metadata: "StartClusterMetadata" + response: "Cluster" + }; + } + + // Stops the specified Elasticsearch cluster. + rpc Stop(StopClusterRequest) returns (operation.Operation) { + option (google.api.http) = {post: "/managed-elasticsearch/v1/clusters/{cluster_id}:stop"}; + option (yandex.cloud.api.operation) = { + metadata: "StopClusterMetadata" + response: "Cluster" + }; + } + + // Create a backup for the specified ElasticSearch cluster. + rpc Backup(BackupClusterRequest) returns (operation.Operation) { + option (google.api.http) = {post: "/managed-elasticsearch/v1/clusters/{cluster_id}:backup"}; + option (yandex.cloud.api.operation) = { + metadata: "BackupClusterMetadata" + response: "Cluster" + }; + } + + // Returns the list of available backups for the specified Elasticsearch cluster. + rpc ListBackups(ListClusterBackupsRequest) returns (ListClusterBackupsResponse) { + option (google.api.http) = {get: "/managed-elasticsearch/v1/clusters/{cluster_id}/backups"}; + } + + // Creates a new ElasticSearch cluster from the specified backup. + rpc Restore(RestoreClusterRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/managed-elasticsearch/v1/clusters:restore" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "RestoreClusterMetadata" + response: "Cluster" + }; + } + + // Retrieves logs for the specified Elasticsearch cluster. + // + // For more information about logs, see the [Logs](/docs/managed-elasticsearch/operations/cluster-logs) section in the documentation. + rpc ListLogs(ListClusterLogsRequest) returns (ListClusterLogsResponse) { + option (google.api.http) = {get: "/managed-elasticsearch/v1/clusters/{cluster_id}:logs"}; + } + + // Same as [ListLogs] but using server-side streaming. Also supports `tail -f` semantics. + rpc StreamLogs(StreamClusterLogsRequest) returns (stream StreamLogRecord) { + option (google.api.http) = {get: "/managed-elasticsearch/v1/clusters/{cluster_id}:stream_logs"}; + } + + // Retrieves the list of operations for the specified Elasticsearch cluster. + rpc ListOperations(ListClusterOperationsRequest) returns (ListClusterOperationsResponse) { + option (google.api.http) = {get: "/managed-elasticsearch/v1/clusters/{cluster_id}/operations"}; + } + + // Retrieves a list of hosts for the specified Elasticsearch cluster. + rpc ListHosts(ListClusterHostsRequest) returns (ListClusterHostsResponse) { + option (google.api.http) = {get: "/managed-elasticsearch/v1/clusters/{cluster_id}/hosts"}; + } + + // Adds new hosts to the specified Elasticsearch cluster. + rpc AddHosts(AddClusterHostsRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/managed-elasticsearch/v1/clusters/{cluster_id}/hosts:batchCreate" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "AddClusterHostsMetadata" + response: "google.protobuf.Empty" + }; + } + + // Deletes specified hosts from the specified Elasticsearch cluster. + rpc DeleteHosts(DeleteClusterHostsRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/managed-elasticsearch/v1/clusters/{cluster_id}/hosts:batchDelete" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "DeleteClusterHostsMetadata" + response: "google.protobuf.Empty" + }; + } + + // Reschedule planned maintenance operation. + rpc RescheduleMaintenance(RescheduleMaintenanceRequest) returns (operation.Operation) { + option (google.api.http) = { + post: "/managed-elasticsearch/v1/clusters/{cluster_id}:rescheduleMaintenance" + body: "*" + }; + option (yandex.cloud.api.operation) = { + metadata: "RescheduleMaintenanceMetadata" + response: "Cluster" + }; + } +} + +message GetClusterRequest { + // ID of the Elasticsearch cluster to return. + // + // To get the cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [ + (required) = true, + (length) = "<=50" + ]; +} + +message ListClustersRequest { + // ID of the folder to list Elasticsearch clusters in. + // + // To get the folder 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 service returns a [ListClustersResponse.next_page_token] that can be used to get the next page of results in subsequent list requests. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. + // To get the next page of results, set `page_token` to the [ListClustersResponse.next_page_token] returned by the previous list request. + string page_token = 3 [(length) = "<=100"]; + + // A filter expression that filters resources listed in the response. + // + // The expression must specify: + // 1. The field name to filter by. 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_-]+`. + // + // Example of a filter: `name NOT IN 'test,beta'`. + string filter = 4 [(length) = "<=1000"]; +} + +message ListClustersResponse { + // List of Elasticsearch clusters. + repeated Cluster clusters = 1; + + // Token that allows you to get the next page of results for list requests. + // + // If the number of results is larger than [ListClustersRequest.page_size], use `next_page_token` as the value + // for the [ListClustersRequest.page_token] parameter in the next list request. + //Each subsequent list request will have its own `next_page_token` to continue paging through the results. + string next_page_token = 2; +} + +message CreateClusterRequest { + reserved 7; + // ID of the folder to create the Elasticsearch cluster in. + string folder_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // Name of the Elasticsearch cluster. The name must be unique within the folder. + string name = 2 [ + (required) = true, + (length) = "<=63", + (pattern) = "[a-zA-Z0-9_-]*" + ]; + + // Description of the Elasticsearch cluster. + string description = 3 [(length) = "<=256"]; + + // Custom labels for the Elasticsearch cluster as `key:value` pairs. + // + // For example, "project": "mvp" or "source": "dictionary". + 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 Elasticsearch cluster. + Cluster.Environment environment = 5; + + // Elasticsearch and hosts configuration for the cluster. + ConfigSpec config_spec = 6 [(required) = true]; + + // One or more descriptions of users to be created in Elasticsearch cluster. + repeated UserSpec user_specs = 8; // optional, depricated will be removed in future versions + + // One or more configurations of hosts to be created in the Elasticsearch cluster. + repeated HostSpec host_specs = 9 [(size) = ">0"]; + + // ID of the network to create the Elasticsearch cluster in. + string network_id = 10 [ + (required) = true, + (length) = "<=50" + ]; + + // User security groups + repeated string security_group_ids = 11; + + // ID of the service account used for access to Object Storage. + string service_account_id = 12; + + // Deletion Protection inhibits deletion of the cluster + bool deletion_protection = 13; + + // Window of maintenance operations. + MaintenanceWindow maintenance_window = 14; + + repeated ExtensionSpec extension_specs = 15; // optional +} + +message CreateClusterMetadata { + // ID of the Elasticsearch cluster that is being created. + string cluster_id = 1; +} + +message UpdateClusterRequest { + // ID of the Elasticsearch cluster to update. + // + // To get the Elasticsearch cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + google.protobuf.FieldMask update_mask = 2; + + // New description of the Elasticsearch cluster. + string description = 3 [(length) = "<=256"]; + + // Custom labels for the Elasticsearch cluster as `key:value` pairs. + // + // For example, "project": "mvp" or "source": "dictionary". + // + // The new set of labels will completely replace the old ones. + // To add a label, request the current set with the [ClusterService.Get] method, then send an [ClusterService.Update] request with the new label added to the 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 and resources for hosts in the Elasticsearch cluster. + // + // Use [update_mask] to prevent reverting all cluster settings that are not listed in `config_spec` to their default values. + ConfigSpecUpdate config_spec = 5; + + // New name for the Elasticsearch cluster. + string name = 6 [ + (length) = "<=63", + (pattern) = "[a-zA-Z0-9_-]*" + ]; + + // User security groups + repeated string security_group_ids = 7; + + // ID of the service account used for access to Object Storage. + string service_account_id = 8; + + // Deletion Protection inhibits deletion of the cluster + bool deletion_protection = 9; + + // Window of maintenance operations. + MaintenanceWindow maintenance_window = 10; +} + +message UpdateClusterMetadata { + // ID of the Elasticsearch cluster that is being updated. + string cluster_id = 1; +} + +message DeleteClusterRequest { + // ID of the Elasticsearch cluster to delete. + // + // To get the Elasticsearch cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [ + (required) = true, + (length) = "<=50" + ]; +} + +message DeleteClusterMetadata { + // ID of the Elasticsearch cluster that is being deleted. + string cluster_id = 1; +} + +message ListClusterLogsRequest { + // ID of the Elasticsearch cluster to request logs for. + // + // To get the Elasticsearch cluster 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, full log records are returned. + repeated string column_filter = 2; + + // Start timestamp for the logs request. + google.protobuf.Timestamp from_time = 3; + + // End timestamp for the logs request. + google.protobuf.Timestamp to_time = 4; + + // The maximum number of results per page to return. + // + // If the number of available results is larger than `page_size`, the service returns a [ListClusterLogsResponse.next_page_token] that can be used to get the next page of results in subsequent list requests. + int64 page_size = 5 [(value) = "<=1000"]; + + // Page token. + // + // To get the next page of results, set `page_token` to the [ListClusterLogsResponse.next_page_token] returned by the previous list request. + string page_token = 6 [(length) = "<=100"]; + + // The flag that defines behavior of providing the next page token. + // + // If this flag is set to `true`, this API method will always return [ListClusterLogsResponse.next_page_token], even if current page is empty. + bool always_next_page_token = 7; + + // A filter expression that filters resources listed in the response. + // + // The expression must specify: + // 1. The field name to filter by. Currently filtering can be applied to the `hostname` field. + // 2. An `=` operator. + // 3. The value in double quotes (`"`). Must be 1-63 characters long and match the regular expression `[a-z0-9.-]{1,61}`. + // + // Example of a filter: `message.hostname='node1.db.cloud.yandex.net'` + string filter = 8 [(length) = "<=1000"]; + + // Type of the service to request logs about. + ServiceType service_type = 9; + + enum ServiceType { + SERVICE_TYPE_UNSPECIFIED = 0; + ELASTICSEARCH = 1; + KIBANA = 2; + } +} + +// A single log record. +message LogRecord { + // Log record timestamp. + google.protobuf.Timestamp timestamp = 1; + + // Contents of the log record. + map<string, string> message = 2; +} + +message ListClusterLogsResponse { + // Requested log records. + repeated LogRecord logs = 1; + + // Token that allows you to get the next page of results for list requests. + // + // If the number of results is larger than [ListClusterLogsRequest.page_size], use `next_page_token` as the value for the [ListClusterLogsRequest.page_token] query parameter in the next list request. + // Each subsequent list request will have its own `next_page_token` to continue paging through the results. + // + // This value is interchangeable with [StreamLogRecord.next_record_token] from StreamLogs method. + string next_page_token = 2; +} + +message StreamLogRecord { + // One of the requested log records. + LogRecord record = 1; + + // This token allows you to continue streaming logs starting from the exact same record. + // + // To continue streaming, specify value of `next_record_token` as value for [StreamClusterLogsRequest.record_token] parameter in the next StreamLogs request. + // + // This value is interchangeable with [ListClusterLogsResponse.next_page_token] from ListLogs method. + string next_record_token = 2; +} + +message StreamClusterLogsRequest { + // ID of the Elasticsearch cluster. + // + // To get the Elasticsearch cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // Columns from logs table to get in the response. + // + // If no columns are specified, full log records are returned. + repeated string column_filter = 2; + + // Start timestamp for the logs request. + google.protobuf.Timestamp from_time = 3; + + // End timestamp for the logs request. + // + // If this field is not set, all existing logs will be sent and then the new ones asthey appear. + // In essence it has `tail -f` semantics. + google.protobuf.Timestamp to_time = 4; + + // Record token. + // + // Set `record_token` to the [StreamLogRecord.next_record_token] returned by a previous [ClusterService.StreamLogs] request to start streaming from next log record. + string record_token = 5 [(length) = "<=100"]; + + // A filter expression that filters resources listed in the response. + // + // The expression must specify: + // 1. The field name to filter by. Currently filtering can be applied to the `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]`. + // + // Example of a filter: `message.hostname='node1.db.cloud.yandex.net'` + string filter = 6 [(length) = "<=1000"]; + + // Type of the service to request logs about. + ServiceType service_type = 7; + + enum ServiceType { + SERVICE_TYPE_UNSPECIFIED = 0; + ELASTICSEARCH = 1; + KIBANA = 2; + } +} + +message ListClusterOperationsRequest { + // ID of the Elasticsearch cluster to list operations for. + // + // To get the Elasticsearch cluster 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 service returns a [ListClusterOperationsResponse.next_page_token] that can be used to get the next page of results in subsequent list requests. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. + // + // To get the next page of results, set `page_token` to the [ListClusterOperationsResponse.next_page_token] returned by the previous list request. + string page_token = 3 [(length) = "<=100"]; +} + +message ListClusterOperationsResponse { + // List of operations for the specified Elasticsearch cluster. + repeated operation.Operation operations = 1; + + // Token that allows you to get the next page of results for list requests. + // + // If the number of results is larger than [ListClusterOperationsRequest.page_size], use the `next_page_token` as the value for the [ListClusterOperationsRequest.page_token] query parameter in the next list request. + // Each subsequent list request will have its own `next_page_token` to continue paging through the results. + string next_page_token = 2; +} + +message ListClusterHostsRequest { + // ID of the Elasticsearch cluster. + // + // To get the Elasticsearch cluster 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 service returns a [ListClusterHostsResponse.next_page_token] that can be used to get the next page of results in subsequent list requests. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. + // + // To get the next page of results, set `page_token` to the [ListClusterHostsResponse.next_page_token] returned by the previous list request. + string page_token = 3 [(length) = "<=100"]; +} + +message ListClusterHostsResponse { + // List of hosts. + repeated Host hosts = 1; + + // Token that allows you to get the next page of results for list requests. + // + // If the number of results is larger than [ListClusterHostsRequest.page_size], use the `next_page_token` as the value for the [ListClusterHostsRequest.page_token] query parameter in the next list request. + // Each subsequent list request will have its own `next_page_token` to continue paging through the results. + string next_page_token = 2; +} + +message MoveClusterRequest { + // ID of the Elasticsearch cluster to move. + // + // To get the Elasticsearch cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // ID of the destination folder. + string destination_folder_id = 2 [ + (required) = true, + (length) = "<=50" + ]; +} + +message MoveClusterMetadata { + // ID of the Elasticsearch cluster 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 StartClusterRequest { + // ID of the Elasticsearch cluster to start. + // + // To get the Elasticsearch cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [ + (required) = true, + (length) = "<=50" + ]; +} + +message StartClusterMetadata { + // ID of the Elasticsearch cluster. + string cluster_id = 1; +} + +message StopClusterRequest { + // ID of the Elasticsearch cluster to stop. + // + // To get the Elasticsearch cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [ + (required) = true, + (length) = "<=50" + ]; +} + +message StopClusterMetadata { + // ID of the Elasticsearch cluster. + string cluster_id = 1; +} + +message HostSpec { + // ID of the availability zone where the host resides. + string zone_id = 1 [(length) = "<=50"]; + + // ID of the subnet the host resides in. + string subnet_id = 2 [(length) = "<=50"]; + + // The flag that defines whether a public IP address is assigned to the host. + // + // If the value is `true`, then this host is available on the Internet via it's public IP address. + bool assign_public_ip = 3; + + // Host type. + Host.Type type = 4 [(required) = true]; + + // The shard name to create on the host. + string shard_name = 5 [ + (length) = "<=63", + (pattern) = "[a-zA-Z0-9_-]*" + ]; +} + +message ElasticsearchSpec { + message DataNode { + // Elasticsearch data node configuration. + oneof config { + config.ElasticsearchConfig7 elasticsearch_config_7 = 1 [json_name = "elasticsearchConfig_7"]; + } + // Resources allocated to Elasticsearch data nodes. + Resources resources = 2; + } + + message MasterNode { + // Resources allocated to Elasticsearch master nodes. + Resources resources = 1; + } + + // Configuration and resource allocation for Elasticsearch data nodes. + DataNode data_node = 1; + + // Configuration and resource allocation for Elasticsearch master nodes. + MasterNode master_node = 2; + + // Cluster wide plugins + repeated string plugins = 3 [(length) = "<=50"]; +} + +message ConfigSpec { + // Elasticsearch version. + string version = 1; // No formal validation, a list of supported versions should suffice. + + // Configuration and resource allocation for Elasticsearch nodes. + ElasticsearchSpec elasticsearch_spec = 2; + + // ElasticSearch edition. + string edition = 3; + + // ElasticSearch admin password. + string admin_password = 4 [(required) = true]; +} + +message ConfigSpecUpdate { + // Elasticsearch version. + string version = 1; // No formal validation, a list of supported versions should suffice. + + // Configuration and resource allocation for Elasticsearch nodes. + ElasticsearchSpec elasticsearch_spec = 2; + + // ElasticSearch edition. + string edition = 3; + + // ElasticSearch admin password. + string admin_password = 4; +} + +message AddClusterHostsRequest { + // ID of the Elasticsearch cluster. + // + // To get the Elasticsearch cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // One or more configurations of hosts to be added to the Elasticsearch cluster. + repeated HostSpec host_specs = 2 [(size) = ">0"]; +} + +message AddClusterHostsMetadata { + // ID of the Elasticsearch cluster. + string cluster_id = 1; + + // Names of the host that are being added. + repeated string host_names = 2; +} + +message DeleteClusterHostsRequest { + // ID of the Elasticsearch cluster. + // + // To get the Elasticsearch cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // Names of the hosts to delete. + repeated string host_names = 2 [ + (size) = ">0", + (length) = "<=253" + ]; +} + +message DeleteClusterHostsMetadata { + // ID of the Elasticsearch cluster. + string cluster_id = 1; + + // Names of the hosts that are being deleted. + repeated string host_names = 2; +} + +message RescheduleMaintenanceRequest { + // Required. ID of the Elasticsearch cluster to maintenance reschedule. + string cluster_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + enum RescheduleType { + RESCHEDULE_TYPE_UNSPECIFIED = 0; + IMMEDIATE = 1; + NEXT_AVAILABLE_WINDOW = 2; + SPECIFIC_TIME = 3; + } + // Required. The type of reschedule request. + RescheduleType reschedule_type = 2 [(required) = true]; + + // The time for SPECIFIC_TIME reschedule. Limited by two weeks since first time scheduled. + google.protobuf.Timestamp delayed_until = 3; +} + +message RescheduleMaintenanceMetadata { + reserved 2 to 3; + // Required. ID of the Elasticsearch cluster. + string cluster_id = 1; + + // Required. New time of the planned maintenance. Can be in the past for rescheduled to "IMMEDIATE". + google.protobuf.Timestamp delayed_until = 4; +} + +message RestoreClusterRequest { + reserved 7 to 8; + // Required. ID of the backup to restore from. + string backup_id = 1 [(required) = true]; + + // Name of the ElasticSearch cluster. The name must be unique within the folder. + string name = 2 [ + (required) = true, + (length) = "<=63", + (pattern) = "[a-zA-Z0-9_-]*" + ]; + + // Description of the ElasticSearch cluster. + string description = 3 [(length) = "<=256"]; + + // Custom labels for the ElasticSearch cluster as `` key:value `` pairs. Maximum 64 per resource. + // For example, "project": "mvp" or "source": "dictionary". + 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 ElasticSearch cluster. + Cluster.Environment environment = 5; + + // Configuration and resources for hosts that should be created for the ElasticSearch cluster. + ConfigSpec config_spec = 6 [(required) = true]; + + // Required. Configuration of ElasticSearch hosts. + repeated HostSpec host_specs = 9 [(size) = ">0"]; + + // ID of the network to create the cluster in. + string network_id = 10 [ + (required) = true, + (length) = "<=50" + ]; + + // User security groups + repeated string security_group_ids = 11; + + // ID of the service account used for access to Object Storage. + string service_account_id = 12; + + // Deletion Protection inhibits deletion of the cluster + bool deletion_protection = 13; + + // ID of the folder to create the ElasticSearch cluster in. + string folder_id = 14 [ + (required) = true, + (length) = "<=50" + ]; + + repeated ExtensionSpec extension_specs = 15; // optional +} + +message RestoreClusterMetadata { + // Required. ID of the new ElasticSearch cluster. + string cluster_id = 1; + + // Required. ID of the backup used for recovery. + string backup_id = 2; +} + +message BackupClusterRequest { + // Required. ID of the ElasticSearch cluster to back up. + string cluster_id = 1 [ + (required) = true, + (length) = "<=50" + ]; +} + +message BackupClusterMetadata { + // ID of the ElasticSearch cluster. + string cluster_id = 1; +} + +message ListClusterBackupsRequest { + // Required. ID of the Elasticsearch cluster. + string cluster_id = 1 [ + (required) = true, + (length) = "<=50" + ]; + + // The maximum number of results per page that should be returned. If the number of available + // results is larger than `page_size`, the service returns a `next_page_token` that can be used + // to get the next page of results in subsequent ListClusterBackups requests. + // Acceptable values are 0 to 1000, inclusive. Default value: 100. + int64 page_size = 2 [(value) = "0-1000"]; + + // Page token. Set `page_token` to the `next_page_token` returned by a previous ListClusterBackups + // request to get the next page of results. + string page_token = 3 [(length) = "<=100"]; +} + +message ListClusterBackupsResponse { + // Requested list of backups. + repeated Backup backups = 1; + + // This token allows you to get the next page of results for ListClusterBackups requests, + // if the number of results is larger than `page_size` specified in the request. + // To get the next page, specify the value of `next_page_token` as a value for + // the `page_token` parameter in the next ListClusterBackups request. Subsequent ListClusterBackups + // requests will have their own `next_page_token` to continue paging through the results. + string next_page_token = 2; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/config/elasticsearch.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/config/elasticsearch.proto new file mode 100644 index 0000000000..e279ed0063 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/config/elasticsearch.proto @@ -0,0 +1,59 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1.config; + +import "google/protobuf/wrappers.proto"; +import "yandex/cloud/validation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1/config;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1.config"; + +// Elasticsearch 7.x supported configuration options are listed here. +// +// Detailed description for each set of options is available in [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html). +// +// Any options that are not listed here are not supported. +message ElasticsearchConfig7 { + reserved 5; + // The maximum number of clauses a boolean query can contain. + // + // The limit is in place to prevent searches from becoming too large and taking up too much CPU and memory. + // It affects not only Elasticsearch's `bool` query, but many other queries that are implicitly converted to `bool` query by Elastcsearch. + // + // Default value: `1024`. + // + // See in-depth description in [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-settings.html). + google.protobuf.Int64Value max_clause_count = 3; + + // The maximum percentage or absolute value (10%, 512mb) of heap space that is allocated to field data cache. + // + // All the field values that are placed in this cache, get loaded to memory in order to provide fast document based access to those values. + // Building the field data cache for a field can be an expensive operations, so its recommended to have enough memory for this cache, and to keep it loaded. + // + // Default value: unbounded. + // + // See in-depth description in [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-fielddata.html). + string fielddata_cache_size = 4; + + // Remote hosts for reindex have to be explicitly allowed in elasticsearch.yml using the reindex.remote.whitelist property. + // It can be set to a comma delimited list of allowed remote host and port combinations. + // Scheme is ignored, only the host and port are used. + string reindex_remote_whitelist = 6; + + // List of paths to PEM encoded certificate files that should be trusted. + // + // See in-depth description in [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html#reindex-ssl) + string reindex_ssl_ca_path = 7; +} + +// Elasticsearch 7.x data node configuration. +message ElasticsearchConfigSet7 { + // Effective settings for an Elasticsearch cluster (a combination of settings defined in [user_config] and [default_config]). + ElasticsearchConfig7 effective_config = 1 [(required) = true]; + + // User-defined settings for an Elasticsearch cluster. + ElasticsearchConfig7 user_config = 2; + + // Default settings for an Elasticsearch cluster. + ElasticsearchConfig7 default_config = 3; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/extension.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/extension.proto new file mode 100644 index 0000000000..a5222250da --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/extension.proto @@ -0,0 +1,30 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1; + +import "yandex/cloud/validation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +message Extension { + // Name of the extension. + string name = 1; + // Unique ID of the extension. + string id = 2; + // ID of the Elasticsearch cluster the extension belongs to. + string cluster_id = 3; + // Version of the extension. + int64 version = 4; + // The flag shows whether the extension is active. + bool active = 5; +} + +message ExtensionSpec { + // Name of the extension. + string name = 1 [(required) = true, (length) = "<=50"]; + // URI of the zip archive to create the new extension from. Currently only supports links that are stored in Object Storage. + string uri = 2; + // The flag shows whether to create the extension in disabled state. + bool disabled = 3; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/extension_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/extension_service.proto new file mode 100644 index 0000000000..5a59ddc6a3 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/extension_service.proto @@ -0,0 +1,144 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1; + +import "google/api/annotations.proto"; +import "yandex/cloud/api/operation.proto"; +import "yandex/cloud/validation.proto"; +import "yandex/cloud/mdb/elasticsearch/v1/extension.proto"; +import "yandex/cloud/operation/operation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +service ExtensionService { + // Returns the specified extension of Elasticsearch cluster. + rpc Get (GetExtensionRequest) returns (Extension) { + option (google.api.http) = { get: "/managed-elasticsearch/v1/clusters/{cluster_id}/extensions/{extension_id}" }; + } + + // Returns the list of available extensions for the specified Elasticsearch cluster. + rpc List (ListExtensionsRequest) returns (ListExtensionsResponse) { + option (google.api.http) = { get: "/managed-elasticsearch/v1/clusters/{cluster_id}/extensions" }; + } + + // Creates new extension version. + rpc Create (CreateExtensionRequest) returns (operation.Operation) { + option (google.api.http) = { post: "/managed-elasticsearch/v1/clusters/{cluster_id}/extensions" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "CreateExtensionMetadata" + response: "Extension" + }; + } + + // Updates the specified extension. + rpc Update (UpdateExtensionRequest) returns (operation.Operation) { + option (google.api.http) = { patch: "/managed-elasticsearch/v1/clusters/{cluster_id}/extensions/{extension_id}" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "UpdateExtensionMetadata" + response: "Extension" + }; + } + + // Deletes the specified extension. + rpc Delete (DeleteExtensionRequest) returns (operation.Operation) { + option (google.api.http) = { delete: "/managed-elasticsearch/v1/clusters/{cluster_id}/extensions/{extension_id}" }; + option (yandex.cloud.api.operation) = { + metadata: "DeleteExtensionMetadata" + response: "google.protobuf.Empty" + }; + } + +} + +message GetExtensionRequest { + // ID of the cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // ID of the extension to return. + string extension_id = 2 [(required) = true]; +} + +message ListExtensionsRequest { + // ID of the cluster to list extensions in. + 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 [ListExtensionsResponse.next_page_token] that can be used to get the next page of results in subsequent [ExtensionService.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 [ListExtensionsResponse.next_page_token] returned by the previous [ExtensionService.List] request. + string page_token = 3 [(length) = "<=100"]; +} + +message ListExtensionsResponse { + // Requested list of extensions. + repeated Extension extensions = 1; + + // The token that can be used to get the next page of results. + // + // If the number of results is larger than [ListExtensionsRequest.page_size], use the [next_page_token] as the value for the [ListExtensionsRequest.page_token] in the subsequent [ExtensionService.List] request to iterate through multiple pages of results. + // + // Each of the subsequent [ExtensionService.List] requests should use the [next_page_token] value returned in the previous request to continue paging through the results. + string next_page_token = 2; +} + +message DeleteExtensionRequest { + // ID of the cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // ID of the extension to delete. + string extension_id = 2 [(required) = true]; +} + +message DeleteExtensionMetadata { + // ID of the cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // ID of the extension to delete. + string extension_id = 2 [(required) = true]; +} + +message UpdateExtensionRequest { + // ID of the cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // ID of the extension to update. + string extension_id = 2 [(required) = true]; + + // The flag shows whether to make the extension active. + bool active = 3; +} + +message UpdateExtensionMetadata { + // ID of the cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // ID of the extension. + string extension_id = 2 [(required) = true]; +} + +message CreateExtensionRequest { + // ID of the cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // Name of the extension. + string name = 2 [(required) = true, (length) = "<=50"]; + + // URI of the zip archive to create the new extension from. Currently only supports links that are stored in Object Storage. + string uri = 3 [(required) = true]; + + // The flag that disables the extension. + bool disabled = 4; +} + +message CreateExtensionMetadata { + // ID of the cluster. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // ID of the extension. + string extension_id = 2 [(required) = true]; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/maintenance.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/maintenance.proto new file mode 100644 index 0000000000..456a4608b0 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/maintenance.proto @@ -0,0 +1,42 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1; + +import "google/protobuf/timestamp.proto"; + +import "yandex/cloud/validation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +message MaintenanceWindow { + oneof policy { + option (exactly_one) = true; + AnytimeMaintenanceWindow anytime = 1; + WeeklyMaintenanceWindow weekly_maintenance_window = 2; + } +} + +message AnytimeMaintenanceWindow {} + +message WeeklyMaintenanceWindow { + enum WeekDay { + WEEK_DAY_UNSPECIFIED = 0; + MON = 1; + TUE = 2; + WED = 3; + THU = 4; + FRI = 5; + SAT = 6; + SUN = 7; + } + WeekDay day = 1; + + // Hour of the day in UTC. + int64 hour = 2 [(value) = "1-24"]; +} + +message MaintenanceOperation { + string info = 1 [(length) = "<=256"]; + google.protobuf.Timestamp delayed_until = 2; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/resource_preset.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/resource_preset.proto new file mode 100644 index 0000000000..9bb835cc37 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/resource_preset.proto @@ -0,0 +1,21 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +// A ResourcePreset resource for describing hardware configuration presets. +message ResourcePreset { + // ID of the resource preset. + string id = 1; + + // IDs of availability zones where the resource preset is available. + repeated string zone_ids = 2; + + // Number of CPU cores for an Elasticsearch node created with the preset. + int64 cores = 3; + + // RAM volume for an Elasticsearch node created with the preset, in bytes. + int64 memory = 4; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/resource_preset_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/resource_preset_service.proto new file mode 100644 index 0000000000..2049f007e7 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/resource_preset_service.proto @@ -0,0 +1,55 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1; + +import "google/api/annotations.proto"; +import "yandex/cloud/mdb/elasticsearch/v1/resource_preset.proto"; +import "yandex/cloud/validation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +// A set of methods for managing Elasticsearch resource presets. +service ResourcePresetService { + // Returns the specified resource preset. + // + // To get the list of available resource presets, make a [List] request. + rpc Get (GetResourcePresetRequest) returns (ResourcePreset) { + option (google.api.http) = { get: "/managed-elasticsearch/v1/resourcePresets/{resource_preset_id}" }; + } + + // Retrieves the list of available resource presets. + rpc List (ListResourcePresetsRequest) returns (ListResourcePresetsResponse) { + option (google.api.http) = { get: "/managed-elasticsearch/v1/resourcePresets" }; + } +} + +message GetResourcePresetRequest { + // ID of the resource preset to return. + // + // To get the resource preset ID, use 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 service returns a [ListResourcePresetsResponse.next_page_token] that can be used to get the next page of results in subsequent list requests. + int64 page_size = 1 [(value) = "<=1000"]; + + // Page token. + // + // To get the next page of results, set `page_token` to the [ListResourcePresetsResponse.next_page_token] returned by the previous list request. + string page_token = 2 [(length) = "<=100"]; +} + +message ListResourcePresetsResponse { + // List of resource presets. + repeated ResourcePreset resource_presets = 1; + + // This token allows you to get the next page of results for list requests. + // + // If the number of results is larger than [ListResourcePresetsRequest.page_size], use the `next_page_token` as the value for the [ListResourcePresetsRequest.page_token] parameter in the next list request. + // Each subsequent list request will have its own `next_page_token` to continue paging through the results. + string next_page_token = 2 [(length) = "<=100"]; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/user.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/user.proto new file mode 100644 index 0000000000..3c49bdde53 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/user.proto @@ -0,0 +1,25 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1; + +import "yandex/cloud/validation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +// An Elasticsearch user. +message User { + // Name of the Elasticsearch user. + string name = 1; + + // ID of the Elasticsearch cluster the user belongs to. + string cluster_id = 2; +} + +message UserSpec { + // Name of the Elasticsearch user. + string name = 1 [(required) = true, (length) = "<=63", (pattern) = "[a-zA-Z0-9_]*"]; + + // Password of the Elasticsearch user. + string password = 2 [(required) = true, (length) = "8-128"]; +} diff --git a/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/user_service.proto b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/user_service.proto new file mode 100644 index 0000000000..726735e616 --- /dev/null +++ b/contrib/libs/yandex-cloud-api-protos/yandex/cloud/mdb/elasticsearch/v1/user_service.proto @@ -0,0 +1,158 @@ +syntax = "proto3"; + +package yandex.cloud.mdb.elasticsearch.v1; + +import "google/api/annotations.proto"; +import "google/protobuf/field_mask.proto"; +import "yandex/cloud/operation/operation.proto"; +import "yandex/cloud/validation.proto"; +import "yandex/cloud/mdb/elasticsearch/v1/user.proto"; +import "yandex/cloud/api/operation.proto"; + +option go_package = "github.com/yandex-cloud/go-genproto/yandex/cloud/mdb/elasticsearch/v1;elasticsearch"; +option java_package = "yandex.cloud.api.mdb.elasticsearch.v1"; + +// A set of methods for managing Elasticsearch users. +service UserService { + // Returns the specified Elasticsearch user. + // + // To get the list of available Elasticsearch users, make a [List] request. + rpc Get (GetUserRequest) returns (User) { + option (google.api.http) = { get: "/managed-elasticsearch/v1/clusters/{cluster_id}/users/{user_name}" }; + } + + // Retrieves the list of Elasticsearch users in the specified cluster. + rpc List (ListUsersRequest) returns (ListUsersResponse) { + option (google.api.http) = { get: "/managed-elasticsearch/v1/clusters/{cluster_id}/users" }; + } + + // Creates a user in the specified cluster. + rpc Create (CreateUserRequest) returns (operation.Operation) { + option (google.api.http) = { post: "/managed-elasticsearch/v1/clusters/{cluster_id}/users" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "CreateUserMetadata" + response: "User" + }; + } + + // Updates the specified user. + rpc Update (UpdateUserRequest) returns (operation.Operation) { + option (google.api.http) = { patch: "/managed-elasticsearch/v1/clusters/{cluster_id}/users/{user_name}" body: "*" }; + option (yandex.cloud.api.operation) = { + metadata: "UpdateUserMetadata" + response: "User" + }; + } + + // Deletes the specified user. + rpc Delete (DeleteUserRequest) returns (operation.Operation) { + option (google.api.http) = { delete: "/managed-elasticsearch/v1/clusters/{cluster_id}/users/{user_name}" }; + option (yandex.cloud.api.operation) = { + metadata: "DeleteUserMetadata" + response: "google.protobuf.Empty" + }; + } +} + +message GetUserRequest { + // ID of the Elasticsearch cluster the user belongs to. + // + // To get the cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // Name of the Elasticsearch user to return. + // + // To get the name of the user, make a [UserService.List] request. + string user_name = 2 [(required) = true, (length) = "<=63", (pattern) = "[a-zA-Z0-9_]*"]; +} + +message ListUsersRequest { + // ID of the Elasticsearch cluster to list Elasticsearch users in. + // + // To get the cluster ID, use 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 service returns a [ListUsersResponse.next_page_token] that can be used to get the next page of results in subsequent list requests. + int64 page_size = 2 [(value) = "<=1000"]; + + // Page token. + // + // To get the next page of results, set `page_token` to the [ListUsersResponse.next_page_token] returned by the previous list request. + string page_token = 3 [(length) = "<=100"]; +} + +message ListUsersResponse { + // List of Elasticsearch users. + repeated User users = 1; + + // This token allows you to get the next page of results for list requests. + // + // If the number of results is larger than [ListUsersRequest.page_size], use the `next_page_token` as the value for the [ListUsersRequest.page_token] parameter in the next list request. + // Each subsequent list request will have its own `next_page_token` to continue paging through the results. + string next_page_token = 2; +} + +message CreateUserRequest { + // ID of the Elasticsearch cluster to create a user in. + // + // To get the cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // Configuration of the user to create. + UserSpec user_spec = 2 [(required) = true]; +} + +message CreateUserMetadata { + // ID of the Elasticsearch 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 Elasticsearch cluster the user belongs to. + // + // To get the cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // Name of the user to be updated. + // + // To get the name of the user, make a [UserService.List] request. + string user_name = 2 [(required) = true, (length) = "1-63", (pattern) = "[a-zA-Z0-9_]*"]; + + google.protobuf.FieldMask update_mask = 3; + + // New password for the user. + string password = 4 [(length) = "8-128"]; +} + +message UpdateUserMetadata { + // ID of the Elasticsearch cluster the user belongs to. + string cluster_id = 1; + + // Name of the user that is being updated. + string user_name = 2; +} + +message DeleteUserRequest { + // ID of the Elasticsearch cluster the user belongs to. + // + // To get the cluster ID, make a [ClusterService.List] request. + string cluster_id = 1 [(required) = true, (length) = "<=50"]; + + // Name of the user to delete. + // + // To get the name of the user, make a [UserService.List] request. + string user_name = 2 [(required) = true, (length) = "1-63", (pattern) = "[a-zA-Z0-9_]*"]; +} + +message DeleteUserMetadata { + // ID of the Elasticsearch cluster the user belongs to. + string cluster_id = 1; + + // Name of the user that is being deleted. + string user_name = 2; +} |