Skip to main content

Actions

The ballerinax/elastic.elasticcloud package exposes the following clients:

ClientPurpose
ClientProvides access to the Elastic Cloud REST API for deployment management, organization admin, traffic filters, extensions, API keys, and more.

Client​

Provides access to the Elastic Cloud REST API for deployment management, organization admin, traffic filters, extensions, API keys, and more.

Configuration​

FieldTypeDefaultDescription
authorizationstringRequiredThe API key authorization header value (e.g., "ApiKey " + apiKey).

Initializing the client​

import ballerinax/elastic.elasticcloud;

configurable string apiKey = ?;

elasticcloud:Client elasticClient = check new ({
authorization: "ApiKey " + apiKey
});

Operations​

Account operations​

Fetch current account information

Retrieves the current account information including trust settings.

Returns: AccountResponse|error

Sample code:

elasticcloud:AccountResponse account = check elasticClient->/account();

Sample response:

{"id": "abc123456789", "trust": {"trust_all": false}}
Updates the current account

Replaces the current account settings with the provided values.

Parameters:

NameTypeRequiredDescription
payloadAccountUpdateRequestYesThe updated account data.

Returns: AccountResponse|error

Sample code:

elasticcloud:AccountResponse updated = check elasticClient->/account.put({});

Sample response:

{"id": "abc123456789", "trust": {"trust_all": true}}
Patch the current account

Applies partial updates to the current account using JSON Merge Patch rules.

Parameters:

NameTypeRequiredDescription
payloadstringYesJSON Merge Patch payload for partial account updates.

Returns: AccountResponse|error

Sample code:

elasticcloud:AccountResponse patched = check elasticClient->/account.patch("{}");

Sample response:

{"id": "abc123456789", "trust": {"trust_all": false}}

Deployment operations​

List Deployments

Retrieves all deployments belonging to the authenticated user.

Returns: DeploymentsListResponse|error

Sample code:

elasticcloud:DeploymentsListResponse deploymentsList = check elasticClient->/deployments();

Sample response:

{"deployments": [{"id": "a1b2c3d4e5", "name": "my-deployment", "resources": [{"ref_id": "main-elasticsearch", "kind": "elasticsearch", "id": "es-abc123"}]}]}
Create Deployment

Creates a new deployment with the specified configuration.

Parameters:

NameTypeRequiredDescription
payloadDeploymentCreateRequestYesThe deployment definition including name, region, and version.
queriesCreateDeploymentQueriesNoQuery parameters including template_id and validate_only.

Returns: DeploymentCreateResponse|error

Sample code:

elasticcloud:DeploymentCreateResponse createdDeployment = check elasticClient->/deployments.post(
{
name: "ballerina-example-deployment",
region: "gcp-asia-south1",
version: "8.17.0"
},
queries = {template_id: "gcp-general-purpose"}
);

Sample response:

{"id": "f6g7h8i9j0", "name": "ballerina-example-deployment", "created": true, "resources": [{"ref_id": "main-elasticsearch", "kind": "elasticsearch", "id": "es-xyz789"}]}
Search Deployments

Searches for deployments matching a query. When no query is specified, all deployments are matched.

Parameters:

NameTypeRequiredDescription
payloadSearchRequestYesThe search query. Use an empty record to match all deployments.
queriesSearchDeploymentsQueriesNoQuery parameters for search pagination.

Returns: DeploymentsSearchResponse|error

Sample code:

elasticcloud:DeploymentsSearchResponse searchResults = check elasticClient->/deployments/_search.post(
{size: 10}
);

Sample response:

{"return_count": 2, "deployments": [{"id": "a1b2c3d4e5", "name": "my-deployment", "healthy": true}, {"id": "f6g7h8i9j0", "name": "test-deployment", "healthy": true}]}
Get Deployment

Retrieves detailed information about a specific deployment.

Parameters:

NameTypeRequiredDescription
deploymentIdstringYesIdentifier for the deployment.
queriesGetDeploymentQueriesNoQuery parameters to control response detail.

Returns: DeploymentGetResponse|error

Sample code:

elasticcloud:DeploymentGetResponse deployment = check elasticClient->/deployments/["a1b2c3d4e5"]();

Sample response:

{"id": "a1b2c3d4e5", "name": "my-deployment", "healthy": true, "resources": {"elasticsearch": [], "kibana": [], "apm": [], "integrations_server": [], "enterprise_search": []}}
Update Deployment

Updates an existing deployment with a new configuration.

Parameters:

NameTypeRequiredDescription
deploymentIdstringYesIdentifier for the deployment.
payloadDeploymentUpdateRequestYesThe updated deployment definition.

Returns: DeploymentUpdateResponse|error

Sample code:

elasticcloud:DeploymentUpdateResponse updated = check elasticClient->/deployments/["a1b2c3d4e5"].put(
{name: "renamed-deployment"}
);

Sample response:

{"id": "a1b2c3d4e5", "name": "renamed-deployment", "resources": [{"ref_id": "main-elasticsearch", "kind": "elasticsearch", "id": "es-abc123"}]}
Shuts down Deployment

Shuts down all resources in a deployment.

Parameters:

NameTypeRequiredDescription
deploymentIdstringYesIdentifier for the deployment.
queriesShutdownDeploymentQueriesNoQuery parameters including hide and skip_snapshot.

Returns: DeploymentShutdownResponse|error

Sample code:

elasticcloud:DeploymentShutdownResponse shutdownResp = check elasticClient->/deployments/["a1b2c3d4e5"]/_shutdown.post();

Sample response:

{"id": "a1b2c3d4e5", "name": "my-deployment"}
Restores a shutdown Deployment

Restores a previously shut-down deployment.

Parameters:

NameTypeRequiredDescription
deploymentIdstringYesIdentifier for the deployment.

Returns: DeploymentRestoreResponse|error

Sample code:

elasticcloud:DeploymentRestoreResponse restoreResp = check elasticClient->/deployments/["a1b2c3d4e5"]/_restore.post();

Sample response:

{"id": "a1b2c3d4e5"}

Elasticsearch resource operations​

Get Deployment Elasticsearch Resource Info

Retrieves detailed information about the Elasticsearch resource within a deployment.

Parameters:

NameTypeRequiredDescription
deploymentIdstringYesIdentifier for the deployment.
refIdstringYesUser-specified RefId for the resource (or _main if there is only one).

Returns: ElasticsearchResourceInfo|error

Sample code:

elasticcloud:ElasticsearchResourceInfo esInfo = check elasticClient->/deployments/["a1b2c3d4e5"]/elasticsearch/["main-elasticsearch"]();

Sample response:

{"ref_id": "main-elasticsearch", "id": "es-abc123", "region": "gcp-asia-south1", "info": {"healthy": true, "status": "started"}}
Reset Elasticsearch user password

Resets the password for the elastic user on the specified Elasticsearch resource.

Parameters:

NameTypeRequiredDescription
deploymentIdstringYesIdentifier for the deployment.
refIdstringYesUser-specified RefId for the Elasticsearch resource.

Returns: ElasticsearchElasticUserPasswordResetResponse|error

Sample code:

elasticcloud:ElasticsearchElasticUserPasswordResetResponse resetResp = check elasticClient->/deployments/["a1b2c3d4e5"]/elasticsearch/["main-elasticsearch"]/_reset\-password.post();

Sample response:

{"username": "elastic", "password": "newGeneratedPassword123"}
Get Elasticsearch keystore

Retrieves the keystore contents for the specified Elasticsearch resource.

Parameters:

NameTypeRequiredDescription
deploymentIdstringYesIdentifier for the deployment.
refIdstringYesUser-specified RefId for the Elasticsearch resource.

Returns: KeystoreContents|error

Sample code:

elasticcloud:KeystoreContents keystore = check elasticClient->/deployments/["a1b2c3d4e5"]/elasticsearch/["main-elasticsearch"]/keystore();

Sample response:

{"secrets": {"s3.client.default.access_key": {"as_file": false}}}
Get remote clusters

Retrieves the remote cluster configuration for cross-cluster search and replication.

Parameters:

NameTypeRequiredDescription
deploymentIdstringYesIdentifier for the deployment.
refIdstringYesUser-specified RefId for the Elasticsearch resource.

Returns: RemoteResources|error

Sample code:

elasticcloud:RemoteResources remoteClusters = check elasticClient->/deployments/["a1b2c3d4e5"]/elasticsearch/["main-elasticsearch"]/remote\-clusters();

Sample response:

{"resources": []}

Extension operations​

List Extensions

Retrieves all available extensions.

Returns: Extensions|error

Sample code:

elasticcloud:Extensions extensions = check elasticClient->/deployments/extensions();

Sample response:

{"extensions": [{"id": "ext-001", "name": "custom-analyzer", "extension_type": "bundle", "description": "Custom analysis plugin"}]}
Create an extension

Creates a new extension for use with Elasticsearch deployments.

Parameters:

NameTypeRequiredDescription
payloadCreateExtensionRequestYesThe extension creation data including name, type, and version.

Returns: Extension|error

Sample code:

elasticcloud:Extension ext = check elasticClient->/deployments/extensions.post({
name: "my-plugin",
extension_type: "bundle",
version: "8.17.*"
});

Sample response:

{"id": "ext-002", "name": "my-plugin", "extension_type": "bundle"}
Get Extension

Retrieves the details of a specific extension.

Parameters:

NameTypeRequiredDescription
extensionIdstringYesIdentifier for the extension.

Returns: Extension|error

Sample code:

elasticcloud:Extension ext = check elasticClient->/deployments/extensions/["ext-001"]();

Sample response:

{"id": "ext-001", "name": "custom-analyzer", "extension_type": "bundle", "description": "Custom analysis plugin", "deployments": ["a1b2c3d4e5"]}
Delete Extension

Deletes an extension by its ID.

Parameters:

NameTypeRequiredDescription
extensionIdstringYesIdentifier for the extension.

Returns: EmptyResponse|error

Sample code:

elasticcloud:EmptyResponse _ = check elasticClient->/deployments/extensions/["ext-001"].delete();

Traffic filter operations​

List traffic filter rulesets

Retrieves all traffic filter rulesets.

Parameters:

NameTypeRequiredDescription
queriesGetTrafficFilterRulesetsQueriesNoQuery parameters to filter rulesets by region or include associations.

Returns: TrafficFilterRulesets|error

Sample code:

elasticcloud:TrafficFilterRulesets rulesets = check elasticClient->/deployments/traffic\-filter/rulesets();

Sample response:

{"rulesets": [{"id": "tf-001", "name": "office-ip-filter", "type": "ip", "include_by_default": false, "rules": [{"source": "203.0.113.0/24"}]}]}
Create traffic filter ruleset

Creates a new traffic filter ruleset for controlling network access.

Parameters:

NameTypeRequiredDescription
payloadTrafficFilterRulesetRequestYesThe ruleset definition including name, type, and rules.

Returns: TrafficFilterRulesetResponse|error

Sample code:

elasticcloud:TrafficFilterRulesetResponse ruleset = check elasticClient->/deployments/traffic\-filter/rulesets.post({
name: "office-ip-filter",
'type: "ip",
include_by_default: false,
rules: [{source: "203.0.113.0/24"}]
});

Sample response:

{"id": "tf-002"}
Delete traffic filter ruleset

Deletes a traffic filter ruleset by its ID.

Parameters:

NameTypeRequiredDescription
rulesetIdstringYesIdentifier for the traffic filter ruleset.

Returns: EmptyResponse|error

Sample code:

elasticcloud:EmptyResponse _ = check elasticClient->/deployments/traffic\-filter/rulesets/["tf-001"].delete();
Create traffic filter ruleset association

Associates a traffic filter ruleset with a deployment.

Parameters:

NameTypeRequiredDescription
rulesetIdstringYesIdentifier for the traffic filter ruleset.
payloadFilterAssociationYesThe association definition including entity type and ID.

Returns: EmptyResponse|error

Sample code:

elasticcloud:EmptyResponse _ = check elasticClient->/deployments/traffic\-filter/rulesets/["tf-001"]/associations.post({
entity_type: "deployment",
id: "a1b2c3d4e5"
});

Deployment template & stack version operations​

Get deployment templates

Retrieves available deployment templates for creating new deployments.

Parameters:

NameTypeRequiredDescription
queriesGetDeploymentTemplatesV2QueriesNoQuery parameters including region and stack_version.

Returns: DeploymentTemplateInfoV2[]|error

Sample code:

elasticcloud:DeploymentTemplateInfoV2[] templates = check elasticClient->/deployments/templates(queries = {region: "gcp-asia-south1"});

Sample response:

[{"id": "gcp-general-purpose", "name": "General Purpose", "description": "A general purpose deployment template"}]
Get available Elastic Stack versions

Retrieves all available Elastic Stack versions including template version and structure.

Parameters:

NameTypeRequiredDescription
queriesGetVersionStacksQueriesNoQuery parameters including show_deleted and show_unusable.

Returns: StackVersionConfigs|error

Sample code:

elasticcloud:StackVersionConfigs versions = check elasticClient->/stack/versions();

Sample response:

{"stacks": [{"version": "8.17.0", "accessible": true, "min_upgradable_from": "7.17.0"}]}

Organization operations​

List organizations

Retrieves all organizations accessible to the authenticated user.

Returns: OrganizationList|error

Sample code:

elasticcloud:OrganizationList orgs = check elasticClient->/organizations();

Sample response:

{"organizations": [{"id": "org-abc123", "name": "My Organization"}]}
Fetch organization information

Retrieves detailed information about a specific organization.

Parameters:

NameTypeRequiredDescription
organizationIdstringYesIdentifier for the organization.

Returns: Organization|error

Sample code:

elasticcloud:Organization org = check elasticClient->/organizations/["org-abc123"]();

Sample response:

{"id": "org-abc123", "name": "My Organization", "default_disk_usage_alerts_enabled": true}
Update organization

Updates an organization's settings.

Parameters:

NameTypeRequiredDescription
organizationIdstringYesIdentifier for the organization.
payloadOrganizationRequestYesThe organization update payload.

Returns: Organization|error

Sample code:

elasticcloud:Organization updated = check elasticClient->/organizations/["org-abc123"].put({
notifications_allowed_email_domains: ["example.com"]
});

Sample response:

{"id": "org-abc123", "name": "My Organization", "notifications_allowed_email_domains": ["example.com"]}
Get organization members

Retrieves all members of an organization.

Parameters:

NameTypeRequiredDescription
organizationIdstringYesIdentifier for the organization.

Returns: OrganizationMemberships|error

Sample code:

elasticcloud:OrganizationMemberships members = check elasticClient->/organizations/["org-abc123"]/members();

Sample response:

{"members": [{"user_id": "user-001", "email": "[email protected]", "organization_id": "org-abc123"}]}
Create organization invitation

Sends invitations to join an organization.

Parameters:

NameTypeRequiredDescription
organizationIdstringYesIdentifier for the organization.
payloadOrganizationInvitationRequestYesThe invitation request with email addresses.

Returns: OrganizationInvitations|error

Sample code:

elasticcloud:OrganizationInvitations invitations = check elasticClient->/organizations/["org-abc123"]/invitations.post({
emails: ["[email protected]"]
});

Sample response:

{"invitations": [{"token": "inv-token-xyz", "email": "[email protected]", "accepted": false}]}

API key operations​

Get all API keys

Retrieves the metadata for all API keys belonging to the authenticated user.

Returns: ApiKeysResponse|error

Sample code:

elasticcloud:ApiKeysResponse allKeys = check elasticClient->/users/auth/keys();

Sample response:

{"keys": [{"id": "key-001", "description": "Production key", "creation_date": "2025-01-15T10:30:00Z"}, {"id": "key-002", "description": "Dev key", "creation_date": "2025-02-20T14:00:00Z", "expiration_date": "2025-08-20T14:00:00Z"}]}
Create API key

Creates a new API key. The key value is returned only once in the response.

Parameters:

NameTypeRequiredDescription
payloadCreateApiKeyRequestYesThe API key creation request including description and optional expiration.

Returns: ApiKeyResponse|error

Sample code:

elasticcloud:ApiKeyResponse createdKey = check elasticClient->/users/auth/keys.post({
description: "API key created from Ballerina"
});

Sample response:

{"id": "key-003", "key": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==", "description": "API key created from Ballerina", "creation_date": "2025-03-17T08:00:00Z"}
Get API key

Retrieves the metadata for a specific API key by ID.

Parameters:

NameTypeRequiredDescription
apiKeyIdstringYesThe API key ID.

Returns: ApiKeyResponse|error

Sample code:

elasticcloud:ApiKeyResponse keyInfo = check elasticClient->/users/auth/keys/["key-001"]();

Sample response:

{"id": "key-001", "description": "Production key", "creation_date": "2025-01-15T10:30:00Z", "user_id": "user-001", "organization_id": "org-abc123"}
Delete API key

Deletes a specific API key by ID.

Parameters:

NameTypeRequiredDescription
apiKeyIdstringYesThe API key ID.

Returns: EmptyResponse|error

Sample code:

elasticcloud:EmptyResponse _ = check elasticClient->/users/auth/keys/["key-003"].delete();
Delete API keys

Deletes multiple API keys at once.

Parameters:

NameTypeRequiredDescription
payloadDeleteApiKeysRequestYesThe list of API key IDs to delete.

Returns: EmptyResponse|error

Sample code:

elasticcloud:EmptyResponse _ = check elasticClient->/users/auth/keys.delete({
keys: ["key-002", "key-003"]
});

User role assignment operations​

Add Role Assignments

Adds role assignments to a user.

Parameters:

NameTypeRequiredDescription
userIdstringYesIdentifier for the user.
payloadRoleAssignmentsYesThe role assignments to add.

Returns: EmptyResponse|error

Sample code:

elasticcloud:EmptyResponse _ = check elasticClient->/users/["user-001"]/role_assignments.post({
organization: [{organization_id: "org-abc123", role_id: "organization-admin"}]
});
Remove Role Assignments

Removes role assignments from a user.

Parameters:

NameTypeRequiredDescription
userIdstringYesIdentifier for the user.
payloadRoleAssignmentsYesThe role assignments to remove.

Returns: EmptyResponse|error

Sample code:

elasticcloud:EmptyResponse _ = check elasticClient->/users/["user-001"]/role_assignments.delete({
organization: [{organization_id: "org-abc123", role_id: "organization-admin"}]
});

Trust & security operations​

Get trusted environments

Retrieves the trusted environment settings for the organization.

Returns: ElasticsearchClusterTrustSettings|error

Sample code:

elasticcloud:ElasticsearchClusterTrustSettings trustSettings = check elasticClient->/trusted\-environments();

Sample response:

{"accounts": [], "external": []}
Get deployment certificate authority

Retrieves the certificate authority for a deployment.

Parameters:

NameTypeRequiredDescription
deploymentIdstringYesIdentifier for the deployment.

Returns: CertificateAuthority|error

Sample code:

elasticcloud:CertificateAuthority ca = check elasticClient->/deployments/["a1b2c3d4e5"]/certificate\-authority();

Sample response:

{"pem": "-----BEGIN CERTIFICATE-----\nMIIDQTCCAimgAw...\n-----END CERTIFICATE-----\n"}