{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://policywatcher.online/schemas/webhook-verification-kit/v1","title":"PolicyWatcher webhook verification readiness kit","type":"object","required":["schema","kitVersion","status","deliveryAvailable","algorithm","signatureVersion","signedPayloadFormat","headers","candidateTimestampToleranceSeconds","testVector","testVectorInstructions","conformanceSuite","receiverRequirements","examples","boundary"],"properties":{"schema":{"const":"https://policywatcher.online/schemas/webhook-verification-kit/v1"},"kitVersion":{"const":"1.0.0"},"status":{"const":"readiness-contract"},"deliveryAvailable":{"const":false},"algorithm":{"const":"HMAC-SHA256"},"signatureVersion":{"const":"v1"},"signedPayloadFormat":{"const":"{unix_timestamp}.{raw_request_body}"},"headers":{"type":"object","required":["eventId","timestamp","signature"],"properties":{"eventId":{"const":"PolicyWatcher-Event-Id"},"timestamp":{"const":"PolicyWatcher-Timestamp"},"signature":{"const":"PolicyWatcher-Signature"}},"additionalProperties":false},"candidateTimestampToleranceSeconds":{"type":"integer","minimum":1,"maximum":3600},"testVector":{"type":"object","required":["id","verificationMode","secretClassification","secret","timestamp","freshnessReferenceSeconds","eventId","payload","signedPayload","signatureHeader"],"properties":{"id":{"type":"string"},"verificationMode":{"const":"signature-compatibility-only"},"secretClassification":{"const":"public-test-only"},"secret":{"type":"string","minLength":1},"timestamp":{"type":"integer","minimum":1},"freshnessReferenceSeconds":{"type":"integer","minimum":1},"eventId":{"type":"string","pattern":"^pwe_[a-f0-9]{20}$"},"payload":{"type":"string","minLength":2},"signedPayload":{"type":"string","minLength":4},"signatureHeader":{"type":"string","pattern":"^v1=[a-f0-9]{64}$"}},"additionalProperties":false},"testVectorInstructions":{"type":"array","minItems":3,"items":{"type":"string","minLength":1}},"conformanceSuite":{"type":"object","required":["href","schema","caseCount"],"properties":{"href":{"const":"/api/v1/webhook-conformance-suite"},"schema":{"const":"https://policywatcher.online/schemas/webhook-conformance-suite/v1"},"caseCount":{"const":8}},"additionalProperties":false},"receiverRequirements":{"type":"array","minItems":1,"items":{"type":"string"}},"examples":{"type":"object","required":["node","python"],"properties":{"node":{"type":"string"},"python":{"type":"string"}},"additionalProperties":false},"boundary":{"type":"string"}},"additionalProperties":false}