# Обучение

Операций в разделе: **57**.

> у 30 описание выведено из имени операции, у 3 описания пока нет вовсе. Спецификация написана каталогом путей, прозы для них там не было; выдумывать поведение мы не стали. Подробнее — [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

## GET /certificates/{number}

публичная проверка, без авторизации

**В пути:** `number`

**Запрос:**

```bash
curl -X GET 'https://school.example.com/certificates/{number}' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `404`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/assignments

Список заданий школы. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/assignments' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/assignments

Создать задание. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/assignments' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## DELETE /v1/assignments/{id}

Удалить задание. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X DELETE 'https://school.example.com/api/v1/assignments/{id}' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## PATCH /v1/assignments/{id}

Изменить задание. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X PATCH 'https://school.example.com/api/v1/assignments/{id}' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/certificate-templates

Список шаблонов сертификатов школы. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/certificate-templates' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/certificate-templates

Создать шаблон сертификата. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/certificate-templates' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## DELETE /v1/certificate-templates/{id}

(пока не выдано)

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X DELETE 'https://school.example.com/api/v1/certificate-templates/{id}' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## PATCH /v1/certificate-templates/{id}

Изменить шаблон сертификата. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X PATCH 'https://school.example.com/api/v1/certificate-templates/{id}' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/certificates

Список выданных сертификатов. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/certificates' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/certificates

выдать (идемпотентно по паре ученик+курс)

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/certificates' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/certificates/{id}/file

скачать

**В пути:** `id`

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/certificates/{id}/file' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `401`, `403`, `404`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/courses

Список курсов школы. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/courses' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/courses

Создать курс. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/courses' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## DELETE /v1/courses/{id}

Удалить курс. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X DELETE 'https://school.example.com/api/v1/courses/crs_01HQZX41B7RC9S' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/courses/{id}

Курс по идентификатору. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

**В пути:** `id`

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

- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/courses/crs_01HQZX41B7RC9S' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `404`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## PATCH /v1/courses/{id}

Изменить курс. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X PATCH 'https://school.example.com/api/v1/courses/crs_01HQZX41B7RC9S' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/courses/{id}/publish

публикация / снятие

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/courses/crs_01HQZX41B7RC9S/publish' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/courses/{id}/stats

доходимость, прогресс, воронка по урокам

**В пути:** `id`

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/courses/crs_01HQZX41B7RC9S/stats' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `404`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/enrollments

кто на каком курсе

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/enrollments' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/enrollments

записать на курс (выдать доступ) со streamId дата старта берётся из потока, своя startedAt при этом отклоняется

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/enrollments' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## DELETE /v1/enrollments/{id}

отозвать доступ

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X DELETE 'https://school.example.com/api/v1/enrollments/enr_01HQZX52NAQF7V' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## PATCH /v1/enrollments/{id}

сменить куратора, продлить, заморозить

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X PATCH 'https://school.example.com/api/v1/enrollments/enr_01HQZX52NAQF7V' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/enrollments/{id}/override

индивидуальное исключение доступа

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/enrollments/enr_01HQZX52NAQF7V/override' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/enrollments/{id}/progress

прогресс по всем урокам

**В пути:** `id`

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/enrollments/enr_01HQZX52NAQF7V/progress' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `404`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/lesson-access/{userId}/{lessonId}

открыт ли урок и ПОЧЕМУ. Возвращает { open, reason, will_open_at, blocked_by } Тот же движок, что и в интерфейсе — одна логика, а не две.

**В пути:** `userId`, `lessonId`

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

- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/lesson-access/{userId}/{lessonId}' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `401`, `403`, `404`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/lessons

Список уроков школы. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/lessons' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/lessons

Создать урок. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/lessons' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## DELETE /v1/lessons/{id}

Удалить урок. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X DELETE 'https://school.example.com/api/v1/lessons/lsn_01HQZX4G2XVD5T' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## PATCH /v1/lessons/{id}

Изменить урок. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X PATCH 'https://school.example.com/api/v1/lessons/lsn_01HQZX4G2XVD5T' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/lessons/{id}/access-rule

правило открытия

**В пути:** `id`

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/lessons/lsn_01HQZX4G2XVD5T/access-rule' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `404`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## PUT /v1/lessons/{id}/access-rule

_Назначение пока не описано: из имени операции оно не следует, а в спецификации его нет. Описание пишется отдельно._

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X PUT 'https://school.example.com/api/v1/lessons/lsn_01HQZX4G2XVD5T/access-rule' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/lessons/{id}/content

дерево блоков урока

**В пути:** `id`

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/lessons/lsn_01HQZX4G2XVD5T/content' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `404`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## PUT /v1/lessons/{id}/content

заменить содержимое целиком

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X PUT 'https://school.example.com/api/v1/lessons/lsn_01HQZX4G2XVD5T/content' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/lessons/{id}/translations

переводы урока

**В пути:** `id`

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/lessons/lsn_01HQZX4G2XVD5T/translations' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `404`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## PUT /v1/lessons/{id}/translations/{locale}

_Назначение пока не описано: из имени операции оно не следует, а в спецификации его нет. Описание пишется отдельно._

**В пути:** `id`, `locale`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X PUT 'https://school.example.com/api/v1/lessons/lsn_01HQZX4G2XVD5T/translations/{locale}' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/modules

Список модулей школы. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/modules' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/modules

Создать модуль. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/modules' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## DELETE /v1/modules/{id}

Удалить модуль. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X DELETE 'https://school.example.com/api/v1/modules/{id}' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## PATCH /v1/modules/{id}

Изменить модуль. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X PATCH 'https://school.example.com/api/v1/modules/{id}' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/modules/reorder

изменить порядок пачкой

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/modules/reorder' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/quiz-attempts

попытки прохождения

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/quiz-attempts' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/quiz-attempts

зафиксировать попытку

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/quiz-attempts' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/quiz-attempts/{id}/grant-retry

_Назначение пока не описано: из имени операции оно не следует, а в спецификации его нет. Описание пишется отдельно._

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/quiz-attempts/{id}/grant-retry' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `201`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/quizzes

Список тестов школы. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/quizzes' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/quizzes

Создать тест. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/quizzes' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## DELETE /v1/quizzes/{id}

Удалить тест. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X DELETE 'https://school.example.com/api/v1/quizzes/{id}' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## PATCH /v1/quizzes/{id}

Изменить тест. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X PATCH 'https://school.example.com/api/v1/quizzes/{id}' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/quizzes/{id}/questions

Список вопросов теста. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

**В пути:** `id`

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/quizzes/{id}/questions' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `401`, `403`, `404`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/quizzes/{id}/questions

Создать вопрос теста. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/quizzes/{id}/questions' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `201`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## DELETE /v1/quizzes/{id}/questions/{questionId}

Удалить вопрос теста. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`, `questionId`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X DELETE 'https://school.example.com/api/v1/quizzes/{id}/questions/{questionId}' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## PATCH /v1/quizzes/{id}/questions/{questionId}

Изменить вопрос теста. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

> ⚠️ **Адрес предположительный.** В спецификации он не написан прямо — он выведен из сокращённой записи каталога («`POST, PATCH, DELETE`»). Когда API будет реализовано, адрес может оказаться другим. Не закладывайтесь на него в коде.

**В пути:** `id`, `questionId`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X PATCH 'https://school.example.com/api/v1/quizzes/{id}/questions/{questionId}' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

Вместо `{…}` подставьте идентификатор объекта — про их формат в разделе [Формат](/api/format/#identifikatory).

**Коды ответа:** `200`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/submissions

ответы на ДЗ, фильтры по статусу и куратору

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

- `limit` — сколько вернуть, 1…1000, по умолчанию 50
- `cursor` — позиция продолжения из `next_cursor`
- `sort` — сортировка, минус для убывания
- `expand` — развернуть связи
- `fields` — вернуть только эти поля
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/submissions' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/submissions

отправить ответ (можно от имени ученика)

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/submissions' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## GET /v1/submissions/{id}

Ответ по идентификатору. <small>Фраза выведена из имени операции: в спецификации описания нет.</small>

**В пути:** `id`

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

- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X GET 'https://school.example.com/api/v1/submissions/sub_01HQZX5PDMWG3W' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Accept: application/json'
```

**Коды ответа:** `200`, `401`, `403`, `404`, `429`, `500`, `503`.

> **Чего здесь нет:** состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/submissions/{id}/lock

взять на проверку (защита от коллизии кураторов)

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/submissions/sub_01HQZX5PDMWG3W/lock' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).

## POST /v1/submissions/{id}/review

принять / отклонить + комментарий + вложения

**В пути:** `id`

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

- `Idempotency-Key` — заголовок, защита от двойного выполнения
- `X-On-Behalf-Of` — заголовок, действие от лица пользователя

**Запрос:**

```bash
curl -X POST 'https://school.example.com/api/v1/submissions/sub_01HQZX5PDMWG3W/review' \
  -H 'Authorization: Bearer lms_live_a8f3c1e9d2b74a5f8e0c1d3b5a7f9e2c' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 6f1e2a34-9c8b-4d7e-a1f0-3b5c7d9e1f2a' \
  -H 'Accept: application/json'
```

**Коды ответа:** `201`, `400`, `401`, `403`, `404`, `409`, `422`, `429`, `500`, `503`.

> **Чего здесь нет:** тело запроса и состав полей ответа. Публичного API в продукте пока нет, выводить состав полей не из чего — см. [Чего в справочнике ещё нет](/api/reference/#chego-v-spravochnike-eshhe-net).

Как выглядит ошибка и что делать с каждым кодом — в разделе [Ошибки](/api/errors/).
