DevCraft Документации
Справочник

HTTP /api/v2

REST-эндпоинты DLE API: Bearer, /table, фильтры, xfields, upload.

Базовый путь: /api/v2. Persistence — Cycle ORM из DevCraft (dle_api_db()). Админка модуля только настраивает ключи, OAuth и уровни доступа — сами HTTP-запросы идут на /api/v2.

На ресурсах нужен заголовок Authorization: Bearer <access_token> (сырой API-ключ не принимается). Как получить токен: Авторизация и OAuth-сервер.

Исключения без AuthToken: GET /health, GET /.well-known/oauth-authorization-server. Для проверки сырого API-ключа — GET /key/check с Authorization: Bearer <apiKey> (не access_token).

Trailing slash опционален: /me и /me/ одинаковы.

Свой домен

В OpenAPI server variable apiBase подставьте URL сайта до /api/v2.

Эндпоинты (обзор)

МетодПутьОписание
GET/table/{name}/Список + фильтры
GET/table/{name}/{id}/Одна запись
POST/table/{name}/Create
PUT/table/{name}/{id}/Update
DELETE/table/{name}/{id}/Delete
GET/POST/post/Новости (sugar + BC-фильтры)
POST/user/, /usergroup/, /plugin/Sugar create
POST/upload/multipart-загрузка
GET/conversations/Переписки
GET/health/Healthcheck
GET/key/check/Проверка сырого API-ключа (Bearer <apiKey>, не AuthToken)
GET/me/, /oauth/userinfo/Субъект токена
POST/oauth/token/, /oauth/revoke/Токен / revoke
GET/POST/oauth/authorize/Authorization Code
GET/POST/PUT/PATCH/DELETE/xfields/{scope}/…Каталог доп. полей

Полная схема: OpenAPI.

GET /table/{name}/ — список и фильтры

  • Таблица из SchemaRegistry или через интроспекцию SHOW COLUMNS (если нет *Schema.php).
  • Deny-list: api_keys, api_scope, oauth_* / api_oauth_*, devcraft_*.
  • Права — scopes ключа (read / write / delete; is_admin без ограничений).
  • Фильтры — query-параметры имён колонок.
  • Virtual FK (RelationMap, без MySQL FK): csv / csv_or_allFIND_IN_SET, one=.
  • Операторы в значении: ! — negate, % — LIKE.
  • Доп. поля поста: xf[name]=value (pad-LIKE по xfields).
GET /api/v2/table/banners/?category=1&approve=1&limit=20
GET /api/v2/table/banners/?grouplevel=2
GET /api/v2/table/post/?category=1&xf[linked_data]=сдасдл

GET /post/ — sugar над TableQuery('post') плюс часть legacy header-фильтров (BC). Для post.category дополнительно OR EXISTS post_extras_cats.

Доп. поля (/xfields)

Каталог: GET/POST/PUT/PATCH/DELETE /xfields/{scope}/… (scope = post | user) с typed validation (details.fields при 422).

Сериализация значений в строку post.xfields:

POST /api/v2/xfields/post/encode
Content-Type: application/json

{ "fields": { "linked_data": "…", "note": "a|b" } }

Ответ: { "raw": "…", "parsed": {…} }.

Upload

POST /upload/ — multipart через штатный пайплайн DLE. Нужен Bearer с правом записи.

Ошибки (ApiError)

Большинство 4xx/5xx отдают JSON схемы ApiError:

ПолеТипОписание
errorstringКод (unauthorized, validation, …)
messagestringЧеловекочитаемое сообщение
detailsobject|nullДоп. данные (например fields при 422)

Пример:

{
  "error": "unauthorized",
  "message": "Требуется Authorization: Bearer <AuthToken>"
}

Схема в OpenAPIcomponents.schemas.ApiError.

См. также

На этой странице