{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://intelligentliving.art/schemas/replication/v1.json",
  "title": "Living Art Replication and Repair Policy v1",
  "type": "object",
  "required": [
    "type",
    "version",
    "retrievalOrder",
    "integrity",
    "ipfs",
    "repair",
    "rightsGate"
  ],
  "properties": {
    "$schema": {
      "type": "string"
    },
    "type": {
      "const": "https://intelligentliving.art/protocols/replication-policy/v1.json"
    },
    "version": {
      "const": "1.0.0"
    },
    "retrievalOrder": {
      "type": "array",
      "items": {
        "enum": [
          "local-cache",
          "ipfs",
          "arweave",
          "https-origin"
        ]
      },
      "minItems": 2,
      "uniqueItems": true
    },
    "integrity": {
      "type": "object",
      "required": [
        "verifyBeforeUse",
        "acceptedDigests"
      ],
      "properties": {
        "verifyBeforeUse": {
          "const": true
        },
        "acceptedDigests": {
          "type": "array",
          "items": {
            "enum": [
              "sha256",
              "ipfs-cid"
            ]
          },
          "contains": {
            "const": "sha256"
          },
          "uniqueItems": true
        }
      },
      "additionalProperties": false
    },
    "ipfs": {
      "type": "object",
      "required": [
        "minimumPins",
        "archiveFormat"
      ],
      "properties": {
        "minimumPins": {
          "type": "integer",
          "minimum": 1
        },
        "archiveFormat": {
          "const": "car-v1"
        }
      },
      "additionalProperties": false
    },
    "repair": {
      "type": "object",
      "required": [
        "enabled",
        "target",
        "allowedArchiveProtocols",
        "requireMatchingDigest",
        "requireMatchingRootCid"
      ],
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "target": {
          "const": "ipfs"
        },
        "allowedArchiveProtocols": {
          "type": "array",
          "items": {
            "enum": [
              "arweave",
              "https-origin"
            ]
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "requireMatchingDigest": {
          "const": true
        },
        "requireMatchingRootCid": {
          "const": true
        }
      },
      "additionalProperties": false
    },
    "rightsGate": {
      "type": "object",
      "required": [
        "permanentStorageRequires",
        "forbiddenMaterialPolicies"
      ],
      "properties": {
        "permanentStorageRequires": {
          "type": "array",
          "items": {
            "const": "persist"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "forbiddenMaterialPolicies": {
          "type": "array",
          "items": {
            "enum": [
              "reference-only",
              "runtime-licensed",
              "private",
              "withdrawn"
            ]
          },
          "minItems": 1,
          "uniqueItems": true
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
