{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://maverickwx.com/schema/satellite-v1.json",
  "$defs": {
    "CanonicalFrame": {
      "additionalProperties": false,
      "properties": {
        "schema_version": {
          "const": "1.0",
          "default": "1.0",
          "title": "Schema Version",
          "type": "string"
        },
        "family": {
          "const": "satellite",
          "default": "satellite",
          "title": "Family",
          "type": "string"
        },
        "product_id": {
          "const": "home",
          "default": "home",
          "title": "Product Id",
          "type": "string"
        },
        "frame_id": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Frame Id",
          "type": "string"
        },
        "source": {
          "$ref": "#/$defs/Source"
        },
        "source_grid": {
          "$ref": "#/$defs/Grid"
        },
        "input_grid": {
          "$ref": "#/$defs/Grid"
        },
        "inputs": {
          "items": {
            "$ref": "#/$defs/Input"
          },
          "title": "Inputs",
          "type": "array"
        },
        "normalized_sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Normalized Sha256",
          "type": "string"
        },
        "normalizer_version": {
          "title": "Normalizer Version",
          "type": "string"
        },
        "composition": {
          "$ref": "#/$defs/Composition"
        },
        "coverage": {
          "$ref": "#/$defs/Coverage"
        }
      },
      "required": [
        "frame_id",
        "source",
        "source_grid",
        "input_grid",
        "inputs",
        "normalized_sha256",
        "normalizer_version",
        "composition",
        "coverage"
      ],
      "title": "CanonicalFrame",
      "type": "object"
    },
    "Check": {
      "additionalProperties": false,
      "properties": {
        "outcome": {
          "enum": [
            "published",
            "unchanged",
            "failed"
          ],
          "title": "Outcome",
          "type": "string"
        },
        "consecutive_failures": {
          "minimum": 0,
          "title": "Consecutive Failures",
          "type": "integer"
        },
        "error_code": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Error Code"
        },
        "run_id": {
          "title": "Run Id",
          "type": "string"
        }
      },
      "required": [
        "outcome",
        "consecutive_failures",
        "error_code",
        "run_id"
      ],
      "title": "Check",
      "type": "object"
    },
    "Composition": {
      "additionalProperties": false,
      "properties": {
        "product_mode": {
          "const": "geocolor_day_night",
          "default": "geocolor_day_night",
          "title": "Product Mode",
          "type": "string"
        },
        "illumination": {
          "default": "unknown",
          "enum": [
            "day",
            "night",
            "mixed",
            "unknown"
          ],
          "title": "Illumination",
          "type": "string"
        },
        "illumination_basis": {
          "default": "Not supplied by distributor; no classification from RGB pixels",
          "title": "Illumination Basis",
          "type": "string"
        }
      },
      "title": "Composition",
      "type": "object"
    },
    "Coverage": {
      "additionalProperties": false,
      "properties": {
        "footprint": {
          "items": {
            "maxItems": 2,
            "minItems": 2,
            "prefixItems": [
              {
                "type": "number"
              },
              {
                "type": "number"
              }
            ],
            "type": "array"
          },
          "title": "Footprint",
          "type": "array"
        },
        "valid_fraction": {
          "maximum": 1,
          "minimum": 0,
          "title": "Valid Fraction",
          "type": "number"
        },
        "flags": {
          "default": [],
          "items": {
            "const": "partial_coverage",
            "type": "string"
          },
          "title": "Flags",
          "type": "array"
        }
      },
      "required": [
        "footprint",
        "valid_fraction"
      ],
      "title": "Coverage",
      "type": "object"
    },
    "DiskCanonical": {
      "additionalProperties": false,
      "description": "The disk's canonical record. Its one input is the source TIFF itself, byte for byte: the\nwhole disk is the window, so there is nothing to crop and nothing is re-encoded.",
      "properties": {
        "schema_version": {
          "const": "1.0",
          "default": "1.0",
          "title": "Schema Version",
          "type": "string"
        },
        "family": {
          "const": "satellite",
          "default": "satellite",
          "title": "Family",
          "type": "string"
        },
        "product_id": {
          "const": "disk",
          "default": "disk",
          "title": "Product Id",
          "type": "string"
        },
        "frame_id": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Frame Id",
          "type": "string"
        },
        "source": {
          "$ref": "#/$defs/Source"
        },
        "source_grid": {
          "$ref": "#/$defs/Grid"
        },
        "inputs": {
          "items": {
            "$ref": "#/$defs/DiskInput"
          },
          "maxItems": 1,
          "minItems": 1,
          "title": "Inputs",
          "type": "array"
        },
        "normalizer_version": {
          "title": "Normalizer Version",
          "type": "string"
        },
        "composition": {
          "$ref": "#/$defs/Composition"
        },
        "source_valid_fraction": {
          "maximum": 1,
          "minimum": 0,
          "title": "Source Valid Fraction",
          "type": "number"
        }
      },
      "required": [
        "frame_id",
        "source",
        "source_grid",
        "inputs",
        "normalizer_version",
        "composition",
        "source_valid_fraction"
      ],
      "title": "DiskCanonical",
      "type": "object"
    },
    "DiskCoverage": {
      "additionalProperties": false,
      "properties": {
        "valid_fraction": {
          "maximum": 1,
          "minimum": 0,
          "title": "Valid Fraction",
          "type": "number"
        },
        "gap_fraction": {
          "maximum": 1,
          "minimum": 0,
          "title": "Gap Fraction",
          "type": "number"
        }
      },
      "required": [
        "valid_fraction",
        "gap_fraction"
      ],
      "title": "DiskCoverage",
      "type": "object"
    },
    "DiskEnvelope": {
      "additionalProperties": false,
      "description": "`satellite/v1/disk/latest.json`: the one authority for the disk's latest frame and check.",
      "properties": {
        "schema_version": {
          "const": "1.0",
          "default": "1.0",
          "title": "Schema Version",
          "type": "string"
        },
        "product_id": {
          "const": "disk",
          "default": "disk",
          "title": "Product Id",
          "type": "string"
        },
        "enabled": {
          "title": "Enabled",
          "type": "boolean"
        },
        "latest": {
          "anyOf": [
            {
              "$ref": "#/$defs/DiskLatest"
            },
            {
              "type": "null"
            }
          ]
        },
        "rollback": {
          "anyOf": [
            {
              "$ref": "#/$defs/DiskLatest"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "retention": {
          "$ref": "#/$defs/RetentionPolicy"
        },
        "last_checked_at": {
          "format": "date-time",
          "title": "Last Checked At",
          "type": "string"
        },
        "last_successful_fetch_at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Last Successful Fetch At"
        },
        "last_published_at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Last Published At"
        },
        "check": {
          "$ref": "#/$defs/Check"
        },
        "poll_interval_seconds": {
          "default": 3600,
          "maximum": 86400,
          "minimum": 60,
          "title": "Poll Interval Seconds",
          "type": "integer"
        },
        "freshness": {
          "$ref": "#/$defs/Freshness"
        },
        "public_base_url": {
          "title": "Public Base Url",
          "type": "string"
        }
      },
      "required": [
        "enabled",
        "latest",
        "last_checked_at",
        "last_successful_fetch_at",
        "last_published_at",
        "check",
        "public_base_url"
      ],
      "title": "DiskEnvelope",
      "type": "object"
    },
    "DiskInput": {
      "additionalProperties": false,
      "properties": {
        "key": {
          "pattern": "^(satellite/v1/disk/frames/[0-9a-f]{64}/)[a-zA-Z0-9_.-]+$",
          "title": "Key",
          "type": "string"
        },
        "url": {
          "title": "Url",
          "type": "string"
        },
        "sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Sha256",
          "type": "string"
        },
        "bytes": {
          "exclusiveMinimum": 0,
          "title": "Bytes",
          "type": "integer"
        }
      },
      "required": [
        "key",
        "url",
        "sha256",
        "bytes"
      ],
      "title": "DiskInput",
      "type": "object"
    },
    "DiskLatest": {
      "additionalProperties": false,
      "properties": {
        "frame_id": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Frame Id",
          "type": "string"
        },
        "generated_at": {
          "format": "date-time",
          "title": "Generated At",
          "type": "string"
        },
        "retrieved_at": {
          "format": "date-time",
          "title": "Retrieved At",
          "type": "string"
        },
        "product_url": {
          "title": "Product Url",
          "type": "string"
        },
        "product_sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Product Sha256",
          "type": "string"
        },
        "nominal_time": {
          "format": "date-time",
          "title": "Nominal Time",
          "type": "string"
        },
        "time_basis": {
          "enum": [
            "source_nominal",
            "source_scan_bounds"
          ],
          "title": "Time Basis",
          "type": "string"
        },
        "composition": {
          "$ref": "#/$defs/Composition"
        },
        "coverage": {
          "$ref": "#/$defs/DiskCoverage"
        },
        "attribution": {
          "const": "CIRA/NOAA",
          "default": "CIRA/NOAA",
          "title": "Attribution",
          "type": "string"
        },
        "output_grid": {
          "$ref": "#/$defs/DiskOutputGrid"
        },
        "full_resolution_url": {
          "title": "Full Resolution Url",
          "type": "string"
        },
        "renditions": {
          "items": {
            "$ref": "#/$defs/DiskRendition"
          },
          "maxItems": 8,
          "minItems": 2,
          "title": "Renditions",
          "type": "array"
        }
      },
      "required": [
        "frame_id",
        "generated_at",
        "retrieved_at",
        "product_url",
        "product_sha256",
        "nominal_time",
        "time_basis",
        "composition",
        "coverage",
        "output_grid",
        "full_resolution_url",
        "renditions"
      ],
      "title": "DiskLatest",
      "type": "object"
    },
    "DiskOutputGrid": {
      "additionalProperties": false,
      "properties": {
        "crs": {
          "title": "Crs",
          "type": "string"
        },
        "bounds": {
          "maxItems": 4,
          "minItems": 4,
          "prefixItems": [
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            }
          ],
          "title": "Bounds",
          "type": "array"
        },
        "extent_id": {
          "const": "disk-geos-v1",
          "default": "disk-geos-v1",
          "title": "Extent Id",
          "type": "string"
        }
      },
      "required": [
        "crs",
        "bounds"
      ],
      "title": "DiskOutputGrid",
      "type": "object"
    },
    "DiskProduct": {
      "additionalProperties": false,
      "properties": {
        "schema_version": {
          "const": "1.0",
          "default": "1.0",
          "title": "Schema Version",
          "type": "string"
        },
        "family": {
          "const": "satellite",
          "default": "satellite",
          "title": "Family",
          "type": "string"
        },
        "product_id": {
          "const": "disk",
          "default": "disk",
          "title": "Product Id",
          "type": "string"
        },
        "frame_id": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Frame Id",
          "type": "string"
        },
        "canonical": {
          "$ref": "#/$defs/DiskInput"
        },
        "source": {
          "$ref": "#/$defs/Source"
        },
        "composition": {
          "$ref": "#/$defs/Composition"
        },
        "coverage": {
          "$ref": "#/$defs/DiskCoverage"
        },
        "renderer": {
          "$ref": "#/$defs/DiskRenderer"
        },
        "generated_at": {
          "format": "date-time",
          "title": "Generated At",
          "type": "string"
        },
        "public_base_url": {
          "title": "Public Base Url",
          "type": "string"
        },
        "output_grid": {
          "$ref": "#/$defs/DiskOutputGrid"
        },
        "attribution": {
          "const": "CIRA/NOAA",
          "default": "CIRA/NOAA",
          "title": "Attribution",
          "type": "string"
        },
        "source_documentation_url": {
          "title": "Source Documentation Url",
          "type": "string"
        },
        "full_resolution_url": {
          "title": "Full Resolution Url",
          "type": "string"
        },
        "renditions": {
          "items": {
            "$ref": "#/$defs/DiskRendition"
          },
          "maxItems": 8,
          "minItems": 2,
          "title": "Renditions",
          "type": "array"
        }
      },
      "required": [
        "frame_id",
        "canonical",
        "source",
        "composition",
        "coverage",
        "renderer",
        "generated_at",
        "public_base_url",
        "output_grid",
        "source_documentation_url",
        "full_resolution_url",
        "renditions"
      ],
      "title": "DiskProduct",
      "type": "object"
    },
    "DiskRender": {
      "additionalProperties": false,
      "description": "The disk renderer's configuration. All of it enters the frame identity.",
      "properties": {
        "version": {
          "const": "disk-geos-v1",
          "default": "disk-geos-v1",
          "title": "Version",
          "type": "string"
        },
        "sub_longitude": {
          "default": -75.2,
          "maximum": 180,
          "minimum": -180,
          "title": "Sub Longitude",
          "type": "number"
        },
        "perspective_height_m": {
          "default": 35786023.0,
          "title": "Perspective Height M",
          "type": "number"
        },
        "half_extent_m": {
          "default": 5434894.885,
          "title": "Half Extent M",
          "type": "number"
        },
        "size": {
          "default": 5424,
          "maximum": 10848,
          "minimum": 64,
          "title": "Size",
          "type": "integer"
        },
        "prefilter": {
          "const": "alpha-weighted-2x2",
          "default": "alpha-weighted-2x2",
          "title": "Prefilter",
          "type": "string"
        },
        "resampling": {
          "const": "bilinear",
          "default": "bilinear",
          "title": "Resampling",
          "type": "string"
        },
        "png_compress_level": {
          "default": 6,
          "maximum": 9,
          "minimum": 0,
          "title": "Png Compress Level",
          "type": "integer"
        },
        "webp_quality": {
          "default": 88,
          "maximum": 100,
          "minimum": 1,
          "title": "Webp Quality",
          "type": "integer"
        },
        "webp_method": {
          "default": 4,
          "maximum": 6,
          "minimum": 0,
          "title": "Webp Method",
          "type": "integer"
        },
        "previews": {
          "default": [
            2712,
            1356
          ],
          "items": {
            "type": "integer"
          },
          "title": "Previews",
          "type": "array"
        },
        "jpeg_previews": {
          "default": true,
          "title": "Jpeg Previews",
          "type": "boolean"
        },
        "jpeg_quality": {
          "default": 85,
          "maximum": 100,
          "minimum": 1,
          "title": "Jpeg Quality",
          "type": "integer"
        }
      },
      "title": "DiskRender",
      "type": "object"
    },
    "DiskRenderer": {
      "additionalProperties": false,
      "properties": {
        "version": {
          "title": "Version",
          "type": "string"
        },
        "config_sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Config Sha256",
          "type": "string"
        },
        "environment_id": {
          "title": "Environment Id",
          "type": "string"
        },
        "config": {
          "$ref": "#/$defs/DiskRender"
        }
      },
      "required": [
        "version",
        "config_sha256",
        "environment_id",
        "config"
      ],
      "title": "DiskRenderer",
      "type": "object"
    },
    "DiskRendition": {
      "additionalProperties": false,
      "properties": {
        "key": {
          "pattern": "^(satellite/v1/disk/frames/[0-9a-f]{64}/)[a-zA-Z0-9_.-]+$",
          "title": "Key",
          "type": "string"
        },
        "url": {
          "title": "Url",
          "type": "string"
        },
        "sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Sha256",
          "type": "string"
        },
        "bytes": {
          "exclusiveMinimum": 0,
          "title": "Bytes",
          "type": "integer"
        },
        "width": {
          "exclusiveMinimum": 0,
          "maximum": 10848,
          "title": "Width",
          "type": "integer"
        },
        "height": {
          "exclusiveMinimum": 0,
          "maximum": 10848,
          "title": "Height",
          "type": "integer"
        },
        "media_type": {
          "enum": [
            "image/webp",
            "image/png",
            "image/jpeg"
          ],
          "title": "Media Type",
          "type": "string"
        },
        "extent_id": {
          "const": "disk-geos-v1",
          "default": "disk-geos-v1",
          "title": "Extent Id",
          "type": "string"
        }
      },
      "required": [
        "key",
        "url",
        "sha256",
        "bytes",
        "width",
        "height",
        "media_type"
      ],
      "title": "DiskRendition",
      "type": "object"
    },
    "DiskRun": {
      "additionalProperties": false,
      "properties": {
        "schema_version": {
          "const": "1.0",
          "default": "1.0",
          "title": "Schema Version",
          "type": "string"
        },
        "product_id": {
          "const": "disk",
          "default": "disk",
          "title": "Product Id",
          "type": "string"
        },
        "run_id": {
          "title": "Run Id",
          "type": "string"
        },
        "started_at": {
          "format": "date-time",
          "title": "Started At",
          "type": "string"
        },
        "finished_at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Finished At"
        },
        "outcome": {
          "default": "running",
          "enum": [
            "running",
            "published",
            "unchanged",
            "failed"
          ],
          "title": "Outcome",
          "type": "string"
        },
        "error_code": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error Code"
        },
        "frame_id": {
          "anyOf": [
            {
              "pattern": "^[0-9a-f]{64}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Frame Id"
        },
        "max_runtime_seconds": {
          "const": 240,
          "default": 240,
          "title": "Max Runtime Seconds",
          "type": "integer"
        },
        "retention": {
          "anyOf": [
            {
              "$ref": "#/$defs/RetentionStatus"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "run_id",
        "started_at"
      ],
      "title": "DiskRun",
      "type": "object"
    },
    "Envelope": {
      "additionalProperties": false,
      "properties": {
        "schema_version": {
          "const": "1.0",
          "default": "1.0",
          "title": "Schema Version",
          "type": "string"
        },
        "product_id": {
          "const": "home",
          "default": "home",
          "title": "Product Id",
          "type": "string"
        },
        "enabled": {
          "title": "Enabled",
          "type": "boolean"
        },
        "latest": {
          "anyOf": [
            {
              "$ref": "#/$defs/Latest"
            },
            {
              "type": "null"
            }
          ]
        },
        "rollback": {
          "anyOf": [
            {
              "$ref": "#/$defs/Latest"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "retention": {
          "$ref": "#/$defs/RetentionPolicy"
        },
        "last_checked_at": {
          "format": "date-time",
          "title": "Last Checked At",
          "type": "string"
        },
        "last_successful_fetch_at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Last Successful Fetch At"
        },
        "last_published_at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Last Published At"
        },
        "check": {
          "$ref": "#/$defs/Check"
        },
        "expected_observation_interval_seconds": {
          "const": 600,
          "default": 600,
          "title": "Expected Observation Interval Seconds",
          "type": "integer"
        },
        "poll_interval_seconds": {
          "default": 1800,
          "maximum": 86400,
          "minimum": 60,
          "title": "Poll Interval Seconds",
          "type": "integer"
        },
        "freshness": {
          "$ref": "#/$defs/Freshness"
        },
        "public_base_url": {
          "title": "Public Base Url",
          "type": "string"
        },
        "last_tiled_nominal_time": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Tiled Nominal Time"
        }
      },
      "required": [
        "enabled",
        "latest",
        "last_checked_at",
        "last_successful_fetch_at",
        "last_published_at",
        "check",
        "freshness",
        "public_base_url"
      ],
      "title": "Envelope",
      "type": "object"
    },
    "Freshness": {
      "additionalProperties": false,
      "properties": {
        "delayed_after_seconds": {
          "default": 3600,
          "maximum": 86400,
          "minimum": 600,
          "title": "Delayed After Seconds",
          "type": "integer"
        },
        "stale_after_seconds": {
          "default": 7200,
          "maximum": 172800,
          "minimum": 600,
          "title": "Stale After Seconds",
          "type": "integer"
        }
      },
      "title": "Freshness",
      "type": "object"
    },
    "Grid": {
      "additionalProperties": false,
      "properties": {
        "crs": {
          "title": "Crs",
          "type": "string"
        },
        "transform": {
          "maxItems": 6,
          "minItems": 6,
          "prefixItems": [
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            }
          ],
          "title": "Transform",
          "type": "array"
        },
        "width": {
          "exclusiveMinimum": 0,
          "maximum": 30000,
          "title": "Width",
          "type": "integer"
        },
        "height": {
          "exclusiveMinimum": 0,
          "maximum": 30000,
          "title": "Height",
          "type": "integer"
        },
        "bounds": {
          "maxItems": 4,
          "minItems": 4,
          "prefixItems": [
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            }
          ],
          "title": "Bounds",
          "type": "array"
        },
        "pixel_interpretation": {
          "const": "area",
          "default": "area",
          "title": "Pixel Interpretation",
          "type": "string"
        },
        "mask": {
          "const": "alpha",
          "default": "alpha",
          "title": "Mask",
          "type": "string"
        }
      },
      "required": [
        "crs",
        "transform",
        "width",
        "height",
        "bounds"
      ],
      "title": "Grid",
      "type": "object"
    },
    "History": {
      "additionalProperties": false,
      "description": "`satellite/v1/home/history.json`: the published frames that carry tiles and are still\ninside retention, newest first. The single writer adds a frame only once its pointer has\nmoved and its fence is absent; retention removes one before it fences it. So every frame\nlisted here is whole and readable (docs/satellite.md, \"Frame history\").",
      "properties": {
        "schema_version": {
          "const": "1.0",
          "default": "1.0",
          "title": "Schema Version",
          "type": "string"
        },
        "product_id": {
          "const": "home",
          "default": "home",
          "title": "Product Id",
          "type": "string"
        },
        "public_base_url": {
          "title": "Public Base Url",
          "type": "string"
        },
        "updated_at": {
          "format": "date-time",
          "title": "Updated At",
          "type": "string"
        },
        "frames": {
          "items": {
            "$ref": "#/$defs/HistoryFrame"
          },
          "maxItems": 200,
          "title": "Frames",
          "type": "array"
        }
      },
      "required": [
        "public_base_url",
        "updated_at",
        "frames"
      ],
      "title": "History",
      "type": "object"
    },
    "HistoryFrame": {
      "additionalProperties": false,
      "description": "One tiled frame a reader may pick (WP-7): what the save Worker needs to read it.",
      "properties": {
        "frame_id": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Frame Id",
          "type": "string"
        },
        "nominal_time": {
          "format": "date-time",
          "title": "Nominal Time",
          "type": "string"
        },
        "product_url": {
          "title": "Product Url",
          "type": "string"
        },
        "product_sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Product Sha256",
          "type": "string"
        },
        "tiles": {
          "$ref": "#/$defs/Tiles"
        }
      },
      "required": [
        "frame_id",
        "nominal_time",
        "product_url",
        "product_sha256",
        "tiles"
      ],
      "title": "HistoryFrame",
      "type": "object"
    },
    "Input": {
      "additionalProperties": false,
      "properties": {
        "key": {
          "pattern": "^(satellite/v1/home/frames/[0-9a-f]{64}/)[a-zA-Z0-9_.-]+$",
          "title": "Key",
          "type": "string"
        },
        "url": {
          "title": "Url",
          "type": "string"
        },
        "sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Sha256",
          "type": "string"
        },
        "bytes": {
          "exclusiveMinimum": 0,
          "title": "Bytes",
          "type": "integer"
        }
      },
      "required": [
        "key",
        "url",
        "sha256",
        "bytes"
      ],
      "title": "Input",
      "type": "object"
    },
    "Latest": {
      "additionalProperties": false,
      "properties": {
        "frame_id": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Frame Id",
          "type": "string"
        },
        "generated_at": {
          "format": "date-time",
          "title": "Generated At",
          "type": "string"
        },
        "retrieved_at": {
          "format": "date-time",
          "title": "Retrieved At",
          "type": "string"
        },
        "product_url": {
          "title": "Product Url",
          "type": "string"
        },
        "product_sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Product Sha256",
          "type": "string"
        },
        "nominal_time": {
          "format": "date-time",
          "title": "Nominal Time",
          "type": "string"
        },
        "observation_start": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Observation Start"
        },
        "observation_end": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Observation End"
        },
        "time_basis": {
          "enum": [
            "source_nominal",
            "source_scan_bounds"
          ],
          "title": "Time Basis",
          "type": "string"
        },
        "composition": {
          "$ref": "#/$defs/Composition"
        },
        "coverage": {
          "$ref": "#/$defs/Coverage"
        },
        "attribution": {
          "const": "CIRA/NOAA",
          "default": "CIRA/NOAA",
          "title": "Attribution",
          "type": "string"
        },
        "full_resolution_url": {
          "title": "Full Resolution Url",
          "type": "string"
        },
        "renditions": {
          "items": {
            "$ref": "#/$defs/Rendition"
          },
          "maxItems": 10,
          "minItems": 2,
          "title": "Renditions",
          "type": "array"
        },
        "tiles": {
          "anyOf": [
            {
              "$ref": "#/$defs/Tiles"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "frame_id",
        "generated_at",
        "retrieved_at",
        "product_url",
        "product_sha256",
        "nominal_time",
        "observation_start",
        "observation_end",
        "time_basis",
        "composition",
        "coverage",
        "full_resolution_url",
        "renditions"
      ],
      "title": "Latest",
      "type": "object"
    },
    "OutputGrid": {
      "additionalProperties": false,
      "properties": {
        "crs": {
          "title": "Crs",
          "type": "string"
        },
        "bounds": {
          "maxItems": 4,
          "minItems": 4,
          "prefixItems": [
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            }
          ],
          "title": "Bounds",
          "type": "array"
        },
        "footprint": {
          "items": {
            "maxItems": 2,
            "minItems": 2,
            "prefixItems": [
              {
                "type": "number"
              },
              {
                "type": "number"
              }
            ],
            "type": "array"
          },
          "title": "Footprint",
          "type": "array"
        },
        "extent_id": {
          "const": "home-mercator-v1",
          "default": "home-mercator-v1",
          "title": "Extent Id",
          "type": "string"
        }
      },
      "required": [
        "crs",
        "bounds",
        "footprint"
      ],
      "title": "OutputGrid",
      "type": "object"
    },
    "Product": {
      "additionalProperties": false,
      "properties": {
        "schema_version": {
          "const": "1.0",
          "default": "1.0",
          "title": "Schema Version",
          "type": "string"
        },
        "family": {
          "const": "satellite",
          "default": "satellite",
          "title": "Family",
          "type": "string"
        },
        "product_id": {
          "const": "home",
          "default": "home",
          "title": "Product Id",
          "type": "string"
        },
        "frame_id": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Frame Id",
          "type": "string"
        },
        "canonical": {
          "$ref": "#/$defs/Input"
        },
        "source": {
          "$ref": "#/$defs/Source"
        },
        "composition": {
          "$ref": "#/$defs/Composition"
        },
        "coverage": {
          "$ref": "#/$defs/Coverage"
        },
        "renderer": {
          "$ref": "#/$defs/Renderer"
        },
        "generated_at": {
          "format": "date-time",
          "title": "Generated At",
          "type": "string"
        },
        "public_base_url": {
          "title": "Public Base Url",
          "type": "string"
        },
        "output_grid": {
          "$ref": "#/$defs/OutputGrid"
        },
        "attribution": {
          "const": "CIRA/NOAA",
          "default": "CIRA/NOAA",
          "title": "Attribution",
          "type": "string"
        },
        "source_documentation_url": {
          "title": "Source Documentation Url",
          "type": "string"
        },
        "full_resolution_url": {
          "title": "Full Resolution Url",
          "type": "string"
        },
        "renditions": {
          "items": {
            "$ref": "#/$defs/Rendition"
          },
          "maxItems": 10,
          "minItems": 2,
          "title": "Renditions",
          "type": "array"
        },
        "tiles": {
          "anyOf": [
            {
              "$ref": "#/$defs/Tiles"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "frame_id",
        "canonical",
        "source",
        "composition",
        "coverage",
        "renderer",
        "generated_at",
        "public_base_url",
        "output_grid",
        "source_documentation_url",
        "full_resolution_url",
        "renditions"
      ],
      "title": "Product",
      "type": "object"
    },
    "RenderConfig": {
      "additionalProperties": false,
      "properties": {
        "version": {
          "const": "home-mercator-v1",
          "default": "home-mercator-v1",
          "title": "Version",
          "type": "string"
        },
        "crs": {
          "const": "EPSG:3857",
          "default": "EPSG:3857",
          "title": "Crs",
          "type": "string"
        },
        "roi": {
          "default": [
            -115,
            5,
            -25,
            52
          ],
          "maxItems": 4,
          "minItems": 4,
          "prefixItems": [
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            },
            {
              "type": "number"
            }
          ],
          "title": "Roi",
          "type": "array"
        },
        "aspect": {
          "default": 2.25,
          "title": "Aspect",
          "type": "number"
        },
        "widths": {
          "default": [
            640,
            960,
            1280,
            1920,
            2400
          ],
          "items": {
            "type": "integer"
          },
          "title": "Widths",
          "type": "array"
        },
        "resampling": {
          "const": "bilinear",
          "default": "bilinear",
          "title": "Resampling",
          "type": "string"
        },
        "webp_quality": {
          "default": 88,
          "title": "Webp Quality",
          "type": "integer"
        },
        "halo_pixels": {
          "default": 16,
          "title": "Halo Pixels",
          "type": "integer"
        },
        "tiles": {
          "anyOf": [
            {
              "$ref": "#/$defs/TileRender"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "title": "RenderConfig",
      "type": "object"
    },
    "Renderer": {
      "additionalProperties": false,
      "properties": {
        "version": {
          "title": "Version",
          "type": "string"
        },
        "config_sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Config Sha256",
          "type": "string"
        },
        "environment_id": {
          "title": "Environment Id",
          "type": "string"
        },
        "config": {
          "$ref": "#/$defs/RenderConfig"
        }
      },
      "required": [
        "version",
        "config_sha256",
        "environment_id",
        "config"
      ],
      "title": "Renderer",
      "type": "object"
    },
    "Rendition": {
      "additionalProperties": false,
      "properties": {
        "key": {
          "pattern": "^(satellite/v1/home/frames/[0-9a-f]{64}/)[a-zA-Z0-9_.-]+$",
          "title": "Key",
          "type": "string"
        },
        "url": {
          "title": "Url",
          "type": "string"
        },
        "sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Sha256",
          "type": "string"
        },
        "bytes": {
          "exclusiveMinimum": 0,
          "title": "Bytes",
          "type": "integer"
        },
        "width": {
          "exclusiveMinimum": 0,
          "maximum": 2400,
          "title": "Width",
          "type": "integer"
        },
        "height": {
          "exclusiveMinimum": 0,
          "maximum": 2400,
          "title": "Height",
          "type": "integer"
        },
        "media_type": {
          "enum": [
            "image/webp",
            "image/png"
          ],
          "title": "Media Type",
          "type": "string"
        },
        "extent_id": {
          "const": "home-mercator-v1",
          "default": "home-mercator-v1",
          "title": "Extent Id",
          "type": "string"
        }
      },
      "required": [
        "key",
        "url",
        "sha256",
        "bytes",
        "width",
        "height",
        "media_type"
      ],
      "title": "Rendition",
      "type": "object"
    },
    "RetentionPolicy": {
      "additionalProperties": false,
      "properties": {
        "days": {
          "default": 7,
          "maximum": 30,
          "minimum": 1,
          "title": "Days",
          "type": "integer"
        },
        "reader_grace_seconds": {
          "default": 86400,
          "maximum": 604800,
          "minimum": 86400,
          "title": "Reader Grace Seconds",
          "type": "integer"
        },
        "cleanup_enabled": {
          "default": false,
          "title": "Cleanup Enabled",
          "type": "boolean"
        }
      },
      "title": "RetentionPolicy",
      "type": "object"
    },
    "RetentionStatus": {
      "additionalProperties": false,
      "properties": {
        "outcome": {
          "enum": [
            "disabled",
            "running",
            "ok",
            "partial",
            "failed"
          ],
          "title": "Outcome",
          "type": "string"
        },
        "started_at": {
          "format": "date-time",
          "title": "Started At",
          "type": "string"
        },
        "finished_at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Finished At"
        },
        "sweep_started_at": {
          "format": "date-time",
          "title": "Sweep Started At",
          "type": "string"
        },
        "last_completed_sweep_at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Completed Sweep At"
        },
        "cursor": {
          "default": "",
          "maxLength": 256,
          "title": "Cursor",
          "type": "string"
        },
        "scanned": {
          "default": 0,
          "maximum": 64,
          "minimum": 0,
          "title": "Scanned",
          "type": "integer"
        },
        "deleted_frames": {
          "default": 0,
          "maximum": 4,
          "minimum": 0,
          "title": "Deleted Frames",
          "type": "integer"
        },
        "error_code": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error Code"
        }
      },
      "required": [
        "outcome",
        "started_at",
        "sweep_started_at"
      ],
      "title": "RetentionStatus",
      "type": "object"
    },
    "Run": {
      "additionalProperties": false,
      "properties": {
        "schema_version": {
          "const": "1.0",
          "default": "1.0",
          "title": "Schema Version",
          "type": "string"
        },
        "product_id": {
          "const": "home",
          "default": "home",
          "title": "Product Id",
          "type": "string"
        },
        "run_id": {
          "title": "Run Id",
          "type": "string"
        },
        "started_at": {
          "format": "date-time",
          "title": "Started At",
          "type": "string"
        },
        "finished_at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Finished At"
        },
        "outcome": {
          "default": "running",
          "enum": [
            "running",
            "published",
            "unchanged",
            "failed"
          ],
          "title": "Outcome",
          "type": "string"
        },
        "error_code": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error Code"
        },
        "frame_id": {
          "anyOf": [
            {
              "pattern": "^[0-9a-f]{64}$",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Frame Id"
        },
        "max_runtime_seconds": {
          "const": 240,
          "default": 240,
          "title": "Max Runtime Seconds",
          "type": "integer"
        },
        "tiles": {
          "anyOf": [
            {
              "enum": [
                "off",
                "hour_taken",
                "rendered",
                "reused",
                "frame_untiled",
                "withheld_time",
                "withheld_size",
                "withheld_error"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Tiles"
        },
        "retention": {
          "anyOf": [
            {
              "$ref": "#/$defs/RetentionStatus"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "history": {
          "anyOf": [
            {
              "enum": [
                "unchanged",
                "updated",
                "replaced",
                "deferred",
                "failed"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "History"
        }
      },
      "required": [
        "run_id",
        "started_at"
      ],
      "title": "Run",
      "type": "object"
    },
    "Source": {
      "additionalProperties": false,
      "properties": {
        "agency": {
          "const": "NOAA",
          "default": "NOAA",
          "title": "Agency",
          "type": "string"
        },
        "producer": {
          "const": "CIRA/NOAA",
          "default": "CIRA/NOAA",
          "title": "Producer",
          "type": "string"
        },
        "product": {
          "const": "ABI-FD-GEOCOLOR",
          "default": "ABI-FD-GEOCOLOR",
          "title": "Product",
          "type": "string"
        },
        "platform": {
          "const": "GOES-19",
          "default": "GOES-19",
          "title": "Platform",
          "type": "string"
        },
        "instrument": {
          "const": "ABI",
          "default": "ABI",
          "title": "Instrument",
          "type": "string"
        },
        "url": {
          "title": "Url",
          "type": "string"
        },
        "object_key": {
          "title": "Object Key",
          "type": "string"
        },
        "sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Sha256",
          "type": "string"
        },
        "bytes": {
          "exclusiveMinimum": 0,
          "title": "Bytes",
          "type": "integer"
        },
        "checksum_verified": {
          "const": true,
          "default": true,
          "title": "Checksum Verified",
          "type": "boolean"
        },
        "checksum_url": {
          "title": "Checksum Url",
          "type": "string"
        },
        "etag": {
          "title": "Etag",
          "type": "string"
        },
        "last_modified": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Last Modified"
        },
        "retrieved_at": {
          "format": "date-time",
          "title": "Retrieved At",
          "type": "string"
        },
        "nominal_time": {
          "format": "date-time",
          "title": "Nominal Time",
          "type": "string"
        },
        "observation_start": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Observation Start"
        },
        "observation_end": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Observation End"
        },
        "time_basis": {
          "const": "source_nominal",
          "default": "source_nominal",
          "title": "Time Basis",
          "type": "string"
        },
        "documentation_url": {
          "title": "Documentation Url",
          "type": "string"
        }
      },
      "required": [
        "url",
        "object_key",
        "sha256",
        "bytes",
        "checksum_url",
        "etag",
        "last_modified",
        "retrieved_at",
        "nominal_time",
        "documentation_url"
      ],
      "title": "Source",
      "type": "object"
    },
    "TileBounds": {
      "additionalProperties": false,
      "description": "Longitude/latitude bounds, in the shape the Wallpapers save engine takes.",
      "properties": {
        "west": {
          "maximum": 180,
          "minimum": -180,
          "title": "West",
          "type": "number"
        },
        "south": {
          "maximum": 85.0511287798066,
          "minimum": -85.0511287798066,
          "title": "South",
          "type": "number"
        },
        "east": {
          "maximum": 180,
          "minimum": -180,
          "title": "East",
          "type": "number"
        },
        "north": {
          "maximum": 85.0511287798066,
          "minimum": -85.0511287798066,
          "title": "North",
          "type": "number"
        }
      },
      "required": [
        "west",
        "south",
        "east",
        "north"
      ],
      "title": "TileBounds",
      "type": "object"
    },
    "TileRender": {
      "additionalProperties": false,
      "description": "The tile archive's renderer configuration (WP-5). It enters `RenderConfig` only on frames\nthat carry tiles, so it is part of their identity and of no other frame's.",
      "properties": {
        "version": {
          "const": "xyz-png-v1",
          "default": "xyz-png-v1",
          "title": "Version",
          "type": "string"
        },
        "tile_size": {
          "const": 256,
          "default": 256,
          "title": "Tile Size",
          "type": "integer"
        },
        "minzoom": {
          "const": 0,
          "default": 0,
          "title": "Minzoom",
          "type": "integer"
        },
        "maxzoom": {
          "default": 7,
          "maximum": 7,
          "minimum": 0,
          "title": "Maxzoom",
          "type": "integer"
        },
        "format": {
          "const": "png",
          "default": "png",
          "title": "Format",
          "type": "string"
        },
        "png_compress_level": {
          "default": 6,
          "maximum": 9,
          "minimum": 0,
          "title": "Png Compress Level",
          "type": "integer"
        },
        "resampling": {
          "const": "bilinear",
          "default": "bilinear",
          "title": "Resampling",
          "type": "string"
        },
        "pyramid": {
          "const": "alpha-weighted-2x2",
          "default": "alpha-weighted-2x2",
          "title": "Pyramid",
          "type": "string"
        }
      },
      "title": "TileRender",
      "type": "object"
    },
    "Tiles": {
      "additionalProperties": false,
      "description": "One frame's tile archive: PMTiles v3 of 256 px PNG tiles, read by range requests.",
      "properties": {
        "key": {
          "pattern": "^(satellite/v1/home/frames/[0-9a-f]{64}/)[a-zA-Z0-9_.-]+$",
          "title": "Key",
          "type": "string"
        },
        "url": {
          "title": "Url",
          "type": "string"
        },
        "sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Sha256",
          "type": "string"
        },
        "bytes": {
          "exclusiveMinimum": 0,
          "title": "Bytes",
          "type": "integer"
        },
        "media_type": {
          "const": "application/vnd.pmtiles",
          "default": "application/vnd.pmtiles",
          "title": "Media Type",
          "type": "string"
        },
        "tile_format": {
          "const": "png",
          "default": "png",
          "title": "Tile Format",
          "type": "string"
        },
        "tile_size": {
          "const": 256,
          "default": 256,
          "title": "Tile Size",
          "type": "integer"
        },
        "minzoom": {
          "maximum": 7,
          "minimum": 0,
          "title": "Minzoom",
          "type": "integer"
        },
        "maxzoom": {
          "maximum": 7,
          "minimum": 0,
          "title": "Maxzoom",
          "type": "integer"
        },
        "bounds": {
          "$ref": "#/$defs/TileBounds"
        }
      },
      "required": [
        "key",
        "url",
        "sha256",
        "bytes",
        "minzoom",
        "maxzoom",
        "bounds"
      ],
      "title": "Tiles",
      "type": "object"
    }
  },
  "anyOf": [
    {
      "$ref": "#/$defs/CanonicalFrame"
    },
    {
      "$ref": "#/$defs/Product"
    },
    {
      "$ref": "#/$defs/Envelope"
    },
    {
      "$ref": "#/$defs/Run"
    },
    {
      "$ref": "#/$defs/History"
    },
    {
      "$ref": "#/$defs/DiskCanonical"
    },
    {
      "$ref": "#/$defs/DiskProduct"
    },
    {
      "$ref": "#/$defs/DiskEnvelope"
    },
    {
      "$ref": "#/$defs/DiskRun"
    }
  ]
}
