kyc_step.update¶
Direction: server → modules. External Moleculer event name: kyc_step.update.
Source and occurrence¶
C++ payload: KycStepRecord. Internal EventBus name: kyc.step.push.
KycManager emits kyc.step.push after a successful step mutation, including submission/review/status updates. Only EV_RECORD_UPDATE is mapped; step ADD records are ignored.
status retains the platform KYC enum value: REQUIRED = 0, PENDING = 1, APPROVED = 2, REJECTED = 3, EXPIRED = 4, SKIPPED = 5. code identifies the step; reject_reason is free text and is not an AI instruction. Documents, answers, comments and reviewer details are excluded. Empty reject_reason is allowed.
JSON payload¶
The payload is flat; there is no data wrapper. All listed fields are emitted.
{
"event_id": "a89e743cf46a4855986aa6769e47a075",
"event_code": 1,
"occurred_at": 1789080000,
"schema_version": 1,
"customer_id": 1001,
"brand": "ion4",
"code": "identity_document",
"status": 3,
"reject_reason": "Please provide a clearer document image"
}
| Domain field | JSON type |
|---|---|
customer_id |
integer |
brand |
string |
code |
string |
status |
integer |
reject_reason |
string |
Common fields: event_id (32-character random hex string), event_code (original integer code), occurred_at (Unix seconds), schema_version (integer, currently 1).
occurred_at uses the source timestamp; zero remains zero. Margin uses transition time.
Subscription and delivery¶
Subscribe through the module's normal Moleculer event handler for kyc_step.update.
Enabled with server nats.enable. Publication is asynchronous, fire-and-forget,
without ACK, retry or durable replay. Queue limit: 4096 business messages; JSON limit:
16 KiB. New messages can be dropped at either limit; order is not guaranteed.
event_id supports consumer deduplication, not exactly-once delivery.
See shared outbound rules for lifecycle, observability and trust limits. See outbound catalogue for other event families.