> ## Documentation Index
> Fetch the complete documentation index at: https://ona.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Environment

> Gets details about a specific environment including its status, configuration, and context URL.

`Unary` · [`Environments`](/docs/api-reference/generated/environment/overview)

Gets details about a specific environment including its status, configuration, and context URL.

Use this method to:

* Check if an environment is ready to use
* Get connection details for IDE and exposed ports
* Monitor environment health and resource usage
* Debug environment setup issues

### Examples

* Get environment details:

  Retrieves detailed information about a specific environment using its unique identifier.

  ```yaml theme={null}
  environmentId: "07e03a28-65a5-4d98-b532-8ea67b188048"
  ```

## Endpoint

```text theme={null}
POST /api/gitpod.v1.EnvironmentService/GetEnvironment
```

Send a Bearer token as described in [Authentication](/docs/api-reference#authenticate-requests). If your organization uses a custom management-plane domain, replace `https://app.ona.com` with that domain.

## Request example

<CodeGroup>
  ```bash cURL theme={null}
  export ONA_HOST=https://app.ona.com
  export ONA_API_KEY=<your-token>

  curl --request POST \
    --url "$ONA_HOST/api/gitpod.v1.EnvironmentService/GetEnvironment" \
    --header "Authorization: Bearer $ONA_API_KEY" \
    --header "Content-Type: application/json" \
    --data '{
    "environmentId": "<environment-id>"
  }'
  ```

  ```python Python theme={null}
  import gitpod.v1.environment_pb2 as environment_pb2
  from ona_sdk import create_client_from_env

  ona = create_client_from_env()
  request = environment_pb2.GetEnvironmentRequest(
      environment_id="<environment-id>",
  )
  response = ona.services.environment.get_environment(request)
  print(response)
  ```

  ```typescript TypeScript theme={null}
  import { create } from "@bufbuild/protobuf";
  import { createClientFromEnv } from "@gitpod/sdk";
  import { GetEnvironmentRequestSchema } from "@gitpod/sdk/gitpod/v1/environment_pb";

  async function main() {
    const ona = createClientFromEnv();
    const request = create(GetEnvironmentRequestSchema, {
      environmentId: "<environment-id>",
    });
    const response = await ona.services.environment.getEnvironment(request);
    console.log(response);
  }

  main().catch(console.error);
  ```

  ```go Go theme={null}
  package main

  import (
  	"context"
  	"fmt"
  	"log"

  	"connectrpc.com/connect"
  	"github.com/gitpod-io/gitpod-sdk-go/sdk"
  	gitpodpb "github.com/gitpod-io/gitpod-sdk-go/v1"
  )

  func main() {
  	ona, err := sdk.NewFromEnv()
  	if err != nil {
  		log.Fatal(err)
  	}

  	request := connect.NewRequest(&gitpodpb.GetEnvironmentRequest{
  		EnvironmentId: "<environment-id>",
  	})
  	response, err := ona.Services.Environment.GetEnvironment(context.Background(), request)
  	if err != nil {
  		log.Fatal(err)
  	}
  	fmt.Println(response.Msg)
  }
  ```

  ```json Request body theme={null}
  {
    "environmentId": "<environment-id>"
  }
  ```
</CodeGroup>

## Request

`gitpod.v1.GetEnvironmentRequest`

| Field           | Type   | Required | Description                                                                                      |
| --------------- | ------ | -------- | ------------------------------------------------------------------------------------------------ |
| `environmentId` | string | Yes      | environment\_id specifies the environment to get Constraints: `required=true, string.uuid=true`. |

## Response

`gitpod.v1.GetEnvironmentResponse`

| Field         | Type                                       | Required | Description                   |
| ------------- | ------------------------------------------ | -------- | ----------------------------- |
| `environment` | [Environment](#type-gitpod-v1-environment) | Yes      | Constraints: `required=true`. |

## Related types

<a id="type-gitpod-v1-environment" />

<Accordion title="Environment">
  `gitpod.v1.Environment`

  | Field      | Type                                                        | Required | Description                                                                                                                        |
  | ---------- | ----------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
  | `id`       | string                                                      | No       | ID is a unique identifier of this environment. No other environment with the same name must be managed by this environment manager |
  | `metadata` | [EnvironmentMetadata](#type-gitpod-v1-environment-metadata) | No       | Metadata is data associated with this environment that's required for other parts of Gitpod to function                            |
  | `spec`     | [EnvironmentSpec](#type-gitpod-v1-environment-spec)         | No       | Spec is the configuration of the environment that's required for the runner to start the environment                               |
  | `status`   | [EnvironmentStatus](#type-gitpod-v1-environment-status)     | No       | Status is the current status of the environment                                                                                    |
</Accordion>

<a id="type-gitpod-v1-environment-metadata" />

<Accordion title="EnvironmentMetadata">
  EnvironmentMetadata is data associated with an environment that's required for
  other parts of the system to function

  `gitpod.v1.EnvironmentMetadata`

  | Field                | Type                                                | Required | Description                                                                                                                                                               |
  | -------------------- | --------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `organizationId`     | string                                              | No       | organization\_id is the ID of the organization that contains the environment Constraints: `string.uuid=true`.                                                             |
  | `annotations`        | map of string to string                             | No       | annotations are key/value pairs that gets attached to the environment.                                                                                                    |
  | `name`               | string                                              | No       | name is the name of the environment as specified by the user Constraints: `string.max_len=80`.                                                                            |
  | `creator`            | Subject                                             | No       | creator is the identity of the creator of the environment                                                                                                                 |
  | `originalContextUrl` | string                                              | No       | original\_context\_url is the normalized URL from which the environment was created                                                                                       |
  | `createdAt`          | RFC 3339 timestamp                                  | No       | Time when the Environment was created.                                                                                                                                    |
  | `projectId`          | string                                              | No       | If the Environment was started from a project, the project\_id will reference the project.                                                                                |
  | `runnerId`           | string                                              | No       | Runner is the ID of the runner that runs this environment.                                                                                                                |
  | `lastStartedAt`      | RFC 3339 timestamp                                  | No       | Time when the Environment was last started (i.e. CreateEnvironment or StartEnvironment were called).                                                                      |
  | `archivedAt`         | RFC 3339 timestamp                                  | No       | Time when the Environment was archived. If not set, the environment is not archived.                                                                                      |
  | `role`               | [EnvironmentRole](#enum-gitpod-v1-environment-role) | No       | role is the role of the environment                                                                                                                                       |
  | `prebuildId`         | string                                              | No       | prebuild\_id is the ID of the prebuild this environment was created from. Only set if the environment was created from a prebuild. Constraints: `string.uuid=true`.       |
  | `lockdownAt`         | RFC 3339 timestamp                                  | No       | lockdown\_at is the time at which the environment becomes locked down due to the organization's maximum environment lifetime policy. Nil when no lifetime policy applies. |
  | `sessionId`          | string                                              | No       | session\_id is the ID of the session this environment belongs to.                                                                                                         |
</Accordion>

<a id="type-gitpod-v1-environment-spec" />

<Accordion title="EnvironmentSpec">
  EnvironmentSpec specifies the configuration of an environment for an environment
  start

  `gitpod.v1.EnvironmentSpec`

  | Field                  | Type                                                  | Required | Description                                                                                                                                                                                                                         |
  | ---------------------- | ----------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `specVersion`          | 64-bit integer string                                 | No       | version of the spec. The value of this field has no semantic meaning (e.g. don't interpret it as as a timestamp), but it can be used to impose a partial order. If a.spec\_version \< b.spec\_version then a was the spec before b. |
  | `desiredPhase`         | [EnvironmentPhase](#enum-gitpod-v1-environment-phase) | No       | Phase is the desired phase of the environment                                                                                                                                                                                       |
  | `machine`              | Machine                                               | No       | machine is the machine spec of the environment                                                                                                                                                                                      |
  | `content`              | Content                                               | No       | content is the content spec of the environment                                                                                                                                                                                      |
  | `secrets`              | array of Secret                                       | No       | secrets are confidential data that is mounted into the environment                                                                                                                                                                  |
  | `ports`                | array of EnvironmentPort                              | No       | ports is the set of ports which ought to be exposed to your network                                                                                                                                                                 |
  | `timeout`              | Timeout                                               | No       | Timeout configures the environment timeout                                                                                                                                                                                          |
  | `admission`            | [AdmissionLevel](#enum-gitpod-v1-admission-level)     | No       | admission controlls who can access the environment and its ports.                                                                                                                                                                   |
  | `devcontainer`         | DevContainer                                          | No       | devcontainer is the devcontainer spec of the environment                                                                                                                                                                            |
  | `sshPublicKeys`        | array of SSHPublicKey                                 | No       | ssh\_public\_keys are the public keys used to ssh into the environment                                                                                                                                                              |
  | `automationsFile`      | AutomationsFile                                       | No       | automations\_file is the automations file spec of the environment                                                                                                                                                                   |
  | `workflowActionId`     | string                                                | No       | workflow\_action\_id is an optional reference to the workflow execution action that created this environment. Used for tracking and event correlation. Constraints: `string.uuid=true`.                                             |
  | `kernelControlsConfig` | KernelControlsConfig                                  | No       | kernel\_controls\_config configures kernel-level controls for this environment                                                                                                                                                      |
  | `securityPolicyId`     | string                                                | No       | security\_policy\_id references the security policy used for this environment. If empty, the environment has no security policy. Constraints: `ignore=1, string.uuid=true`.                                                         |
</Accordion>

<a id="type-gitpod-v1-environment-status" />

<Accordion title="EnvironmentStatus">
  EnvironmentStatus describes an environment status

  `gitpod.v1.EnvironmentStatus`

  | Field             | Type                                                  | Required | Description                                                                                                                                                                                                                                                                                                                                   |
  | ----------------- | ----------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `statusVersion`   | 64-bit integer string                                 | No       | version of the status update. Environment instances themselves are unversioned, but their status has different versions. The value of this field has no semantic meaning (e.g. don't interpret it as as a timestamp), but it can be used to impose a partial order. If a.status\_version \< b.status\_version then a was the status before b. |
  | `runnerAck`       | RunnerACK                                             | No       | runner\_ack contains the acknowledgement from the runner that is has received the environment spec.                                                                                                                                                                                                                                           |
  | `phase`           | [EnvironmentPhase](#enum-gitpod-v1-environment-phase) | No       | the phase of an environment is a simple, high-level summary of where the environment is in its lifecycle                                                                                                                                                                                                                                      |
  | `failureMessage`  | array of string                                       | No       | failure\_message summarises why the environment failed to operate. If this is non-empty the environment has failed to operate and will likely transition to a stopped state.                                                                                                                                                                  |
  | `environmentUrls` | EnvironmentURLs                                       | No       | environment\_url contains the URL at which the environment can be accessed. This field is only set if the environment is running.                                                                                                                                                                                                             |
  | `machine`         | Machine                                               | No       | machine contains the status of the environment machine                                                                                                                                                                                                                                                                                        |
  | `secrets`         | array of Secret                                       | No       | secrets contains the status of the environment secrets                                                                                                                                                                                                                                                                                        |
  | `content`         | Content                                               | No       | content contains the status of the environment content.                                                                                                                                                                                                                                                                                       |
  | `devcontainer`    | DevContainer                                          | No       | devcontainer contains the status of the devcontainer.                                                                                                                                                                                                                                                                                         |
  | `sshPublicKeys`   | array of SSHPublicKey                                 | No       | ssh\_public\_keys contains the status of the environment ssh public keys                                                                                                                                                                                                                                                                      |
  | `warningMessage`  | array of string                                       | No       | warning\_message contains warnings, e.g. when the environment is present but not in the expected state.                                                                                                                                                                                                                                       |
  | `automationsFile` | AutomationsFile                                       | No       | automations\_file contains the status of the automations file.                                                                                                                                                                                                                                                                                |
  | `activitySignal`  | EnvironmentActivitySignal                             | No       | activity\_signal is the last activity signal for the environment.                                                                                                                                                                                                                                                                             |
</Accordion>

<a id="enum-gitpod-v1-admission-level" />

<Accordion title="AdmissionLevel">
  Admission level describes who can access an environment instance and its ports.

  | Value                          | Number | Description                                                                                                                                                       |
  | ------------------------------ | -----: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `ADMISSION_LEVEL_UNSPECIFIED`  |      0 |                                                                                                                                                                   |
  | `ADMISSION_LEVEL_OWNER_ONLY`   |      1 | **Deprecated.** ADMISSION\_LEVEL\_OWNER\_ONLY means the environment can only be accessed by the creator. Deprecated: Use ADMISSION\_LEVEL\_CREATOR\_ONLY instead. |
  | `ADMISSION_LEVEL_EVERYONE`     |      2 | ADMISSION\_LEVEL\_EVERYONE means the environment (including ports) can be accessed by everyone.                                                                   |
  | `ADMISSION_LEVEL_ORGANIZATION` |      3 | ADMISSION\_LEVEL\_ORGANIZATION means the environment (including ports) can be accessed by all members of the organization.                                        |
  | `ADMISSION_LEVEL_CREATOR_ONLY` |      4 | ADMISSION\_LEVEL\_CREATOR\_ONLY means the environment (including ports) can only be accessed by the user who created the environment.                             |
</Accordion>

<a id="enum-gitpod-v1-environment-phase" />

<Accordion title="EnvironmentPhase">
  | Value                           | Number | Description                                                                                                                                                                                                               |
  | ------------------------------- | -----: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `ENVIRONMENT_PHASE_UNSPECIFIED` |      0 | Unknown indicates an issue within the environment manager in that it cannot determine the actual phase of an environment. This phase is usually accompanied by an error.                                                  |
  | `ENVIRONMENT_PHASE_CREATING`    |     10 | Creating means that the environment is first created. We organise the SCM credentials, parse context URL if need be, and allocate the unit of compute.                                                                    |
  | `ENVIRONMENT_PHASE_STARTING`    |     20 | Starting means that the environment is currently being started. This includes starting the unit of compute (machine), resolving secrets, setting up the Git config, initiaing the content, and starting the devcontainer. |
  | `ENVIRONMENT_PHASE_RUNNING`     |     40 | Running means the environment is able to actively perform work, either by serving a user through Theia, or as a headless environment.                                                                                     |
  | `ENVIRONMENT_PHASE_UPDATING`    |     45 | Updating means the environment is currently being updated. This includes content updates, devcontainer updates, secret updates and SSH public key updates. This phase implies that the environment is running.            |
  | `ENVIRONMENT_PHASE_STOPPING`    |     50 | Stopping means that the environment is currently shutting down. It could go to stopped every moment.                                                                                                                      |
  | `ENVIRONMENT_PHASE_STOPPED`     |     60 | Stopped means the environment ended regularly because it was shut down.                                                                                                                                                   |
  | `ENVIRONMENT_PHASE_DELETING`    |     70 | Deleting means the environment is currently being deleted. It could go to deleted any moment. This phase implies that the environment is stopped.                                                                         |
  | `ENVIRONMENT_PHASE_DELETED`     |     80 | Deleted means the environment was deleted and cannot be started again. This phase implies that the environment is stopped.                                                                                                |
</Accordion>

<a id="enum-gitpod-v1-environment-role" />

<Accordion title="EnvironmentRole">
  EnvironmentRole represents the role of an environment

  | Value                          | Number | Description                                                |
  | ------------------------------ | -----: | ---------------------------------------------------------- |
  | `ENVIRONMENT_ROLE_UNSPECIFIED` |      0 |                                                            |
  | `ENVIRONMENT_ROLE_DEFAULT`     |      1 | Default role for environments                              |
  | `ENVIRONMENT_ROLE_PREBUILD`    |      2 | Prebuild role for environments that are prebuilds          |
  | `ENVIRONMENT_ROLE_WORKFLOW`    |      3 | Workflow role for environments that are part of a workflow |
</Accordion>
