---
title: "Save a template project workspace"
method: POST
path: "/v1/templates/{id}/workspace/save"
tags: ["Templates"]
---

# Save a template project workspace

`POST /v1/templates/{id}/workspace/save`

## Request

- Base URL: `https://api.samva.dev`
- URL: `https://api.samva.dev/v1/templates/{id}/workspace/save`
- Auth: API key in header `x-api-key`

Validates the effective project tree and saves it as one Git commit on the template repository's default branch.

## Path parameters

- `id` string, required

## Request body

- object
  - `expectedRevision` string, required
  - `expectedHead` string, required
  - `message` string, required
  - `idempotencyKey` string, required

## Response `200`

Success

- object
  - `commit` string, required
  - `parentCommit` string, required
  - `tree` string, required
  - `revision` string, required
  - `changedPaths` string[], required
  - `sourceDigest` string, required
  - `buildDigest` string, required
  - `warnings` object[], required
    - `code` string, required
    - `severity` 'error' | 'warning' | 'info', required
    - `message` string, required
    - `origins` object[], required
      - `fileName` string, required
      - `lineNumber` integer, required
      - `columnNumber` integer, required
    - `clients` string[], nullable
    - `notes` string, nullable
    - `provenance` string, nullable
    - `fixtures` string[], nullable
    - `occurrences` array[], nullable
      - object[]
        - `fileName` string, required
        - `lineNumber` integer, required
        - `columnNumber` integer, required
    - `compatibility` object, nullable
      - `assessment` 'risk' | 'degradation' | 'unverified' | 'not-applicable', required
      - `title` string, required
  - `incompatibilities` object[], required
    - `code` string, required
    - `severity` 'error' | 'warning' | 'info', required
    - `message` string, required
    - `origins` object[], required
      - `fileName` string, required
      - `lineNumber` integer, required
      - `columnNumber` integer, required
    - `clients` string[], nullable
    - `notes` string, nullable
    - `provenance` string, nullable
    - `fixtures` string[], nullable
    - `occurrences` array[], nullable
      - object[]
        - `fileName` string, required
        - `lineNumber` integer, required
        - `columnNumber` integer, required
    - `compatibility` object, nullable
      - `assessment` 'risk' | 'degradation' | 'unverified' | 'not-applicable', required
      - `title` string, required

## Other responses

- `401`: UnauthorizedError
- `403`: ForbiddenError
- `404`: ResourceNotFoundError
- `409`: ConflictError
- `422`: ValidationError
- `500`: InternalError
- `504`: GatewayTimeoutError

---

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