Repository navigation
sdk-python-v0.5.0
·
112 commits
to main
since this release
Added
verify_signature(headers, body, secrets, *, tolerance_seconds=300, now=None)
verifies the Standard Webhooks signature an HTTP sink with asecretadds,
comparing in constant time; failures raiseInvalidSignatureError(code,
field,retryable=False).message.Message,message.decode_message(), andmessage.InvalidMessageError
(withcode,fieldandretryable=False): decode and validate the v1
queue message every sink delivers — the inline (body_base64) and
claim-check (claim) body forms,sha256,dedupe_key,replay_id, and
the forwardedheaders, ignoring unknown keys.message.idempotency_key(), the key to store in a processed-ids table: the
key Ankusa shipped (the message'sidempotency_key, or the
x-ankusa-idempotency-keyheader), and for a message or delivery that
predates the fieldtenant:source_id:dedupe_key(tenantdefaultwhen there
is none) whendedupe_keyis set, elseid, with an optional
#replay:<replay_id>suffix (include_replay=True).Message.idempotency_key, decoded likereplay_id, and
HookHeaders.dedupe_key/HookHeaders.replay_id/
HookHeaders.idempotency_key, parsed fromx-ankusa-dedupe-key/
x-ankusa-replay-id/x-ankusa-idempotency-key.AdminClient.create_replay(),get_replay(),list_replays()and
update_replay()for thePOST/GET/PATCH /v1/replaysreplay-job API (kinds
dlq,archive,quarantine).
Changed
ClaimCheckClient.redeem()raisesClaimCheckUnavailableError(retryable)
for a gateway408or429instead ofClaimRejectedError.
Removed
AdminClient.replay_dead_letters(), replaced by the replay-job API above.
POST /v1/dlq/replayno longer exists.