{
  "$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://notrios.dev/schemas/archive-v2/manifest.schema.json","type":"object","additionalProperties":false,
  "required":["format","version","commit_sha256","snapshot","compatibility","index","totals","counts"],
  "properties":{
    "format":{"const":"notrios-archive"},"version":{"const":2},"commit_sha256":{"$ref":"#/$defs/sha256"},
    "snapshot":{"$ref":"#/$defs/snapshot"},"compatibility":{"$ref":"#/$defs/compatibility"},
    "index":{"type":"array","minItems":1,"maxItems":1000,"items":{"$ref":"#/$defs/indexObject"}},"totals":{"$ref":"#/$defs/totals"},"counts":{"$ref":"#/$defs/counts"}
  },
  "$defs":{
    "sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"id":{"type":"string","pattern":"^[a-z0-9][a-z0-9_.:-]{1,127}$"},"timestamp":{"type":"string","format":"date-time"},"nonnegative":{"type":"integer","minimum":0},
    "snapshot":{"type":"object","additionalProperties":false,"required":["id","created_at","target","database_id","source_replica_id","consistency","collection_ids","selection_manifest_sha256"],"properties":{"id":{"$ref":"#/$defs/id"},"created_at":{"$ref":"#/$defs/timestamp"},"target":{"enum":["full_archive","subset_transfer","publication_handoff"]},"database_id":{"$ref":"#/$defs/id"},"source_replica_id":{"$ref":"#/$defs/id"},"consistency":{"const":"sqlite_read_transaction"},"collection_ids":{"type":"array","minItems":1,"maxItems":1000,"items":{"$ref":"#/$defs/id"}},"selection_manifest_sha256":{"$ref":"#/$defs/sha256"}}},
    "compatibility":{"type":"object","additionalProperties":false,"required":["minimum_reader_version","source_schema_version","minimum_schema_version","maximum_schema_version","required_capabilities","optional_capabilities"],"properties":{"minimum_reader_version":{"const":2},"source_schema_version":{"type":"integer","minimum":12},"minimum_schema_version":{"type":"integer","minimum":12},"maximum_schema_version":{"type":"integer","minimum":12},"required_capabilities":{"type":"array","maxItems":64,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9_.:-]{1,127}$"}},"optional_capabilities":{"type":"array","maxItems":64,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9_.:-]{1,127}$"}}}},
    "location":{"type":"object","additionalProperties":false,"required":["layout"],"properties":{"layout":{"enum":["fanout","pack"]},"path":{"type":"string","minLength":1,"maxLength":255},"pack_sha256":{"$ref":"#/$defs/sha256"},"offset":{"type":"integer","minimum":0},"length":{"type":"integer","minimum":0}}},
    "indexObject":{"type":"object","additionalProperties":false,"required":["sha256","size_bytes","entries","media_type","location"],"properties":{"sha256":{"$ref":"#/$defs/sha256"},"size_bytes":{"type":"integer","minimum":1,"maximum":67108864},"entries":{"type":"integer","minimum":1,"maximum":10000},"media_type":{"const":"application/vnd.notrios.archive-v2-index+jsonl"},"location":{"$ref":"#/$defs/location"}}},
    "totals":{"type":"object","additionalProperties":false,"required":["objects","bytes","record_chunks","blobs"],"properties":{"objects":{"type":"integer","minimum":1,"maximum":8000000},"bytes":{"type":"integer","minimum":0,"maximum":4398046511104},"record_chunks":{"type":"integer","minimum":0,"maximum":64000000},"blobs":{"type":"integer","minimum":0,"maximum":8000000},"packs":{"type":"integer","minimum":0,"maximum":8000000}}},
    "counts":{"type":"object","additionalProperties":false,"required":["collections","notebooks","search_notebooks","tags","documents","revisions","document_tags","resources","document_resources","links","provenance","source_bundles"],"properties":{"collections":{"$ref":"#/$defs/nonnegative"},"notebooks":{"$ref":"#/$defs/nonnegative"},"search_notebooks":{"$ref":"#/$defs/nonnegative"},"tags":{"$ref":"#/$defs/nonnegative"},"documents":{"$ref":"#/$defs/nonnegative"},"revisions":{"$ref":"#/$defs/nonnegative"},"document_tags":{"$ref":"#/$defs/nonnegative"},"resources":{"$ref":"#/$defs/nonnegative"},"document_resources":{"$ref":"#/$defs/nonnegative"},"links":{"$ref":"#/$defs/nonnegative"},"provenance":{"$ref":"#/$defs/nonnegative"},"source_bundles":{"$ref":"#/$defs/nonnegative"}}}
  }
}
