# Get resource change detail

Get one row's attribute document.

The row is addressed by category and ordinal, taken from a list-resource-change-rows response, not
by resource address. A resource can appear both as drifted and as planned, so an address can match
more than one row and an address-keyed panel would open an arbitrary one.

Only the bytes belonging to this row's attribute document are read, so the cost of a detail request
is independent of how large the plan or the stored snapshot is.

A 404 means the row is not retrievable — an unknown ordinal, an uncommitted snapshot, or a snapshot
whose attribute data has passed its retention window while the row survives. It is not an error
worth retrying.

Endpoint: GET /iacm/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/{pipeline_stage_id}/resource-changes/{category}/rows/{ordinal}
Version: 1.0
Security: x-api-key

## Path parameters:

  - `org` (string, required)
    Org is the organisation identifier.
    Example: "03d"

  - `project` (string, required)
    Project is the project identifier.
    Example: "p2"

  - `pipeline_execution_id` (string, required)
    Pipeline execution ID
    Example: "bo"

  - `pipeline_stage_id` (string, required)
    Pipeline execution stage ID
    Example: "h4k"

  - `category` (string, required)
    Category the row belongs to.
    Enum: "planned_changes", "drift_changes", "resources", "outputs"

  - `ordinal` (integer, required)
    Zero-based position of the row within its category, as returned by list-resource-change-rows.
    Example: 17

## Header parameters:

  - `Harness-Account` (string, required)
    Account is the internal customer account ID.
    Example: "eo"

## Response 200 fields (application/json):

  - `attributes` (object)
    Flat attribute document for a provisioned resource or data source.
    Example: {"ami":"ami-830c94ec","instance_type":"t2.micro"}

  - `category` (string, required)
    Category this row belongs to.
    Enum: "planned_changes", "drift_changes", "resources", "outputs"

  - `change` (string)
    Change made to this resource. Populated for planned_changes and drift_changes rows.
    Enum: "added", "changed", "deleted", "replaced", "unchanged", "imported", "removed"

  - `change_count` (integer)
    Count of changed attributes on this resource. Populated for planned_changes and drift_changes rows.
    Example: 3

  - `changes` (object)
    Per-attribute before and after values.
    Example: {"Corporis eum impedit.":{"change":"added","drift":true,"new":"new value","old":"old value","sensitive":true},"Eum odit non nesciunt ullam blanditiis delectus.":{"change":"added","drift":true,"new":"new value","old":"old value","sensitive":true},"In quis odio temporibus nihil quia.":{"change":"added","drift":true,"new":"new value","old":"old value","sensitive":true}}

  - `drift` (boolean)
    Whether this row came from drift detection rather than a plan. True exactly when category is drift_changes.

  - `mode` (string)
    Whether the row is a managed resource or a data source. Populated for resources rows.
    Enum: "resource", "data"

  - `module` (string, required)
    Module associated with the resource.
    Example: "root"

  - `name` (string, required)
    Name associated with the resource, or the output name for outputs rows.
    Example: "app_bucket"

  - `ordinal` (integer, required)
    Zero-based position of this row within its category. Ordinals are per-category and stable for the life of the snapshot, which is what makes them safe to address the detail endpoint with.
    Example: 17

  - `provider` (string, required)
    Cloud provider associated with the resource.
    Example: "AWS"

  - `resource_address` (string, required)
    Fully qualified address of the resource, module path included.
    Example: "module.app.aws_s3_bucket.app_bucket"

  - `resource_id` (string)
    Identifier for the resource from the cloud provider. Populated for resources rows.
    Example: "arn:aws:s3:::my-bucket"

  - `sensitive` (boolean)
    Whether this row's value is sensitive. Populated for outputs rows.

  - `sensitive_attributes` (array)
    Attribute keys whose values are sensitive and have been withheld.
    Example: ["password"]

  - `type` (string, required)
    Provider resource type.
    Example: "aws_s3_bucket"

  - `value` (string)
    Output value. Populated for outputs rows, whose values are stored inline rather than behind a detail read.
    Example: "i-0abc123"

## Response 400 fields (application/vnd.goa.error):

  - `fault` (boolean, required)
    Is the error a server-side fault?
    Example: true

  - `id` (string, required)
    ID is a unique identifier for this particular occurrence of the problem.
    Example: "123abc"

  - `message` (string, required)
    Message is a human-readable explanation specific to this occurrence of the problem.
    Example: "parameter 'p' must be an integer"

  - `name` (string, required)
    Name is the name of this class of errors.
    Example: "bad_request"

  - `temporary` (boolean, required)
    Is the error temporary?
    Example: true

  - `timeout` (boolean, required)
    Is the error a timeout?


