Download OpenAPI specification:
Учебный стандартизированный REST API
Учебный API системы регистрации обращений в службу поддержки.
docs/API_STYLE_GUIDE.md, источники правил — docs/STANDARDS.md.application/problem+json.demo-token — запись, viewer-token — только чтение./api/v1.X-Request-Id. Обращение отдаётся с ETag, изменение принимает If-Match.Возвращает страницу обращений. Размер страницы ограничен параметром limit.
TicketStatus (string) or Status (null) (Status) Показать только обращения с этим статусом | |
| limit | integer (Limit) [ 1 .. 100 ] Default: 20 Сколько обращений вернуть, от 1 до 100 |
| offset | integer (Offset) >= 0 Default: 0 Сколько обращений пропустить от начала выборки |
{- "items": [
- {
- "created_at": "2026-09-15T17:30:00Z",
- "description": "Ошибка подключения после обновления клиента",
- "id": "8d45c3e2-7f1a-4c55-9a39-2b1f0e6d4a10",
- "status": "open",
- "title": "Не работает VPN",
- "updated_at": "2026-09-15T17:30:00Z"
}
], - "total": 0,
- "limit": 0,
- "offset": 0
}Регистрирует новое обращение со статусом open. Идентификатор формирует сервер. Повтор запроса с тем же Idempotency-Key и тем же телом не создаёт второе обращение.
Idempotency-Key (string) or Idempotency-Key (null) (Idempotency-Key) Уникальный ключ запроса. Повтор с тем же ключом и телом вернёт первый результат |
| title required | string (Title) [ 3 .. 120 ] characters Короткая суть обращения |
| description | string (Description) <= 2000 characters Default: "" Что делали и что увидели |
{- "description": "Ошибка подключения после обновления клиента",
- "title": "Не работает VPN"
}{- "created_at": "2026-09-15T17:30:00Z",
- "description": "Ошибка подключения после обновления клиента",
- "id": "8d45c3e2-7f1a-4c55-9a39-2b1f0e6d4a10",
- "status": "open",
- "title": "Не работает VPN",
- "updated_at": "2026-09-15T17:30:00Z"
}Устарело с 16.09.2026, будет отключено 01.03.2027. Используйте GET /api/v1/tickets?status=open. Ответ содержит заголовки Deprecation (RFC 9745) и Sunset (RFC 8594).
| limit | integer (Limit) [ 1 .. 100 ] Default: 20 Сколько обращений вернуть, от 1 до 100 |
| offset | integer (Offset) >= 0 Default: 0 Сколько обращений пропустить от начала выборки |
{- "items": [
- {
- "created_at": "2026-09-15T17:30:00Z",
- "description": "Ошибка подключения после обновления клиента",
- "id": "8d45c3e2-7f1a-4c55-9a39-2b1f0e6d4a10",
- "status": "open",
- "title": "Не работает VPN",
- "updated_at": "2026-09-15T17:30:00Z"
}
], - "total": 0,
- "limit": 0,
- "offset": 0
}Возвращает одно обращение. Если If-None-Match совпадает с текущим ETag, сервер отвечает 304 без тела.
| ticket_id required | string <uuid> (Ticket Id) |
If-None-Match (string) or If-None-Match (null) (If-None-Match) ETag, полученный ранее |
{- "created_at": "2026-09-15T17:30:00Z",
- "description": "Ошибка подключения после обновления клиента",
- "id": "8d45c3e2-7f1a-4c55-9a39-2b1f0e6d4a10",
- "status": "open",
- "title": "Не работает VPN",
- "updated_at": "2026-09-15T17:30:00Z"
}Меняет только переданные поля. Если передан If-Match и обращение за это время изменилось, сервер отвечает 412 и ничего не меняет.
| ticket_id required | string <uuid> (Ticket Id) |
If-Match (string) or If-Match (null) (If-Match) ETag версии, которую клиент видел перед изменением |
Title (string) or Title (null) (Title) | |
Description (string) or Description (null) (Description) | |
TicketStatus (string) or null |
{- "status": "closed"
}{- "created_at": "2026-09-15T17:30:00Z",
- "description": "Ошибка подключения после обновления клиента",
- "id": "8d45c3e2-7f1a-4c55-9a39-2b1f0e6d4a10",
- "status": "open",
- "title": "Не работает VPN",
- "updated_at": "2026-09-15T17:30:00Z"
}Удаляет обращение. Успешный ответ не содержит тела.
| ticket_id required | string <uuid> (Ticket Id) |
{- "detail": "Ticket 8d45c3e2-7f1a-4c55-9a39-2b1f0e6d4a10 does not exist",
- "instance": "/api/v1/tickets/8d45c3e2-7f1a-4c55-9a39-2b1f0e6d4a10",
- "status": 404,
- "title": "Resource not found",
}