---
title: "Дія register_client_context"
description: "Реєструє дію клієнта і за потреби оновлює стан у Context API з того самого кроку сценарію."
---

# Дія `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` | Константа коду помилки |

## Приклад конфігурації

```json
{
  "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` і не записує ні подію, ні стан.

## Повʼязані документи

- [Дія load_external_context](/uk/actionjail/reference/actions/load_external_context.md)
- [Про те, як Context API збирає контекст](/uk/integrations/explanation/what-is-context-api.md)
- [Довідник Context API](/uk/integrations/reference/context-api.md)
- [Довідник actions](/uk/actionjail/reference/actions-reference.md)
