{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/attestedmemory-net/json-schema/attestedmemory-net-permission-violation-request-schema.json",
  "title": "PermissionViolationRequest",
  "description": "One signed observation that a listed capability broke its own declaration.\n\nThe declaration is NOT taken from this body — the Hub reads what the publisher\nactually declared at admission, so a reporter cannot choose which claim it is\ncontradicting.",
  "x-generated": "2026-11-02",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hub-attestedmemory-openapi.json#/components/schemas/PermissionViolationRequest",
  "properties": {
    "product_id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Product Id"
    },
    "capability_id": {
      "type": "string",
      "maxLength": 192,
      "minLength": 1,
      "title": "Capability Id"
    },
    "permission": {
      "type": "string",
      "maxLength": 64,
      "minLength": 1,
      "title": "Permission"
    },
    "reporter_pubkey": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Reporter Pubkey"
    },
    "signature": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "title": "Signature"
    },
    "consumer_id": {
      "type": "string",
      "maxLength": 128,
      "title": "Consumer Id",
      "default": ""
    }
  },
  "type": "object",
  "required": [
    "product_id",
    "capability_id",
    "permission",
    "reporter_pubkey",
    "signature"
  ]
}