{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://otranspo.ca/schemas/public-api/v1/city-replay","type":"object","properties":{"schema":{"const":"https://otranspo.ca/schemas/public-api/v1/city-replay"},"schemaVersion":{"const":"1.0.0"},"evidenceState":{"type":"string","enum":["measured","no_match","unavailable"]},"dataset":{"type":"object","properties":{"id":{"const":"recorded_public_feed_positions"},"source":{"type":"string","enum":["local_archive","published_public_archive"]},"timeZone":{"const":"America/Toronto"},"serviceDayBoundary":{"const":"04:00"},"live":{"const":false}},"required":["id","source","timeZone","serviceDayBoundary","live"],"additionalProperties":true},"serviceDate":{"type":"string","format":"date"},"serviceDayStartsAt":{"type":"string","format":"date-time"},"fromMinute":{"type":"integer","minimum":0},"minutes":{"type":"integer","minimum":1,"maximum":120},"family":{"type":"string","enum":["all","local","100","200","300","400","500","unassigned"]},"operator":{"type":"string","enum":["all","oc_transpo","sto"]},"positions":{"type":"array","items":{"type":"object","properties":{"vehicleId":{"type":"string"},"operatorId":{"type":"string","enum":["oc_transpo","sto"]},"routeId":{"anyOf":[{"type":"string"},{"type":"null"}]},"routeLabel":{"anyOf":[{"type":"string"},{"type":"null"}]},"tripId":{"anyOf":[{"type":"string"},{"type":"null"}]},"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"bearing":{"anyOf":[{"type":"number","minimum":0,"maximum":360},{"type":"null"}]},"speedMetresPerSecond":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"observedAt":{"type":"string","format":"date-time"},"offsetSeconds":{"type":"integer"},"delaySeconds":{"anyOf":[{"type":"integer"},{"type":"null"}]},"gradingPolicy":{"type":"string","enum":["conventional","express_context","community_context","event_context","unassigned"]}},"required":["vehicleId","operatorId","routeId","routeLabel","tripId","latitude","longitude","bearing","speedMetresPerSecond","observedAt","offsetSeconds","delaySeconds","gradingPolicy"],"additionalProperties":true}},"summary":{"type":"array","items":{"type":"object","properties":{"serviceHour":{"type":"integer","minimum":0},"clockHour":{"type":"string"},"observedVehicles":{"type":"integer","minimum":0},"unassignedVehicles":{"type":"integer","minimum":0},"unassignedPositionObservations":{"type":"integer","minimum":0},"measuredUnassignedHours":{"type":"integer","minimum":0},"measuredUnassignedKilometres":{"type":"number","minimum":0}},"required":["serviceHour","clockHour","observedVehicles","unassignedVehicles","unassignedPositionObservations","measuredUnassignedHours","measuredUnassignedKilometres"],"additionalProperties":true}},"coverage":{"type":"object","properties":{"state":{"type":"string","enum":["measured","no_matching_records","archive_unavailable","not_requested"]},"windowStartsAt":{"type":"string","format":"date-time"},"windowEndsAt":{"type":"string","format":"date-time"},"archivePositionCount":{"type":"integer","minimum":0},"matchingPositionCount":{"type":"integer","minimum":0},"firstMatchingObservationAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"lastMatchingObservationAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"routeAndStopContext":{"const":"recorded_snapshot_assignment_only"}},"required":["state","windowStartsAt","windowEndsAt","archivePositionCount","matchingPositionCount","firstMatchingObservationAt","lastMatchingObservationAt","routeAndStopContext"],"additionalProperties":true},"evidence":{"type":"object","properties":{"positionCount":{"type":"integer","minimum":0},"firstObservationAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"lastObservationAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"archiveCadence":{"type":"string","enum":["one_minute_current","five_minute_legacy","mixed_transition_day"]},"movementMethod":{"type":"string"},"cause":{"const":"unknown"},"delayLookupAvailable":{"type":"boolean"},"summaryAvailable":{"type":"boolean"},"truncated":{"type":"boolean"}},"required":["positionCount","firstObservationAt","lastObservationAt","archiveCadence","movementMethod","cause","delayLookupAvailable","summaryAvailable","truncated"],"additionalProperties":true},"limitations":{"type":"array","items":{"type":"string"}}},"required":["schema","schemaVersion","evidenceState","dataset","serviceDate","serviceDayStartsAt","fromMinute","minutes","family","operator","positions","summary","coverage","evidence","limitations"],"additionalProperties":true,"title":"city-replay response schema","x-api-version":"1.0.0"}