changedOutput schema / anyOf
Previous value: -[
- {
- "not": {
- "required": [
- "error"
- ]
- },
- "required": [
- "siteNumber",
- "siteName",
- "parameterCd",
- "parameterName",
- "unitCode",
- "currentValue",
- "currentDateTime",
- "qualifiers",
- "historicalContext",
- "historicalContextStatus"
- ]
- },
- {
- "required": [
- "error"
- ]
- }
-]New value: +[
+ {
+ "not": {
+ "required": [
+ "error"
+ ]
+ },
+ "required": [
+ "siteNumber",
+ "siteName",
+ "parameterCd",
+ "parameterName",
+ "unitCode",
+ "methodId",
+ "methodDescription",
+ "currentValue",
+ "currentDateTime",
+ "qualifiers",
+ "historicalContext",
+ "historicalContextStatus"
+ ]
+ },
+ {
+ "required": [
+ "error"
+ ]
+ }
+]
changedOutput schema / properties / historicalContext / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "comparisonBasis": {
- "description": "Fixed disclosure that percentileClass ranks an instantaneous reading against approved daily-mean percentiles — a cross-granularity approximation, not a flood-stage or drought determination. Present whenever historicalContext is non-null.",
- "type": "string"
- },
- "p05": {
- "description": "5th percentile value in unitCode for this calendar month+day, based on the period of record. Null if that threshold is unavailable.",
- "type": [
- "number",
- "null"
- ]
- },
- "p10": {
- "description": "10th percentile value in unitCode for this calendar month+day. Null if unavailable.",
- "type": [
- "number",
- "null"
- ]
- },
- "p25": {
- "description": "25th percentile (lower quartile) in unitCode. Null if unavailable.",
- "type": [
- "number",
- "null"
- ]
- },
- "p50": {
- "description": "Median (50th percentile) in unitCode for this calendar month+day. Null if unavailable.",
- "type": [
- "number",
- "null"
- ]
- },
- "p75": {
- "description": "75th percentile (upper quartile) in unitCode. Null if unavailable.",
- "type": [
- "number",
- "null"
- ]
- },
- "p95": {
- "description": "95th percentile value in unitCode for this calendar month+day. Null if unavailable.",
- "type": [
- "number",
- "null"
- ]
- },
- "percentileClass": {
- "description": "Classification relative to the full period-of-record: record-high (≥ p95), above-normal (p75–p95), normal (p25–p75), below-normal (p10–p25), low (p05–p10), record-low (< p05). See percentileLabel for the threshold in plain language.",
- "enum": [
- "record-high",
- "above-normal",
- "normal",
- "below-normal",
- "low",
- "record-low",
- "unknown"
- ],
- "type": "string"
- },
- "percentileLabel": {
- "description": "Plain-language threshold for percentileClass (e.g. \"25th–75th percentile\"). The record-high and record-low classes mark percentile-of-record extremes (≥ p95 / < p05), not verified all-time records — this field says so where the class name does not.",
- "type": "string"
- },
- "periodOfRecord": {
- "description": "Range of years used to compute the percentile statistics (e.g. \"1930–2025\").",
- "type": "string"
- }
- },
- "required": [
- "percentileClass",
- "percentileLabel",
- "p05",
- "p10",
- "p25",
- "p50",
- "p75",
- "p95",
- "periodOfRecord",
- "comparisonBasis"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "comparisonBasis": {
+ "description": "Fixed disclosure that percentileClass ranks an instantaneous reading against approved daily-mean percentiles — a cross-granularity approximation, not a flood-stage or drought determination. Present whenever historicalContext is non-null.",
+ "type": "string"
+ },
+ "methodMatched": {
+ "description": "True when statSeriesDescription equals the reported methodDescription, which is how the percentiles are matched to the sensor that produced the reading. False when the descriptions differ but the series was still used — it is the only statistics series whose description matches once the bracketed label the statistics service appends (e.g. \"[BASE GAGE]\") is set aside, or the only statistics series at the site; note says which. The percentiles may then come from a different sensor or location than the reading.",
+ "type": "boolean"
+ },
+ "p05": {
+ "description": "5th percentile value in unitCode for this calendar month+day, based on the period of record. Null if that threshold is unavailable.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "p10": {
+ "description": "10th percentile value in unitCode for this calendar month+day. Null if unavailable.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "p25": {
+ "description": "25th percentile (lower quartile) in unitCode. Null if unavailable.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "p50": {
+ "description": "Median (50th percentile) in unitCode for this calendar month+day. Null if unavailable.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "p75": {
+ "description": "75th percentile (upper quartile) in unitCode. Null if unavailable.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "p95": {
+ "description": "95th percentile value in unitCode for this calendar month+day. Null if unavailable.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "percentileClass": {
+ "description": "Classification relative to the full period-of-record: record-high (≥ p95), above-normal (p75–p95), normal (p25–p75), below-normal (p10–p25), low (p05–p10), record-low (< p05). Decided by the thresholds NWIS published: with p95 blank a value ≥ p75 is above-normal, and with p10 or p05 blank a value below p25 or p10 is below-normal or low. normal requires both p25 and p75; a value the published thresholds cannot place is unknown, as is a reading NWIS reported as no data (currentValue empty). See percentileLabel for the threshold in plain language.",
+ "enum": [
+ "record-high",
+ "above-normal",
+ "normal",
+ "below-normal",
+ "low",
+ "record-low",
+ "unknown"
+ ],
+ "type": "string"
+ },
+ "percentileLabel": {
+ "description": "Plain-language threshold for percentileClass (e.g. \"25th–75th percentile\"). When the class was decided without an unpublished threshold, the label names it (e.g. \"≥ 75th percentile; 95th not published\") — the value may lie past it. An unknown class names the published thresholds either side and the blank ones between (e.g. \"25th–95th percentile; 75th not published\"), or, for a reading with no value, says so and names its qualifiers. The record-high and record-low classes mark percentile-of-record extremes (≥ p95 / < p05), not verified all-time records — this field says so where the class name does not.",
+ "type": "string"
+ },
+ "periodOfRecord": {
+ "description": "Range of years used to compute the percentile statistics (e.g. \"1930–2025\").",
+ "type": "string"
+ },
+ "statSeriesDescription": {
+ "description": "Location description NWIS gives that statistics series (e.g. \"From multiparameter sonde\"). Null when blank.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "statSeriesId": {
+ "description": "NWIS statistics time-series ID (ts_id) the percentiles were computed from. A daily-mean series ID, numbered independently of the IV methodId. Null when NWIS omits it.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "percentileClass",
+ "percentileLabel",
+ "p05",
+ "p10",
+ "p25",
+ "p50",
+ "p75",
+ "p95",
+ "periodOfRecord",
+ "comparisonBasis",
+ "statSeriesId",
+ "statSeriesDescription",
+ "methodMatched"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]