{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/smarterweather-com/json-schema/smarterweather-com-point-value-schema.json",
  "title": "PointValue",
  "description": "A single allowlisted value sampled at a point, with friendly metadata.\nThe single-form wire shape for GET /v1/point (scalar or zone).\n",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/smarterweather-com-openapi.yaml#/components/schemas/PointValue",
  "type": "object",
  "required": [
    "product",
    "var",
    "value",
    "approximate"
  ],
  "properties": {
    "product": {
      "type": "string",
      "description": "Echoed product identifier."
    },
    "var": {
      "type": "string",
      "description": "The `var` as sent (`standard_name` or the stored `name`)."
    },
    "value": {
      "type": [
        "number",
        "null"
      ],
      "format": "double",
      "description": "The sampled value in `unit` (scalar), or the ordinal level of the\ncontaining band (zone). `null` when a zone point is in no band\n(`category: \"none\"`).\n"
    },
    "unit": {
      "type": "string",
      "description": "Canonical unit of `value` (clients convert for display)."
    },
    "category": {
      "type": "string",
      "description": "Optional human category the value falls into (e.g. soil-moisture\n`dry`/`normal`/`moist`, or an outlook band like `slight`). The\nexplicit value `\"none\"` means a zone point is in no band. Omitted\nfor scalars without categories.\n"
    },
    "label": {
      "type": "string",
      "description": "Optional human display label for a named band (e.g. `Slight`,\n`Elevated`). Omitted for plain scalars.\n"
    },
    "observed_at": {
      "type": "string",
      "format": "date-time",
      "description": "Valid time of the sampled value / outlook."
    },
    "approximate": {
      "type": "boolean",
      "description": "True when the value is older than the product's update cadence\nallows (stale).\n"
    },
    "status": {
      "type": "string",
      "description": "Outcome of the point query. `ok` when a value is present;\n`unavailable` when no sample exists at the location (within domain).\n",
      "enum": [
        "ok",
        "unavailable"
      ]
    }
  }
}