Перейти к содержимому

Данные фрагментов RAG для DataTables (POST)

POST
/wp-json/wp2tutor/rag/v1/datatables
curl --request POST \
--url https://example.com/wp-json/wp2tutor/rag/v1/datatables \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'X-WP-Nonce: <X-WP-Nonce>' \
--data draw=1 \
--data start=0 \
--data length=25 \
--data-urlencode 'search%5Bvalue%5D=эмбеддинг' \
--data-urlencode order%5B0%5D%5Bcolumn%5D=6 \
--data-urlencode order%5B0%5D%5Bdir%5D=desc

Тот же datatables(), что GET. Параметры из query и get_body_params() (form-urlencoded вложенные ключи DataTables: search[value], order[0][column], order[0][dir]). get_json_params() не используется — JSON-тело PHP не читает. Админка шлёт GET; POST нужен клиентам, которые POST-ят протокол DataTables. Ответ тот же. Нужно manage_options.

Media typeapplication/x-www-form-urlencoded
object
draw

Счётчик DataTables. PHP max(1, (int)), по умолчанию 1. Эхо в ответе.

integer
start

OFFSET. PHP max(0, (int)), по умолчанию 0.

integer
length

LIMIT. PHP min(100, max(1, (int))), по умолчанию 25.

integer
search[value]

Поиск. В PHP становится $params[‘search’][‘value’].

string
order[0][column]

Индекс колонки. В PHP $params[‘order’][0][‘column’]. 1 status, 2 id_chunk, 5 id_post, 6 created_at.

integer
order[0][dir]

Asc/desc. В PHP $params[‘order’][0][‘dir’]; не ASC → DESC.

string
Example
draw=1&start=0&length=25&search%5Bvalue%5D=%D1%8D%D0%BC%D0%B1%D0%B5%D0%B4%D0%B4%D0%B8%D0%BD%D0%B3&order%5B0%5D%5Bcolumn%5D=6&order%5B0%5D%5Bdir%5D=desc

Тот же объект DataTables, что у GET.

Media typeapplication/json
object
draw

Эхо входного draw после max(1, …).

integer
recordsTotal

COUNT(*) чанков текущего id_site без поиска. Нет PDO — 0.

integer
recordsFiltered

COUNT(*) после LIKE-поиска (или равно recordsTotal, если search пуст). Нет PDO — 0.

integer
data

Строки страницы (LIMIT/OFFSET). Не payload WP_Error/лицензии.

Array<object>
object
select

PHP всегда ''. Чекбокс рисует клиент DataTables, не REST.

string
status

ChunkStatus строки SQLite (0 PENDING, 1 ACTIVE, 2 INDEXING, −1 ERROR).

integer
status_icon

Эмодзи PHP match: 1 → 🟢, 2 → 🔵, −1 → 🔴, иначе ⚪ (в т.ч. PENDING 0).

string
id_chunk

ID фрагмента.

integer
content_preview

Первое предложение content (до .?! + пробел) или первые 200 символов; HTML снят, пробелы схлопнуты.

string
metadata_html

HTML из JSON metadata (source.post_type/anchor, taxonomies). Невалидный JSON — ''.

string
source_post
object
id

Id_post чанка (запись WordPress, из которой нарезан фрагмент).

integer
title

Get_the_title(id_post); нет заголовка — ''.

string
edit

Get_edit_post_link(id_post, raw); если не строка — ''.

string
created_at

UTC mysql datetime из SQLite (как current_time(‘mysql’, true)).

string
created_at_human

Локальное wp_date('d.m.Y H:i') после get_date_from_gmt.

string
Example
{
"draw": 1,
"recordsTotal": 120,
"recordsFiltered": 8,
"data": [
{
"select": "",
"status": 1,
"status_icon": "🟢",
"id_chunk": 42,
"content_preview": "Эмбеддинг — векторное представление текста.",
"metadata_html": "<div class=\"wp2tutor-rag-meta\"><h4>Source</h4><ul><li><strong>post_type:</strong> page</li></ul></div>",
"source_post": {
"id": 15,
"title": "Введение в RAG",
"edit": "https://example.com/wp-admin/post.php?post=15&action=edit"
},
"created_at": "2026-09-13 10:00:00",
"created_at_human": "13.09.2026 13:00"
}
]
}

Не аутентифицирован. DualRest: rest_forbidden (status 401), если нет cookie-сессии. Cookie + X-WP-Nonce или Application Password.

Media typeapplication/json
object
code

Код WP_Error. Для POST /chat 401 — rest_forbidden. DualRest cookie — rest_forbidden / rest_not_logged_in / rest_cookie_invalid_nonce.

string
message

Сообщение WP_Error (для секрета чата — Missing or invalid secret.).

string
data

Обычно { status: HTTP-код }, как PHP кладёт в WP_Error data.

object
Example
{
"code": "rest_forbidden",
"message": "Missing or invalid secret.",
"data": {
"status": 401
}
}

Нет права manage_options или невалидный REST nonce. WordPress REST: rest_forbidden / rest_cookie_invalid_nonce.

Media typeapplication/json
object
code

Код WP_Error. Для POST /chat 401 — rest_forbidden. DualRest cookie — rest_forbidden / rest_not_logged_in / rest_cookie_invalid_nonce.

string
message

Сообщение WP_Error (для секрета чата — Missing or invalid secret.).

string
data

Обычно { status: HTTP-код }, как PHP кладёт в WP_Error data.

object
Example
{
"code": "rest_forbidden",
"message": "Missing or invalid secret.",
"data": {
"status": 401
}
}