Makoto
Menu
Schema reference

statement.schema.json

The common in-toto statement wrapper every Makoto predicate is carried in.

Title
Makoto v0.2 in-toto Statement
Identifier
https://usemakoto.dev/schema/v0.2/statement.schema.json
Digest
sha256:dbe4487be9b44521e4fa9b63900992304b9fb4e4985b7899cb23af6916efe5e0
Raw
/schema/v0.2/statement.schema.json
Carried in
The decoded payload of each attestation envelope, payload type application/vnd.in-toto+json.
Responsibility
in-toto outer statement, SHA-256 subjects, predicate dispatch, and extension predicate allowance.

All schemas§11.1FieldsRaw JSON

A real instance. Read from demos/end-to-end/artifacts/positive-bundle/attestations/1f28b72bcd4c1e9b7df71403ac6bb1670c2f2b09628ca6d76a2fa384db9a0848.dsse.json → payload, which validates against this schema.
{
  "_type": "https://in-toto.io/Statement/v1",
  "predicate": {
    "event": {
      "id": "urn:uuid:22222222-2222-4222-8222-222222222222",
      "occurredAt": "2026-09-16T16:00:00Z"
    },
    "inputs": [
      {
        "digest": {
          "sha256": "4e90181e7f75ccdf0e4d81c83d281f53806bed241787cdc751e22b2d4cd19919"
        },
        "name": "raw",
        "provenance": {
          "statementDigest": {
            "sha256": "56b7be4394fe09c62ec7a3d5763cecc251e9696f267f35b2acc717b0d170a27a"
          },
          "subjectName": "customers.raw.json"
        }
      }
    ],
    "operation": {
      "name": "Normalize customer records",
      "type": "urn:makoto:demo:operation:normalize"
    },
    "profiles": [],
    "schemaVersion": "0.2"
  },
  "predicateType": "https://usemakoto.dev/predicate/v0.2/transform",
  "subject": [
    {
      "digest": {
        "sha256": "421e19cf002aa25cf6f2f9ed788e04c9badfd9cbc6b00030b0b089810b2ae4f8"
      },
      "name": "customers.normalized.json"
    }
  ]
}

Fields

Top leveldigestsubject

Top level#

Shape object
  • closed object
FieldTypeConstraints, rules, and a real value
_type
required
string constant
  • = "https://in-toto.io/Statement/v1"
"https://in-toto.io/Statement/v1"
subject
required
array of subject
  • min items 1
[{"digest": {"sha256": "421e19cf002aa25cf6f2f9ed788e04c9badfd9cbc6b00030b0b089810b2ae4f8"}, "na…
predicateType
required
string
  • min length 1
  • max length 4096
"https://usemakoto.dev/predicate/v0.2/transform"
predicate
required
object
{"event": {"id": "urn:uuid:22222222-2222-4222-8222-222222222222", "occurredAt": "2026-09-16T16:…

Conditional rules

  • When predicateType = "https://usemakoto.dev/predicate/v0.2/origin": then predicate origin.schema.json.
  • When predicateType = "https://usemakoto.dev/predicate/v0.2/transform": then predicate transform.schema.json.

digest#

Shape object
  • closed object

Appears at subject[].digest

FieldTypeConstraints, rules, and a real value
sha256
required
string
  • min length 64
  • max length 64
"421e19cf002aa25cf6f2f9ed788e04c9badfd9cbc6b00030b0b089810b2ae4f8"

subject#

Shape object
  • closed object

Appears at subject[]

FieldTypeConstraints, rules, and a real value
name
required
string
  • min length 1
  • max length 4096
"customers.normalized.json"
digest
required
digest
{"sha256": "421e19cf002aa25cf6f2f9ed788e04c9badfd9cbc6b00030b0b089810b2ae4f8"}

Real documents that validate

  • demos/end-to-end/artifacts/positive-bundle/attestations/1f28b72bcd4c1e9b7df71403ac6bb1670c2f2b09628ca6d76a2fa384db9a0848.dsse.json → payload
  • demos/end-to-end/artifacts/positive-bundle/attestations/56b7be4394fe09c62ec7a3d5763cecc251e9696f267f35b2acc717b0d170a27a.dsse.json → payload
  • demos/end-to-end/artifacts/positive-bundle/attestations/99aee76db46a720405da6d0015d427c791b0d4e02367b9e2bc36ce82ae812bce.dsse.json → payload

Raw JSON

The published document (1,604 bytes)
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://usemakoto.dev/schema/v0.2/statement.schema.json",
  "title": "Makoto v0.2 in-toto Statement",
  "type": "object",
  "required": ["_type", "subject", "predicateType", "predicate"],
  "properties": {
    "_type": { "const": "https://in-toto.io/Statement/v1" },
    "subject": {
      "type": "array",
      "minItems": 1,
      "items": { "$ref": "#/$defs/subject" }
    },
    "predicateType": { "type": "string", "minLength": 1, "maxLength": 4096 },
    "predicate": { "type": "object" }
  },
  "allOf": [
    {
      "if": { "properties": { "predicateType": { "const": "https://usemakoto.dev/predicate/v0.2/origin" } } },
      "then": { "properties": { "predicate": { "$ref": "https://usemakoto.dev/schema/v0.2/origin.schema.json" } } }
    },
    {
      "if": { "properties": { "predicateType": { "const": "https://usemakoto.dev/predicate/v0.2/transform" } } },
      "then": { "properties": { "predicate": { "$ref": "https://usemakoto.dev/schema/v0.2/transform.schema.json" } } }
    }
  ],
  "$defs": {
    "digest": {
      "type": "object",
      "required": ["sha256"],
      "properties": { "sha256": { "type": "string", "minLength": 64, "maxLength": 64 } },
      "additionalProperties": false
    },
    "subject": {
      "type": "object",
      "required": ["name", "digest"],
      "properties": {
        "name": { "type": "string", "minLength": 1, "maxLength": 4096 },
        "digest": { "$ref": "#/$defs/digest" }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}

The published bytes, unmodified.