API v2¶
Базовый путь: /api/v2. Запись — Cycle (dle_api_db()). Админка DevCraft только конфигурирует ключи/OAuth.
Fluent / SDK facades¶
| PHP | |
|---|---|
| |
Nested: доменные with*Entity или attachChildEntity('images', …). Глобальные prepare($table) / query($table) — только TableBuilder (HTTP hydrate), не SDK-фасады.
OAuth / токен¶
Bearer принимает API-ключ или access_token. Подробно: Авторизация.
POST /oauth/token— опционально, если нужен OAuth (client_credentials|password|authorization_code|refresh_token; только POST).- Password grant:
username=users.nameили email,password= пароль DLE (+client_id/client_secret).
Info
В OpenAPI server variable apiBase — подставьте свой URL до /api/v2.
!!!
Поиск и фильтры¶
- Канон:
GET /table/{name}/— SchemaRegistry или интроспекцияSHOW COLUMNS(таблицы без*Schema.php). - Deny-list:
api_keys,api_scope,oauth_*/api_oauth_*,devcraft_*. - Права:
api_scope(read/write/delete;is_adminбез ограничений). - Фильтры — query-параметры колонок.
- Virtual FK (RelationMap, без MySQL FK):
csv/csv_or_all→FIND_IN_SET,one→=
- Операторы значения:
!-> negate%-> LIKE
- Доп. поля:
xf[name]=value(pad-LIKE поxfields).
| HTTP | |
|---|---|
In-process: DcApi::query('banners')->where('category', '1')->fetchAll() или dle_api_query('banners').
GET /post/ — sugar над TableQuery('post') + legacy header-фильтры (BC). Для post.category дополнительно OR EXISTS post_extras_cats (issue #12).
Доп. поля (xfields)¶
Каталог: GET/POST/PUT/PATCH/DELETE /xfields/{scope}/… с typed validation (details.fields при 422).
Сериализация значений в post.xfields:
→ { "raw": "linked_data|…||note|a|b", "parsed": {…} }.
SDK: DcApi::xfield('bio', 'О себе')->asText()->create(), ->forPost($value).
Эндпоинты¶
| Метод | Путь | Описание |
|---|---|---|
| GET | /table/{name}/ | Список + фильтры |
| POST | /table/{name}/ | Универсальный create |
| GET/POST | /post/ … | Новости (+ sugar create) |
| POST | /user/, /usergroup/, /plugin/ | Sugar |
| POST | /upload/ | multipart |
| GET | /conversations/, /health/ | Служебные |
Полная спецификация: OpenAPI.