Deploy Environment
Triggers a deployment of an environment and returns the resulting deployment log. The request body selects what to deploy and how - the deployment type, the template revision or repository, variable and configuration-set changes, targeted resources, a TTL, an approval requirement, and the automatic drift remediation strategy. Deployment is asynchronous: poll GET /environments/deployments/{id} for the outcome.
Authorization
env0_API_Key env zero API authentication is done via API keys. An API Key can either be created by an organization administrator, in which case it will not be connected to any specific user, or via Personal API Keys to authenticate as a user.
Creating an API Key with a Specific Role
- Once you've created your organization, you can set up and manage API Keys.
- Navigate to the Organization Settings page and click the API Keys tab.
- Click Add API Key and enter a name for your key in the Name field. This name is for reference purposes only and isn't used directly in authentication.
❗️Save Your API Key ID and secret The secret will not be available after you close this window.
Creating a Personal API Key
- Click on your avatar (located on the top right of the screen)
- Click on Personal Settings
- Select the API Keys tab
- Click Add API Key, and enter a name for your key in the Name field. This name is for reference purposes and isn't used directly in authentication.
❗️Save your API Key ID & secret The secret will not be available after you close this window.
Using an API Key to Authenticate
Authentication of the env zero API is done using the Basic Authentication method. Each request made should include the API Key ID as the username, and the API Key secret as the password. For example, when using curl, we can include these parameters via flag --user {API Key ID}:{API Key Secret}.
API Key Permissions
When creating an API key through the organization settings, you will need to choose if you’d like to grant it Organization Admin or User permissions. In case of the latter, you can assign fine-grained permissions per project. Personal API Keys can be created through the user’s profile page and will have the same permissions as the user has.
Rate Limits
env zero API allows up to 1K requests per 60 seconds, requests are aggregated by IP, HTTP Method and URI. If you exceed this limit, you will receive a 429 status code.
In: header
Path Parameters
Request Body
application/json
Value in
- "deploy"
- "prPlan"
- "driftDetection"
- "task"
- "remotePlan"
- "dryRun"
- "moduleTest"
Manage variables in the environment. Either a single variable or an array of variables.
Value in
- "DISABLED"
- "CODE_TO_CLOUD"
- "CLOUD_TO_CODE"
- "SMART_REMEDIATION"
[Optional] Only applicable when running a Workflow Environment. Allows to run a partial Workflow, starting from a specific point in the pipeline. Or run a single sub-environment deploy/destroy.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/environments/string/deployments" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "type": "deploy", "startedBy": "string", "queuedAt": "2019-08-24T14:15:22Z", "startedAt": "2019-08-24T14:15:22Z", "finishedAt": "2019-08-24T14:15:22Z", "output": { "property1": { "value": null, "sensitive": true, "type": "string" }, "property2": { "value": null, "sensitive": true, "type": "string" } }, "error": {}, "failedCommand": "string", "stoppedByTimeoutReason": "DEPLOYMENT_TIME_LIMIT_EXCEEDED", "customEnv0EnvironmentVariables": { "environmentId": "string", "organizationName": "string", "environmentUrl": "string", "projectId": "string", "projectName": "string", "parentProjectIds": "string", "parentProjectPath": "string", "deploymentLogId": "string", "deploymentType": "deploy", "deploymentRevision": "string", "workspaceName": "string", "rootDir": "string", "organizationId": "string", "templateId": "string", "templateDir": "string", "templateName": "string", "environmentName": "string", "environmentCreatorName": "string", "environmentCreatorUserId": "string", "environmentCreatorEmail": "string", "deployerName": "string", "deployerUserId": "string", "deployerEmail": "string", "reviewerName": "string", "reviewerEmail": "string", "reviewerUserId": "string", "vcsProvider": "gitlab", "prAuthor": "string", "prNumber": "string", "prSourceRepository": "string", "prSourceBranch": "string", "prTargetBranch": "string", "commitHash": "string", "commitUrl": "string", "oidcToken": "string", "vcsAccessToken": "string", "tfPlanJson": "string", "cliArgsPlan": "string", "cliArgsApply": "string", "discoveryRepositoryUrl": "string", "discoveryPrNumber": "string", "discoveryVCS": "gitlab" }, "costEstimation": { "totalMonthlyCost": 0, "monthlyCostDiff": 0, "projects": [ { "diff": { "totalMonthlyCost": "string" } } ] }, "status": "IN_PROGRESS", "blueprintId": "string", "blueprintName": "string", "blueprintRepository": "string", "blueprintRevision": "string", "blueprintPath": "string", "blueprintType": "opentofu", "comment": "string", "environmentId": "string", "resourceCount": 0, "resources": [ { "provider": "string", "type": "string", "name": "string", "moduleName": "string", "mode": "managed" } ], "startedByUser": { "email": "string", "user_id": "string", "username": "string", "created_at": "string", "updated_at": "string", "app_metadata": { "organizations": [ { "id": "string", "role": "string", "name": "string" } ], "isApiKey": true, "isAutogeneratedTerraformDeployer": true, "apiKeyType": "oidc", "createdBy": "string", "organizationId": "string", "isSystemUser": true, "readOnly": true }, "picture": "string", "name": "string", "last_login": "string", "given_name": "string", "family_name": "string", "blocked": true }, "isScheduledRun": true, "abortedBy": "string", "abortedByUser": { "email": "string", "user_id": "string", "username": "string", "created_at": "string", "updated_at": "string", "app_metadata": { "organizations": [ { "id": "string", "role": "string", "name": "string" } ], "isApiKey": true, "isAutogeneratedTerraformDeployer": true, "apiKeyType": "oidc", "createdBy": "string", "organizationId": "string", "isSystemUser": true, "readOnly": true }, "picture": "string", "name": "string", "last_login": "string", "given_name": "string", "family_name": "string", "blocked": true }, "gitUser": "string", "gitAvatarUrl": "string", "prNumber": "string", "triggerName": "user", "driftDetected": true, "plan": { "resourceChanges": [ { "id": "string", "cloudId": "string", "moduleName": "string", "driftByCloud": true, "name": "string", "providerName": "string", "type": "string", "path": "string", "action": "create", "attributes": [ { "name": "string", "before": null, "after": null } ], "importing": { "id": "string" }, "actionReason": "replace_because_tainted", "createBeforeDestroy": true, "previousAddress": "string" } ], "outputChanges": [ { "moduleName": "string", "name": "string", "action": "create", "attributes": [ { "name": "string", "before": null, "after": null } ] } ] }, "planSummary": { "added": 0, "changed": 0, "destroyed": 0, "imported": 0 }, "isSkippedApply": true, "workflowDeploymentId": "string", "workflowFile": { "settings": { "environmentRemovalStrategy": "destroy" }, "environments": { "property1": { "environmentId": "string", "toDestroy": true, "isRemoteBackend": true, "k8sNamespace": "string", "vcs": { "type": "opentofu", "tokenName": "string", "tokenId": "string", "sshKeys": [ { "id": "string", "name": "string" } ], "githubInstallationId": 0, "bitbucketClientKey": "string", "isBitbucketServer": true, "isGitLabEnterprise": true, "isGitHubEnterprise": true, "isGitLab": true, "isAzureDevOps": true, "isHelmRepository": true, "vcsConnectionId": "string", "repository": "string", "revision": "string", "path": "string", "fileName": "string", "helmChartName": "string", "terraformVersion": "string", "opentofuVersion": "string", "terragruntVersion": "string", "terragruntTfBinary": "terraform", "pulumiVersion": "string", "ansibleVersion": "string" }, "name": "string", "templateName": "string", "templateId": "string", "templateType": "opentofu", "revision": "string", "workspace": "string", "needs": [ "string" ], "terragruntWorkingDirectory": "string", "requiresApproval": true, "disabled": "string" }, "property2": { "environmentId": "string", "toDestroy": true, "isRemoteBackend": true, "k8sNamespace": "string", "vcs": { "type": "opentofu", "tokenName": "string", "tokenId": "string", "sshKeys": [ { "id": "string", "name": "string" } ], "githubInstallationId": 0, "bitbucketClientKey": "string", "isBitbucketServer": true, "isGitLabEnterprise": true, "isGitHubEnterprise": true, "isGitLab": true, "isAzureDevOps": true, "isHelmRepository": true, "vcsConnectionId": "string", "repository": "string", "revision": "string", "path": "string", "fileName": "string", "helmChartName": "string", "terraformVersion": "string", "opentofuVersion": "string", "terragruntVersion": "string", "terragruntTfBinary": "terraform", "pulumiVersion": "string", "ansibleVersion": "string" }, "name": "string", "templateName": "string", "templateId": "string", "templateType": "opentofu", "revision": "string", "workspace": "string", "needs": [ "string" ], "terragruntWorkingDirectory": "string", "requiresApproval": true, "disabled": "string" } } }, "workflowDeploymentOptions": { "node": "string", "operation": "run-from-here" }, "stateVersionId": "string", "reviewersUsers": [ { "user": { "email": "string", "user_id": "string", "username": "string", "created_at": "string", "updated_at": "string", "app_metadata": { "organizations": [ { "id": "string", "role": "string", "name": "string" } ], "isApiKey": true, "isAutogeneratedTerraformDeployer": true, "apiKeyType": "oidc", "createdBy": "string", "organizationId": "string", "isSystemUser": true, "readOnly": true }, "picture": "string", "name": "string", "last_login": "string", "given_name": "string", "family_name": "string", "blocked": true }, "action": "approved" } ], "reviewers": [ { "userId": "string", "action": "approved" } ], "reviewedBy": "string", "reviewedByUser": { "email": "string", "user_id": "string", "username": "string", "created_at": "string", "updated_at": "string", "app_metadata": { "organizations": [ { "id": "string", "role": "string", "name": "string" } ], "isApiKey": true, "isAutogeneratedTerraformDeployer": true, "apiKeyType": "oidc", "createdBy": "string", "organizationId": "string", "isSystemUser": true, "readOnly": true }, "picture": "string", "name": "string", "last_login": "string", "given_name": "string", "family_name": "string", "blocked": true }, "targets": [ "string" ], "variables": [ { "id": "string", "name": "string", "scope": "SET", "scopeId": "string", "value": "string", "isSensitive": true, "type": 0, "schema": { "type": "string", "enum": [ "string" ], "format": "HCL" }, "userId": "string", "updatedAt": "2019-08-24T14:15:22Z", "projectId": "string" } ], "gitMetadata": { "commit": "string", "branch": "string", "timestamp": "2019-08-24T14:15:22Z" }, "providerVersions": { "property1": "string", "property2": "string" }, "moduleVersions": { "property1": "string", "property2": "string" }, "stateFileHash": { "value": "string" }, "driftCause": { "unappliedCommits": [ { "userEmail": "string", "timestamp": "2019-08-24T14:15:22Z", "commitHash": "string" } ] }}List Deployments GET
Returns the deployment logs of an environment, most useful for distinguishing deploy, destroy and drift-detection runs and for finding the drift-detection deployment that a drift cause refers to. Filter by date range, deployment type, status and deploying user; paginate with `limit` (maximum and default 100) and `offset`.
Destroy Environment POST
Destroys the cloud resources of an environment, returning the id of the destroy deployment. The query parameters control whether updated code is checked out, which revision is used, whether state refresh is skipped, whether the run counts as scheduled, and whether the destroy requires approval. This is destructive and is refused when destroy protection is enabled for the environment.