# describeHostedQuickstartOperation

`GET /apis/cra.diagrid.io/v1beta1/projects/{ProjectId}/hosted-quickstarts/{HostedQuickstartId}/operations/{HostedQuickstartOperationId}`

Read one operation's phase and message. The durable answer for a step whose outcome was missed on the live stream.

## Request

### Path parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `ProjectId` | string | Yes | Unique identifier of the project. |
| `HostedQuickstartId` | string | Yes | Name of the hosted quickstart. |
| `HostedQuickstartOperationId` | string | Yes | Name of the hosted quickstart operation. |

## Responses

### 200 — The operation.

`application/json`

One attempt at one step of a session's contract. Created by the console when the user presses Run, and reported on by the runner until it reaches a terminal phase.

- `apiVersion` (string)
- `kind` (string)
- `metadata` (object)
  - `name` (string)
  - `uid` (string)
  - `resourceVersion` (integer)
  - `createdAt` (string)
  - `updatedAt` (string)
  - `deletedAt` (string)
  - `labels` (object<string, string>)
  - `annotations` (object)
- `spec` (object) — Required.
  - `stepId` (string) — Required. The step to run, which must exist in the session's PINNED contract version. A step this binary does not recognise is refused with 422 and `reason: reload_required`, because retrying cannot help.
  - `sessionUid` (string) — The session this operation belongs to. Operations are namespaced by project and a project can outlive several sessions, so a replayed idempotency key is only a replay within one session.
  - `observedStatusVersion` (integer (int64)) — Required. The session `statusVersion` the caller was acting on. A stale value is refused with 409 and the current session snapshot, so the caller can re-render and retry.
  - `appIdName` (string) — Optional name for the App ID the identity step creates. Supplied by the user rather than chosen by the control plane.
- `status` (object)
  - `phase` (string) — One of: `accepted`, `running`, `succeeded`, `failed`, `unknown`.
  - `message` (string) — Why a step failed, when the runner could say.

### 404 — No such operation, or it belongs to another session.

`application/json`

In the case of an error, a standard format error response body will be returned and the HTTP status code will be set to an error status. The response contains an object with a single error object.

- `code` (string) — Required. This is the same as the HTTP status of the response.
- `message` (string) — Required. A short description of the error.
- `status` (object) — Required. A status code that indicates the error type.
- `details` (object) — Additional details about the errors.
  - `@type` (string) — The type of error.
  - `reason` (string) — A reason for the error.
  - `domain` (string) — The domain in which the error occurred.
  - `metadata` (object) — Additional metadata about the error.

### default — Unexpected error.

`application/json`

In the case of an error, a standard format error response body will be returned and the HTTP status code will be set to an error status. The response contains an object with a single error object.

- `code` (string) — Required. This is the same as the HTTP status of the response.
- `message` (string) — Required. A short description of the error.
- `status` (object) — Required. A status code that indicates the error type.
- `details` (object) — Additional details about the errors.
  - `@type` (string) — The type of error.
  - `reason` (string) — A reason for the error.
  - `domain` (string) — The domain in which the error occurred.
  - `metadata` (object) — Additional metadata about the error.
