Перейти к содержимому

Шаблон REST API

Шаблон описания REST API метода.

Шаблон REST API

REST API-документация описывает назначение метода, контракт запроса и ответа, параметры, бизнес-логику, ошибки, безопасность и обратную совместимость.

Паспорт метода

ПолеЗначение
Сервис<service-name>
Метод<GET / POST / PUT / PATCH / DELETE>
Endpoint/<resource>/<id>/<action>
Версия APIv1
СтатусDraft / Review / Approved / Deprecated

Назначение

Кратко опишите бизнес-смысл метода.

Endpoint

POST /api/v1/contracts/{contractId}/termination-requests

Авторизация

ПараметрЗначение
ТипBearer JWT / Basic / mTLS / API Key
Требуемая роль<role>
Требуемое право<permission>
Объект проверки<object>

Headers

HeaderТипОбяз.Описание
AuthorizationstringДаBearer <token>
X-Correlation-IdstringДаСквозная трассировка
Idempotency-KeystringДа / НетКлюч идемпотентности
Content-TypestringДаapplication/json

Path parameters

ПараметрТипОбяз.ОписаниеПример
contractIdstringДаИдентификатор договора123456

Query parameters

ПараметрТипОбяз.ОписаниеПример
includeDetailsbooleanНетВернуть детальную информациюtrue

Request body

{
  "reasonCode": "CLIENT_REQUEST",
  "comment": "Заявление клиента",
  "requestedDate": "2026-05-09"
}

Описание request body

ПолеТипОбяз.ПравилоОписание
reasonCodestringДаЗначение из справочникаПричина операции
commentstringНетДо 1000 символовКомментарий
requestedDatestringДаYYYY-MM-DDДата операции

Response body

{
  "requestId": "tr-12345",
  "status": "CREATED",
  "createdAt": "2026-05-09T12:00:00Z"
}

Описание response body

ПолеТипОбяз.Описание
requestIdstringДаИдентификатор заявки
statusstringДаСтатус заявки
createdAtstringДаДата создания

Бизнес-логика

  1. Проверить авторизацию.
  2. Проверить право <permission>.
  3. Проверить существование объекта.
  4. Проверить бизнес-правила.
  5. Выполнить операцию.
  6. Записать audit/log.
  7. Вернуть результат.

Ошибки

HTTP statusКод ошибкиУсловие
400BAD_REQUESTНекорректный JSON / параметры
401UNAUTHORIZEDНе передан или невалиден token
403FORBIDDENНет прав
404NOT_FOUNDОбъект не найден
409CONFLICTКонфликт состояния
422VALIDATION_ERRORОшибка бизнес-валидации
500INTERNAL_ERRORВнутренняя ошибка

Формат ошибки

{
  "errorCode": "CONTRACT_NOT_FOUND",
  "message": "Договор не найден",
  "correlationId": "c7b8e7d2-9c1f-4c5a-bc6d-6b4e2d7a0001",
  "details": [
    { "field": "contractId", "reason": "Object not found" }
  ]
}

Идемпотентность

ПараметрЗначение
ПоддерживаетсяДа / Нет
КлючIdempotency-Key
Повтор с тем же payloadВернуть ранее созданный результат
Повтор с другим payloadВернуть 409 IDEMPOTENCY_KEY_CONFLICT

Логирование и метрики

Событие / метрикаЧто фиксировать
Входящий запросmethod, path, userId, correlationId
Успешный ответstatus, durationMs, correlationId
ОшибкаerrorCode, correlationId
Метрикиrequest count, latency, error rate

OpenAPI-фрагмент

paths:
  /api/v1/contracts/{contractId}/termination-requests:
    post:
      summary: Создание заявки
      parameters:
        - name: contractId
          in: path
          required: true
          schema:
            type: string
      responses:
        "201":
          description: Заявка создана

Обратная совместимость

ИзменениеBreaking change?
Добавить необязательное поле responseНет
Удалить поле responseДа
Изменить тип поляДа
Добавить новое значение enumВозможно, проверить клиентов

Открытые вопросы

IDВопросКому адресованСтатус
Q-001<вопрос><роль / ФИО>Открыт

Критерии приемки документа

IDКритерий
AC-DOC-001Документ согласован с владельцем продукта / архитектором / разработкой, если применимо.
AC-DOC-002Все спорные места вынесены в открытые вопросы или зафиксированы как ограничения.
AC-DOC-003В документе нет неоднозначных формулировок вроде “быстро”, “удобно”, “корректно” без измеримого критерия.