Versions

IcePanel uses a versioning system to let you maintain a live working model while also capturing point-in-time snapshots for communication and history.


The latest version

Every landscape has a special version with the ID latest. This is the live version where you make changes through the IcePanel UI or the API.

Use latest in any version-scoped endpoint:

GET /landscapes/{landscapeId}/versions/latest/model/objects
POST /landscapes/{landscapeId}/versions/latest/model/objects

Version snapshots

A version snapshot is an immutable copy of the model at a point in time. Snapshots are useful for:

  • Marking a release or milestone
  • Sharing a stable view of the architecture with stakeholders
  • Reverting to a known-good state

Create a snapshot from the current state of latest:

POST
/v1/landscapes/:landscapeId/versions
1import { IcePanelClient } from "@icepanel/sdk";
2
3async function main() {
4 const client = new IcePanelClient({
5 apiKey: "YOUR_API_KEY_HERE",
6 });
7 await client.versions.create("landscapeId", {
8 body: {
9 modelHandleId: "string",
10 name: "string",
11 notes: "string",
12 },
13 });
14}
15main();

Required fields:

FieldDescription
nameVersion name, e.g. v2.4.0 or Q3 2025
notesDescription of what changed in this version
modelHandleIdThe handleId of the root model object to snapshot

Once created, a snapshot version is read-only. Its ID is a system-generated string (not latest).

List all versions for a landscape:

GET
/v1/landscapes/:landscapeId/versions
1import { IcePanelClient } from "@icepanel/sdk";
2
3async function main() {
4 const client = new IcePanelClient({
5 apiKey: "YOUR_API_KEY_HERE",
6 });
7 await client.versions.list("landscapeId");
8}
9main();

Version reverts

Roll back a landscape to the state captured in a previous snapshot:

POST
/v1/landscapes/:landscapeId/version/reverts
1import { IcePanelClient } from "@icepanel/sdk";
2
3async function main() {
4 const client = new IcePanelClient({
5 apiKey: "YOUR_API_KEY_HERE",
6 });
7 await client.versions.reverts.create("landscapeId", {
8 body: {
9 notes: "string",
10 versionId: "string",
11 },
12 });
13}
14main();

Required fields:

FieldDescription
versionIdThe snapshot to revert to
notesReason for the revert

A revert creates a new entry in the revert history and replaces the latest version with the snapshot state. The snapshot itself is not modified.