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

Обновить определение формы

POST
/wp-json/wp2tutor-forms/form/v1/updateDefinition
curl --request POST \
--url https://example.com/wp-json/wp2tutor-forms/form/v1/updateDefinition \
--header 'Content-Type: application/json' \
--header 'X-WP-Nonce: <X-WP-Nonce>' \
--data '{ "id": 42, "definition": "{\"name\":\"Форма #42\",\"language\":\"ru_RU\",\"clusters\":[]}", "token": "a1b2c3d4e5f60718293a4b5c6d7e8f90", "name": "Форма", "fingerprint": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "stencil": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "actionables": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" }'

Сохраняет JSON-определение формы Tripetto в post_content записи CPT wp2tutor_form и при необходимости имя, fingerprint, stencil и actionables. Это не смена раннера и не запись стилей: только definition (и связанные мета). Обязательны id, definition и token (иначе WordPress REST rest_missing_callback_param). definition — JSON-строка; json_decode с ошибкой — 400 invalid_json. token — оптимистическая блокировка: PHP сравнивает его с md5 снимка формы (generate_token). Пустой или "0" — 400 empty_token; несовпадение — 400 invalid_token. После успеха PHP пересчитывает md5 и отдаёт новый token. name необязателен (sanitize_text_field): заголовок записи и definition.name. fingerprint, stencil, actionables — необязательные SHA-256 (ровно 64 hex); иначе rest_invalid_param. В md5 токена они не входят. Нужно право edit_post на эту запись. Cookie + X-WP-Nonce или Application Password.

Media typeapplication/json
object
id
required

ID записи CPT wp2tutor_form. Обязательно. PHP приводит к int. Нет поста — 404 post_not_found; другой post type — 400 invalid_post_type.

integer
definition
required

JSON-строка определения Tripetto. Обязательно. PHP проверяет json_decode без ошибки (invalid_json) и пишет в post_content. Не объект в теле REST: именно строка.

string
token
required

Текущий md5-снимок формы (generate_token). Обязательно. Пустой или "0" — 400 empty_token. Не совпал с серверным — 400 invalid_token (в message generated vs expected).

string
name

Заголовок формы. Необязательно, sanitize_text_field. PHP ставит post_title и definition.name.

string
fingerprint

SHA-256 отпечаток definition (64 hex). Необязательно. Если передан — Helpers::is_valid_sha_256, иначе rest_invalid_param. Meta fingerprint; в md5 токена не входит.

string
stencil

SHA-256 трафарета формы (64 hex). Необязательно. Та же проверка, что у fingerprint. Meta stencil; в md5 токена не входит.

string
actionables

SHA-256 набора actionables раннера (64 hex). Необязательно. Та же проверка. Meta actionables; в md5 токена не входит.

string
Example
{
"id": 42,
"definition": "{\"name\":\"Форма #42\",\"language\":\"ru_RU\",\"clusters\":[]}",
"token": "a1b2c3d4e5f60718293a4b5c6d7e8f90",
"name": "Форма",
"fingerprint": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"stencil": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"actionables": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}

Определение сохранено. Тело — новый token (generate_token после записи).

Media typeapplication/json
object
token
required

Новый токен оптимистической блокировки после успешной записи. PHP: md5(definition_json + runner + json(styles) + json(l10n) + json(hooks) + json(trackers) + json(shortcode)). Клиент подставляет его в следующий update*. Не magic-link и не Application Password.

string
Example
{
"token": "0f5a3c9e1b7d2468ace0f13579bdf246"
}

Invalid_post_type — запись не CPT wp2tutor_form; invalid_id — то же в args id; invalid_json — definition не JSON; empty_token — token пустой или "0"; invalid_token — token не совпал с md5 снимка; rest_invalid_param — fingerprint/stencil/actionables не SHA-256; rest_missing_callback_param — нет обязательных полей.

Media typeapplication/json
object
code

Код WP_Error этой ручки (invalid_token, empty_token, invalid_json, invalid_runner, invalid_permissions, post_not_found, …).

string
message

Человекочитаемый текст из PHP (Invalid token: generated "…", expected "…", Token cannot be empty., Invalid JSON. и т.д.).

string
data

Обычно { status: HTTP-код } у WP_Error этих контроллеров.

object
Examplegenerated
{
"code": "example",
"message": "example",
"data": {}
}

Не аутентифицирован. WordPress REST: rest_not_logged_in / rest_forbidden. Cookie + X-WP-Nonce или Application Password.

Media typeapplication/json
object
code

Код WP_Error этой ручки (invalid_token, empty_token, invalid_json, invalid_runner, invalid_permissions, post_not_found, …).

string
message

Человекочитаемый текст из PHP (Invalid token: generated "…", expected "…", Token cannot be empty., Invalid JSON. и т.д.).

string
data

Обычно { status: HTTP-код } у WP_Error этих контроллеров.

object
Examplegenerated
{
"code": "example",
"message": "example",
"data": {}
}

Invalid_permissions — нет права edit_post на запись формы. WordPress REST: rest_forbidden / rest_cookie_invalid_nonce.

Media typeapplication/json
object
code

Код WP_Error этой ручки (invalid_token, empty_token, invalid_json, invalid_runner, invalid_permissions, post_not_found, …).

string
message

Человекочитаемый текст из PHP (Invalid token: generated "…", expected "…", Token cannot be empty., Invalid JSON. и т.д.).

string
data

Обычно { status: HTTP-код } у WP_Error этих контроллеров.

object
Examplegenerated
{
"code": "example",
"message": "example",
"data": {}
}

Post_not_found — нет записи с таким id (permission_callback); entity_not_found — FormPost не нашёл запись в сервисе.

Media typeapplication/json
object
code

Код WP_Error этой ручки (invalid_token, empty_token, invalid_json, invalid_runner, invalid_permissions, post_not_found, …).

string
message

Человекочитаемый текст из PHP (Invalid token: generated "…", expected "…", Token cannot be empty., Invalid JSON. и т.д.).

string
data

Обычно { status: HTTP-код } у WP_Error этих контроллеров.

object
Examplegenerated
{
"code": "example",
"message": "example",
"data": {}
}