Разработка Swagger/OpenAPI документации для API 1С-Битрикс
Swagger (OpenAPI Specification) — это стандартный формат описания REST API. Из спецификации автоматически генерируется интерактивная документация: разработчик видит все эндпоинты, параметры, форматы запросов и ответов, может тут же сделать тестовый запрос прямо из браузера.
Зачем документировать API Битрикс
Стандартное REST API Битрикс24 документировано на портале разработчиков. Но речь об API, разработанном вами: кастомные эндпоинты, собственные модули, интеграционные решения. Без документации:
- Разработчик-интегратор тратит часы на выяснение формата запросов.
- Тестировщик не знает, что и как проверять.
- При ротации команды знания теряются.
OpenAPI решает эту проблему: спецификация — это одновременно документация, контракт и инструмент тестирования.
Формат OpenAPI 3.0: базовая структура
openapi: 3.0.3
info:
title: My Bitrix API
version: 1.0.0
description: Кастомный API 1С-Битрикс для работы с каталогом
servers:
- url: https://mysite.ru/api/v1
description: Production
paths:
/products:
get:
summary: Список товаров
parameters:
- name: category_id
in: query
schema:
type: integer
- name: limit
in: query
schema:
type: integer
default: 20
responses:
'200':
description: Успешный ответ
content:
application/json:
schema:
$ref: '#/components/schemas/ProductList'
'401':
$ref: '#/components/responses/Unauthorized'
Размещение документации на Битрикс
Swagger UI — это статическое web-приложение, которое рендерит OpenAPI-спецификацию в интерактивный интерфейс. Размещение на сайте Битрикс:
- Скачать Swagger UI:
dist/папку с GitHub или через npm. - Поместить в
/local/swagger/. - Создать файл
/local/swagger/openapi.yamlилиopenapi.jsonсо спецификацией. - Настроить роутинг:
/api/docs→ отдаёт HTML Swagger UI, который загружаетopenapi.yaml. - Закрыть доступ к
/api/docsдля неавторизованных пользователей через.htaccessили middleware.
Файл openapi.yaml можно сгенерировать динамически — PHP-скрипт собирает описания всех зарегистрированных эндпоинтов и отдаёт JSON/YAML. Это удобно, если структура API меняется часто.
Описание авторизации
components:
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
security:
- BearerAuth: []
В Swagger UI появятся кнопки «Authorize» — разработчик вводит токен один раз, и все запросы из интерфейса уходят с заголовком Authorization: Bearer {token}.
Схемы данных (components/schemas)
components:
schemas:
Product:
type: object
properties:
id:
type: integer
example: 1234
name:
type: string
example: "Ноутбук Dell XPS 15"
price:
type: number
format: float
example: 89990.00
currency:
type: string
enum: [RUB, USD, EUR]
in_stock:
type: boolean
required:
- id
- name
- price
Схемы переиспользуются через $ref — описываете структуру один раз, используете во всех эндпоинтах.
Генерация спецификации из аннотаций (zircote/swagger-php)
Для больших API удобнее описывать эндпоинты в аннотациях прямо в коде:
/**
* @OA\Get(
* path="/products/{id}",
* summary="Получить товар по ID",
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
* @OA\Response(response=200, description="Товар найден",
* @OA\JsonContent(ref="#/components/schemas/Product")
* )
* )
*/
public function getProduct(int $id): array { ... }
Библиотека zircote/swagger-php сканирует папки с аннотациями и генерирует openapi.json:
composer require zircote/swagger-php
./vendor/bin/openapi /local/api --output /local/swagger/openapi.json
Документация автоматически обновляется вместе с кодом.
Разработка документации для API из 10-20 эндпоинтов — 2-3 дня с учётом настройки Swagger UI и описания схем данных.







