웹훅 전송 기록 상세
전송 기록 한 건의 진단 정보. 목록 항목에 보낸 요청 본문(`payload`)과 요청 헤더(`requestHeaders`)가 더해진다. `payload`는 수신 서버에 보낸 본문 문자열 그대로다 — 서명은 이 문자열을 대상으로 계산하므로 서명 검증이 실패할 때 이 값으로 맞춰 본다. 16KB를 넘으면 잘리고 `payloadTruncated`가 true다. 민감 키 마스킹이 본문을 바꿨으면 `payloadMasked`가 true이고 그 본문으로는 서명을 맞춰 볼 수 없다. 요청 헤더의 `Content-Length`는 가리거나 자르기 전, 실제로 보낸 본문의 바이트 수다. 서명 헤더(`Sayren-Signature`)는 이름만 주고 값은 null이다(시크릿에서 나온 값이라 내보내지 않는다). 재시도는 같은 기록에 누적되므로 응답 상태·본문·소요 시간·`failureReason`은 **마지막 시도**의 것이다.
전송 기록 한 건의 진단 정보. 목록 항목에 보낸 요청 본문(payload)과 요청 헤더(requestHeaders)가 더해진다.
payload는 수신 서버에 보낸 본문 문자열 그대로다 — 서명은 이 문자열을 대상으로 계산하므로 서명 검증이 실패할 때 이 값으로 맞춰 본다. 16KB를 넘으면 잘리고 payloadTruncated가 true다. 민감 키 마스킹이 본문을 바꿨으면 payloadMasked가 true이고 그 본문으로는 서명을 맞춰 볼 수 없다. 요청 헤더의 Content-Length는 가리거나 자르기 전, 실제로 보낸 본문의 바이트 수다. 서명 헤더(Sayren-Signature)는 이름만 주고 값은 null이다(시크릿에서 나온 값이라 내보내지 않는다). 재시도는 같은 기록에 누적되므로 응답 상태·본문·소요 시간·failureReason은 마지막 시도의 것이다.
accessTokenAuthorizationBearer <token>Sayren 계정 토큰(로그인 토큰 또는 개인 액세스 토큰, RFC 9068 JWT)
webhookId*stringdeliveryId*stringX-Store-Id*string대상 상점 id. 토큰의 상점 범위 밖이면 403 STORE_NOT_GRANTED, 없으면 400 STORE_ID_REQUIRED다
성공
application/json- response
meta*data*error*|nullcurl -X GET 'https://api.sayren.io/v1/webhooks/string/deliveries/string' \ -H 'X-Store-Id: string'{ "meta": { "status": 200, "code": "OK", "message": "OK", "isSuccess": true }, "data": { "deliveryId": "string", "eventId": "string", "eventType": "ORDER.PAID", "url": "string", "status": "PENDING", "responseStatusCode": 0, "responseTimeMs": 0, "responseBodyExcerpt": "string", "errorCode": "TIMEOUT", "failureReason": "string", "resource": { "type": "string", "id": "string" }, "attemptCount": 0, "createdAt": "string", "attemptedAt": "string", "nextAttemptAt": "string", "redeliveryOf": "string", "redeliveredAs": "string", "payload": "string", "payloadTruncated": true, "payloadMasked": true, "requestHeaders": [ { "name": "string", "value": "string" } ] }, "error": null}