Дія register_client_context
System ID:
action_register_client_context
Опис
Записує одну подію клієнта в Context API і, якщо треба, разом оновлює один простір імен стану. Запис збігається з тим, який робить інтеграція через Context API. Дія не викликає зовнішній HTTP і не змінює статус звернення, поля картки чи маршрутизацію.
Нода сценарію — це команда. Зареєстрована дія клієнта — окремий факт: «оформив замовлення», а не «крок сценарію виконався».
Події (гілки сценарію)
| Подія | Коли виникає |
|---|---|
| success | Нову команду застосовано |
| replayed | Повтор тієї самої команди повернув перший результат |
| conflict | Версія стану вже змінилася |
| error | Немає підтвердженого клієнта, перевірка не пройшла або сховище недоступне |
Повний результат — у константі set_to (типово registered_client_context). Код помилки без чутливих даних — у error_to (типово register_client_context_error).
Параметри
| Параметр | Тип | Обовʼязковий | Типово | Опис |
|---|---|---|---|---|
operation |
select | так | record_action |
record_action — подія; set_state — лише заміна стану |
client_id |
string | ні | з констант | ID клієнта ConnectiveOne. Якщо немає — client.op_client_id або client.id |
namespace |
string | так | — | Група даних інтеграції, наприклад commerce. Зарезервовані: operational, system |
idempotency_key |
string | так | — | Стабільний ключ однієї логічної команди. Не генеруйте новий UUID на кожному повторі |
external_event_id |
string | ні | — | Стабільний ID події в зовнішній системі |
action_type |
string | ні | — | Тип події, наприклад checkout_submitted |
occurred_at |
string | ні | — | Час події, ISO-8601 |
attributes |
object | ні | {} |
Короткі атрибути. Повний текст розмови сюди не кладіть |
state |
object | для set_state |
— | Заміна простору імен. Обовʼязкове expectedVersion |
set_to |
string | ні | registered_client_context |
Константа результату |
error_to |
string | ні | register_client_context_error |
Константа коду помилки |
Приклад конфігурації
{
"operation": "record_action",
"namespace": "commerce",
"idempotency_key": "checkout-{{order_id}}-{{event_id}}",
"external_event_id": "checkout-{{order_id}}",
"action_type": "checkout_submitted",
"occurred_at": "{{event_time}}",
"attributes": { "orderId": "{{order_id}}" },
"state": {
"expectedVersion": "{{commerce_version}}",
"value": { "stage": "awaiting_payment", "orderId": "{{order_id}}" },
"observedAt": "{{event_time}}"
},
"set_to": "registered_client_context"
}
Повтор з тим самим ключем і тим самим тілом повертає перший результат. Інше тіло з тим самим ключем відхиляється. Якщо expectedVersion не збігається, крок іде в гілку conflict і не записує ні подію, ні стан.