{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "$id": "https://x402.nsgoods.org/watchdog/schema/watchdog_v1.schema.json",
 "title": "x402 Watchdog signed body (watchdog_v1)",
 "description": "FROZEN after publication. Signed monitoring bodies: one closed branch per alert_type (weak_signal and evidence pinned per type), plus registration_receipt, daily_attestation, subscription_expired, and the 400 / 503 refusal shapes. Every branch additionalProperties false. The 402 payment-required response is the STANDARD x402 v2 challenge emitted by the x402 middleware, not one of these branches.",
 "$defs": {
  "manifest": {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "url",
    "entry"
   ],
   "properties": {
    "url": {
     "const": "https://x402.nsgoods.org/proof/index.json"
    },
    "entry": {
     "const": "watchdog"
    }
   }
  },
  "ev_reach": {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "previous_status",
    "current_status"
   ],
   "properties": {
    "previous_status": {
     "type": "string"
    },
    "current_status": {
     "type": "string"
    }
   }
  },
  "ev_verdict": {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "previous_verdict",
    "current_verdict",
    "http_status"
   ],
   "properties": {
    "previous_verdict": {
     "type": "string"
    },
    "current_verdict": {
     "type": "string"
    },
    "http_status": {
     "type": [
      "integer",
      "null"
     ]
    }
   }
  },
  "ev_payto": {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "network",
    "previous_pay_to",
    "current_pay_to"
   ],
   "properties": {
    "network": {
     "type": "string"
    },
    "previous_pay_to": {
     "type": [
      "string",
      "null"
     ]
    },
    "current_pay_to": {
     "type": [
      "string",
      "null"
     ]
    }
   }
  },
  "ev_networks": {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "previous_networks",
    "current_networks"
   ],
   "properties": {
    "previous_networks": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "current_networks": {
     "type": "array",
     "items": {
      "type": "string"
     }
    }
   }
  },
  "ev_asset": {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "network",
    "previous_asset",
    "current_asset"
   ],
   "properties": {
    "network": {
     "type": "string"
    },
    "previous_asset": {
     "type": [
      "string",
      "null"
     ]
    },
    "current_asset": {
     "type": [
      "string",
      "null"
     ]
    }
   }
  },
  "ev_selfinc": {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "body_challenge",
    "header_challenge"
   ],
   "properties": {
    "body_challenge": {
     "type": "object"
    },
    "header_challenge": {
     "type": "object"
    }
   }
  },
  "ev_disappeared": {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "last_catalogued_scan",
    "first_absent_scan",
    "direct_probe_result"
   ],
   "properties": {
    "last_catalogued_scan": {
     "type": "string"
    },
    "first_absent_scan": {
     "type": "string"
    },
    "direct_probe_result": {
     "type": "string"
    }
   }
  }
 },
 "oneOf": [
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "schema_version",
    "type",
    "alert_type",
    "subscription_id",
    "endpoint",
    "channel_type",
    "channel_ref",
    "weak_signal",
    "observed_at",
    "previous_observed_at",
    "evidence",
    "limitations",
    "signer",
    "manifest",
    "digest",
    "signature"
   ],
   "properties": {
    "schema_version": {
     "const": "watchdog_v1"
    },
    "type": {
     "const": "alert"
    },
    "alert_type": {
     "const": "endpoint_unreachable"
    },
    "subscription_id": {
     "type": "string"
    },
    "endpoint": {
     "type": "string"
    },
    "channel_type": {
     "enum": [
      "email",
      "webhook"
     ]
    },
    "channel_ref": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "weak_signal": {
     "const": false
    },
    "observed_at": {
     "type": "string",
     "format": "date-time"
    },
    "previous_observed_at": {
     "anyOf": [
      {
       "type": "string",
       "format": "date-time"
      },
      {
       "type": "null"
      }
     ]
    },
    "evidence": {
     "$ref": "#/$defs/ev_reach"
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1
    },
    "signer": {
     "const": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c"
    },
    "manifest": {
     "$ref": "#/$defs/manifest"
    },
    "digest": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "signature": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]+$"
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "schema_version",
    "type",
    "alert_type",
    "subscription_id",
    "endpoint",
    "channel_type",
    "channel_ref",
    "weak_signal",
    "observed_at",
    "previous_observed_at",
    "evidence",
    "limitations",
    "signer",
    "manifest",
    "digest",
    "signature"
   ],
   "properties": {
    "schema_version": {
     "const": "watchdog_v1"
    },
    "type": {
     "const": "alert"
    },
    "alert_type": {
     "const": "endpoint_recovered"
    },
    "subscription_id": {
     "type": "string"
    },
    "endpoint": {
     "type": "string"
    },
    "channel_type": {
     "enum": [
      "email",
      "webhook"
     ]
    },
    "channel_ref": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "weak_signal": {
     "const": false
    },
    "observed_at": {
     "type": "string",
     "format": "date-time"
    },
    "previous_observed_at": {
     "anyOf": [
      {
       "type": "string",
       "format": "date-time"
      },
      {
       "type": "null"
      }
     ]
    },
    "evidence": {
     "$ref": "#/$defs/ev_reach"
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1
    },
    "signer": {
     "const": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c"
    },
    "manifest": {
     "$ref": "#/$defs/manifest"
    },
    "digest": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "signature": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]+$"
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "schema_version",
    "type",
    "alert_type",
    "subscription_id",
    "endpoint",
    "channel_type",
    "channel_ref",
    "weak_signal",
    "observed_at",
    "previous_observed_at",
    "evidence",
    "limitations",
    "signer",
    "manifest",
    "digest",
    "signature"
   ],
   "properties": {
    "schema_version": {
     "const": "watchdog_v1"
    },
    "type": {
     "const": "alert"
    },
    "alert_type": {
     "const": "verdict_degraded"
    },
    "subscription_id": {
     "type": "string"
    },
    "endpoint": {
     "type": "string"
    },
    "channel_type": {
     "enum": [
      "email",
      "webhook"
     ]
    },
    "channel_ref": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "weak_signal": {
     "const": false
    },
    "observed_at": {
     "type": "string",
     "format": "date-time"
    },
    "previous_observed_at": {
     "anyOf": [
      {
       "type": "string",
       "format": "date-time"
      },
      {
       "type": "null"
      }
     ]
    },
    "evidence": {
     "$ref": "#/$defs/ev_verdict"
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1
    },
    "signer": {
     "const": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c"
    },
    "manifest": {
     "$ref": "#/$defs/manifest"
    },
    "digest": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "signature": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]+$"
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "schema_version",
    "type",
    "alert_type",
    "subscription_id",
    "endpoint",
    "channel_type",
    "channel_ref",
    "weak_signal",
    "observed_at",
    "previous_observed_at",
    "evidence",
    "limitations",
    "signer",
    "manifest",
    "digest",
    "signature"
   ],
   "properties": {
    "schema_version": {
     "const": "watchdog_v1"
    },
    "type": {
     "const": "alert"
    },
    "alert_type": {
     "const": "verdict_restored"
    },
    "subscription_id": {
     "type": "string"
    },
    "endpoint": {
     "type": "string"
    },
    "channel_type": {
     "enum": [
      "email",
      "webhook"
     ]
    },
    "channel_ref": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "weak_signal": {
     "const": false
    },
    "observed_at": {
     "type": "string",
     "format": "date-time"
    },
    "previous_observed_at": {
     "anyOf": [
      {
       "type": "string",
       "format": "date-time"
      },
      {
       "type": "null"
      }
     ]
    },
    "evidence": {
     "$ref": "#/$defs/ev_verdict"
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1
    },
    "signer": {
     "const": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c"
    },
    "manifest": {
     "$ref": "#/$defs/manifest"
    },
    "digest": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "signature": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]+$"
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "schema_version",
    "type",
    "alert_type",
    "subscription_id",
    "endpoint",
    "channel_type",
    "channel_ref",
    "weak_signal",
    "observed_at",
    "previous_observed_at",
    "evidence",
    "limitations",
    "signer",
    "manifest",
    "digest",
    "signature"
   ],
   "properties": {
    "schema_version": {
     "const": "watchdog_v1"
    },
    "type": {
     "const": "alert"
    },
    "alert_type": {
     "const": "payto_changed"
    },
    "subscription_id": {
     "type": "string"
    },
    "endpoint": {
     "type": "string"
    },
    "channel_type": {
     "enum": [
      "email",
      "webhook"
     ]
    },
    "channel_ref": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "weak_signal": {
     "const": false
    },
    "observed_at": {
     "type": "string",
     "format": "date-time"
    },
    "previous_observed_at": {
     "anyOf": [
      {
       "type": "string",
       "format": "date-time"
      },
      {
       "type": "null"
      }
     ]
    },
    "evidence": {
     "$ref": "#/$defs/ev_payto"
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1
    },
    "signer": {
     "const": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c"
    },
    "manifest": {
     "$ref": "#/$defs/manifest"
    },
    "digest": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "signature": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]+$"
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "schema_version",
    "type",
    "alert_type",
    "subscription_id",
    "endpoint",
    "channel_type",
    "channel_ref",
    "weak_signal",
    "observed_at",
    "previous_observed_at",
    "evidence",
    "limitations",
    "signer",
    "manifest",
    "digest",
    "signature"
   ],
   "properties": {
    "schema_version": {
     "const": "watchdog_v1"
    },
    "type": {
     "const": "alert"
    },
    "alert_type": {
     "const": "networks_changed"
    },
    "subscription_id": {
     "type": "string"
    },
    "endpoint": {
     "type": "string"
    },
    "channel_type": {
     "enum": [
      "email",
      "webhook"
     ]
    },
    "channel_ref": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "weak_signal": {
     "const": false
    },
    "observed_at": {
     "type": "string",
     "format": "date-time"
    },
    "previous_observed_at": {
     "anyOf": [
      {
       "type": "string",
       "format": "date-time"
      },
      {
       "type": "null"
      }
     ]
    },
    "evidence": {
     "$ref": "#/$defs/ev_networks"
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1
    },
    "signer": {
     "const": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c"
    },
    "manifest": {
     "$ref": "#/$defs/manifest"
    },
    "digest": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "signature": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]+$"
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "schema_version",
    "type",
    "alert_type",
    "subscription_id",
    "endpoint",
    "channel_type",
    "channel_ref",
    "weak_signal",
    "observed_at",
    "previous_observed_at",
    "evidence",
    "limitations",
    "signer",
    "manifest",
    "digest",
    "signature"
   ],
   "properties": {
    "schema_version": {
     "const": "watchdog_v1"
    },
    "type": {
     "const": "alert"
    },
    "alert_type": {
     "const": "asset_changed"
    },
    "subscription_id": {
     "type": "string"
    },
    "endpoint": {
     "type": "string"
    },
    "channel_type": {
     "enum": [
      "email",
      "webhook"
     ]
    },
    "channel_ref": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "weak_signal": {
     "const": false
    },
    "observed_at": {
     "type": "string",
     "format": "date-time"
    },
    "previous_observed_at": {
     "anyOf": [
      {
       "type": "string",
       "format": "date-time"
      },
      {
       "type": "null"
      }
     ]
    },
    "evidence": {
     "$ref": "#/$defs/ev_asset"
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1
    },
    "signer": {
     "const": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c"
    },
    "manifest": {
     "$ref": "#/$defs/manifest"
    },
    "digest": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "signature": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]+$"
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "schema_version",
    "type",
    "alert_type",
    "subscription_id",
    "endpoint",
    "channel_type",
    "channel_ref",
    "weak_signal",
    "observed_at",
    "previous_observed_at",
    "evidence",
    "limitations",
    "signer",
    "manifest",
    "digest",
    "signature"
   ],
   "properties": {
    "schema_version": {
     "const": "watchdog_v1"
    },
    "type": {
     "const": "alert"
    },
    "alert_type": {
     "const": "self_inconsistent_402_detected"
    },
    "subscription_id": {
     "type": "string"
    },
    "endpoint": {
     "type": "string"
    },
    "channel_type": {
     "enum": [
      "email",
      "webhook"
     ]
    },
    "channel_ref": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "weak_signal": {
     "const": false
    },
    "observed_at": {
     "type": "string",
     "format": "date-time"
    },
    "previous_observed_at": {
     "anyOf": [
      {
       "type": "string",
       "format": "date-time"
      },
      {
       "type": "null"
      }
     ]
    },
    "evidence": {
     "$ref": "#/$defs/ev_selfinc"
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1
    },
    "signer": {
     "const": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c"
    },
    "manifest": {
     "$ref": "#/$defs/manifest"
    },
    "digest": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "signature": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]+$"
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "schema_version",
    "type",
    "alert_type",
    "subscription_id",
    "endpoint",
    "channel_type",
    "channel_ref",
    "weak_signal",
    "observed_at",
    "previous_observed_at",
    "evidence",
    "limitations",
    "signer",
    "manifest",
    "digest",
    "signature"
   ],
   "properties": {
    "schema_version": {
     "const": "watchdog_v1"
    },
    "type": {
     "const": "alert"
    },
    "alert_type": {
     "const": "listing_disappeared_from_catalog"
    },
    "subscription_id": {
     "type": "string"
    },
    "endpoint": {
     "type": "string"
    },
    "channel_type": {
     "enum": [
      "email",
      "webhook"
     ]
    },
    "channel_ref": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "weak_signal": {
     "const": true
    },
    "observed_at": {
     "type": "string",
     "format": "date-time"
    },
    "previous_observed_at": {
     "anyOf": [
      {
       "type": "string",
       "format": "date-time"
      },
      {
       "type": "null"
      }
     ]
    },
    "evidence": {
     "$ref": "#/$defs/ev_disappeared"
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1
    },
    "signer": {
     "const": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c"
    },
    "manifest": {
     "$ref": "#/$defs/manifest"
    },
    "digest": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "signature": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]+$"
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "schema_version",
    "type",
    "subscription_id",
    "endpoint",
    "channel_type",
    "channel_ref",
    "tier",
    "verification_status",
    "registered_at",
    "verified_at",
    "expires_at",
    "alert_types_enabled",
    "limitations",
    "signer",
    "manifest",
    "digest",
    "signature"
   ],
   "properties": {
    "schema_version": {
     "const": "watchdog_v1"
    },
    "type": {
     "const": "registration_receipt"
    },
    "subscription_id": {
     "type": "string"
    },
    "endpoint": {
     "type": "string"
    },
    "channel_type": {
     "enum": [
      "email",
      "webhook"
     ]
    },
    "channel_ref": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "tier": {
     "enum": [
      "free",
      "paid"
     ]
    },
    "verification_status": {
     "enum": [
      "pending",
      "verified"
     ]
    },
    "registered_at": {
     "type": "string",
     "format": "date-time"
    },
    "verified_at": {
     "anyOf": [
      {
       "type": "string",
       "format": "date-time"
      },
      {
       "type": "null"
      }
     ]
    },
    "expires_at": {
     "anyOf": [
      {
       "type": "string",
       "format": "date-time"
      },
      {
       "type": "null"
      }
     ]
    },
    "alert_types_enabled": {
     "type": "array",
     "items": {
      "enum": [
       "endpoint_unreachable",
       "endpoint_recovered",
       "verdict_degraded",
       "verdict_restored",
       "payto_changed",
       "networks_changed",
       "asset_changed",
       "self_inconsistent_402_detected",
       "listing_disappeared_from_catalog"
      ]
     },
     "minItems": 9,
     "maxItems": 9
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1
    },
    "signer": {
     "const": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c"
    },
    "manifest": {
     "$ref": "#/$defs/manifest"
    },
    "digest": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "signature": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]+$"
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "schema_version",
    "type",
    "subscription_id",
    "endpoint",
    "channel_ref",
    "attested_at",
    "window",
    "checks_run",
    "result",
    "last_known",
    "limitations",
    "signer",
    "manifest",
    "digest",
    "signature"
   ],
   "properties": {
    "schema_version": {
     "const": "watchdog_v1"
    },
    "type": {
     "const": "daily_attestation"
    },
    "subscription_id": {
     "type": "string"
    },
    "endpoint": {
     "type": "string"
    },
    "channel_ref": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "attested_at": {
     "type": "string",
     "format": "date-time"
    },
    "window": {
     "type": "object",
     "additionalProperties": false,
     "required": [
      "from",
      "to"
     ],
     "properties": {
      "from": {
       "type": "string",
       "format": "date-time"
      },
      "to": {
       "type": "string",
       "format": "date-time"
      }
     }
    },
    "checks_run": {
     "type": "array",
     "items": {
      "enum": [
       "endpoint_unreachable",
       "endpoint_recovered",
       "verdict_degraded",
       "verdict_restored",
       "payto_changed",
       "networks_changed",
       "asset_changed",
       "self_inconsistent_402_detected",
       "listing_disappeared_from_catalog"
      ]
     }
    },
    "result": {
     "enum": [
      "no_change",
      "changes_alerted_separately"
     ]
    },
    "last_known": {
     "type": "object",
     "additionalProperties": false,
     "required": [
      "verdict",
      "reachable",
      "pay_to_by_network",
      "networks",
      "assets_by_network"
     ],
     "properties": {
      "verdict": {
       "type": "string"
      },
      "reachable": {
       "type": "boolean"
      },
      "pay_to_by_network": {
       "type": "object"
      },
      "networks": {
       "type": "array",
       "items": {
        "type": "string"
       }
      },
      "assets_by_network": {
       "type": "object"
      }
     }
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1
    },
    "signer": {
     "const": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c"
    },
    "manifest": {
     "$ref": "#/$defs/manifest"
    },
    "digest": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "signature": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]+$"
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "schema_version",
    "type",
    "subscription_id",
    "endpoint",
    "channel_ref",
    "expired_at",
    "limitations",
    "signer",
    "manifest",
    "digest",
    "signature"
   ],
   "properties": {
    "schema_version": {
     "const": "watchdog_v1"
    },
    "type": {
     "const": "subscription_expired"
    },
    "subscription_id": {
     "type": "string"
    },
    "endpoint": {
     "type": "string"
    },
    "channel_ref": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "expired_at": {
     "type": "string",
     "format": "date-time"
    },
    "limitations": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1
    },
    "signer": {
     "const": "0x57fF0F084Cba33e6761503f90eEF0Da9F159350c"
    },
    "manifest": {
     "$ref": "#/$defs/manifest"
    },
    "digest": {
     "type": "string",
     "pattern": "^[0-9a-f]{64}$"
    },
    "signature": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]+$"
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "error",
    "http_status",
    "charged",
    "schema_version",
    "reason_codes"
   ],
   "properties": {
    "error": {
     "type": "string"
    },
    "detail": {
     "type": "string"
    },
    "http_status": {
     "const": 400
    },
    "charged": {
     "const": false
    },
    "schema_version": {
     "const": "watchdog_v1"
    },
    "note": {
     "type": "string"
    },
    "reason_codes": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1,
     "contains": {
      "const": "invalid_subject"
     }
    }
   }
  },
  {
   "type": "object",
   "additionalProperties": false,
   "required": [
    "error",
    "http_status",
    "charged",
    "schema_version",
    "reason_codes"
   ],
   "properties": {
    "error": {
     "type": "string"
    },
    "detail": {
     "type": "string"
    },
    "http_status": {
     "const": 503
    },
    "charged": {
     "const": false
    },
    "schema_version": {
     "const": "watchdog_v1"
    },
    "note": {
     "type": "string"
    },
    "reason_codes": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "minItems": 1,
     "contains": {
      "const": "signing_unavailable"
     }
    }
   }
  }
 ]
}
