# Сохранить шаблон целиком

export default function Layout(props) {
  const { OpenAPIPage } = props.components ?? {};
  return (
    <>
      {props.children}
      ## Сохранить шаблон целиком

`POST /api/v1/smartdoc/documents/{id}/save`

**Авторизация:** dpop или oauth2: `smartdoc:write`

**Параметры**

| Имя | Где | Обязательный | Тип | Описание |
| --- | --- | --- | --- | --- |
| `id` | path | да | string (uuid) | Идентификатор шаблона |

**Тело запроса** (`application/json`, обязательное): object
- `blocks`: массив object, обязательное — Полный новый состав блоков; отсутствующие блоки удаляются
  - `depth`: integer, обязательное — Уровень вложенности (с 0)
  - `id`: string — Идентификатор существующего блока; без id блок создаётся
  - `label`: string, обязательное — Подпись блока в редакторе
  - `order`: integer, обязательное — Позиция блока в шаблоне (с 0)
  - `renderAs`: "text" | "table" — Отображение блока: текст или таблица
  - `template`: string, обязательное — Шаблон текста блока с плейсхолдерами {переменная}
  - `type`: string, обязательное — Тип блока
  - `variables`: object, обязательное — Значения переменных блока
- `title`: string, обязательное — Название шаблона

**Ответы**

- `200` — Шаблон сохранён (`application/json`, Document)
  - `blocks`: массив Block — Блоки шаблона
    - `depth`: number, обязательное — Уровень вложенности
    - `id`: string, обязательное — Идентификатор блока
    - `label`: string, обязательное — Подпись блока
    - `order`: number, обязательное — Позиция в шаблоне
    - `template`: string, обязательное — Шаблон текста блока
    - `type`: string, обязательное — Тип блока
    - `variables`: object — Значения переменных блока
  - `createdAt`: string — Когда создан, ISO 8601
  - `folderId`: string, nullable — Папка; null — корень
  - `id`: string, обязательное — Идентификатор шаблона
  - `status`: string, обязательное — Статус шаблона
  - `title`: string, обязательное — Название шаблона
  - `updatedAt`: string — Когда обновлён, ISO 8601
  - `userId`: string — Владелец шаблона
- `400` — Некорректный запрос: не прошла валидация параметров или тела (`application/problem+json`, ProblemDetails)
- `401` — Токен отсутствует, недействителен или истёк (`application/problem+json`, ProblemDetails)
- `403` — Недостаточно прав или scope (`application/problem+json`, ProblemDetails)

    </>
  );
}
