OpenAPI-контракт
Обязательное содержание и правила качества OpenAPI-спецификации.
OpenAPI-контракт
OpenAPI является главным машиночитаемым описанием consumer-facing интерфейса. Документация Publisher, runtime configuration и реализация должны соответствовать одной версии контракта.
Обязательное содержание
info.title,descriptionи semantic version;- servers или правила формирования environment URL;
- paths, HTTP methods и operation IDs;
- request parameters и request body schemas;
- success и error responses;
- security schemes и scopes;
- примеры без чувствительных данных;
- ограничения полей, formats и enums.
Naming
- paths — lowercase, понятные существительные;
- JSON fields —
camelCase; - operation IDs — стабильные и уникальные;
- actions не кодируются в path без необходимости;
- внутренняя топология, Kafka topics и adapter names не раскрываются Consumer.
Data conventions
| Данные | Правило |
|---|---|
| Date/time | ISO 8601 с timezone |
| Money | Строка с фиксированной точностью, не float |
| Currency | ISO 4217 |
| Identifier | UUID v4, если не указан другой формат |
| Enum | UPPER_SNAKE_CASE |
| Optional value | Явно различать отсутствующее поле и null |
Ошибки
Каждая операция документирует возможные 4xx и 5xx, а не только успешный ответ. Error model должна содержать стабильный machine-readable code, понятное message и request identifier для поддержки.
ErrorResponse:
type: object
required: [code, message, requestId]
properties:
code:
type: string
example: INVALID_REQUEST
message:
type: string
requestId:
type: stringСовместимость
Без major version разрешаются только обратно совместимые изменения, например новые optional fields. Consumer должен игнорировать неизвестные поля.
Breaking changes требуют новой major version и согласованного overlap/deprecation period. Зафиксированный в ранних материалах шестимесячный overlap следует применять только после утверждения lifecycle policy.
Enum тоже может сломать Consumer
Новое значение enum формально является additive change, но ломает клиентов с закрытым списком значений. В документации явно требуйте tolerant parsing и безопасный fallback.
Review checklist
- schema валидна;
- examples проходят schema validation;
- обязательность полей согласована;
- security применяется к нужным operations;
- documented errors реализуемы;
- отсутствуют internal URLs, secrets и персональные данные;
- operation IDs и paths следуют naming policy;
- version соответствует масштабу изменения.