Skip to content
SarvexDocs
Esc
↑↓navigate↵open⌘Jpreview

Receive a change signal from the store plugin

The sync-plane edge. Called by the merchant-server plugin, not by the console. Authenticated by HMAC signature (not bearer token). Carries a thin signal only — entity type, id, timestamp, monotonic sequence — never full entity data and never payment or PII. Sarvex pulls the full entity via the connector after receiving the signal.

POST/connector/signals
Authorization
X-Sarvex-SignatureAPI key · headerrequired

HMAC-SHA256 signature over the raw request body plus the X-Sarvex-Timestamp and X-Sarvex-Sequence headers, keyed by the per-connector signing secret issued at pairing. Used only by the store plugin for /connector/*. Replays (seen sequence) are rejected with 409.

Header parameters
Idempotency-Keystring

Client-generated key; replays return the original result.

Request body
requiredapplication/json
entity_typestringrequired
Allowed:productpriceinventoryorder_status
entity_idstringrequired
occurred_atstring<date-time>required
sequenceinteger<int64>required

Monotonic per-connector sequence for replay/ordering.

changestring
Allowed:createdupdateddeleted
Responses
202

Signal accepted for async processing.

acceptedboolean
401

Missing or invalid credentials.

errorobjectrequired
Show properties
codestringrequired
messagestringrequired
detailsobject | null
409

Replay or out-of-sequence signal (sequence already seen).

errorobjectrequired
Show properties
codestringrequired
messagestringrequired
detailsobject | null
Try it
Server
Authorization
Parameters
Bodyapplication/json
Request
curl -X POST "https://api.sarvex.example.com/v1/connector/signals" \
  -H "X-Sarvex-Signature: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "entity_type": "product",
  "entity_id": "string",
  "occurred_at": "2019-08-24T14:15:22Z",
  "sequence": 0,
  "change": "created"
}'
Response
{
  "accepted": true
}