Makoto
Menu
Schema reference

bundle.schema.json

The on-disk bundle layout a sender transfers: statements, attestations, schema closure, and final artifacts.

Title
Makoto v0.2 Bundle Index
Identifier
https://usemakoto.dev/schema/v0.2/bundle.schema.json
Digest
sha256:2a6ca7b341abcbc0995369e5bf338e95f531cfaaa417715906da8169e5f829c8
Raw
/schema/v0.2/bundle.schema.json
Carried in
bundle.json at the root of every handoff bundle.
Responsibility
Untrusted safe relative-path index with complete identity tuples.

All schemas§13.3FieldsRaw JSON

A real instance. Read from demos/end-to-end/artifacts/positive-bundle/bundle.json, which validates against this schema.
{
  "artifacts": [
    {
      "digest": {
        "sha256": "ecd821dbe6f4204c4aad64878643d7954cb8c94abbf8d0b28f9c2bfc272f781e"
      },
      "path": "artifacts/final/71895faa8bce0d0426b2e447bb12d15e50e9f9d27135ebabbb94bc9d59426d4e.bin",
      "statementDigest": {
        "sha256": "99aee76db46a720405da6d0015d427c791b0d4e02367b9e2bc36ce82ae812bce"
      },
      "subjectName": "customers.public.json"
    }
  ],
  "attestations": [
    {
      "path": "attestations/1f28b72bcd4c1e9b7df71403ac6bb1670c2f2b09628ca6d76a2fa384db9a0848.dsse.json",
      "statementDigest": {
        "sha256": "1f28b72bcd4c1e9b7df71403ac6bb1670c2f2b09628ca6d76a2fa384db9a0848"
      }
    },
    {
      "path": "attestations/56b7be4394fe09c62ec7a3d5763cecc251e9696f267f35b2acc717b0d170a27a.dsse.json",
      "statementDigest": {
        "sha256": "56b7be4394fe09c62ec7a3d5763cecc251e9696f267f35b2acc717b0d170a27a"
      }
    },
    {
      "path": "attestations/99aee76db46a720405da6d0015d427c791b0d4e02367b9e2bc36ce82ae812bce.dsse.json",
      "statementDigest": {
        "sha256": "99aee76db46a720405da6d0015d427c791b0d4e02367b9e2bc36ce82ae812bce"
      }
    }
  ],
  "datasetEntries": [],
  "manifest": "manifest.dsse.json",
  "schemaCatalog": "schemas/catalog.json",
  "version": "0.2"
}

Fields

Top leveldigestpathattestationartifactdatasetEntry

Top level#

Shape object
  • closed object
FieldTypeConstraints, rules, and a real value
version
required
string constant
  • = "0.2"
"0.2"
manifest
required
path
"manifest.dsse.json"
attestations
required
array of attestation
[{"path": "attestations/1f28b72bcd4c1e9b7df71403ac6bb1670c2f2b09628ca6d76a2fa384db9a0848.dsse.j…
artifacts
required
array of artifact
[{"digest": {"sha256": "ecd821dbe6f4204c4aad64878643d7954cb8c94abbf8d0b28f9c2bfc272f781e"}, "pa…
datasetEntries
optional
array of datasetEntry
[]
schemaCatalog
optional
path
"schemas/catalog.json"

digest#

Shape object
  • closed object

Appears at artifacts[].digest, artifacts[].statementDigest, attestations[].statementDigest, datasetEntries[].digest, datasetEntries[].manifestStatementDigest

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

path#

Shape string
  • min length 1
  • max length 1024

Appears at artifacts[].path, attestations[].path, datasetEntries[].path, manifest, schemaCatalog

attestation#

Shape object
  • closed object

Appears at attestations[]

FieldTypeConstraints, rules, and a real value
statementDigest
required
digest
{"sha256": "1f28b72bcd4c1e9b7df71403ac6bb1670c2f2b09628ca6d76a2fa384db9a0848"}
path
required
path
"attestations/1f28b72bcd4c1e9b7df71403ac6bb1670c2f2b09628ca6d76a2fa384db9a0848.dsse.json"

artifact#

Shape object
  • closed object

Appears at artifacts[]

FieldTypeConstraints, rules, and a real value
statementDigest
required
digest
{"sha256": "99aee76db46a720405da6d0015d427c791b0d4e02367b9e2bc36ce82ae812bce"}
subjectName
required
string
  • min length 1
  • max length 4096
"customers.public.json"
digest
required
digest
{"sha256": "ecd821dbe6f4204c4aad64878643d7954cb8c94abbf8d0b28f9c2bfc272f781e"}
path
required
path
"artifacts/final/71895faa8bce0d0426b2e447bb12d15e50e9f9d27135ebabbb94bc9d59426d4e.bin"

datasetEntry#

Shape object
  • closed object

Appears at datasetEntries[]

FieldTypeConstraints, rules, and a real value
manifestStatementDigest
required
digest
manifestSubjectName
required
string
  • min length 1
  • max length 4096
entryName
required
string
  • min length 1
  • max length 1024
digest
required
digest
path
required
path

Real documents that validate

  • demos/end-to-end/artifacts/positive-bundle/bundle.json

Raw JSON

The published document (2,275 bytes)
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://usemakoto.dev/schema/v0.2/bundle.schema.json",
  "title": "Makoto v0.2 Bundle Index",
  "type": "object",
  "required": ["version", "manifest", "attestations", "artifacts"],
  "properties": {
    "version": { "const": "0.2" },
    "manifest": { "$ref": "#/$defs/path" },
    "attestations": {
      "type": "array",
      "items": { "$ref": "#/$defs/attestation" }
    },
    "artifacts": {
      "type": "array",
      "items": { "$ref": "#/$defs/artifact" }
    },
    "datasetEntries": {
      "type": "array",
      "items": { "$ref": "#/$defs/datasetEntry" }
    },
    "schemaCatalog": { "$ref": "#/$defs/path" }
  },
  "$defs": {
    "digest": {
      "type": "object",
      "required": ["sha256"],
      "properties": { "sha256": { "type": "string", "minLength": 64, "maxLength": 64 } },
      "additionalProperties": false
    },
    "path": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1024
    },
    "attestation": {
      "type": "object",
      "required": ["statementDigest", "path"],
      "properties": {
        "statementDigest": { "$ref": "#/$defs/digest" },
        "path": { "$ref": "#/$defs/path" }
      },
      "additionalProperties": false
    },
    "artifact": {
      "type": "object",
      "required": ["statementDigest", "subjectName", "digest", "path"],
      "properties": {
        "statementDigest": { "$ref": "#/$defs/digest" },
        "subjectName": { "type": "string", "minLength": 1, "maxLength": 4096 },
        "digest": { "$ref": "#/$defs/digest" },
        "path": { "$ref": "#/$defs/path" }
      },
      "additionalProperties": false
    },
    "datasetEntry": {
      "type": "object",
      "required": ["manifestStatementDigest", "manifestSubjectName", "entryName", "digest", "path"],
      "properties": {
        "manifestStatementDigest": { "$ref": "#/$defs/digest" },
        "manifestSubjectName": { "type": "string", "minLength": 1, "maxLength": 4096 },
        "entryName": { "type": "string", "minLength": 1, "maxLength": 1024 },
        "digest": { "$ref": "#/$defs/digest" },
        "path": { "$ref": "#/$defs/path" }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}

The published bytes, unmodified.