Skip to main content

Usage webhooks

Prism ส่ง event ที่เซ็นแล้วไปยัง endpoint ของคุณทุกครั้งที่มีการเรียกที่คิดเงิน ใช้กระทบยอดค่าใช้จ่าย ทำ chargeback ภายใน หรือป้อนแดชบอร์ดของคุณเองได้ โดยไม่ต้อง poll usage API ตั้งค่าเองได้ในคอนโซลที่ Team → Usage webhook ระบบจะสร้าง signing secret ให้ และแสดงครั้งเดียวตอนสร้าง

สิ่งที่ส่งมา

หนึ่ง POST ต่อหนึ่ง usage event, content-type: application/json:
cost_credits_minor เป็นหน่วยย่อย — 143 คือ ฿1.43 Header:
เป็นรูปแบบ Standard Webhooks ดังนั้น verifier ของ Standard Webhooks ที่มีอยู่แล้วใช้ได้เลย

การตรวจสอบลายเซ็น

ข้อความที่เซ็นคือ {webhook-id}.{webhook-timestamp}.{raw body}
ต้องเซ็นจาก raw request body ก่อน parse JSON การแปลง object ที่ parse แล้ว กลับเป็น JSON ใหม่ทำให้ลำดับ key และช่องว่างเปลี่ยน ลายเซ็นจะไม่ตรง
ตัวอย่าง Python และ Go อยู่ในฉบับภาษาอังกฤษ

การตอบกลับ

ตอบ 2xx ทันทีที่บันทึก event แล้ว งานที่เหลือค่อยทำต่อ — handler ที่ช้าจะกิน โควตา retry ของคุณเอง สถานะอื่นถือว่าล้มเหลวและจะ retry แบบ exponential backoff (1 นาที, 2, 4, 8 … สูงสุด 1 ชั่วโมง) จนครบจำนวนครั้ง แล้วจึงมาร์กเป็น dead และแสดง error ล่าสุด ในคอนโซล

Idempotency

การ retry ทำให้ event_id เดิมมาถึงได้มากกว่าหนึ่งครั้ง ให้ใช้ event_id เป็น primary key ฝั่งคุณและข้ามตัวซ้ำ อย่าบวกยอดสะสมทุกครั้งที่ได้รับ

ลำดับ

delivery ไม่รับประกันลำดับ event ที่ retry อาจมาถึงหลัง event ที่ใหม่กว่า ถ้าลำดับสำคัญให้ใช้ occurred_at แทนลำดับการมาถึง

การหมุน secret

secret แสดงครั้งเดียวและเก็บแบบเข้ารหัส Prism แสดงให้อีกไม่ได้ ถ้าจะหมุน ให้ เพิ่ม endpoint ตัวที่สองที่ URL เดิม deploy ตัวรับที่ยอมรับได้ทั้งสอง secret แล้วค่อยลบตัวเก่า English version