statement.schema.json
The common in-toto statement wrapper every Makoto predicate is carried in.
All schemas§11.1FieldsRaw JSON
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 level#
Shape object
- closed object
| Field | Type | Constraints, rules, and a real value |
|---|---|---|
| _type required | string constant |
"https://in-toto.io/Statement/v1" |
| subject required | array of subject |
[{"digest": {"sha256": "421e19cf002aa25cf6f2f9ed788e04c9badfd9cbc6b00030b0b089810b2ae4f8"}, "na… |
| predicateType required | string |
"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": thenpredicateorigin.schema.json. - When
predicateType= "https://usemakoto.dev/predicate/v0.2/transform": thenpredicatetransform.schema.json.
digest#
Shape object
- closed object
Appears at subject[].digest
| Field | Type | Constraints, rules, and a real value |
|---|---|---|
| sha256 required | string |
"421e19cf002aa25cf6f2f9ed788e04c9badfd9cbc6b00030b0b089810b2ae4f8" |
subject#
Shape object
- closed object
Appears at subject[]
| Field | Type | Constraints, rules, and a real value |
|---|---|---|
| name required | string |
"customers.normalized.json" |
| digest required | digest | {"sha256": "421e19cf002aa25cf6f2f9ed788e04c9badfd9cbc6b00030b0b089810b2ae4f8"} |
Real documents that validate
demos/end-to-end/artifacts/positive-bundle/attestations/1f28b72bcd4c1e9b7df71403ac6bb1670c2f2b09628ca6d76a2fa384db9a0848.dsse.json → payloaddemos/end-to-end/artifacts/positive-bundle/attestations/56b7be4394fe09c62ec7a3d5763cecc251e9696f267f35b2acc717b0d170a27a.dsse.json → payloaddemos/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.