> 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/infrastructure-as-code-management/iacm-api-reference/executions/upload-resource-change-page.md).

# 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, added, changed, unchanged, removed, imported).

The body is a JSON array whose element shape depends on {category}:

planned\_changes | unchanged | drift\_changes -> ChangedResource\[] resources | data\_sources -> Resource\[] outputs -> Output\[]

Example body (category=planned\_changes):

```json
[
  {
    "provider": "AWS",
    "type": "aws_s3_bucket",
    "name": "app_bucket",
    "module": "root",
    "change": "added",
    "change_count": 1,
    "drift": false,
    "changes": {
      "bucket": { "change": "added", "old": "", "new": "my-bucket" }
    }
  }
]
```

Example body (category=resources):

```json
[
  {
    "provider": "AWS",
    "type": "aws_instance",
    "name": "app_server",
    "module": "root",
    "mode": "resource",
    "path_id": "namespace",
    "resource_id": "i-0abc123",
    "attributes": { "instance_type": "t2.micro" },
    "drift_status": "unchanged",
    "drift_attributes": {},
    "sensitive_attributes": []
  }
]
```

````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, 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","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"]}}}}
````
