---
title: "Diff two versions of a template (path, change, before, after)"
method: GET
path: "/v1/organizations/{organization_id}/templates/{slug}/diff"
tags: ["Templates"]
---

# Diff two versions of a template (path, change, before, after)

`GET /v1/organizations/{organization_id}/templates/{slug}/diff`

## Request

- Base URL: `https://api.shardflux.dev`
- URL: `https://api.shardflux.dev/v1/organizations/{organization_id}/templates/{slug}/diff`
- Auth: HTTP bearer

`from` is a version number of this template or `base` (the `to` version’s build base, which may be a platform version). Keyset-paginated by path; `path_prefix` narrows it (string prefix), `change` filters one kind. The first page (no cursor) carries `summary`. 409 file_list_unavailable / file_list_indexing when either version has no loaded file list.

## Path parameters

- `organization_id` string, uuid, required
- `slug` string, required

## Query parameters

- `from` string, required
- `to` integer, required
- `path_prefix` string
- `change` 'added' | 'removed' | 'changed' | 'type_changed' | 'metadata'
- `limit` integer
- `cursor` string
- `owner` 'platform' | 'organization'

## Response `200`

Default Response

- TemplateDiffPage
  - `from` object, required
    - `template_version_id` string, uuid, required: UUIDv7, lowercase canonical form.
    - `slug` string, required
    - `version` integer, required
  - `to` object, required
    - `template_version_id` string, uuid, required: UUIDv7, lowercase canonical form.
    - `slug` string, required
    - `version` integer, required
  - `data` TemplateDiffEntry[], required
    - `path` string, required
    - `change` 'added' | 'removed' | 'changed' | 'type_changed' | 'metadata', required: added (absent in from), removed (absent in to), changed (file SHA-256 or symlink target differs), type_changed, metadata (only mode, uid or gid differs).
    - `before` object, nullable, required
      - `type` 'file' | 'dir' | 'symlink' | 'char' | 'block' | 'fifo', required
      - `size_bytes` integer, required
      - `sha256` string, nullable, required
      - `mode` integer, required
      - `uid` integer, required
      - `gid` integer, required
      - `link_target` string, nullable, required
    - `after` object, nullable, required
      - `type` 'file' | 'dir' | 'symlink' | 'char' | 'block' | 'fifo', required
      - `size_bytes` integer, required
      - `sha256` string, nullable, required
      - `mode` integer, required
      - `uid` integer, required
      - `gid` integer, required
      - `link_target` string, nullable, required
  - `next_cursor` string, nullable, required
  - `summary` object, nullable, required: Whole-diff totals (within path_prefix), on the first page only.
    - `added` integer, required
    - `removed` integer, required
    - `changed` integer, required
    - `type_changed` integer, required
    - `metadata` integer, required
    - `bytes_added` integer, required: Bytes of added files, plus the growth of changed files.
    - `bytes_removed` integer, required: Bytes of removed files, plus the shrinkage of changed files.

## Other responses

- `4XX`: Default Response
- `5XX`: Default Response

---

[API](https://skmtc.dev/shardflux/apis/shardflux-api.md) · [All operations](https://skmtc.dev/shardflux/apis/shardflux-api/llms.txt) · [OpenAPI document](https://skmtc.dev/shardflux/apis/shardflux-api/revisions/ea685f7b39c4?raw)
