{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://genesiscode.dev/schemas/slsa-build-profile-v1.json",
  "title": "GenesisCode SLSA Provenance v1 Producer Profile",
  "type": "object",
  "additionalProperties": false,
  "required": ["_type", "subject", "predicateType", "predicate"],
  "properties": {
    "_type": {"const": "https://in-toto.io/Statement/v1"},
    "subject": {
      "type": "array",
      "minItems": 1,
      "items": {"$ref": "#/$defs/resourceDescriptor"}
    },
    "predicateType": {"const": "https://slsa.dev/provenance/v1"},
    "predicate": {
      "type": "object",
      "additionalProperties": false,
      "required": ["buildDefinition", "runDetails"],
      "properties": {
        "buildDefinition": {"$ref": "#/$defs/buildDefinition"},
        "runDetails": {"$ref": "#/$defs/runDetails"}
      }
    }
  },
  "$defs": {
    "sha256Digest": {
      "type": "object",
      "additionalProperties": false,
      "required": ["sha256"],
      "properties": {
        "sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}
      }
    },
    "resourceDescriptor": {
      "type": "object",
      "required": ["digest"],
      "properties": {
        "uri": {"type": "string", "format": "uri"},
        "name": {"type": "string", "minLength": 1},
        "digest": {"$ref": "#/$defs/sha256Digest"},
        "mediaType": {"type": "string", "minLength": 1},
        "annotations": {"type": "object"}
      }
    },
    "buildDefinition": {
      "type": "object",
      "additionalProperties": false,
      "required": ["buildType", "externalParameters", "internalParameters", "resolvedDependencies"],
      "properties": {
        "buildType": {
          "const": "https://genesiscode.dev/buildtypes/roadmap-evidence/v0.1"
        },
        "externalParameters": {"type": "object"},
        "internalParameters": {"type": "object"},
        "resolvedDependencies": {
          "type": "array",
          "minItems": 1,
          "items": {"$ref": "#/$defs/resourceDescriptor"}
        }
      }
    },
    "runDetails": {
      "type": "object",
      "additionalProperties": false,
      "required": ["builder", "metadata", "byproducts"],
      "properties": {
        "builder": {
          "type": "object",
          "additionalProperties": false,
          "required": ["id", "version", "builderDependencies"],
          "properties": {
            "id": {"const": "https://genesiscode.dev/builders/local-roadmap-evidence/v0.1"},
            "version": {"type": "object", "minProperties": 1},
            "builderDependencies": {
              "type": "array",
              "items": {"$ref": "#/$defs/resourceDescriptor"}
            }
          }
        },
        "metadata": {
          "type": "object",
          "additionalProperties": false,
          "required": ["invocationId"],
          "properties": {
            "invocationId": {"type": "string", "minLength": 1}
          }
        },
        "byproducts": {
          "type": "array",
          "minItems": 1,
          "items": {"$ref": "#/$defs/resourceDescriptor"}
        }
      }
    }
  }
}
