Skip to content

Manifest and schema

manifest.json is the HFX sidecar metadata file, a small JSON file that travels beside the dataset and declares dataset identity, topology class, row counts, and optional auxiliary artifacts. In HFX, a dataset is the artifact bundle described by one manifest and its data files. The manifest describes what the data is. Runtime parameters live outside the manifest.

Top-level fields

The manifest is a JSON object. The schema sets additionalProperties: false at the top level, so a manifest with any field outside this table is non-conformant.

Field Type Required Meaning
format_version string Required HFX format version. The schema fixes this to the constant "0.3.0".
fabric_name string Required Source fabric identifier, the name of the source hydrofabric, a dataset describing a region's river network, this dataset was compiled from. Non-empty. Must match the pattern ^[a-z][a-z0-9_-]*$, so it starts with a lowercase letter and uses only lowercase letters, digits, hyphens, and underscores.
fabric_version string Optional Version label of the source fabric. Non-empty when present.
crs string Required Coordinate reference system, the spatial coordinate system of every coordinate in the dataset. The schema fixes this to the constant "EPSG:4326", the WGS84 longitude and latitude system.
has_up_area boolean Required Whether the up_area_km2 column carries computed upstream-area values. When true, that column carries computed values where computation is possible, and nulls where it is unavailable. When false, every value in that column is null.
topology string Required Topology class, the shape of the drainage graph. One of "tree" or "dag", where dag means a directed acyclic graph, a graph whose edges have direction and form no cycles.
region string Optional Geographic or source-fabric subset label, a free-form name for the covered extent such as "europe". Non-empty when present.
bbox array of number Required Bounding box, the rectangle that encloses every unit, given as [minx, miny, maxx, maxy]. Exactly four plain numbers.
unit_count integer Required Number of drainage units in the dataset, equal to the row count of catchments.parquet. At least 1.
created_at string Required Timestamp of the compilation run, an RFC 3339 date-time string, for example "2026-05-14T00:00:00Z".
adapter_version string Required Version of the adapter, the offline tool that compiled the source fabric into HFX. Non-empty.
auxiliary array Optional Declared auxiliary data, a list of optional extra artifacts that ship with the dataset. Each element follows the auxiliary entry shape below.

Auxiliary entries

Each element of the auxiliary array is an object. The schema sets additionalProperties: false on each auxiliary entry, so an entry with any field outside this table is non-conformant. All three fields are required.

Field Type Required Meaning
schema string Required Auxiliary schema identifier, the name of the format contract this entry follows. Non-empty.
artifacts object Required Mapping from an artifact key to a file path relative to the dataset root. At least one entry. Every key is a non-empty string and every value is a non-empty string.
metadata object Required Schema-specific metadata block, a set of fields defined by the auxiliary schema named in schema.

Example

This minimal conformant manifest matches the tiny conformance example:

{
  "format_version": "0.3.0",
  "fabric_name": "conformance-tiny",
  "crs": "EPSG:4326",
  "has_up_area": false,
  "topology": "tree",
  "bbox": [0.0, 0.0, 2.0, 2.0],
  "unit_count": 5,
  "created_at": "2026-01-01T00:00:00Z",
  "adapter_version": "conformance-fixture-v2"
}

This manifest shows optional source-fabric and auxiliary fields:

{
  "format_version": "0.3.0",
  "fabric_name": "example-fabric",
  "fabric_version": "2026.1",
  "crs": "EPSG:4326",
  "has_up_area": true,
  "topology": "tree",
  "region": "europe",
  "bbox": [-25.0, 34.0, 45.0, 72.0],
  "unit_count": 194356,
  "created_at": "2026-05-14T00:00:00Z",
  "adapter_version": "0.2.0",
  "auxiliary": [
    {
      "schema": "hfx.aux.d8_raster.v1",
      "artifacts": {
        "flow_dir": "flow_dir.tif",
        "flow_acc": "flow_acc.tif"
      },
      "metadata": {
        "flow_dir_encoding": "esri"
      }
    }
  ]
}

The machine-readable schema

The enforced machine-readable contract lives at schemas/manifest.schema.json. Use that schema when you need validator behavior, exact required fields, allowed values, and object-closure rules. For the authoritative prose rules, read section 5, manifest.json, of the specification.