{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://developers.ecocitizenz.com/schemas/action-envelopes/trustops-product-action-manifest.schema.json",
  "title": "TrustOps Product / Action Manifest",
  "description": "Machine-readable routing manifest for ECZ-ID setup routes. Route-only. Does NOT create checkout, create entitlement, activate public proof, imply certification, or imply platform endorsement. Public proof appears only after ECZ-ID Core activation/provisioning, not at checkout alone.",
  "type": "object",
  "required": ["manifest_type", "version", "generated_boundary", "products", "global_boundaries"],
  "additionalProperties": true,
  "properties": {
    "manifest_type": { "const": "ecz.trustops_product_action_manifest" },
    "version": { "type": "string" },
    "generated_boundary": {
      "type": "string",
      "description": "Static manifest. Does not create checkout, entitlement, or public proof."
    },
    "global_boundaries": {
      "type": "object",
      "required": ["not_safety_certification", "local_policy_decides"],
      "properties": {
        "not_safety_certification": { "const": true },
        "local_policy_decides": { "const": true },
        "recheck_before_reliance": { "const": true },
        "public_note": { "type": "string" }
      }
    },
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "product_name",
          "public_availability",
          "price",
          "setup_route",
          "proof_boundary",
          "purchase_boundary",
          "not_safety_certification",
          "local_policy_decides"
        ],
        "properties": {
          "product_name": { "type": "string" },
          "public_availability": {
            "type": "string",
            "enum": ["public", "via_trustops_setup", "not_offered_publicly"]
          },
          "price": { "type": "string" },
          "setup_route": { "type": "string" },
          "eligibility_note": { "type": ["string", "null"] },
          "proof_boundary": { "type": "string" },
          "purchase_boundary": { "type": "string" },
          "public_note": { "type": ["string", "null"] },
          "not_safety_certification": { "const": true },
          "local_policy_decides": { "const": true }
        }
      }
    }
  }
}
