{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/axiorank-com/json-schema/axiorank-com-signed-tree-head-schema.json",
  "title": "SignedTreeHead",
  "description": "An Ed25519-signed Merkle tree head over a sealed checkpoint window.",
  "x-generated": "2026-11-02",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/axiorank-com-openapi.json#/components/schemas/SignedTreeHead",
  "type": "object",
  "properties": {
    "seq": {
      "type": "integer"
    },
    "merkleRoot": {
      "type": "string",
      "description": "Hex RFC 6962 root over the window's row hashes."
    },
    "treeSize": {
      "type": "integer"
    },
    "prevCheckpointHash": {
      "type": "string",
      "description": "Binds the STH into the append-only chain."
    },
    "checkpointHash": {
      "type": "string",
      "description": "This checkpoint's own hash, signed on self-anchored (v2) heads. Absent on v1."
    },
    "fromTs": {
      "type": "string",
      "format": "date-time"
    },
    "toTs": {
      "type": "string",
      "format": "date-time"
    },
    "workspaceId": {
      "type": "string",
      "format": "uuid"
    },
    "algorithm": {
      "type": "string",
      "enum": [
        "EdDSA"
      ]
    },
    "merkleVersion": {
      "type": "integer"
    },
    "treeAlgo": {
      "type": "string"
    },
    "keyId": {
      "type": "string",
      "description": "RFC 7638 thumbprint of the signing key (JWKS lookup id)."
    },
    "signedAt": {
      "type": "string",
      "format": "date-time"
    },
    "signature": {
      "type": "string",
      "description": "base64url Ed25519 over the canonical STH."
    }
  },
  "required": [
    "seq",
    "merkleRoot",
    "treeSize",
    "prevCheckpointHash",
    "fromTs",
    "toTs",
    "workspaceId",
    "algorithm",
    "merkleVersion",
    "treeAlgo",
    "keyId",
    "signedAt",
    "signature"
  ]
}