WebhookEvent
The JSON body POSTed to your endpoint when a task reaches a terminal state.
Verifying signatures. Every delivery carries an X-LayerIQ-Signature
header of the form t=<unix_seconds>,v1=<hex>. Recompute the HMAC and
compare:
signed = `${t}.${rawRequestBody}`
expected = HMAC_SHA256(signingSecret, signed) # hex
verify = timingSafeEqual(expected, v1)
Use the raw request body bytes (do not re-serialize the JSON), and reject
deliveries whose t is outside an acceptable clock-skew window (e.g. 5
minutes) to prevent replay. The X-LayerIQ-Event header echoes type.
Idempotency. Dedupe on the envelope id. Return a 2xx quickly; we retry
non-2xx responses with exponential backoff (5 attempts) and otherwise mark
the delivery failed.
- createdType: stringFormat: date-time
At requiredthe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
- dataType: objectrequired
- countsType: object ยท TaskCountsrequired
- modeType: stringenumrequiredvalues
- I
N G E S T - N
O R M A L I Z E - U
P D A T E - D
E L E T E
- statusType: stringenumrequiredvalues
- C
O M P L E T E - F
A I L E D
- taskType: string
Id requiredThe AssetIngestRun id - poll taskUrl for full detail.
- taskType: string
Url requiredRelative task status URL.
- errorType: string | null
- idType: stringrequired
Delivery id; use it to dedupe.
- typeType: stringenumrequiredvalues
- asset
.ingest .completed - asset
.ingest .failed - asset
.normalize .completed - asset
.normalize .failed - asset
.bulk _update .completed - asset
.bulk _update .failed - asset
.bulk _delete .completed - asset
.bulk _delete .failed