{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://freeimagekit.app/benchmarks/benchmark-run.schema.json",
  "title": "FreeImageKit browser benchmark run",
  "type": "object",
  "required": ["schemaVersion", "kind", "status", "generatedAt", "engine", "environment", "corpus", "cases", "notes"],
  "properties": {
    "schemaVersion": { "const": "1.0.0" },
    "kind": { "const": "freeimagekit-browser-benchmark" },
    "status": { "enum": ["local", "published", "example"] },
    "generatedAt": { "type": "string", "format": "date-time" },
    "engine": { "type": "object", "required": ["appVersion", "engineVersion"], "properties": { "appVersion": { "type": "string" }, "engineVersion": { "type": "string" } }, "additionalProperties": false },
    "environment": { "type": "object", "required": ["userAgent", "platform"], "properties": { "userAgent": { "type": "string", "minLength": 1 }, "platform": { "type": "string" }, "hardwareConcurrency": { "type": "integer", "minimum": 1 }, "deviceMemoryGiB": { "type": "number", "minimum": 0 } }, "additionalProperties": false },
    "corpus": { "type": "object", "required": ["id", "version", "files"], "properties": { "id": { "type": "string" }, "version": { "type": "string" }, "files": { "type": "array", "items": { "$ref": "#/$defs/source" } } }, "additionalProperties": false },
    "cases": { "type": "array", "items": { "$ref": "#/$defs/case" } },
    "notes": { "type": "array", "items": { "type": "string" } }
  },
  "$defs": {
    "source": { "type": "object", "required": ["id", "name", "sha256", "sourceFormat", "bytes", "width", "height"], "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "sha256": { "type": "string", "pattern": "^[a-fA-F0-9]{64}$" }, "sourceFormat": { "enum": ["jpeg", "png", "webp", "avif", "gif", "svg", "bmp", "tiff", "heic", "ico"] }, "bytes": { "type": "integer", "minimum": 1 }, "width": { "type": "integer", "minimum": 1 }, "height": { "type": "integer", "minimum": 1 } }, "additionalProperties": false },
    "trial": { "type": "object", "required": ["index", "status"], "properties": { "index": { "type": "integer", "minimum": 1 }, "status": { "enum": ["complete", "failed", "unsupported"] }, "durationMs": { "type": "number", "minimum": 0 }, "outputBytes": { "type": "integer", "minimum": 1 }, "width": { "type": "integer", "minimum": 1 }, "height": { "type": "integer", "minimum": 1 }, "redecoded": { "type": "boolean" }, "error": { "type": "string" } }, "additionalProperties": false },
    "case": { "type": "object", "required": ["id", "sourceId", "outputFormat", "settings", "warmupRuns", "trials", "summary"], "properties": { "id": { "type": "string" }, "sourceId": { "type": "string" }, "outputFormat": { "enum": ["jpeg", "png", "webp", "avif", "ico"] }, "settings": { "type": "object", "required": ["quality"], "properties": { "quality": { "type": "number", "minimum": 0, "maximum": 1 }, "avifSpeed": { "type": "integer", "minimum": 0, "maximum": 10 } }, "additionalProperties": false }, "warmupRuns": { "type": "integer", "minimum": 0 }, "trials": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/trial" } }, "summary": { "type": "object", "required": ["status", "successfulTrials"], "properties": { "status": { "enum": ["complete", "partial", "unsupported", "failed"] }, "successfulTrials": { "type": "integer", "minimum": 0 }, "medianDurationMs": { "type": "number", "minimum": 0 }, "medianOutputBytes": { "type": "number", "minimum": 1 } }, "additionalProperties": false } }, "additionalProperties": false }
  },
  "additionalProperties": false
}
