{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/sarnai-dev/json-schema/sarnai-dev-compact-verify-schema-response-schema.json",
  "title": "CompactVerifySchemaResponse",
  "description": "The `\"detail\": \"compact\"` response shape (verifier_version 0.4.0): the same summary,\nnext_actions, result, receipt fields, verify and attestation as VerifySchemaResponse -\nsame field order, same values - with errors, errors_detail, flags, hints and the scores\nleft out entirely (not emptied). Still fully signed: attest() runs on exactly this\nshape, not on a full response with fields hidden afterward.\n\n`extra=\"forbid\"` (unlike the pydantic default) is deliberate: FastAPI's\n`response_model=VerifySchemaResponse | CompactVerifySchemaResponse` picks whichever\nmember actually validates, and without this a \"full\" dict would also satisfy this\nmodel (pydantic's default is to silently ignore fields a model doesn't declare),\nnon-deterministically returning a full response shaped as compact.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/verify-openapi.json#/components/schemas/CompactVerifySchemaResponse",
  "properties": {
    "summary": {
      "$ref": "#/$defs/Summary"
    },
    "next_actions": {
      "items": {
        "additionalProperties": {
          "type": "string"
        },
        "type": "object"
      },
      "type": "array",
      "title": "Next Actions"
    },
    "result": {
      "type": "string",
      "enum": [
        "pass",
        "fail"
      ],
      "title": "Result"
    },
    "verification_id": {
      "type": "string",
      "title": "Verification Id"
    },
    "task_id": {
      "type": "string",
      "title": "Task Id"
    },
    "agent_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Agent Id"
    },
    "output_hash": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Output Hash"
    },
    "schema_hash": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Schema Hash"
    },
    "rules_hash": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Rules Hash"
    },
    "verified_at": {
      "type": "string",
      "title": "Verified At"
    },
    "verifier_version": {
      "type": "string",
      "title": "Verifier Version"
    },
    "enforce_rules": {
      "type": "boolean",
      "title": "Enforce Rules"
    },
    "strict_content_check": {
      "type": "boolean",
      "title": "Strict Content Check"
    },
    "verify": {
      "$ref": "#/$defs/VerifySection"
    },
    "attestation": {
      "$ref": "#/$defs/Attestation"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "summary",
    "next_actions",
    "result",
    "verification_id",
    "task_id",
    "agent_id",
    "output_hash",
    "schema_hash",
    "rules_hash",
    "verified_at",
    "verifier_version",
    "enforce_rules",
    "strict_content_check",
    "verify",
    "attestation"
  ],
  "$defs": {
    "Attestation": {
      "properties": {
        "algorithm": {
          "type": "string",
          "const": "Ed25519",
          "title": "Algorithm"
        },
        "key_version": {
          "type": "string",
          "title": "Key Version"
        },
        "timestamp": {
          "type": "string",
          "title": "Timestamp"
        },
        "signature": {
          "type": "string",
          "title": "Signature"
        }
      },
      "type": "object",
      "required": [
        "algorithm",
        "key_version",
        "timestamp",
        "signature"
      ],
      "title": "Attestation"
    },
    "Summary": {
      "properties": {
        "result": {
          "type": "string",
          "enum": [
            "pass",
            "fail"
          ],
          "title": "Result",
          "description": "Same value as the top-level `result`."
        },
        "blocking_checks": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Blocking Checks",
          "description": "Distinct check codes that caused 'fail' (the same codes used in `errors_detail[].check`, `flags[].check` and `hints[].check`), in first-seen order; empty on 'pass'."
        }
      },
      "type": "object",
      "required": [
        "result",
        "blocking_checks"
      ],
      "title": "Summary",
      "description": "Compact digest of the verdict, for a caller that wants the headline without reading\n`errors`/`flags` (verifier_version 0.4.0)."
    },
    "VerifySection": {
      "properties": {
        "public_key_url": {
          "type": "string",
          "title": "Public Key Url",
          "description": "Agent-card URL listing the public key for key_version below, and every key this service has ever signed with."
        },
        "key_version": {
          "type": "string",
          "title": "Key Version",
          "description": "Matches attestation.key_version."
        },
        "canonicalization": {
          "type": "string",
          "title": "Canonicalization",
          "description": "How every hash below, and the signed bytes themselves, are computed."
        },
        "hash_algorithm": {
          "type": "string",
          "title": "Hash Algorithm",
          "description": "Algorithm behind every *_hash field in this response."
        },
        "service": {
          "type": "string",
          "title": "Service",
          "description": "This service's name."
        },
        "mcp": {
          "type": "string",
          "title": "Mcp",
          "description": "This service's MCP (Model Context Protocol) endpoint."
        }
      },
      "type": "object",
      "required": [
        "public_key_url",
        "key_version",
        "canonicalization",
        "hash_algorithm",
        "service",
        "mcp"
      ],
      "title": "VerifySection",
      "description": "Compact, self-describing block every signed attestation and receipt carries (2026-09-30,\nverifier_version 0.4.0) - inside the signature, alongside `attestation` itself - so a\nverifier needs nothing but this response and the URL below, not a separate lookup or\nprior knowledge of this service's conventions."
    }
  }
}