> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/api-reference/iacm/executions.md).

# Executions

Executions Service handles the API for workflow executions.

At this time it is a read-only API with no ability to directly create or edit executions. Instead these are triggered from the Workspaces Service.

## List executions

> List all executions.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions":{"get":{"tags":["executions"],"summary":"List executions","description":"List all executions.","operationId":"executions#list-executions","parameters":[{"name":"limit","in":"query","description":"Limit is the number of records to return for a page.","allowEmptyValue":true,"schema":{"type":"integer","description":"Limit is the number of records to return for a page.","default":30,"format":"int64","minimum":1,"maximum":1000}},{"name":"page","in":"query","description":"Page is the page number to return relative to the page 'limit'.","allowEmptyValue":true,"schema":{"type":"integer","description":"Page is the page number to return relative to the page 'limit'.","default":1,"format":"int64","minimum":1}},{"name":"workspace","in":"query","description":"Workspace identifier","allowEmptyValue":true,"schema":{"type":"string","description":"Workspace identifier"}},{"name":"pipeline_execution_id","in":"query","description":"Pipeline identifier","allowEmptyValue":true,"schema":{"type":"string","description":"Pipeline identifier"}},{"name":"status","in":"query","description":"Status of the execution","allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"},"description":"Status of the execution"}},{"name":"pipeline_name","in":"query","description":"Pipeline name","allowEmptyValue":true,"schema":{"type":"string","description":"Pipeline name"}},{"name":"start_time","in":"query","description":"Specify the start time for the query","allowEmptyValue":true,"schema":{"type":"integer","description":"Specify the start time for the query","format":"int64"}},{"name":"end_time","in":"query","description":"Specify the end time limit for the query","allowEmptyValue":true,"schema":{"type":"integer","description":"Specify the end time limit for the query","format":"int64"}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecutionResourceCollection"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ExecutionResourceCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmExecution"}},"HarnessIacmExecution":{"type":"object","properties":{"account":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128},"created":{"type":"integer","description":"Created is the unix timestamp at which the resource was originally created in milliseconds.","format":"int64"},"org":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128},"pipeline":{"type":"string","description":"The unique identifier for the associated pipeline"},"pipeline_execution_id":{"type":"string","description":"The unique identifier for the associated pipeline execution"},"pipeline_stage_id":{"type":"string","description":"The unique identifier for the associated pipeline stage"},"project":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128},"status":{"type":"string","description":"The overall status of the execution","enum":["none","success","failure"]},"workspace":{"type":"string","description":"The unique identifier for the associated workspace"}},"description":"ExecutionResource is the representation for a single workflow execution.","required":["status","created","account","org","project","pipeline_execution_id","pipeline_stage_id","workspace","pipeline"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Create execution

> Create a new execution.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions":{"post":{"tags":["executions"],"summary":"Create execution","description":"Create a new execution.","operationId":"executions#create-execution","parameters":[{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExecutionRequest"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExecutionResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"CreateExecutionRequest":{"type":"object","properties":{"pipeline":{"type":"string","description":"The unique identifier for the associated pipeline"},"pipeline_execution_id":{"type":"string","description":"The unique identifier for the associated pipeline execution"},"pipeline_stage_id":{"type":"string","description":"The unique identifier for the associated pipeline stage"},"workspace":{"type":"string","description":"The unique identifier for the associated workspace"}},"required":["pipeline_execution_id","pipeline_stage_id","workspace","pipeline"]},"CreateExecutionResponse":{"type":"object","properties":{"account":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128},"created":{"type":"integer","description":"Created is the unix timestamp at which the resource was originally created in milliseconds.","format":"int64"},"org":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128},"pipeline":{"type":"string","description":"The unique identifier for the associated pipeline"},"pipeline_execution_id":{"type":"string","description":"The unique identifier for the associated pipeline execution"},"pipeline_stage_id":{"type":"string","description":"The unique identifier for the associated pipeline stage"},"project":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128},"status":{"type":"string","description":"The overall status of the execution","enum":["none","success","failure"]},"workspace":{"type":"string","description":"The unique identifier for the associated workspace"}},"required":["status","created","account","org","project","pipeline_execution_id","pipeline_stage_id","workspace","pipeline"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Show execution

> Show an individual execution.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/{pipeline_stage_id}":{"get":{"tags":["executions"],"summary":"Show execution","description":"Show an individual execution.","operationId":"executions#show-execution","parameters":[{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"pipeline_stage_id","in":"path","description":"Pipeline execution stage ID","required":true,"schema":{"type":"string","description":"Pipeline execution stage ID","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShowExecutionResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ShowExecutionResponse":{"type":"object","properties":{"account":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128},"created":{"type":"integer","description":"Created is the unix timestamp at which the resource was originally created in milliseconds.","format":"int64"},"org":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128},"pipeline":{"type":"string","description":"The unique identifier for the associated pipeline"},"pipeline_execution_id":{"type":"string","description":"The unique identifier for the associated pipeline execution"},"pipeline_stage_id":{"type":"string","description":"The unique identifier for the associated pipeline stage"},"project":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128},"status":{"type":"string","description":"The overall status of the execution","enum":["none","success","failure"]},"workspace":{"type":"string","description":"The unique identifier for the associated workspace"}},"required":["status","created","account","org","project","pipeline_execution_id","pipeline_stage_id","workspace","pipeline"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Update execution

> Modify an individual execution by adding audit data.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/{pipeline_stage_id}/audit-event":{"post":{"tags":["executions"],"summary":"Update execution","description":"Modify an individual execution by adding audit data.","operationId":"executions#modify-execution","parameters":[{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"pipeline_stage_id","in":"path","description":"Pipeline execution stage ID","required":true,"schema":{"type":"string","description":"Pipeline execution stage ID","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateExecutionRequest"}}}},"responses":{"200":{"description":"OK response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"UpdateExecutionRequest":{"type":"object","properties":{"audit":{"$ref":"#/components/schemas/Audit"}}},"Audit":{"type":"object","properties":{"git_audit_data":{"$ref":"#/components/schemas/GitAuditData"}}},"GitAuditData":{"type":"object","properties":{"hash":{"type":"string","description":"Hash of the git branch used","minLength":1,"maxLength":128},"name":{"type":"string","description":"The name of the branch or tag used"},"repo_url":{"type":"string","description":"Url of the repo used","minLength":1},"type":{"type":"string","description":"Type of fetch used to get the data","enum":["branch","tag"]}},"required":["hash","repo_url"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Upload resource change page

> Upload a single sharded resource-change page file for an execution stage.\
> \
> Resource-change data is split into categories (planned\_changes, drift\_changes,\
> resources, etc.) and each category is sharded into zero-based pages. The request\
> body is the raw page file (application/octet-stream) and is currently discarded.\
> \
> The planned\_changes and drift\_changes categories are uploaded twice: once as pages\
> of the whole category, and once as pages of a single change type, identified by the\
> change parameter. Rows in both categories are expected pre-sorted by change-type\
> priority (deleted, replaced, added, changed, unchanged, removed, imported).\
> \
> The body is a JSON array whose element shape depends on {category}:\
> \
> &#x20; planned\_changes | unchanged | drift\_changes  ->  ChangedResource\[]\
> &#x20; resources | data\_sources                     ->  Resource\[]\
> &#x20; outputs                                       ->  Output\[]\
> \
> Example body (category=planned\_changes):\
> \`\`\`json\
> \[\
> &#x20; {\
> &#x20;   "provider": "AWS",\
> &#x20;   "type": "aws\_s3\_bucket",\
> &#x20;   "name": "app\_bucket",\
> &#x20;   "module": "root",\
> &#x20;   "change": "added",\
> &#x20;   "change\_count": 1,\
> &#x20;   "drift": false,\
> &#x20;   "changes": {\
> &#x20;     "bucket": { "change": "added", "old": "", "new": "my-bucket" }\
> &#x20;   }\
> &#x20; }\
> ]\
> \`\`\`\
> \
> Example body (category=resources):\
> \`\`\`json\
> \[\
> &#x20; {\
> &#x20;   "provider": "AWS",\
> &#x20;   "type": "aws\_instance",\
> &#x20;   "name": "app\_server",\
> &#x20;   "module": "root",\
> &#x20;   "mode": "resource",\
> &#x20;   "path\_id": "namespace",\
> &#x20;   "resource\_id": "i-0abc123",\
> &#x20;   "attributes": { "instance\_type": "t2.micro" },\
> &#x20;   "drift\_status": "unchanged",\
> &#x20;   "drift\_attributes": {},\
> &#x20;   "sensitive\_attributes": \[]\
> &#x20; }\
> ]\
> \`\`\`

````json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/{pipeline_stage_id}/resource-changes/{category}/{page}":{"post":{"tags":["executions"],"summary":"Upload resource change page","description":"Upload a single sharded resource-change page file for an execution stage.\n\nResource-change data is split into categories (planned_changes, drift_changes,\nresources, etc.) and each category is sharded into zero-based pages. The request\nbody is the raw page file (application/octet-stream) and is currently discarded.\n\nThe planned_changes and drift_changes categories are uploaded twice: once as pages\nof the whole category, and once as pages of a single change type, identified by the\nchange parameter. Rows in both categories are expected pre-sorted by change-type\npriority (deleted, replaced, added, changed, unchanged, removed, imported).\n\nThe body is a JSON array whose element shape depends on {category}:\n\n  planned_changes | unchanged | drift_changes  ->  ChangedResource[]\n  resources | data_sources                     ->  Resource[]\n  outputs                                       ->  Output[]\n\nExample body (category=planned_changes):\n```json\n[\n  {\n    \"provider\": \"AWS\",\n    \"type\": \"aws_s3_bucket\",\n    \"name\": \"app_bucket\",\n    \"module\": \"root\",\n    \"change\": \"added\",\n    \"change_count\": 1,\n    \"drift\": false,\n    \"changes\": {\n      \"bucket\": { \"change\": \"added\", \"old\": \"\", \"new\": \"my-bucket\" }\n    }\n  }\n]\n```\n\nExample body (category=resources):\n```json\n[\n  {\n    \"provider\": \"AWS\",\n    \"type\": \"aws_instance\",\n    \"name\": \"app_server\",\n    \"module\": \"root\",\n    \"mode\": \"resource\",\n    \"path_id\": \"namespace\",\n    \"resource_id\": \"i-0abc123\",\n    \"attributes\": { \"instance_type\": \"t2.micro\" },\n    \"drift_status\": \"unchanged\",\n    \"drift_attributes\": {},\n    \"sensitive_attributes\": []\n  }\n]\n```","operationId":"executions#upload-resource-change-page","parameters":[{"name":"change","in":"query","description":"Change type this page is filtered to, for the per-change-type shards of planned_changes and drift_changes. Omit it for a page of the whole category.","allowEmptyValue":true,"schema":{"type":"string","description":"Change type this page is filtered to, for the per-change-type shards of planned_changes and drift_changes. Omit it for a page of the whole category.","enum":["added","changed","deleted","replaced","unchanged","removed","imported"]}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"pipeline_stage_id","in":"path","description":"Pipeline execution stage ID","required":true,"schema":{"type":"string","description":"Pipeline execution stage ID","minLength":1,"maxLength":128}},{"name":"category","in":"path","description":"Resource-change category the page belongs to","required":true,"schema":{"type":"string","description":"Resource-change category the page belongs to","enum":["planned_changes","unchanged","drift_changes","resources","data_sources","outputs"]}},{"name":"page","in":"path","description":"1-indexed page number within the category","required":true,"schema":{"type":"integer","description":"1-indexed page number within the category","format":"int64","minimum":1}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}},{"name":"Content-Length","in":"header","description":"Size in bytes of the uploaded page file.","allowEmptyValue":true,"schema":{"type":"integer","description":"Size in bytes of the uploaded page file.","format":"int64"}}],"responses":{"200":{"description":"OK response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
````

## List resource change rows

> List one page of resource-change rows for an execution stage.\
> \
> Served entirely from the indexed snapshot: every column the response carries is a scalar, so a\
> list request reads no attribute data. Attribute documents are fetched one row at a time from\
> get-resource-change-detail.\
> \
> Pages are numbered and randomly addressable, because the table's page picker lets a caller jump\
> straight to page 5 rather than walking there. Unfiltered, a page is a bare ordinal range over an\
> index — ordinals are dense within a category — so page 40 costs what page 1 costs. Once a filter\
> or search is applied ordinals stop being contiguous and the page has to be counted into, but by\
> then the result set has narrowed to the point where there is little to count past.\
> \
> Rows come back in stored order: change-type priority (deleted, added, changed, unchanged, removed,\
> imported) then name. There is no sort parameter, because the columns filter rather than sort — the\
> ordering is fixed at write time and identical for every caller.\
> \
> Only committed snapshots are visible. A stage whose upload never completed, or that predates\
> indexing, is a 404 and the caller should fall back to list-resource-changes.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/{pipeline_stage_id}/resource-changes/{category}/rows":{"get":{"tags":["executions"],"summary":"List resource change rows","description":"List one page of resource-change rows for an execution stage.\n\nServed entirely from the indexed snapshot: every column the response carries is a scalar, so a\nlist request reads no attribute data. Attribute documents are fetched one row at a time from\nget-resource-change-detail.\n\nPages are numbered and randomly addressable, because the table's page picker lets a caller jump\nstraight to page 5 rather than walking there. Unfiltered, a page is a bare ordinal range over an\nindex — ordinals are dense within a category — so page 40 costs what page 1 costs. Once a filter\nor search is applied ordinals stop being contiguous and the page has to be counted into, but by\nthen the result set has narrowed to the point where there is little to count past.\n\nRows come back in stored order: change-type priority (deleted, added, changed, unchanged, removed,\nimported) then name. There is no sort parameter, because the columns filter rather than sort — the\nordering is fixed at write time and identical for every caller.\n\nOnly committed snapshots are visible. A stage whose upload never completed, or that predates\nindexing, is a 404 and the caller should fall back to list-resource-changes.","operationId":"executions#list-resource-change-rows","parameters":[{"name":"change","in":"query","description":"Restrict to these change types. Repeat the parameter to select more than one; omit it for all. Only meaningful for the planned_changes and drift_changes categories, whose rows are the only ones carrying a change type.","allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string","enum":["added","changed","deleted","replaced","unchanged","removed","imported"]},"description":"Restrict to these change types. Repeat the parameter to select more than one; omit it for all. Only meaningful for the planned_changes and drift_changes categories, whose rows are the only ones carrying a change type."}},{"name":"provider","in":"query","description":"Restrict to these providers. Repeat the parameter to select more than one; omit it for all.","allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"},"description":"Restrict to these providers. Repeat the parameter to select more than one; omit it for all."}},{"name":"type","in":"query","description":"Restrict to these provider resource types. Repeat the parameter to select more than one; omit it for all.","allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"},"description":"Restrict to these provider resource types. Repeat the parameter to select more than one; omit it for all."}},{"name":"module","in":"query","description":"Restrict to these modules. Repeat the parameter to select more than one; omit it for all.","allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"},"description":"Restrict to these modules. Repeat the parameter to select more than one; omit it for all."}},{"name":"search","in":"query","description":"Case-insensitive substring match against the resource address and name.","allowEmptyValue":true,"schema":{"type":"string","description":"Case-insensitive substring match against the resource address and name.","maxLength":256}},{"name":"limit","in":"query","description":"Rows per page.","allowEmptyValue":true,"schema":{"type":"integer","description":"Rows per page.","default":25,"format":"int64","minimum":1,"maximum":1000}},{"name":"page","in":"query","description":"1-indexed page number to fetch.","allowEmptyValue":true,"schema":{"type":"integer","description":"1-indexed page number to fetch.","default":1,"format":"int64","minimum":1}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"pipeline_stage_id","in":"path","description":"Pipeline execution stage ID","required":true,"schema":{"type":"string","description":"Pipeline execution stage ID","minLength":1,"maxLength":128}},{"name":"category","in":"path","description":"Category to list rows from. One per tab in the table view.","required":true,"schema":{"type":"string","description":"Category to list rows from. One per tab in the table view.","enum":["planned_changes","drift_changes","resources","outputs"]}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourceChangeRowsResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ListResourceChangeRowsResponse":{"type":"object","properties":{"page":{"type":"integer","description":"1-indexed page number returned.","format":"int64"},"pageSize":{"type":"integer","description":"Maximum rows this page could hold.","format":"int64"},"rows":{"$ref":"#/components/schemas/ResourceChangeRowCollection"},"totalItems":{"type":"integer","description":"Total rows matching these filters, ignoring paging.","format":"int64"},"totalPages":{"type":"integer","description":"Total pages matching these filters, so a client need not derive it.","format":"int64"}},"required":["rows","page","pageSize","totalItems","totalPages"]},"ResourceChangeRowCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmResourceChangeRow"}},"HarnessIacmResourceChangeRow":{"type":"object","properties":{"category":{"type":"string","description":"Category this row belongs to.","enum":["planned_changes","drift_changes","resources","outputs"]},"change":{"type":"string","description":"Change made to this resource. Populated for planned_changes and drift_changes rows.","enum":["added","changed","deleted","replaced","unchanged","imported","removed"]},"change_count":{"type":"integer","description":"Count of changed attributes on this resource. Populated for planned_changes and drift_changes rows.","format":"int64"},"detail_bytes":{"type":"integer","description":"Uncompressed size in bytes of this row's attribute document, so a client can decide whether to fetch it. Zero for outputs rows, which carry their value inline.","format":"int64","minimum":0},"drift":{"type":"boolean","description":"Whether this row came from drift detection rather than a plan. True exactly when category is drift_changes."},"mode":{"type":"string","description":"Whether the row is a managed resource or a data source. Populated for resources rows.","enum":["resource","data"]},"module":{"type":"string","description":"Module associated with the resource."},"name":{"type":"string","description":"Name associated with the resource, or the output name for outputs rows."},"ordinal":{"type":"integer","description":"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.","format":"int64","minimum":0},"provider":{"type":"string","description":"Cloud provider associated with the resource."},"resource_address":{"type":"string","description":"Fully qualified address of the resource, module path included."},"resource_id":{"type":"string","description":"Identifier for the resource from the cloud provider. Populated for resources rows."},"sensitive":{"type":"boolean","description":"Whether this row's value is sensitive. Populated for outputs rows."},"type":{"type":"string","description":"Provider resource type."},"value":{"type":"string","description":"Output value. Populated for outputs rows, whose values are stored inline rather than behind a detail read."}},"description":"One row of a resource-change snapshot: the scalar columns only.\n\nEverything the table view displays or filters on is here, so listing rows reads no\nattribute data at all. The attribute document is deliberately absent — fetch it for a single\nrow from get-resource-change-detail, addressed by this row's category and ordinal.\n\nThe four categories are the four tabs the table view offers. Unchanged rows are not a category\nof their own: they sit in planned_changes carrying change=unchanged, which is how the change-type\ncards above the table can count them without a tab. Data sources are likewise not a category:\nthey sit in resources carrying mode=data.\n\nWhich of the optional attributes are populated depends on the row's category:\n\n  planned_changes | drift_changes  ->  change, change_count, drift\n  resources                        ->  resource_id, mode\n  outputs                          ->  value, sensitive","required":["category","ordinal","resource_address","provider","type","name","module"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

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

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/{pipeline_stage_id}/resource-changes/{category}/rows/{ordinal}":{"get":{"tags":["executions"],"summary":"Get resource change detail","description":"Get one row's attribute document.\n\nThe row is addressed by category and ordinal, taken from a list-resource-change-rows response, not\nby resource address. A resource can appear both as drifted and as planned, so an address can match\nmore than one row and an address-keyed panel would open an arbitrary one.\n\nOnly the bytes belonging to this row's attribute document are read, so the cost of a detail request\nis independent of how large the plan or the stored snapshot is.\n\nA 404 means the row is not retrievable — an unknown ordinal, an uncommitted snapshot, or a snapshot\nwhose attribute data has passed its retention window while the row survives. It is not an error\nworth retrying.","operationId":"executions#get-resource-change-detail","parameters":[{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"pipeline_stage_id","in":"path","description":"Pipeline execution stage ID","required":true,"schema":{"type":"string","description":"Pipeline execution stage ID","minLength":1,"maxLength":128}},{"name":"category","in":"path","description":"Category the row belongs to.","required":true,"schema":{"type":"string","description":"Category the row belongs to.","enum":["planned_changes","drift_changes","resources","outputs"]}},{"name":"ordinal","in":"path","description":"Zero-based position of the row within its category, as returned by list-resource-change-rows.","required":true,"schema":{"type":"integer","description":"Zero-based position of the row within its category, as returned by list-resource-change-rows.","format":"int64","minimum":0}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetResourceChangeDetailResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"GetResourceChangeDetailResponse":{"type":"object","properties":{"attributes":{"type":"object","description":"Flat attribute document for a provisioned resource or data source.","additionalProperties":true},"category":{"type":"string","description":"Category this row belongs to.","enum":["planned_changes","drift_changes","resources","outputs"]},"change":{"type":"string","description":"Change made to this resource. Populated for planned_changes and drift_changes rows.","enum":["added","changed","deleted","replaced","unchanged","imported","removed"]},"change_count":{"type":"integer","description":"Count of changed attributes on this resource. Populated for planned_changes and drift_changes rows.","format":"int64"},"changes":{"type":"object","description":"Per-attribute before and after values.","additionalProperties":{"$ref":"#/components/schemas/ValueChange"}},"drift":{"type":"boolean","description":"Whether this row came from drift detection rather than a plan. True exactly when category is drift_changes."},"mode":{"type":"string","description":"Whether the row is a managed resource or a data source. Populated for resources rows.","enum":["resource","data"]},"module":{"type":"string","description":"Module associated with the resource."},"name":{"type":"string","description":"Name associated with the resource, or the output name for outputs rows."},"ordinal":{"type":"integer","description":"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.","format":"int64","minimum":0},"provider":{"type":"string","description":"Cloud provider associated with the resource."},"resource_address":{"type":"string","description":"Fully qualified address of the resource, module path included."},"resource_id":{"type":"string","description":"Identifier for the resource from the cloud provider. Populated for resources rows."},"sensitive":{"type":"boolean","description":"Whether this row's value is sensitive. Populated for outputs rows."},"sensitive_attributes":{"type":"array","items":{"type":"string"},"description":"Attribute keys whose values are sensitive and have been withheld."},"type":{"type":"string","description":"Provider resource type."},"value":{"type":"string","description":"Output value. Populated for outputs rows, whose values are stored inline rather than behind a detail read."}},"required":["category","ordinal","resource_address","provider","type","name","module"]},"ValueChange":{"type":"object","properties":{"change":{"type":"string","description":"Change made to this resource.","enum":["added","changed","deleted","unchanged"]},"drift":{"type":"boolean","description":"Indicates whether this attribute is experiencing drift"},"new":{"type":"string","description":"Updated value"},"old":{"type":"string","description":"Previous value."},"sensitive":{"type":"boolean","description":"Indicates whether this value is sensitive"}},"required":["change","drift","sensitive"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Get resource change detail by address

> Get every attribute document matching a Terraform resource address.\
> \
> This is the address-keyed counterpart to get-resource-change-detail. Consumers that hold a\
> Terraform address — the dependency graph, risk map, future agents — can fetch the matching\
> attribute documents without first discovering an ordinal via list-resource-change-rows, and\
> without knowing which category the address lives in.\
> \
> Omit category to search every category. The same address can appear as a planned change and as\
> drift, or as a planned change and as a provisioned resource; every match is returned and the\
> caller chooses. Pass category to restrict to one bucket. Pass change to restrict planned\_changes\
> and drift\_changes rows to one change type — for example the added half of a replace.\
> \
> Only the bytes belonging to each matching 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 no row is retrievable — an unknown address, 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.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/{pipeline_stage_id}/resource-changes/by-address/{resource_address}":{"get":{"tags":["executions"],"summary":"Get resource change detail by address","description":"Get every attribute document matching a Terraform resource address.\n\nThis is the address-keyed counterpart to get-resource-change-detail. Consumers that hold a\nTerraform address — the dependency graph, risk map, future agents — can fetch the matching\nattribute documents without first discovering an ordinal via list-resource-change-rows, and\nwithout knowing which category the address lives in.\n\nOmit category to search every category. The same address can appear as a planned change and as\ndrift, or as a planned change and as a provisioned resource; every match is returned and the\ncaller chooses. Pass category to restrict to one bucket. Pass change to restrict planned_changes\nand drift_changes rows to one change type — for example the added half of a replace.\n\nOnly the bytes belonging to each matching row's attribute document are read, so the cost of a\ndetail request is independent of how large the plan or the stored snapshot is.\n\nA 404 means no row is retrievable — an unknown address, an uncommitted snapshot, or a snapshot\nwhose attribute data has passed its retention window while the row survives. It is not an error\nworth retrying.","operationId":"executions#get-resource-change-detail-by-address","parameters":[{"name":"category","in":"query","description":"Restrict to this category. Omit it to return matches from every category.","allowEmptyValue":true,"schema":{"type":"string","description":"Restrict to this category. Omit it to return matches from every category.","enum":["planned_changes","drift_changes","resources","outputs"]}},{"name":"change","in":"query","description":"Restrict planned_changes and drift_changes matches to this change type. Omit it to return every matching row.","allowEmptyValue":true,"schema":{"type":"string","description":"Restrict planned_changes and drift_changes matches to this change type. Omit it to return every matching row.","enum":["added","changed","deleted","unchanged","imported","removed","replaced"]}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"pipeline_stage_id","in":"path","description":"Pipeline execution stage ID","required":true,"schema":{"type":"string","description":"Pipeline execution stage ID","minLength":1,"maxLength":128}},{"name":"resource_address","in":"path","description":"Fully qualified Terraform address of the resource, module path included.","required":true,"schema":{"type":"string","description":"Fully qualified Terraform address of the resource, module path included."}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetResourceChangeDetailByAddressResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"GetResourceChangeDetailByAddressResponse":{"type":"object","properties":{"details":{"$ref":"#/components/schemas/ResourceChangeDetailCollection"}},"required":["details"]},"ResourceChangeDetailCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmResourceChangeDetail"}},"HarnessIacmResourceChangeDetail":{"type":"object","properties":{"attributes":{"type":"object","description":"Flat attribute document for a provisioned resource or data source.","additionalProperties":true},"category":{"type":"string","description":"Category this row belongs to.","enum":["planned_changes","drift_changes","resources","outputs"]},"change":{"type":"string","description":"Change made to this resource. Populated for planned_changes and drift_changes rows.","enum":["added","changed","deleted","replaced","unchanged","imported","removed"]},"change_count":{"type":"integer","description":"Count of changed attributes on this resource. Populated for planned_changes and drift_changes rows.","format":"int64"},"changes":{"type":"object","description":"Per-attribute before and after values.","additionalProperties":{"$ref":"#/components/schemas/ValueChange"}},"drift":{"type":"boolean","description":"Whether this row came from drift detection rather than a plan. True exactly when category is drift_changes."},"mode":{"type":"string","description":"Whether the row is a managed resource or a data source. Populated for resources rows.","enum":["resource","data"]},"module":{"type":"string","description":"Module associated with the resource."},"name":{"type":"string","description":"Name associated with the resource, or the output name for outputs rows."},"ordinal":{"type":"integer","description":"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.","format":"int64","minimum":0},"provider":{"type":"string","description":"Cloud provider associated with the resource."},"resource_address":{"type":"string","description":"Fully qualified address of the resource, module path included."},"resource_id":{"type":"string","description":"Identifier for the resource from the cloud provider. Populated for resources rows."},"sensitive":{"type":"boolean","description":"Whether this row's value is sensitive. Populated for outputs rows."},"sensitive_attributes":{"type":"array","items":{"type":"string"},"description":"Attribute keys whose values are sensitive and have been withheld."},"type":{"type":"string","description":"Provider resource type."},"value":{"type":"string","description":"Output value. Populated for outputs rows, whose values are stored inline rather than behind a detail read."}},"description":"One row's attribute document, together with the scalars that head a detail panel.\n\nAddressed by category and ordinal rather than by resource address: a resource can appear both as\ndrifted and as planned, so an address can match more than one row and an address-keyed panel would\nopen an arbitrary one.\n\nWhich of the attribute payloads is populated depends on the row's category:\n\n  planned_changes | drift_changes  ->  changes\n  resources                        ->  attributes, sensitive_attributes\n  outputs                          ->  value","required":["category","ordinal","resource_address","provider","type","name","module"]},"ValueChange":{"type":"object","properties":{"change":{"type":"string","description":"Change made to this resource.","enum":["added","changed","deleted","unchanged"]},"drift":{"type":"boolean","description":"Indicates whether this attribute is experiencing drift"},"new":{"type":"string","description":"Updated value"},"old":{"type":"string","description":"Previous value."},"sensitive":{"type":"boolean","description":"Indicates whether this value is sensitive"}},"required":["change","drift","sensitive"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Commit resource changes

> Upload the counts.json commit marker for an execution stage's resource changes.\
> \
> Sent after all category pages have been uploaded to signal the upload is\
> complete; the body is the counts.json object (application/octet-stream) and is\
> currently discarded. It carries the badge totals the UI needs without scanning\
> the paged files.\
> \
> Example body:\
> \`\`\`json\
> {\
> &#x20; "PlannedTotal": 42,\
> &#x20; "PlannedByChangeType": { "added": 10, "changed": 8, "deleted": 2, "unchanged": 22 },\
> &#x20; "Drift": 3,\
> &#x20; "Resources": 120,\
> &#x20; "DataSources": 15,\
> &#x20; "Outputs": 6\
> }\
> \`\`\`

````json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/{pipeline_stage_id}/resource-changes/counts":{"post":{"tags":["executions"],"summary":"Commit resource changes","description":"Upload the counts.json commit marker for an execution stage's resource changes.\n\nSent after all category pages have been uploaded to signal the upload is\ncomplete; the body is the counts.json object (application/octet-stream) and is\ncurrently discarded. It carries the badge totals the UI needs without scanning\nthe paged files.\n\nExample body:\n```json\n{\n  \"PlannedTotal\": 42,\n  \"PlannedByChangeType\": { \"added\": 10, \"changed\": 8, \"deleted\": 2, \"unchanged\": 22 },\n  \"Drift\": 3,\n  \"Resources\": 120,\n  \"DataSources\": 15,\n  \"Outputs\": 6\n}\n```","operationId":"executions#commit-resource-changes","parameters":[{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"pipeline_stage_id","in":"path","description":"Pipeline execution stage ID","required":true,"schema":{"type":"string","description":"Pipeline execution stage ID","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}},{"name":"Content-Length","in":"header","description":"Size in bytes of the counts.json object.","allowEmptyValue":true,"schema":{"type":"integer","description":"Size in bytes of the counts.json object.","format":"int64"}}],"responses":{"200":{"description":"OK response."},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
````

## Get resource change filter counts

> Get the count beside every filter option, across every dimension, in one request.\
> \
> Unlike get-resource-change-counts, which returns fixed whole-snapshot badge totals, these counts are\
> selection-aware: each one answers how many rows the list would hold if the caller also picked that\
> option, so they move as the caller filters. Both endpoints stay — badges read the totals, the filter\
> panel reads these.\
> \
> Every dimension is counted with the other dimensions' filters applied but not its own. That is what\
> lets a caller widen a selection: were they all counted under one shared predicate, selecting a\
> single provider would make every other provider read zero.\
> \
> The category filter accepts more than one value here even though the list endpoint takes a single\
> category in its path, so a caller can scope the counts to the categories its tab shows.\
> \
> Only committed snapshots are visible; an unindexed or incomplete stage is a 404.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/{pipeline_stage_id}/resource-changes/filter-counts":{"get":{"tags":["executions"],"summary":"Get resource change filter counts","description":"Get the count beside every filter option, across every dimension, in one request.\n\nUnlike get-resource-change-counts, which returns fixed whole-snapshot badge totals, these counts are\nselection-aware: each one answers how many rows the list would hold if the caller also picked that\noption, so they move as the caller filters. Both endpoints stay — badges read the totals, the filter\npanel reads these.\n\nEvery dimension is counted with the other dimensions' filters applied but not its own. That is what\nlets a caller widen a selection: were they all counted under one shared predicate, selecting a\nsingle provider would make every other provider read zero.\n\nThe category filter accepts more than one value here even though the list endpoint takes a single\ncategory in its path, so a caller can scope the counts to the categories its tab shows.\n\nOnly committed snapshots are visible; an unindexed or incomplete stage is a 404.","operationId":"executions#get-resource-change-filter-counts","parameters":[{"name":"category","in":"query","description":"Restrict to these categories. Repeat the parameter to select more than one; omit it for all.","allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string","enum":["planned_changes","drift_changes","resources","outputs"]},"description":"Restrict to these categories. Repeat the parameter to select more than one; omit it for all."}},{"name":"change","in":"query","description":"Restrict to these change types. Repeat the parameter to select more than one; omit it for all. Only meaningful for the planned_changes and drift_changes categories, whose rows are the only ones carrying a change type.","allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string","enum":["added","changed","deleted","replaced","unchanged","removed","imported"]},"description":"Restrict to these change types. Repeat the parameter to select more than one; omit it for all. Only meaningful for the planned_changes and drift_changes categories, whose rows are the only ones carrying a change type."}},{"name":"provider","in":"query","description":"Restrict to these providers. Repeat the parameter to select more than one; omit it for all.","allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"},"description":"Restrict to these providers. Repeat the parameter to select more than one; omit it for all."}},{"name":"type","in":"query","description":"Restrict to these provider resource types. Repeat the parameter to select more than one; omit it for all.","allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"},"description":"Restrict to these provider resource types. Repeat the parameter to select more than one; omit it for all."}},{"name":"module","in":"query","description":"Restrict to these modules. Repeat the parameter to select more than one; omit it for all.","allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"},"description":"Restrict to these modules. Repeat the parameter to select more than one; omit it for all."}},{"name":"search","in":"query","description":"Case-insensitive substring match against the resource address and name.","allowEmptyValue":true,"schema":{"type":"string","description":"Case-insensitive substring match against the resource address and name.","maxLength":256}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"pipeline_stage_id","in":"path","description":"Pipeline execution stage ID","required":true,"schema":{"type":"string","description":"Pipeline execution stage ID","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetResourceChangeFilterCountsResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"GetResourceChangeFilterCountsResponse":{"type":"object","properties":{"categories":{"type":"object","description":"Row count per category, with every other dimension's filters applied but not the category filter.","additionalProperties":{"type":"integer","format":"int64"}},"change_types":{"type":"object","description":"Row count per change type, with every other dimension's filters applied but not the change-type filter. Empty for categories that have no change type. These are the numbers on the cards above the table.","additionalProperties":{"type":"integer","format":"int64"}},"modules":{"type":"object","description":"Row count per module, with every other dimension's filters applied but not the module filter.","additionalProperties":{"type":"integer","format":"int64"}},"providers":{"type":"object","description":"Row count per provider, with every other dimension's filters applied but not the provider filter.","additionalProperties":{"type":"integer","format":"int64"}},"types":{"type":"object","description":"Row count per provider resource type, with every other dimension's filters applied but not the type filter.","additionalProperties":{"type":"integer","format":"int64"}}},"required":["categories","change_types","providers","types","modules"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List cost changes

> List cost changes from the latest plan and last applied state for the current execution.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/cost-changes":{"get":{"tags":["executions"],"summary":"List cost changes","description":"List cost changes from the latest plan and last applied state for the current execution.","operationId":"executions#list-cost-changes","parameters":[{"name":"pipeline_stage_id","in":"query","allowEmptyValue":true,"schema":{"type":"string","default":""}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCostChangesResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ListCostChangesResponse":{"type":"object","properties":{"currency":{"type":"string","description":"Currency of the costs"},"diff":{"type":"object","description":"Map of the type of resources and their costs.","additionalProperties":{"$ref":"#/components/schemas/HarnessIacmCostResourcesByType"}},"diff_total_monthly_cost":{"type":"string","description":"Difference of cost between workspaces per month"},"past_total_monthly_cost":{"type":"string","description":"Total cost of the resources per month for the last workspace"},"percentage_change_total_monthly_cost":{"type":"integer","description":"The change between the costs per month represented as a percentage","format":"int64"},"stage_execution_id":{"type":"string","description":"The stage execution ID"},"stage_id":{"type":"string","description":"The stage ID"},"total_monthly_cost":{"type":"string","description":"Total cost of the resources per month"},"workspace_id":{"type":"string","description":"The workspace identifier"}},"required":["currency","diff","total_monthly_cost","past_total_monthly_cost","diff_total_monthly_cost","percentage_change_total_monthly_cost","stage_id","stage_execution_id","workspace_id"]},"HarnessIacmCostResourcesByType":{"type":"object","properties":{"current_monthly_cost":{"type":"string"},"diff":{"$ref":"#/components/schemas/CostResourcesCollection"},"diff_monthly_cost":{"type":"string"},"percentage_change_monthly_cost":{"type":"integer","format":"int64"},"previous_monthly_cost":{"type":"string"}},"required":["diff","current_monthly_cost","previous_monthly_cost","diff_monthly_cost","percentage_change_monthly_cost"]},"CostResourcesCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmCostResource"}},"HarnessIacmCostResource":{"type":"object","properties":{"current_monthly_cost":{"type":"string"},"diff_monthly_cost":{"type":"string"},"name":{"type":"string"},"percentage_change_monthly_cost":{"type":"integer","format":"int64"},"previous_monthly_cost":{"type":"string"},"subresources":{"type":"object","description":"List of subresources for a resource","additionalProperties":{"$ref":"#/components/schemas/HarnessIacmCostSubresource"}}},"description":"Cost of the given resource","required":["name","current_monthly_cost","previous_monthly_cost","diff_monthly_cost","percentage_change_monthly_cost"]},"HarnessIacmCostSubresource":{"type":"object","properties":{"current_monthly_cost":{"type":"string"},"diff_monthly_cost":{"type":"string"},"percentage_change_monthly_cost":{"type":"integer","format":"int64"},"previous_monthly_cost":{"type":"string"}},"description":"Cost of the given subresource","required":["current_monthly_cost","previous_monthly_cost","diff_monthly_cost","percentage_change_monthly_cost"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List cost changes for all stages

> List cost changes for all stages from the latest plan and last applied state for the current execution.\
> \
> Pass pipeline\_stage\_id to narrow the result to a single stage. A matrix run has one\
> stage per workspace, so a caller that is already looking at one of them - the approval\
> step, for instance - should name it rather than filter the whole collection itself.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/cost-changes-all-stages":{"get":{"tags":["executions"],"summary":"List cost changes for all stages","description":"List cost changes for all stages from the latest plan and last applied state for the current execution.\n\nPass pipeline_stage_id to narrow the result to a single stage. A matrix run has one\nstage per workspace, so a caller that is already looking at one of them - the approval\nstep, for instance - should name it rather than filter the whole collection itself.","operationId":"executions#list-cost-changes-all-stages","parameters":[{"name":"pipeline_stage_id","in":"query","allowEmptyValue":true,"schema":{"type":"string","default":""}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangedCostsCollection"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ChangedCostsCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmChangedCosts"}},"HarnessIacmChangedCosts":{"type":"object","properties":{"currency":{"type":"string","description":"Currency of the costs"},"diff":{"type":"object","description":"Map of the type of resources and their costs.","additionalProperties":{"$ref":"#/components/schemas/HarnessIacmCostResourcesByType"}},"diff_total_monthly_cost":{"type":"string","description":"Difference of cost between workspaces per month"},"past_total_monthly_cost":{"type":"string","description":"Total cost of the resources per month for the last workspace"},"percentage_change_total_monthly_cost":{"type":"integer","description":"The change between the costs per month represented as a percentage","format":"int64"},"stage_execution_id":{"type":"string","description":"The stage execution ID"},"stage_id":{"type":"string","description":"The stage ID"},"total_monthly_cost":{"type":"string","description":"Total cost of the resources per month"},"workspace_id":{"type":"string","description":"The workspace identifier"}},"description":"Contains the difference in cost of the resources that are changing","required":["currency","diff","total_monthly_cost","past_total_monthly_cost","diff_total_monthly_cost","percentage_change_total_monthly_cost","stage_id","stage_execution_id","workspace_id"]},"HarnessIacmCostResourcesByType":{"type":"object","properties":{"current_monthly_cost":{"type":"string"},"diff":{"$ref":"#/components/schemas/CostResourcesCollection"},"diff_monthly_cost":{"type":"string"},"percentage_change_monthly_cost":{"type":"integer","format":"int64"},"previous_monthly_cost":{"type":"string"}},"required":["diff","current_monthly_cost","previous_monthly_cost","diff_monthly_cost","percentage_change_monthly_cost"]},"CostResourcesCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmCostResource"}},"HarnessIacmCostResource":{"type":"object","properties":{"current_monthly_cost":{"type":"string"},"diff_monthly_cost":{"type":"string"},"name":{"type":"string"},"percentage_change_monthly_cost":{"type":"integer","format":"int64"},"previous_monthly_cost":{"type":"string"},"subresources":{"type":"object","description":"List of subresources for a resource","additionalProperties":{"$ref":"#/components/schemas/HarnessIacmCostSubresource"}}},"description":"Cost of the given resource","required":["name","current_monthly_cost","previous_monthly_cost","diff_monthly_cost","percentage_change_monthly_cost"]},"HarnessIacmCostSubresource":{"type":"object","properties":{"current_monthly_cost":{"type":"string"},"diff_monthly_cost":{"type":"string"},"percentage_change_monthly_cost":{"type":"integer","format":"int64"},"previous_monthly_cost":{"type":"string"}},"description":"Cost of the given subresource","required":["current_monthly_cost","previous_monthly_cost","diff_monthly_cost","percentage_change_monthly_cost"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List cost changes for all stages by modules

> List cost changes per module (stack path) for all stages for the current execution.\
> \
> Pass pipeline\_stage\_id to narrow the result to a single stage, as with cost-changes-all-stages.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/cost-changes-all-stages-by-modules":{"get":{"tags":["executions"],"summary":"List cost changes for all stages by modules","description":"List cost changes per module (stack path) for all stages for the current execution.\n\nPass pipeline_stage_id to narrow the result to a single stage, as with cost-changes-all-stages.","operationId":"executions#list-cost-changes-all-stages-by-modules","parameters":[{"name":"stack_path","in":"query","description":"Optional module stack path filter","allowEmptyValue":true,"schema":{"type":"string","description":"Optional module stack path filter","default":""}},{"name":"pipeline_stage_id","in":"query","allowEmptyValue":true,"schema":{"type":"string","default":""}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangedCostsByModuleResourceCollection"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ChangedCostsByModuleResourceCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmChangedcostsbymoduleresource"}},"HarnessIacmChangedcostsbymoduleresource":{"type":"object","properties":{"modules":{"type":"object","description":"Map of module/stack path to its ChangedCosts","additionalProperties":{"$ref":"#/components/schemas/HarnessIacmChangedCosts"}},"stage_execution_id":{"type":"string"},"stage_id":{"type":"string"},"workspace_id":{"type":"string"}},"description":"Changed costs grouped by module (stack path) for a single stage execution","required":["modules"]},"HarnessIacmChangedCosts":{"type":"object","properties":{"currency":{"type":"string","description":"Currency of the costs"},"diff":{"type":"object","description":"Map of the type of resources and their costs.","additionalProperties":{"$ref":"#/components/schemas/HarnessIacmCostResourcesByType"}},"diff_total_monthly_cost":{"type":"string","description":"Difference of cost between workspaces per month"},"past_total_monthly_cost":{"type":"string","description":"Total cost of the resources per month for the last workspace"},"percentage_change_total_monthly_cost":{"type":"integer","description":"The change between the costs per month represented as a percentage","format":"int64"},"stage_execution_id":{"type":"string","description":"The stage execution ID"},"stage_id":{"type":"string","description":"The stage ID"},"total_monthly_cost":{"type":"string","description":"Total cost of the resources per month"},"workspace_id":{"type":"string","description":"The workspace identifier"}},"description":"Contains the difference in cost of the resources that are changing","required":["currency","diff","total_monthly_cost","past_total_monthly_cost","diff_total_monthly_cost","percentage_change_total_monthly_cost","stage_id","stage_execution_id","workspace_id"]},"HarnessIacmCostResourcesByType":{"type":"object","properties":{"current_monthly_cost":{"type":"string"},"diff":{"$ref":"#/components/schemas/CostResourcesCollection"},"diff_monthly_cost":{"type":"string"},"percentage_change_monthly_cost":{"type":"integer","format":"int64"},"previous_monthly_cost":{"type":"string"}},"required":["diff","current_monthly_cost","previous_monthly_cost","diff_monthly_cost","percentage_change_monthly_cost"]},"CostResourcesCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmCostResource"}},"HarnessIacmCostResource":{"type":"object","properties":{"current_monthly_cost":{"type":"string"},"diff_monthly_cost":{"type":"string"},"name":{"type":"string"},"percentage_change_monthly_cost":{"type":"integer","format":"int64"},"previous_monthly_cost":{"type":"string"},"subresources":{"type":"object","description":"List of subresources for a resource","additionalProperties":{"$ref":"#/components/schemas/HarnessIacmCostSubresource"}}},"description":"Cost of the given resource","required":["name","current_monthly_cost","previous_monthly_cost","diff_monthly_cost","percentage_change_monthly_cost"]},"HarnessIacmCostSubresource":{"type":"object","properties":{"current_monthly_cost":{"type":"string"},"diff_monthly_cost":{"type":"string"},"percentage_change_monthly_cost":{"type":"integer","format":"int64"},"previous_monthly_cost":{"type":"string"}},"description":"Cost of the given subresource","required":["current_monthly_cost","previous_monthly_cost","diff_monthly_cost","percentage_change_monthly_cost"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Get dependency graph

> Get dependency graph for an execution

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/dependency-graph":{"get":{"tags":["executions"],"summary":"Get dependency graph","description":"Get dependency graph for an execution","operationId":"executions#get-dependency-graph","parameters":[{"name":"pipeline_stage_id","in":"query","allowEmptyValue":true,"schema":{"type":"string","default":""}},{"name":"path_id","in":"query","description":"Terragrunt path identifier for filtering module-specific graph","allowEmptyValue":true,"schema":{"type":"string","description":"Terragrunt path identifier for filtering module-specific graph"}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List resource changes

> List resource changes from the latest plan and state for this execution.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/resource-changes":{"get":{"tags":["executions"],"summary":"List resource changes","description":"List resource changes from the latest plan and state for this execution.","operationId":"executions#list-resource-changes","parameters":[{"name":"exclude_state","in":"query","description":"When true, exclude values from the state in the response","allowEmptyValue":true,"schema":{"type":"boolean","description":"When true, exclude values from the state in the response","default":false}},{"name":"pipeline_stage_id","in":"query","allowEmptyValue":true,"schema":{"type":"string","default":""}},{"name":"path_id","in":"query","description":"Terragrunt path identifier for filtering module-specific resources","allowEmptyValue":true,"schema":{"type":"string","description":"Terragrunt path identifier for filtering module-specific resources"}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResourceChangesResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ListResourceChangesResponse":{"type":"object","properties":{"data_sources":{"$ref":"#/components/schemas/ResourceCollection"},"drift_changes":{"$ref":"#/components/schemas/ChangedResourceCollection"},"has_dependency_graph":{"type":"boolean","description":"Whether dependency graph data is available"},"outputs":{"$ref":"#/components/schemas/OutputCollection2"},"pipeline_execution":{"type":"string","description":"the identifier of the pipeline execution changes were made from."},"pipeline_stage":{"type":"string","description":"the identifier of the pipeline stage execution changes were made from."},"planned_changes":{"$ref":"#/components/schemas/ChangedResourceCollection"},"resources":{"$ref":"#/components/schemas/ResourceCollection"},"risk_assessment":{"$ref":"#/components/schemas/RiskAssessment"},"stage_id":{"type":"string","description":"The stage ID"},"workspace_id":{"type":"string","description":"identifier of the workspace associated with the data"}},"required":["pipeline_execution","drift_changes","planned_changes","resources","data_sources","outputs","workspace_id","stage_id"]},"ResourceCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmResource"}},"HarnessIacmResource":{"type":"object","properties":{"attributes":{"type":"object","description":"A map of values related to the resource","additionalProperties":true},"createdAt":{"type":"integer","description":"Timestamp when the resource was created.","format":"int64"},"drift_attributes":{"type":"object","description":"A map of values related to the resource","additionalProperties":true},"drift_status":{"type":"string","description":"Indicates if this resource is experiencing drift.","enum":["changed","deleted","unchanged"]},"lastSyncedAt":{"type":"integer","description":"Timestamp when the resource was last updated.","format":"int64"},"mode":{"type":"string","description":"Mode associated with the resource.","enum":["resource","data","output"]},"module":{"type":"string","description":"Module associated with the resource."},"monthly_cost":{"type":"number","description":"Current period cost from CCM (null if no cost data).","format":"double"},"monthly_saving":{"type":"number","description":"Monthly potential saving from CCM (null if no cost data).","format":"double"},"name":{"type":"string","description":"Name associated with the resource."},"path_id":{"type":"string","description":"Path associated with the resource. Could be namespace, environment or stack id."},"provider":{"type":"string","description":"Cloud provider associated with the resource."},"recommendation_count":{"type":"integer","description":"Number of CCM recommendations for this resource (null if no cost data).","format":"int64"},"resource_id":{"type":"string","description":"Unique identifier for the resource from the cloud provider."},"sensitive_attributes":{"type":"array","items":{},"description":"A list of the sensitive attribute keys "},"type":{"type":"string","description":"Type of the provisioned resource."}},"description":"Represents an individual provisioned resource.","required":["provider","type","name","module","mode","path_id","resource_id","attributes","drift_status","drift_attributes","sensitive_attributes"]},"ChangedResourceCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmChangedResource"}},"HarnessIacmChangedResource":{"type":"object","properties":{"change":{"type":"string","description":"Change made to this resource.","enum":["added","changed","deleted","replaced","unchanged","imported","removed"]},"change_count":{"type":"integer","description":"Count of changes made to this resource.","format":"int64"},"changes":{"type":"object","description":"New values for this resource","additionalProperties":{"$ref":"#/components/schemas/ValueChange"}},"drift":{"type":"boolean","description":"Indicates whether this resource is experiencing drift"},"module":{"type":"string","description":"Module associated with the resource."},"name":{"type":"string","description":"Name associated with the resource."},"provider":{"type":"string","description":"Cloud provider associated with the resource."},"type":{"type":"string","description":"Type of the provisioned resource."}},"description":"Represents a change to an individual provisioned resource.","required":["provider","type","name","module","drift","change","change_count","changes","mode","path_id","resource_id","attributes","drift_status","drift_attributes","sensitive_attributes"]},"ValueChange":{"type":"object","properties":{"change":{"type":"string","description":"Change made to this resource.","enum":["added","changed","deleted","unchanged"]},"drift":{"type":"boolean","description":"Indicates whether this attribute is experiencing drift"},"new":{"type":"string","description":"Updated value"},"old":{"type":"string","description":"Previous value."},"sensitive":{"type":"boolean","description":"Indicates whether this value is sensitive"}},"required":["change","drift","sensitive"]},"OutputCollection2":{"$ref":"#/components/schemas/ChangedOutputCollection"},"ChangedOutputCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmChangedOutput"}},"HarnessIacmChangedOutput":{"type":"object","properties":{"change":{"type":"string","description":"Change made to this resource.","enum":["added","changed","deleted","unchanged"]},"expression":{"type":"string","description":"JEXL expression for dynamic output resolution"},"name":{"type":"string","description":"Name associated with the output."},"new":{"type":"string","description":"Updated value"},"old":{"type":"string","description":"Previous value."},"sensitive":{"type":"boolean","description":"Indicates whether this value is sensitive"},"stack_path":{"type":"string","description":"Stack path for Terragrunt workspaces"}},"description":"Represents an individual output variable.","required":["change","name","value","sensitive"]},"RiskAssessment":{"type":"object","properties":{"overall_risk_summary":{"$ref":"#/components/schemas/OverallRiskSummary"},"resource_risks":{"type":"object","description":"Risk data keyed by resource address","additionalProperties":{"$ref":"#/components/schemas/ResourceRisk"}}},"description":"Risk assessment containing overall summary and per-resource risks","required":["overall_risk_summary","resource_risks"]},"OverallRiskSummary":{"type":"object","properties":{"overall_level":{"type":"string","description":"Risk level category","enum":["LOW","MEDIUM","HIGH"]},"overall_score":{"type":"integer","description":"Overall deployment risk score from 1 to 10","format":"int64","minimum":1,"maximum":10},"reason":{"type":"string","description":"Human-readable explanation of the score"}},"description":"Deployment-wide risk assessment.","required":["overall_score","overall_level","reason"]},"ResourceRisk":{"type":"object","properties":{"risk_factors":{"type":"array","items":{"type":"string"},"description":"List of risk factors"},"risk_level":{"type":"string","description":"Risk level category","enum":["LOW","MEDIUM","HIGH"]},"risk_mitigation":{"type":"array","items":{"type":"string"},"description":"Mitigation recommendations (absent when no risk factors)"},"risk_score":{"type":"integer","description":"Risk score from 1 to 10","format":"int64","minimum":1,"maximum":10}},"description":"Risk assessment for an individual resource","required":["risk_score","risk_level","risk_factors"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## List resource changes for all stages

> List resource changes for all stages from the latest plan and state for this execution.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/resource-changes-all-stages":{"get":{"tags":["executions"],"summary":"List resource changes for all stages","description":"List resource changes for all stages from the latest plan and state for this execution.","operationId":"executions#list-resource-changes-all-stages","parameters":[{"name":"exclude_state","in":"query","description":"When true, exclude values from the state in the response","allowEmptyValue":true,"schema":{"type":"boolean","description":"When true, exclude values from the state in the response","default":false}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangedResourcesCollection"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ChangedResourcesCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmChangedResources"}},"HarnessIacmChangedResources":{"type":"object","properties":{"data_sources":{"$ref":"#/components/schemas/ResourceCollection"},"drift_changes":{"$ref":"#/components/schemas/ChangedResourceCollection"},"has_dependency_graph":{"type":"boolean","description":"Whether dependency graph data is available"},"outputs":{"$ref":"#/components/schemas/OutputCollection2"},"pipeline_execution":{"type":"string","description":"the identifier of the pipeline execution changes were made from."},"pipeline_stage":{"type":"string","description":"the identifier of the pipeline stage execution changes were made from."},"planned_changes":{"$ref":"#/components/schemas/ChangedResourceCollection"},"resources":{"$ref":"#/components/schemas/ResourceCollection"},"risk_assessment":{"$ref":"#/components/schemas/RiskAssessment"},"stage_id":{"type":"string","description":"The stage ID"},"workspace_id":{"type":"string","description":"identifier of the workspace associated with the data"}},"description":"Contains changed resources and outputs.","required":["pipeline_execution","drift_changes","planned_changes","resources","data_sources","outputs","workspace_id","stage_id"]},"ResourceCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmResource"}},"HarnessIacmResource":{"type":"object","properties":{"attributes":{"type":"object","description":"A map of values related to the resource","additionalProperties":true},"createdAt":{"type":"integer","description":"Timestamp when the resource was created.","format":"int64"},"drift_attributes":{"type":"object","description":"A map of values related to the resource","additionalProperties":true},"drift_status":{"type":"string","description":"Indicates if this resource is experiencing drift.","enum":["changed","deleted","unchanged"]},"lastSyncedAt":{"type":"integer","description":"Timestamp when the resource was last updated.","format":"int64"},"mode":{"type":"string","description":"Mode associated with the resource.","enum":["resource","data","output"]},"module":{"type":"string","description":"Module associated with the resource."},"monthly_cost":{"type":"number","description":"Current period cost from CCM (null if no cost data).","format":"double"},"monthly_saving":{"type":"number","description":"Monthly potential saving from CCM (null if no cost data).","format":"double"},"name":{"type":"string","description":"Name associated with the resource."},"path_id":{"type":"string","description":"Path associated with the resource. Could be namespace, environment or stack id."},"provider":{"type":"string","description":"Cloud provider associated with the resource."},"recommendation_count":{"type":"integer","description":"Number of CCM recommendations for this resource (null if no cost data).","format":"int64"},"resource_id":{"type":"string","description":"Unique identifier for the resource from the cloud provider."},"sensitive_attributes":{"type":"array","items":{},"description":"A list of the sensitive attribute keys "},"type":{"type":"string","description":"Type of the provisioned resource."}},"description":"Represents an individual provisioned resource.","required":["provider","type","name","module","mode","path_id","resource_id","attributes","drift_status","drift_attributes","sensitive_attributes"]},"ChangedResourceCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmChangedResource"}},"HarnessIacmChangedResource":{"type":"object","properties":{"change":{"type":"string","description":"Change made to this resource.","enum":["added","changed","deleted","replaced","unchanged","imported","removed"]},"change_count":{"type":"integer","description":"Count of changes made to this resource.","format":"int64"},"changes":{"type":"object","description":"New values for this resource","additionalProperties":{"$ref":"#/components/schemas/ValueChange"}},"drift":{"type":"boolean","description":"Indicates whether this resource is experiencing drift"},"module":{"type":"string","description":"Module associated with the resource."},"name":{"type":"string","description":"Name associated with the resource."},"provider":{"type":"string","description":"Cloud provider associated with the resource."},"type":{"type":"string","description":"Type of the provisioned resource."}},"description":"Represents a change to an individual provisioned resource.","required":["provider","type","name","module","drift","change","change_count","changes","mode","path_id","resource_id","attributes","drift_status","drift_attributes","sensitive_attributes"]},"ValueChange":{"type":"object","properties":{"change":{"type":"string","description":"Change made to this resource.","enum":["added","changed","deleted","unchanged"]},"drift":{"type":"boolean","description":"Indicates whether this attribute is experiencing drift"},"new":{"type":"string","description":"Updated value"},"old":{"type":"string","description":"Previous value."},"sensitive":{"type":"boolean","description":"Indicates whether this value is sensitive"}},"required":["change","drift","sensitive"]},"OutputCollection2":{"$ref":"#/components/schemas/ChangedOutputCollection"},"ChangedOutputCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmChangedOutput"}},"HarnessIacmChangedOutput":{"type":"object","properties":{"change":{"type":"string","description":"Change made to this resource.","enum":["added","changed","deleted","unchanged"]},"expression":{"type":"string","description":"JEXL expression for dynamic output resolution"},"name":{"type":"string","description":"Name associated with the output."},"new":{"type":"string","description":"Updated value"},"old":{"type":"string","description":"Previous value."},"sensitive":{"type":"boolean","description":"Indicates whether this value is sensitive"},"stack_path":{"type":"string","description":"Stack path for Terragrunt workspaces"}},"description":"Represents an individual output variable.","required":["change","name","value","sensitive"]},"RiskAssessment":{"type":"object","properties":{"overall_risk_summary":{"$ref":"#/components/schemas/OverallRiskSummary"},"resource_risks":{"type":"object","description":"Risk data keyed by resource address","additionalProperties":{"$ref":"#/components/schemas/ResourceRisk"}}},"description":"Risk assessment containing overall summary and per-resource risks","required":["overall_risk_summary","resource_risks"]},"OverallRiskSummary":{"type":"object","properties":{"overall_level":{"type":"string","description":"Risk level category","enum":["LOW","MEDIUM","HIGH"]},"overall_score":{"type":"integer","description":"Overall deployment risk score from 1 to 10","format":"int64","minimum":1,"maximum":10},"reason":{"type":"string","description":"Human-readable explanation of the score"}},"description":"Deployment-wide risk assessment.","required":["overall_score","overall_level","reason"]},"ResourceRisk":{"type":"object","properties":{"risk_factors":{"type":"array","items":{"type":"string"},"description":"List of risk factors"},"risk_level":{"type":"string","description":"Risk level category","enum":["LOW","MEDIUM","HIGH"]},"risk_mitigation":{"type":"array","items":{"type":"string"},"description":"Mitigation recommendations (absent when no risk factors)"},"risk_score":{"type":"integer","description":"Risk score from 1 to 10","format":"int64","minimum":1,"maximum":10}},"description":"Risk assessment for an individual resource","required":["risk_score","risk_level","risk_factors"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Get resource change counts

> Get resource-change badge totals for a sharded execution.

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/resource-changes/counts":{"get":{"tags":["executions"],"summary":"Get resource change counts","description":"Get resource-change badge totals for a sharded execution.","operationId":"executions#get-resource-change-counts","parameters":[{"name":"pipeline_stage_id","in":"query","description":"Pipeline execution stage ID","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Pipeline execution stage ID","minLength":1,"maxLength":128}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetResourceChangeCountsResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"GetResourceChangeCountsResponse":{"type":"object","properties":{"added":{"type":"integer","description":"Count of added resources in planned changes.","format":"int64"},"changed":{"type":"integer","description":"Count of changed resources in planned changes.","format":"int64"},"data_sources":{"type":"integer","description":"Badge for data_sources filter.","format":"int64"},"deleted":{"type":"integer","description":"Count of deleted resources in planned changes.","format":"int64"},"drift_added":{"type":"integer","description":"Count of added resources in drift changes.","format":"int64"},"drift_changed":{"type":"integer","description":"Count of changed resources in drift changes.","format":"int64"},"drift_changes":{"type":"integer","description":"Badge for drift_changes filter.","format":"int64"},"drift_deleted":{"type":"integer","description":"Count of deleted resources in drift changes.","format":"int64"},"drift_imported":{"type":"integer","description":"Count of imported resources in drift changes.","format":"int64"},"drift_removed":{"type":"integer","description":"Count of removed resources in drift changes.","format":"int64"},"drift_replaced":{"type":"integer","description":"Count of replaced resources in drift changes.","format":"int64"},"drift_unchanged":{"type":"integer","description":"Count of unchanged resources in drift changes, which unlike planned unchanged rows are part of the drift_changes total.","format":"int64"},"imported":{"type":"integer","description":"Count of imported resources in planned changes.","format":"int64"},"outputs":{"type":"integer","description":"Badge for outputs filter.","format":"int64"},"planned_changes":{"type":"integer","description":"Badge for planned_changes filter.","format":"int64"},"removed":{"type":"integer","description":"Count of removed resources in planned changes.","format":"int64"},"replaced":{"type":"integer","description":"Count of replaced resources in planned changes.","format":"int64"},"resources":{"type":"integer","description":"Badge for resources filter.","format":"int64"},"unchanged":{"type":"integer","description":"Count of unchanged resources (own lazy-loaded filter).","format":"int64"}},"required":["added","changed","deleted","replaced","unchanged","removed","imported","planned_changes","drift_changes","drift_added","drift_changed","drift_deleted","drift_replaced","drift_unchanged","drift_removed","drift_imported","resources","data_sources","outputs"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

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

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/resource-changes/pages/{category}":{"get":{"tags":["executions"],"summary":"Get resource change page","description":"Get one fixed-size page of resource-changes for a given category.\n\nRows in the planned_changes and drift_changes categories are ordered by change-type\npriority (deleted, replaced, added, changed, unchanged, removed, imported), so page 1 holds\nthe most actionable rows and a client need not sort what it receives. Those two\ncategories also accept the change parameter, which pages over a single change type\nwith its own totals rather than filtering the rows a page happens to hold.","operationId":"executions#get-resource-change-page","parameters":[{"name":"pipeline_stage_id","in":"query","description":"Pipeline execution stage ID","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Pipeline execution stage ID","minLength":1,"maxLength":128}},{"name":"page","in":"query","description":"1-indexed page number to fetch.","allowEmptyValue":true,"schema":{"type":"integer","description":"1-indexed page number to fetch.","default":1,"format":"int64","minimum":1}},{"name":"change","in":"query","description":"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.","allowEmptyValue":true,"schema":{"type":"string","description":"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"]}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"category","in":"path","description":"The category to paginate over.","required":true,"schema":{"type":"string","description":"The category to paginate over.","enum":["planned_changes","unchanged","drift_changes","resources","data_sources","outputs"]}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetResourceChangePageResponse"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"GetResourceChangePageResponse":{"type":"object","properties":{"changed_resources":{"$ref":"#/components/schemas/ChangedResourceCollection"},"filter":{"type":"string","description":"The filter this page belongs to.","enum":["planned_changes","unchanged","drift_changes","resources","data_sources","outputs"]},"outputs":{"$ref":"#/components/schemas/OutputCollection2"},"page":{"type":"integer","description":"1-indexed page number returned.","format":"int64"},"pageSize":{"type":"integer","description":"Fixed page size.","format":"int64"},"resources":{"$ref":"#/components/schemas/ResourceCollection"},"totalItems":{"type":"integer","description":"Total items available in this filter.","format":"int64"},"totalPages":{"type":"integer","description":"Total pages available in this filter.","format":"int64"}},"required":["filter","page","totalItems","totalPages","pageSize"]},"ChangedResourceCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmChangedResource"}},"HarnessIacmChangedResource":{"type":"object","properties":{"change":{"type":"string","description":"Change made to this resource.","enum":["added","changed","deleted","replaced","unchanged","imported","removed"]},"change_count":{"type":"integer","description":"Count of changes made to this resource.","format":"int64"},"changes":{"type":"object","description":"New values for this resource","additionalProperties":{"$ref":"#/components/schemas/ValueChange"}},"drift":{"type":"boolean","description":"Indicates whether this resource is experiencing drift"},"module":{"type":"string","description":"Module associated with the resource."},"name":{"type":"string","description":"Name associated with the resource."},"provider":{"type":"string","description":"Cloud provider associated with the resource."},"type":{"type":"string","description":"Type of the provisioned resource."}},"description":"Represents a change to an individual provisioned resource.","required":["provider","type","name","module","drift","change","change_count","changes","mode","path_id","resource_id","attributes","drift_status","drift_attributes","sensitive_attributes"]},"ValueChange":{"type":"object","properties":{"change":{"type":"string","description":"Change made to this resource.","enum":["added","changed","deleted","unchanged"]},"drift":{"type":"boolean","description":"Indicates whether this attribute is experiencing drift"},"new":{"type":"string","description":"Updated value"},"old":{"type":"string","description":"Previous value."},"sensitive":{"type":"boolean","description":"Indicates whether this value is sensitive"}},"required":["change","drift","sensitive"]},"OutputCollection2":{"$ref":"#/components/schemas/ChangedOutputCollection"},"ChangedOutputCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmChangedOutput"}},"HarnessIacmChangedOutput":{"type":"object","properties":{"change":{"type":"string","description":"Change made to this resource.","enum":["added","changed","deleted","unchanged"]},"expression":{"type":"string","description":"JEXL expression for dynamic output resolution"},"name":{"type":"string","description":"Name associated with the output."},"new":{"type":"string","description":"Updated value"},"old":{"type":"string","description":"Previous value."},"sensitive":{"type":"boolean","description":"Indicates whether this value is sensitive"},"stack_path":{"type":"string","description":"Stack path for Terragrunt workspaces"}},"description":"Represents an individual output variable.","required":["change","name","value","sensitive"]},"ResourceCollection":{"type":"array","items":{"$ref":"#/components/schemas/HarnessIacmResource"}},"HarnessIacmResource":{"type":"object","properties":{"attributes":{"type":"object","description":"A map of values related to the resource","additionalProperties":true},"createdAt":{"type":"integer","description":"Timestamp when the resource was created.","format":"int64"},"drift_attributes":{"type":"object","description":"A map of values related to the resource","additionalProperties":true},"drift_status":{"type":"string","description":"Indicates if this resource is experiencing drift.","enum":["changed","deleted","unchanged"]},"lastSyncedAt":{"type":"integer","description":"Timestamp when the resource was last updated.","format":"int64"},"mode":{"type":"string","description":"Mode associated with the resource.","enum":["resource","data","output"]},"module":{"type":"string","description":"Module associated with the resource."},"monthly_cost":{"type":"number","description":"Current period cost from CCM (null if no cost data).","format":"double"},"monthly_saving":{"type":"number","description":"Monthly potential saving from CCM (null if no cost data).","format":"double"},"name":{"type":"string","description":"Name associated with the resource."},"path_id":{"type":"string","description":"Path associated with the resource. Could be namespace, environment or stack id."},"provider":{"type":"string","description":"Cloud provider associated with the resource."},"recommendation_count":{"type":"integer","description":"Number of CCM recommendations for this resource (null if no cost data).","format":"int64"},"resource_id":{"type":"string","description":"Unique identifier for the resource from the cloud provider."},"sensitive_attributes":{"type":"array","items":{},"description":"A list of the sensitive attribute keys "},"type":{"type":"string","description":"Type of the provisioned resource."}},"description":"Represents an individual provisioned resource.","required":["provider","type","name","module","mode","path_id","resource_id","attributes","drift_status","drift_attributes","sensitive_attributes"]},"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```

## Get risk assessment

> Get risk assessment for an execution

```json
{"openapi":"3.0.3","info":{"title":"Infrastructure as Code Management","version":"0.1.0"},"tags":[{"name":"executions","description":"Executions Service handles the API for workflow executions.\n\nAt this time it is a read-only API with no ability to directly create or edit\nexecutions. Instead these are triggered from the Workspaces Service."}],"servers":[{"url":"http://localhost:80"}],"paths":{"/api/orgs/{org}/projects/{project}/executions/{pipeline_execution_id}/risk-assessment":{"get":{"tags":["executions"],"summary":"Get risk assessment","description":"Get risk assessment for an execution","operationId":"executions#get-risk-assessment","parameters":[{"name":"pipeline_stage_id","in":"query","allowEmptyValue":true,"schema":{"type":"string","default":""}},{"name":"path_id","in":"query","description":"Terragrunt path identifier for filtering module-specific risk data","allowEmptyValue":true,"schema":{"type":"string","description":"Terragrunt path identifier for filtering module-specific risk data"}},{"name":"org","in":"path","description":"Org is the organisation identifier.","required":true,"schema":{"type":"string","description":"Org is the organisation identifier.","minLength":1,"maxLength":128}},{"name":"project","in":"path","description":"Project is the project identifier.","required":true,"schema":{"type":"string","description":"Project is the project identifier.","minLength":1,"maxLength":128}},{"name":"pipeline_execution_id","in":"path","description":"Pipeline execution ID","required":true,"schema":{"type":"string","description":"Pipeline execution ID","minLength":1,"maxLength":128}},{"name":"Harness-Account","in":"header","description":"Account is the internal customer account ID.","allowEmptyValue":true,"required":true,"schema":{"type":"string","description":"Account is the internal customer account ID.","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"BadRequestError: Bad Request response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UnauthorizedError: Unauthorized response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"ForbiddenError: Forbidden response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFoundError: Not Found response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"TimeoutError: Request Timeout response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"ConflictError: Conflict response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"LockedError: Locked response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"499":{"description":"ContextCancelledError:  response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError: Internal Server Error response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"BadGatewayError: Bad Gateway response.","content":{"application/vnd.goa.error":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"fault":{"type":"boolean","description":"Is the error a server-side fault?"},"id":{"type":"string","description":"ID is a unique identifier for this particular occurrence of the problem."},"message":{"type":"string","description":"Message is a human-readable explanation specific to this occurrence of the problem."},"name":{"type":"string","description":"Name is the name of this class of errors."},"temporary":{"type":"boolean","description":"Is the error temporary?"},"timeout":{"type":"boolean","description":"Is the error a timeout?"}},"required":["name","id","message","temporary","timeout","fault"]}}}}
```
