# Get resource change page

Get one fixed-size page of resource-changes for a given category.

Rows in the planned_changes and drift_changes categories are ordered by change-type
priority (deleted, replaced, added, changed, unchanged, removed, imported), so page 1 holds
the most actionable rows and a client need not sort what it receives. Those two
categories also accept the change parameter, which pages over a single change type
with its own totals rather than filtering the rows a page happens to hold.

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

## Query parameters:

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

  - `page` (integer)
    1-indexed page number to fetch.
    Example: 1

  - `change` (string)
    Restrict the page to a single change type. Only valid for the planned_changes and drift_changes categories; omit it to page over the whole category. Use the unchanged category rather than change=unchanged with planned_changes.
    Enum: "added", "changed", "deleted", "replaced", "unchanged", "removed", "imported"

## Path parameters:

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

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

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

  - `category` (string, required)
    The category to paginate over.
    Enum: "planned_changes", "unchanged", "drift_changes", "resources", "data_sources", "outputs"

## Header parameters:

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

## Response 200 fields (application/json):

  - `changed_resources` (array)
    Example: [{"change":"added","change_count":10,"changes":{"Dolore non est non.":{"change":"added","drift":false,"new":"new value","old":"old value","sensitive":true},"Optio exercitationem.":{"change":"added","drift":false,"new":"new value","old":"old value","sensitive":true}},"drift":false,"module":"full_stack","name":"app_server","provider":"AWS","type":"S3 Bucket"},{"change":"added","change_count":10,"changes":{"Dolore non est non.":{"change":"added","drift":false,"new":"new value","old":"old value","sensitive":true},"Optio exercitationem.":{"change":"added","drift":false,"new":"new value","old":"old value","sensitive":true}},"drift":false,"module":"full_stack","name":"app_server","provider":"AWS","type":"S3 Bucket"}]

  - `changed_resources.change` (string, required)
    Change made to this resource.
    Enum: "added", "changed", "deleted", "replaced", "unchanged", "imported", "removed"

  - `changed_resources.change_count` (integer, required)
    Count of changes made to this resource.
    Example: 10

  - `changed_resources.changes` (object, required)
    New values for this resource
    Example: {"Perferendis distinctio.":{"change":"added","drift":false,"new":"new value","old":"old value","sensitive":true},"Quidem commodi ipsum.":{"change":"added","drift":false,"new":"new value","old":"old value","sensitive":true}}

  - `changed_resources.drift` (boolean, required)
    Indicates whether this resource is experiencing drift
    Example: true

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

  - `changed_resources.name` (string, required)
    Name associated with the resource.
    Example: "app_server"

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

  - `changed_resources.type` (string, required)
    Type of the provisioned resource.
    Example: "S3 Bucket"

  - `filter` (string, required)
    The filter this page belongs to.
    Enum: "planned_changes", "unchanged", "drift_changes", "resources", "data_sources", "outputs"

  - `outputs` (array)
    Example: [{"change":"added","expression":"<+outputs.instance_id>","name":"instance_public_ip","new":"new value","old":"old value","sensitive":true,"stack_path":"IaCM/TGOverride/environments/dev/ec2"},{"change":"added","expression":"<+outputs.instance_id>","name":"instance_public_ip","new":"new value","old":"old value","sensitive":true,"stack_path":"IaCM/TGOverride/environments/dev/ec2"},{"change":"added","expression":"<+outputs.instance_id>","name":"instance_public_ip","new":"new value","old":"old value","sensitive":true,"stack_path":"IaCM/TGOverride/environments/dev/ec2"},{"change":"added","expression":"<+outputs.instance_id>","name":"instance_public_ip","new":"new value","old":"old value","sensitive":true,"stack_path":"IaCM/TGOverride/environments/dev/ec2"}]

  - `outputs.change` (string, required)
    Change made to this resource.
    Enum: "added", "changed", "deleted", "unchanged"

  - `outputs.expression` (string)
    JEXL expression for dynamic output resolution
    Example: "<+outputs.instance_id>"

  - `outputs.name` (string, required)
    Name associated with the output.
    Example: "instance_public_ip"

  - `outputs.new` (string)
    Updated value
    Example: "new value"

  - `outputs.old` (string)
    Previous value.
    Example: "old value"

  - `outputs.sensitive` (boolean, required)
    Indicates whether this value is sensitive
    Example: true

  - `outputs.stack_path` (string)
    Stack path for Terragrunt workspaces
    Example: "IaCM/TGOverride/environments/dev/ec2"

  - `page` (integer, required)
    1-indexed page number returned.
    Example: 1

  - `pageSize` (integer, required)
    Fixed page size.
    Example: 25

  - `resources` (array)
    Example: [{"attributes":{"ami":"ami-830c94ec","instance_type":"t2.micro"},"createdAt":1627590400,"drift_attributes":{"instance_type":"t2.nano"},"drift_status":"changed","lastSyncedAt":1627686800,"mode":"resource","module":"full_stack","monthly_cost":0.08902857087128858,"monthly_saving":0.4451973119066329,"name":"app_server","path_id":"namespace","provider":"AWS","recommendation_count":11626988872555696,"resource_id":"arn:aws:s3:::my-bucket","sensitive_attributes":["instance_type"],"type":"S3 Bucket"},{"attributes":{"ami":"ami-830c94ec","instance_type":"t2.micro"},"createdAt":1627590400,"drift_attributes":{"instance_type":"t2.nano"},"drift_status":"changed","lastSyncedAt":1627686800,"mode":"resource","module":"full_stack","monthly_cost":0.08902857087128858,"monthly_saving":0.4451973119066329,"name":"app_server","path_id":"namespace","provider":"AWS","recommendation_count":11626988872555696,"resource_id":"arn:aws:s3:::my-bucket","sensitive_attributes":["instance_type"],"type":"S3 Bucket"},{"attributes":{"ami":"ami-830c94ec","instance_type":"t2.micro"},"createdAt":1627590400,"drift_attributes":{"instance_type":"t2.nano"},"drift_status":"changed","lastSyncedAt":1627686800,"mode":"resource","module":"full_stack","monthly_cost":0.08902857087128858,"monthly_saving":0.4451973119066329,"name":"app_server","path_id":"namespace","provider":"AWS","recommendation_count":11626988872555696,"resource_id":"arn:aws:s3:::my-bucket","sensitive_attributes":["instance_type"],"type":"S3 Bucket"},{"attributes":{"ami":"ami-830c94ec","instance_type":"t2.micro"},"createdAt":1627590400,"drift_attributes":{"instance_type":"t2.nano"},"drift_status":"changed","lastSyncedAt":1627686800,"mode":"resource","module":"full_stack","monthly_cost":0.08902857087128858,"monthly_saving":0.4451973119066329,"name":"app_server","path_id":"namespace","provider":"AWS","recommendation_count":11626988872555696,"resource_id":"arn:aws:s3:::my-bucket","sensitive_attributes":["instance_type"],"type":"S3 Bucket"}]

  - `resources.attributes` (object, required)
    A map of values related to the resource
    Example: {"ami":"ami-830c94ec","instance_type":"t2.micro"}

  - `resources.createdAt` (integer)
    Timestamp when the resource was created.
    Example: 1627590400

  - `resources.drift_attributes` (object, required)
    A map of values related to the resource
    Example: {"instance_type":"t2.nano"}

  - `resources.drift_status` (string, required)
    Indicates if this resource is experiencing drift.
    Enum: "changed", "deleted", "unchanged"

  - `resources.lastSyncedAt` (integer)
    Timestamp when the resource was last updated.
    Example: 1627686800

  - `resources.mode` (string, required)
    Mode associated with the resource.
    Enum: "resource", "data", "output"

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

  - `resources.monthly_cost` (number)
    Current period cost from CCM (null if no cost data).
    Example: 0.10257639720638001

  - `resources.monthly_saving` (number)
    Monthly potential saving from CCM (null if no cost data).
    Example: 0.5259616664329442

  - `resources.name` (string, required)
    Name associated with the resource.
    Example: "app_server"

  - `resources.path_id` (string, required)
    Path associated with the resource. Could be namespace, environment or stack id.
    Example: "namespace"

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

  - `resources.recommendation_count` (integer)
    Number of CCM recommendations for this resource (null if no cost data).
    Example: 423431505861199600

  - `resources.resource_id` (string, required)
    Unique identifier for the resource from the cloud provider.
    Example: "arn:aws:s3:::my-bucket"

  - `resources.sensitive_attributes` (array, required)
    A list of the sensitive attribute keys
    Example: ["instance_type"]

  - `resources.type` (string, required)
    Type of the provisioned resource.
    Example: "S3 Bucket"

  - `totalItems` (integer, required)
    Total items available in this filter.
    Example: 11244

  - `totalPages` (integer, required)
    Total pages available in this filter.
    Example: 450

## 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?


