# Policy Versioning
Every policy update creates a new version for audit trail and rollback.
Version History
typescript
1const policy = await api.policies.get('production-policy');23console.log(policy._version); // 34console.log(policy._hash); // SHA256 hash5console.log(policy._created_at); // Timestamp67// List all versions8const versions = await api.policies.listVersions('production-policy');910// Get a specific version11const v1 = await api.policies.getVersion('production-policy', 1);
Diff Between Versions
typescript
1// Compare versions2const diff = await api.policies.diff('production-policy', 1, 2);34console.log(diff);5// {6// added: [{ id: 'new-rule', ... }],7// removed: [{ id: 'old-rule', ... }],8// modified: [{9// before: { id: 'rule-1', priority: 50, ... },10// after: { id: 'rule-1', priority: 100, ... }11// }]12// }
Rollback
typescript
1// Rollback to a previous version2// This creates a new version with the old content3const rolledBack = await api.policies.rollback('production-policy', 1);45console.log(rolledBack._version); // 4 (new version)67// The policy content matches version 18// but version history is preserved
Local Policy Store
typescript
1import { PolicyStore } from '@solongate/sdk';23// Initialize with file-based storage4const store = new PolicyStore({5 path: './policies',6 format: 'json', // or 'yaml'7});89// Save a policy (creates new version)10await store.save(policy);1112// List versions13const versions = store.listVersions('my-policy');1415// Get specific version16const v2 = store.getVersion('my-policy', 2);1718// Diff versions19const diff = store.diff('my-policy', 1, 2);2021// Rollback22store.rollback('my-policy', 1);