Easy Авторский

API Documentation: OpenAPI и Stripe как эталон

Почему документация API — это продукт, и как Stripe задал стандарт

Документация как воронка конверсии

Когда разработчик приходит к вашему API, у него есть задача и дедлайн. Он открывает документацию, и в следующие пять минут происходит одно из двух: либо он понимает, как сделать первый вызов, и идёт дальше, либо он закрывает вкладку, ищет альтернативу или пишет в Slack коллеге «кто-нибудь уже разбирался с этим API, я ничего не могу понять». Документация API — это продукт с собственной воронкой конверсии, и каждый лишний клик, каждый неработающий пример кода, каждая непонятная структура ответа — это потерянный пользователь.

Для внешних API это потерянные деньги. Для внутренних — потерянные часы разработчиков, которые вместо решения задачи читают исходники чужого сервиса или пишут автору в личку. Исследования показывают, что отсутствие или низкое качество API-документации — главный барьер интеграции для 73% разработчиков.

Stripe как эталон

Stripe стал каноническим примером отличной API-документации не потому, что их маркетинг это продвигал, а потому что разработчики голосовали ногами — и рассказывали другим разработчикам. Когда Stripe говорил «7 строк кода до первого платежа», за этим стояла конкретная инженерная работа: продуманные SDK, копируемые примеры кода на шести языках, sandbox-окружение, где можно тестировать без реальных денег, и трёхколоночный layout, который с тех пор копируют все.

Три колонки Stripe — навигация слева, объяснение в центре, живые примеры кода справа — стали настолько узнаваемым паттерном, что инструменты Redocly и Stoplight Elements продают себя как «Stripe-like API documentation». Но layout — это косметика. Принципы, которые сделали документацию Stripe образцовой, глубже.

Consistency — каждый эндпоинт описан в одном формате: путь, метод, параметры с типами и обязательностью, пример запроса, пример ответа, описание ошибок. Нет эндпоинтов, где «пример будет позже» или «параметры см. в другом разделе». Stripe добился этого, потому что их API-документация генерируется из OpenAPI-спецификации, которая является single source of truth.

Interactivity — Stripe Shell позволяет делать живые API-вызовы в тестовом режиме прямо из документации. Вы видите описание, видите пример, можете изменить параметры и выполнить запрос — без установки SDK, без создания аккаунта, без переключения в Postman. Это превращает пассивное чтение в активное обучение.

Progressive disclosure — документация устроена так, что вы можете начать с простейшего сценария (создать платёж) и постепенно погружаться в сложные кейсы (подписки, мультивалютность, dispute handling). Каждый следующий уровень сложности доступен, когда вы к нему готовы, но не загромождает простые сценарии.

OpenAPI как стандарт

OpenAPI Specification (бывший Swagger) — это стандарт описания HTTP API в формате YAML или JSON. Версия 3.0 вышла в 2017 году, версия 3.1 — в 2021, и к 2026 году OpenAPI стал де-факто стандартом для REST API. Stripe публикует свою OpenAPI-спецификацию на GitHub — это открытый репозиторий, который содержит полное описание всех эндпоинтов Stripe API.

Ценность OpenAPI в том, что из одной спецификации вы можете генерировать документацию, клиентские SDK, серверные стабы, тестовые моки и валидаторы запросов. Спецификация становится контрактом между frontend и backend, между вашей командой и потребителями API, и этот контракт можно версионировать, тестировать и валидировать в CI/CD.

Design-first vs code-first — это ключевой выбор при работе с OpenAPI. При design-first подходе вы сначала пишете спецификацию, согласовываете контракт с потребителями, и только потом пишете реализацию. При code-first вы пишете код, а спецификацию генерируете из аннотаций (Swagger annotations в Java, Swag в Go, NestJS decorators в TypeScript). Design-first даёт лучшее качество API, но требует дисциплины и инструментов для поддержания синхронности между спецификацией и кодом. Code-first проще в поддержке, но API получается менее продуманным, потому что контракт определяется реализацией, а не потребностями потребителей.

Инструменты для API-документации

Redocly (бывший ReDoc) — open-source инструмент, который генерирует трёхпанельную документацию из OpenAPI-спецификации. Responsive layout, группировка по тегам, интерактивные примеры. Redocly CLI добавляет линтинг спецификации, проверку breaking changes между версиями и сборку документации в CI.

Stoplight — платформа для design-first разработки API. Визуальный редактор спецификации (Studio), hosted документация (Elements), мок-сервер для тестирования без реализации. Elements — это web-компонент, который можно встроить в любой сайт и получить документацию уровня Stripe.

Swagger UI — оригинальный инструмент визуализации OpenAPI-спецификаций. Прост, но выглядит устаревшим по сравнению с Redocly. Основное преимущество — «Try it out» для выполнения запросов прямо из документации.

Bump.sh — hosted-сервис, который автоматически обновляет документацию при изменении спецификации в репозитории, отслеживает breaking changes и уведомляет потребителей API.

Типичные проблемы

Генерированная документация без человеческого текста — главная болезнь API-документации. Вы описали все эндпоинты, указали типы параметров, привели примеры ответов — но нигде не написали, в каком порядке эти эндпоинты вызывать, как обрабатывать ошибки, какие сценарии типичные, а какие краевые. OpenAPI-спецификация описывает «что», но не описывает «как» и «зачем» — для этого нужны гайды, tutorials и getting started, написанные человеком (или как минимум отредактированные человеком).

Вторая проблема — устаревшие примеры кода. Пример, который не работает, хуже отсутствия примера, потому что разработчик потратит время на отладку несуществующей ошибки. Если вы публикуете примеры кода, тестируйте их в CI — есть инструменты вроде readme-tester и mdx-test, которые извлекают код из документации и выполняют его.

Рекомендации

Храните спецификацию рядом с кодом по принципу docs-as-code. Начните с OpenAPI-спецификации для своего API, даже если он внутренний. Выберите design-first или code-first подход в зависимости от зрелости команды. Сгенерируйте документацию через Redocly или Stoplight Elements. А потом напишите руками три вещи: getting started guide с пошаговым сценарием, страницу с описанием аутентификации и стратегию обработки ошибок. Эти три текста создают 80% ценности вашей API-документации, а на остальные 20% работает автогенерация из спецификации.