{
  "$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"
        }
      }
    }
  }
}