{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://openeik.org/schemas/0.4/drawings/statement.schema.json",
  "$comment": "OpenEik 0.2: folded by tools/fold-schemas.mjs from the proposal drawings, which 0.2 makes a rule (decision D5). Written by hand from the text, not generated.",
  "title": "Sign-off statement",
  "description": "The statement a sign-off's envelope carries: an in-toto Statement v1 (Part XIV, 14.1). Its subjects are drawings/issued/<drawing>/drawing.svg with the SHA-256 of its bytes, or an unlinked drawing's asset, and drawings/issued/<drawing>/revision.json with its hash (Part III, 6): exactly two, which a validator checks in code (XIV.14.7, rule 3). Its predicate, of the type https://openeik.org/attestation/drawing-signoff/v0.1, is held to signoff-predicate.schema.json.",
  "type": "object",
  "properties": {
    "_type": {
      "const": "https://in-toto.io/Statement/v1"
    },
    "subject": {
      "type": "array",
      "minItems": 1,
      "maxItems": 20,
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "digest": {
            "description": "A digest set: here sha256, a file's SHA-256 or a JSON file's hash.",
            "type": "object",
            "properties": {
              "sha256": {
                "$ref": "defs.schema.json#/$defs/hash"
              }
            },
            "required": [
              "sha256"
            ]
          }
        },
        "required": [
          "name",
          "digest"
        ]
      }
    },
    "predicateType": {
      "type": "string",
      "minLength": 1
    },
    "predicate": {
      "type": "object"
    }
  },
  "required": [
    "_type",
    "subject",
    "predicateType",
    "predicate"
  ],
  "x-eik-closed": true
}
