Skip to content

Messages CDD Core receives

Base address: POST {core_base_url}/functions/v1/trading-link/{route}. Every request carries the envelope and the x-link-key header.

Checks the link end to end. The body may be empty.

{ "message_id": "…", "message_type": "PING", "sent_at": "…", "institution": "INST", "body": {} }

The second answer to a restriction command, sent when the leg has actually changed state.

"body": {
"command_ref": "RC-000123-3",
"result": "EXECUTED",
"leg_state_after": "RESTRICTED",
"executed_at": "2026-09-20T08:15:31.004Z",
"caught_in_flight": [
{ "kind": "QUOTE_CANCELLED", "ref": "Q-260920-0437" },
{ "kind": "WITHDRAWAL_HELD", "ref": "AW-260920-0044", "asset": "USDT", "amount": "400000.00" }
]
}
FieldValues
command_refRequired. The command_ref of the command being answered
resultEXECUTED · SUPERSEDED (a newer command for that leg already stands)
leg_state_afterRESTRICTED · OPEN
executed_atRequired. UTC
caught_in_flightOptional. What the change stopped mid-way, for example a cancelled quote or a held withdrawal

If no execution report arrives within 60 seconds of the receipt, CDD Core raises the command to an officer.

One message per event, sent as it happens.

"body": {
"event_ref": "L-260920-0311",
"event_type": "THB_IN",
"core_customer_id": "5d0c…",
"occurred_at": "2026-09-20T08:10:02.000Z",
"data": { … }
}
FieldRule
event_refRequired, unique and stable: the ledger entry or record reference. The same ref with the same event is a repeat; the same ref with a different event is refused
event_typeRequired. One of the types below
core_customer_idRequired. A customer of this institution
occurred_atRequired. UTC, ISO 8601. Its Bangkok date is the business day
dataRequired JSON object with the event’s details

Event types (DA Dealer) and what data describes:

event_typedata describes
THB_INAmount, payer bank and masked account, whether matched automatically or by an officer, statement line
THB_IN_SUSPENSE · THB_IN_RETURNEDAmount, payer bank, reason (no owner, leg restricted, name mismatch)
THB_OUTAmount, destination account reference, payment file, bank result
TRADEPair, side, asset and THB amounts, price, benchmark price, channel, quote, dealer for RFQ
TRADE_REVERSALThe original event_ref, reason, approver
DA_OUT · DA_INAsset, chain, amount, THB value, address, transaction hash, times, the verdict request
REFUSALWhat was refused, the ground, the amount if any
HOLD · HOLD_RELEASEDWhat is held, its reference, the reason
ADJUSTMENTAdjustment
HEDGE_FILL · LP_MOVEMENTHedge fill · liquidity provider movement
WALLET_SWEEPWallet sweep
DEPOSIT_ADDRESSDeposit address issued

The fields inside data follow the interface specification agreed for the installation. An event type not on the list is refused with UNKNOWN_CODE.

CDD Core never computes balances from the feed, and the trading system never computes alerts. Transaction monitoring runs on the feed inside CDD Core.

/feed-completeness · FEED_COMPLETENESS_DAILY

Section titled “/feed-completeness · FEED_COMPLETENESS_DAILY”

Once a day, after day-end, for each business day.

"body": {
"business_day": "2026-09-20",
"counts": { "THB_IN": 41, "TRADE": 388, "DA_OUT": 12 },
"first_event_ref": "L-260920-0001",
"last_event_ref": "L-260920-0511",
"sha256_of_sorted_event_refs": "9f2c…e1a0"
}
FieldRule
business_dayRequired, YYYY-MM-DD (Bangkok date)
countsRequired. Event type → whole number of events
first_event_ref · last_event_refOptional strings
sha256_of_sorted_event_refsRequired. 64 hex characters: SHA-256 of that day’s event refs, sorted

CDD Core compares the counts and the hash with what it received. A difference is a break, raised on both sides the same day.