addedOutput schema / properties / coverage
Added value: +{
+ "additionalProperties": true,
+ "description": "Per-point coverage of the trace from the matcher's own per-point status — independent of the distance-based `confidence`. Every key is always present.",
+ "properties": {
+ "interpolated_count": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Input points the matcher placed on the road network by interpolating between matched neighbours; counted as covered. null when unavailable."
+ },
+ "matched_count": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Input points the matcher placed on the road network directly. null when unavailable."
+ },
+ "point_count": {
+ "description": "Number of input GPS points",
+ "type": "integer"
+ },
+ "ratio": {
+ "description": "0–1: (matched_count + interpolated_count) / point_count, rounded down to 3 decimals so a partial trace never reads 1. null when unavailable.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "route_sections": {
+ "description": "Number of disjoint sections the match broke into (1 = continuous). When greater than 1, the returned geometry, distance and duration cover only the FIRST section — split the trace at the break and match the parts separately.",
+ "type": "integer"
+ },
+ "unavailable_reason": {
+ "anyOf": [
+ {
+ "enum": [
+ "upstream_error",
+ "timeout",
+ "no_point_status",
+ "point_count_mismatch",
+ "unknown_point_type"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Why the per-point counts and `match_status` are null: `upstream_error` (the per-point check failed), `timeout` (it did not answer in time), `no_point_status` (it answered without per-point results), `point_count_mismatch` (its results did not line up one-to-one with the input points), `unknown_point_type` (it reported a status this API does not recognise). null when coverage is available."
+ },
+ "unmatched_count": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Input points the matcher could not place on the road network. null when unavailable."
+ },
+ "unmatched_ranges": {
+ "anyOf": [
+ {
+ "items": {
+ "additionalProperties": true,
+ "properties": {
+ "end_index": {
+ "description": "0-based index of the last unmatched input point in this run (inclusive)",
+ "type": "integer"
+ },
+ "point_count": {
+ "description": "Number of input points in this run",
+ "type": "integer"
+ },
+ "start_index": {
+ "description": "0-based index of the first unmatched input point in this run",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "start_index",
+ "end_index",
+ "point_count"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Contiguous runs of unmatched input points, as 0-based inclusive index ranges into `shape`, in trace order. Empty when every point was covered; null when unavailable."
+ }
+ },
+ "required": [
+ "point_count",
+ "matched_count",
+ "interpolated_count",
+ "unmatched_count",
+ "ratio",
+ "unmatched_ranges",
+ "route_sections",
+ "unavailable_reason"
+ ],
+ "type": "object"
+}