Запустить синхронизацию эмбеддингов
const url = 'https://example.com/wp-json/wp2tutor/embedding/v1/sync';const options = { method: 'POST', headers: {'X-WP-Nonce': '<X-WP-Nonce>', 'Content-Type': 'application/json'}, body: '{"ids":[42,43]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/wp-json/wp2tutor/embedding/v1/sync \ --header 'Content-Type: application/json' \ --header 'X-WP-Nonce: <X-WP-Nonce>' \ --data '{ "ids": [ 42, 43 ] }'Считает векторы для переданных id фрагментов RAG (id_chunk) и пишет их в sqlite-vec. PHP EmbeddingRestController::sync → SyncService::sync_chunk_ids. Источник чанков — фильтр wp2tutor/embedding/chunk_source (модуль RAG).
Тело JSON { ids: int[] }; не массив — как пустой. PHP intval + unique. Пустой список — 200, ok true, processed 0, message No ids.
Не WP_Error: и успех, и отказ — один объект { ok, processed, message }. ok false → HTTP 400 (нет chunk source, пустой API-ключ эмбеддингов, нет модели, нет sqlite-vec, сбой батча и т.д.). ok true → 200, processed = число id после нормализации, message OK.
Нужно manage_options. Cookie + X-WP-Nonce или Application Password.
Authorizations
Заголовок раздела «Authorizations»Request Body
Заголовок раздела «Request Body»object
ID фрагментов RAG (id_chunk), не ID постов. PHP: не массив — как []. intval, unique. Пусто — 200 ok true processed 0 message No ids.
Example
{ "ids": [ 42, 43 ]}Responses
Заголовок раздела «Responses»Ok true. processed — сколько id ушло в батчи (после intval/unique). message обычно OK или No ids.
object
True при 200 (в т.ч. пустой ids). false при HTTP 400 — эмбеддинги не записаны (или батч сорвался).
Число id после нормализации, для которых прошли батчи embed+upsert. При ok false PHP ставит 0. При No ids. — 0.
Короткий итог SyncService: OK, No ids., либо причина отказа (chunk source, API key, sqlite-vec, Embedding API failed for a batch, exception).
Example
{ "ok": true, "processed": 2, "message": "OK"}Ok false, то же тело (не WP_Error). Типичные message PHP: Chunk source unavailable (enable RAG + chunks DB).; Unknown embedding model configuration.; Embedding API key is empty.; Chunk database path missing.; sqlite-vec extension could not load (see lib/sqlite-vec/README.md).; Embedding API failed for a batch.; либо getMessage() исключения.
object
True при 200 (в т.ч. пустой ids). false при HTTP 400 — эмбеддинги не записаны (или батч сорвался).
Число id после нормализации, для которых прошли батчи embed+upsert. При ok false PHP ставит 0. При No ids. — 0.
Короткий итог SyncService: OK, No ids., либо причина отказа (chunk source, API key, sqlite-vec, Embedding API failed for a batch, exception).
Example
{ "ok": false, "processed": 0, "message": "Embedding API key is empty."}Не аутентифицирован. DualRest: rest_forbidden (status 401), если нет cookie-сессии. Cookie + X-WP-Nonce или Application Password.
object
Код WP_Error. Для POST /chat 401 — rest_forbidden. DualRest cookie — rest_forbidden / rest_not_logged_in / rest_cookie_invalid_nonce.
Сообщение WP_Error (для секрета чата — Missing or invalid secret.).
Обычно { 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.
object
Код WP_Error. Для POST /chat 401 — rest_forbidden. DualRest cookie — rest_forbidden / rest_not_logged_in / rest_cookie_invalid_nonce.
Сообщение WP_Error (для секрета чата — Missing or invalid secret.).
Обычно { status: HTTP-код }, как PHP кладёт в WP_Error data.
object
Example
{ "code": "rest_forbidden", "message": "Missing or invalid secret.", "data": { "status": 401 }}