{"service":"HALOWERK x402werk","endpoint":"/guard/replay","method":"POST","content_type":"application/json","inputSchema":{"type":"object","additionalProperties":false,"anyOf":[{"required":["payment_id"]},{"required":["payload_hash"]},{"required":["nonce"]}],"properties":{"payment_id":{"type":"string","minLength":1,"maxLength":512,"description":"Payment identifier of the x402 payment-identifier extension, or any identifier your client treats as unique per payment. Stored only as a SHA-256 fingerprint."},"payload_hash":{"type":"string","minLength":1,"maxLength":512,"description":"Hash of the request payload that was paid for. Stored only as a SHA-256 fingerprint of the value you send."},"nonce":{"type":"string","minLength":1,"maxLength":512,"description":"Nonce of the signed payment authorisation. Stored only as a SHA-256 fingerprint."},"window_seconds":{"type":"integer","minimum":1,"maximum":86400,"default":3600,"description":"How far back a sighting still counts as a duplicate for the recommendation. Fingerprints are kept for 24 hours regardless."},"record":{"type":"boolean","default":true,"description":"Whether this call is remembered. Set to false to check without writing, so repeated checks of the same payment do not report themselves as duplicates."}}},"requestExample":{"payment_id":"beispiel","window_seconds":3600,"record":true},"operations":[{"method":"POST","inputSchema":{"type":"object","additionalProperties":false,"anyOf":[{"required":["payment_id"]},{"required":["payload_hash"]},{"required":["nonce"]}],"properties":{"payment_id":{"type":"string","minLength":1,"maxLength":512,"description":"Payment identifier of the x402 payment-identifier extension, or any identifier your client treats as unique per payment. Stored only as a SHA-256 fingerprint."},"payload_hash":{"type":"string","minLength":1,"maxLength":512,"description":"Hash of the request payload that was paid for. Stored only as a SHA-256 fingerprint of the value you send."},"nonce":{"type":"string","minLength":1,"maxLength":512,"description":"Nonce of the signed payment authorisation. Stored only as a SHA-256 fingerprint."},"window_seconds":{"type":"integer","minimum":1,"maximum":86400,"default":3600,"description":"How far back a sighting still counts as a duplicate for the recommendation. Fingerprints are kept for 24 hours regardless."},"record":{"type":"boolean","default":true,"description":"Whether this call is remembered. Set to false to check without writing, so repeated checks of the same payment do not report themselves as duplicates."}}},"requestExample":{"payment_id":"beispiel","window_seconds":3600,"record":true}}],"example_request":{"payment_id":"beispiel","window_seconds":3600,"record":true},"serviceName":"replay_guard","tags":["x402","x402-infra","agent-payments","replay-protection","security"],"outputSchema":{"type":"object","properties":{"is_duplicate":{"type":"boolean"},"first_seen":{"type":["string","null"]},"seen_count":{"type":"integer"},"duplicate_of":{"type":["object","null"]},"nonce_reused":{"type":["boolean","null"]},"within_window":{"type":"boolean"},"recommendation":{"type":"string","enum":["annehmen","ablehnen","pruefen"]},"evidence":{"type":"object"},"thresholds_used":{"type":"object"},"ts_fetched":{"type":"integer"},"age_ms":{"type":"integer"},"unavailable_fields":{"type":"array","items":{"type":"string"}}}},"outputExample":{"is_duplicate":false,"first_seen":null,"seen_count":1,"duplicate_of":null,"nonce_reused":null,"within_window":false,"recommendation":"annehmen","evidence":{"identifiers_checked":[{"kind":"payment_id","fingerprint":"sha256:64c2963a90dc59d4","seen_before":false,"first_seen":"2026-10-22T23:51:23.942Z","last_seen":"2026-10-22T23:51:23.942Z","seen_count":1,"age_ms":0,"within_window":false}],"window_seconds":3600,"recorded":true,"reasons":["None of the supplied identifiers has been seen in the last 86400 seconds."],"privacy":"Only SHA-256 fingerprints and timestamps are stored. No payload, no identifier in clear text, no address. Fingerprints are deleted 24 hours after the last sighting."},"thresholds_used":{"window_seconds_default":3600,"retention_seconds":86400,"ablehnen":"payment_id or nonce was already seen and the earlier sighting lies inside the window. Both are unique by definition, so a repeat is a replay.","pruefen":"payload_hash repeats but payment_id and nonce do not; or a sighting lies outside the window; or no identifier at all was supplied. A repeated payload can be a legitimate second purchase of the same query.","annehmen":"no supplied identifier has been seen before within the retention period.","bias":"On doubt the answer is pruefen, never ablehnen. A false alarm costs a sale, a missed duplicate costs one small amount."},"ts_fetched":1792713083942,"age_ms":1,"unavailable_fields":["nonce_reused"]}}