{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/hookbase/main/json-schema/hookbase-catalog-signature-verification-schema.json", "title": "CatalogSignatureVerification", "x-generated": "2026-10-18", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/hookbase-openapi.json#/components/schemas/CatalogSignatureVerification", "type": [ "object", "null" ], "properties": { "supported": { "type": "boolean" }, "kind": { "type": "string", "enum": [ "hmac", "shared_secret", "bespoke", "asymmetric" ], "description": "Verification family. Absent for entries that map to custom." }, "secretSource": { "type": "string", "enum": [ "provider", "operator", "public_key", "built_in", "none" ], "description": "provider: vendor issues it, paste it. operator: Hookbase generates it when omitted, paste it into the vendor. public_key: paste the vendor public key. built_in: no secret (sending one is a 400). none: vendor does not sign / not verifiable yet." }, "secretLabel": { "type": "string", "description": "The vendor's name for the credential." }, "secretPlaceholder": { "type": "string" }, "secretAfterRegistration": { "type": "boolean", "description": "Present and true when the vendor issues the secret only after the ingest URL is registered (asana, notion)." }, "algorithm": { "type": "string" }, "headerName": { "type": "string" }, "secretLocationHint": { "type": "string" }, "secretInstruction": { "type": "string", "description": "Where to copy the value from, where to paste a generated one, or why there is nothing to enter." }, "secretFormat": { "type": "string", "enum": [ "whsec", "basic_auth" ] }, "verifyToken": { "type": "object", "description": "Meta providers (whatsapp) only: the second, Hookbase-generated credential checked at registration.", "properties": { "label": { "type": "string" }, "instruction": { "type": "string" } } } } }