{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://azaion/contracts/mapobjects-observations.json", "title": "MapObjectsObservationsPush", "description": "Post-flight observations payload POSTed to /missions/{id}/mapobjects. Wire contract co-owned with the external missions repo. Local validator and bundled-schema copy live in autopilot/crates/mission_client/src/internal/schema/mapobjects.rs (AZ-647).", "type": "object", "required": ["mission_id", "observations"], "additionalProperties": false, "properties": { "mission_id": { "type": "string", "minLength": 1 }, "observations": { "type": "array", "items": { "$ref": "#/definitions/observation" } } }, "definitions": { "observation": { "type": "object", "required": [ "id", "h3_cell", "class", "class_group", "mission_id", "uav_id", "observed_at_monotonic_ns", "observed_at_wallclock", "gps_lat", "gps_lon", "mgrs", "size_width_m", "size_length_m", "confidence", "diff_kind" ], "additionalProperties": false, "properties": { "id": { "type": "string", "format": "uuid" }, "h3_cell": { "type": "integer", "minimum": 0 }, "class": { "type": "string" }, "class_group": { "type": "string" }, "mission_id": { "type": "string" }, "uav_id": { "type": "string" }, "observed_at_monotonic_ns": { "type": "integer", "minimum": 0 }, "observed_at_wallclock": { "type": "string", "format": "date-time" }, "gps_lat": { "type": "number", "minimum": -90, "maximum": 90 }, "gps_lon": { "type": "number", "minimum": -180, "maximum": 180 }, "mgrs": { "type": "string" }, "size_width_m": { "type": "number", "minimum": 0 }, "size_length_m": { "type": "number", "minimum": 0 }, "confidence": { "type": "number", "minimum": 0, "maximum": 1 }, "diff_kind": { "type": "string", "enum": ["NEW", "MOVED", "EXISTING", "REMOVED_CANDIDATE"] }, "photo_ref": { "type": "string" }, "raw_evidence": {} } } } }