웹훅 전송 기록
최근 30일의 전송 기록. 최신 적재순. 이벤트 하나가 한 기록이며 재시도는 같은 기록의 `attemptCount`로 누적된다. 수동 재전송은 같은 `eventId`를 가진 새 기록(`redeliveryOf`=원본)으로 생긴다. 실패를 좁힐 때는 `failureReason`(DNS·TLS·TIMEOUT·CONNECTION·HTTP_4XX·HTTP_5XX·SSRF_BLOCKED)을 먼저 본다. `resourceId`에 주문·클레임·상품·리뷰·문의 id를 넣으면 그 리소스와 관련된 이벤트만 남는다 — 대표 리소스(`resource`)뿐 아니라 이벤트 `data`에 실린 모든 id를 본다. 같은 id를 API 로그 조회의 `q`로 넘기면 그 리소스를 건드린 API 요청을 볼 수 있다. 요청 본문·요청 헤더는 상세 조회에 있다.
최근 30일의 전송 기록. 최신 적재순. 이벤트 하나가 한 기록이며 재시도는 같은 기록의 attemptCount로 누적된다. 수동 재전송은 같은 eventId를 가진 새 기록(redeliveryOf=원본)으로 생긴다.
실패를 좁힐 때는 failureReason(DNS·TLS·TIMEOUT·CONNECTION·HTTP_4XX·HTTP_5XX·SSRF_BLOCKED)을 먼저 본다. resourceId에 주문·클레임·상품·리뷰·문의 id를 넣으면 그 리소스와 관련된 이벤트만 남는다 — 대표 리소스(resource)뿐 아니라 이벤트 data에 실린 모든 id를 본다. 같은 id를 API 로그 조회의 q로 넘기면 그 리소스를 건드린 API 요청을 볼 수 있다. 요청 본문·요청 헤더는 상세 조회에 있다.
accessTokenAuthorizationBearer <token>Sayren 계정 토큰(로그인 토큰 또는 개인 액세스 토큰, RFC 9068 JWT)
webhookId*stringstatus?string전송 상태 필터. 생략하면 전체
"PENDING""PENDING_RETRY""SUCCESS""FAILED"eventType?string이벤트 타입 필터. 생략하면 전체
"ORDER.PAID""ORDER.CONFIRMED""ORDER.DISPATCHED""ORDER.DELIVERED""ORDER.PURCHASE_DECIDED""ORDER.ADDRESS_CHANGE_REQUESTED""ORDER.CANCELED""ORDER.FULFILLED""CLAIM.CANCEL_REQUESTED""CLAIM.RETURN_REQUESTED""CLAIM.EXCHANGE_REQUESTED""CLAIM.COMPLETED""INQUIRY.CREATED""REVIEW.CREATED""PRODUCT.OUT_OF_STOCK""ORDER.FLOW_NOTIFICATION""ORDER.FLOW_STATE_CHANGED"resourceId?string대상 리소스 ID 필터(정확히 일치). 주문·클레임·상품·리뷰·문의 id를 넣으면 그 리소스의 이벤트만 남는다. 같은 id로 API 로그를 q로 검색하면 그 리소스를 건드린 API 요청을 볼 수 있다
limit?integer최대 건수 (1~100, 기본 50). 최신 적재순으로 반환하며 보관 기간은 30일이다
1 <= value <= 100X-Store-Id*string대상 상점 id. 토큰의 상점 범위 밖이면 403 STORE_NOT_GRANTED, 없으면 400 STORE_ID_REQUIRED다
성공
application/json- response
meta*data*array<>error*|nullcurl -X GET 'https://api.sayren.io/v1/webhooks/string/deliveries' \ -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" } ], "error": null}