Skip to content
PПромтбук
RUEN
04Документация

API-документация

OpenAPI/Swagger, описание endpoints, примеры запросов и ответов, ошибки.

Напиши документацию для API {{api}}.

Формат: OpenAPI 3.x — стандарт.

Преимущества:

  • Машиночитаемая
  • Авто-генерация SDK
  • Авто-генерация interactive docs (Swagger UI, Stoplight, Scalar)
  • Auto-validation на сервере

Структура файла

openapi: 3.1.0

info:
  title: My API
  version: 1.0.0
  description: |
    Краткое описание что это и для кого.
  contact:
    name: API Team
    email: api@example.com

servers:
  - url: https://api.example.com/v1
    description: Production
  - url: https://api-staging.example.com/v1
    description: Staging

security:
  - bearerAuth: []

paths:
  /users:
    get:
      summary: List users
      description: |
        Returns a paginated list of users.
      operationId: listUsers
      tags: [Users]
      parameters:
        - name: cursor
          in: query
          schema: { type: string }
        - name: limit
          in: query
          schema: { type: integer, default: 20, maximum: 100 }
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserListResponse'
              examples:
                default:
                  value:
                    data:
                      - id: "u_abc123"
                        email: "alice@example.com"
                        created_at: "2025-01-15T10:00:00Z"
                    meta:
                      next_cursor: "u_xyz789"
        '401': { $ref: '#/components/responses/Unauthorized' }
        '429': { $ref: '#/components/responses/RateLimitExceeded' }

components:
  schemas:
    User:
      type: object
      required: [id, email, created_at]
      properties:
        id:
          type: string
          example: "u_abc123"
        email:
          type: string
          format: email
        created_at:
          type: string
          format: date-time

  responses:
    Unauthorized:
      description: Missing or invalid auth token
      content:
        application/json:
          schema: { $ref: '#/components/schemas/Error' }

  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

Что обязательно для каждого endpoint

  1. summary — одна строка
  2. description — что делает, когда использовать
  3. parameters — все query/path/header параметры с типами
  4. request body — если POST/PATCH, с примером
  5. responses — успех + все возможные ошибки
  6. examples — реалистичные значения, не "string"
  7. operationId — уникальный, для SDK генерации

Описание ошибок (общее для всех endpoints)

Error:
  type: object
  required: [error]
  properties:
    error:
      type: object
      required: [code, message]
      properties:
        code:
          type: string
          enum:
            - invalid_request
            - unauthorized
            - forbidden
            - not_found
            - rate_limited
            - internal_error
        message: { type: string }
        fields:
          type: object
          description: For validation errors  per-field details

Документация поверх OpenAPI

OpenAPI — это spec. Дополнительно нужны:

  1. Getting started

    • Регистрация
    • Получение API key
    • Первый запрос (curl)
  2. Concepts

    • Объяснение домена
    • Связи между ресурсами
    • Пагинация
    • Идемпотентность
    • Webhooks
  3. Authentication

    • Как получить токен
    • Срок жизни
    • Refresh
  4. Rate limits

    • Лимиты per tier
    • Что возвращается при превышении
    • Best practices для обработки
  5. Recipes / Cookbook

    • Типовые сценарии end-to-end
    • С кодом на популярных языках
  6. Changelog

    • Что изменилось, когда
    • Breaking changes выделены
    • Deprecation notices

Принципы

  • Spec — источник правды. Код генерируется из spec, не наоборот
  • Примеры реалистичные. "name": "Acme Inc." лучше "name": "string"
  • Описывай что произойдёт, не как реализовано
  • Документируй ошибки наравне с успехом

Анти-паттерны

  • type: string без example
  • ❌ Описание endpoint'а одной строкой "Returns users"
  • ❌ Документ показывает только happy path, без ошибок
  • ❌ Документация устарела относительно реального API
  • ❌ Отдельные docs для каждой версии разбросаны

Инструменты

  • Spec editor: Stoplight Studio, Swagger Editor
  • Docs renderer: Scalar (рекомендую), Redocly, Swagger UI
  • SDK generation: OpenAPI Generator, Speakeasy
  • Validation: spectral, openapi-cli
К подразделу «Документация»
Похожие промты