{"openapi":"3.1.0","info":{"title":"tracé. API","version":"0.1.0","description":"Information trafic des transports publics en France. Unknown is never \"normal\"."},"servers":[{"url":"/api/v1"}],"paths":{"/meta":{"get":{"summary":"App version and coverage counts","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"app":{"type":"string","const":"trace"},"version":{"type":"string"},"apiVersion":{"type":"string","const":"v1"},"dataMode":{"type":"string","enum":["LIVE","DEMO"]},"environment":{"type":"string"},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"coverage":{"type":"object","properties":{"departmentsListed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"featuredCities":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"networksListed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"networksWithActiveSources":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sourcesEnabled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sourcesHealthy":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["departmentsListed","featuredCities","networksListed","networksWithActiveSources","sourcesEnabled","sourcesHealthy"],"additionalProperties":false},"national":{"type":"object","properties":{"uiState":{"type":"string","enum":["perturbe","ralenti","normal","indisponible","ancien"]},"counts":{"type":"object","propertyNames":{"type":"string","enum":["perturbe","ralenti","normal","indisponible","ancien"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["perturbe","ralenti","normal","indisponible","ancien"]}},"required":["uiState","counts"],"additionalProperties":false},"repositoryUrl":{"type":["string","null"]}},"required":["app","version","apiVersion","dataMode","environment","generatedAt","coverage","national","repositoryUrl"],"additionalProperties":false}}}}}}},"/departments":{"get":{"summary":"Départements with featured city","parameters":[{"name":"region","in":"query","required":false,"schema":{"type":"string"}},{"name":"overseas","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"coverage","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"nameFr":{"type":"string"},"regionCode":{"type":"string"},"regionNameFr":{"type":"string"},"timezone":{"type":"string"},"overseas":{"type":"boolean"},"featuredCity":{"anyOf":[{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"},"map":{"anyOf":[{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"inset":{"anyOf":[{"type":"string","enum":["971","972","973","974","976"]},{"type":"null"}]}},"required":["x","y","inset"],"additionalProperties":false},{"type":"null"}]},"primaryNetwork":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"statusViaInterurban":{"default":false,"type":"boolean"},"status":{"type":"object","properties":{"availability":{"type":"string","enum":["NORMAL_CONFIRMED","DEGRADED","MAJOR_DISRUPTION","UNKNOWN","STALE"]},"uiState":{"type":"string","enum":["perturbe","ralenti","normal","indisponible","ancien"]},"statusTextFr":{"type":"string"},"summaryFr":{"type":"string"},"isStale":{"type":"boolean"},"confirmedActiveIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"plannedIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durableChangeCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"unconfirmedAlertCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"calculatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"sourceLastSuccessfulFetchAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"reasonCodes":{"type":"array","items":{"type":"string"}},"policyVersion":{"type":"string"}},"required":["availability","uiState","statusTextFr","summaryFr","isStale","confirmedActiveIncidentCount","plannedIncidentCount","durableChangeCount","unconfirmedAlertCount","calculatedAt","sourceLastSuccessfulFetchAt","reasonCodes","policyVersion"],"additionalProperties":false},"decisionBasis":{"type":"string","enum":["MAX_POPULATION","CONNECTIVITY_OVERRIDE"]},"overrideReason":{"type":["string","null"]}},"required":["inseeCode","slug","nameFr","departmentCode","map","primaryNetwork","statusViaInterurban","status","decisionBasis","overrideReason"],"additionalProperties":false},{"type":"null"}]},"networkCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trackedNetworkIds":{"default":[],"type":"array","items":{"type":"string"}},"coverageState":{"type":"string","enum":["ACTIVE_LIVE","ACTIVE_DELAYED","STATIC_ONLY","MANUAL_ONLY","ONBOARDING","NO_SOURCE","ERROR","STALE"]},"lastUpdatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["code","nameFr","regionCode","regionNameFr","timezone","overseas","featuredCity","networkCount","trackedNetworkIds","coverageState","lastUpdatedAt"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false}}}}}}},"/departments/{code}":{"get":{"summary":"Département overview","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"code":{"type":"string"},"nameFr":{"type":"string"},"regionCode":{"type":"string"},"regionNameFr":{"type":"string"},"timezone":{"type":"string"},"overseas":{"type":"boolean"},"featuredCity":{"anyOf":[{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"},"map":{"anyOf":[{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"inset":{"anyOf":[{"type":"string","enum":["971","972","973","974","976"]},{"type":"null"}]}},"required":["x","y","inset"],"additionalProperties":false},{"type":"null"}]},"primaryNetwork":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"statusViaInterurban":{"default":false,"type":"boolean"},"status":{"type":"object","properties":{"availability":{"type":"string","enum":["NORMAL_CONFIRMED","DEGRADED","MAJOR_DISRUPTION","UNKNOWN","STALE"]},"uiState":{"type":"string","enum":["perturbe","ralenti","normal","indisponible","ancien"]},"statusTextFr":{"type":"string"},"summaryFr":{"type":"string"},"isStale":{"type":"boolean"},"confirmedActiveIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"plannedIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durableChangeCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"unconfirmedAlertCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"calculatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"sourceLastSuccessfulFetchAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"reasonCodes":{"type":"array","items":{"type":"string"}},"policyVersion":{"type":"string"}},"required":["availability","uiState","statusTextFr","summaryFr","isStale","confirmedActiveIncidentCount","plannedIncidentCount","durableChangeCount","unconfirmedAlertCount","calculatedAt","sourceLastSuccessfulFetchAt","reasonCodes","policyVersion"],"additionalProperties":false},"decisionBasis":{"type":"string","enum":["MAX_POPULATION","CONNECTIVITY_OVERRIDE"]},"overrideReason":{"type":["string","null"]}},"required":["inseeCode","slug","nameFr","departmentCode","map","primaryNetwork","statusViaInterurban","status","decisionBasis","overrideReason"],"additionalProperties":false},{"type":"null"}]},"networkCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trackedNetworkIds":{"default":[],"type":"array","items":{"type":"string"}},"coverageState":{"type":"string","enum":["ACTIVE_LIVE","ACTIVE_DELAYED","STATIC_ONLY","MANUAL_ONLY","ONBOARDING","NO_SOURCE","ERROR","STALE"]},"lastUpdatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"networks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"default":"URBAIN","type":"string","enum":["URBAIN","INTERURBAIN"]},"sourceQualityNoteFr":{"default":null,"type":["string","null"]},"aomName":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"operators":{"type":"array","items":{"type":"string"}},"modes":{"type":"array","items":{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]}},"coverageState":{"type":"string","enum":["ACTIVE_LIVE","ACTIVE_DELAYED","STATIC_ONLY","MANUAL_ONLY","ONBOARDING","NO_SOURCE","ERROR","STALE"]},"coverageMessageFr":{"type":"string"},"activeSourceCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"object","properties":{"availability":{"type":"string","enum":["NORMAL_CONFIRMED","DEGRADED","MAJOR_DISRUPTION","UNKNOWN","STALE"]},"uiState":{"type":"string","enum":["perturbe","ralenti","normal","indisponible","ancien"]},"statusTextFr":{"type":"string"},"summaryFr":{"type":"string"},"isStale":{"type":"boolean"},"confirmedActiveIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"plannedIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durableChangeCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"unconfirmedAlertCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"calculatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"sourceLastSuccessfulFetchAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"reasonCodes":{"type":"array","items":{"type":"string"}},"policyVersion":{"type":"string"}},"required":["availability","uiState","statusTextFr","summaryFr","isStale","confirmedActiveIncidentCount","plannedIncidentCount","durableChangeCount","unconfirmedAlertCount","calculatedAt","sourceLastSuccessfulFetchAt","reasonCodes","policyVersion"],"additionalProperties":false},"primaryCity":{"anyOf":[{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"}},"required":["inseeCode","slug","nameFr","departmentCode"],"additionalProperties":false},{"type":"null"}]},"communesServed":{"type":"array","items":{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"}},"required":["inseeCode","slug","nameFr","departmentCode"],"additionalProperties":false}},"communesServedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"regionCode":{"type":["string","null"]},"dataMode":{"type":"string","enum":["LIVE","DEMO"]}},"required":["id","slug","name","kind","sourceQualityNoteFr","aomName","websiteUrl","operators","modes","coverageState","coverageMessageFr","activeSourceCount","status","primaryCity","communesServed","communesServedCount","regionCode","dataMode"],"additionalProperties":false}},"populationReferenceYear":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"populationSourceUrl":{"type":["string","null"]}},"required":["code","nameFr","regionCode","regionNameFr","timezone","overseas","featuredCity","networkCount","trackedNetworkIds","coverageState","lastUpdatedAt","networks","populationReferenceYear","populationSourceUrl"],"additionalProperties":false}}}}}}},"/cities":{"get":{"summary":"Accent-insensitive city search","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"department","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"},"departmentNameFr":{"type":"string"},"isFeatured":{"type":"boolean"},"via":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},{"type":"null"}]},"viaKind":{"default":null,"anyOf":[{"type":"string","enum":["URBAIN","INTERURBAIN"]},{"type":"null"}]},"uiState":{"type":"string","enum":["perturbe","ralenti","normal","indisponible","ancien"]},"statusTextFr":{"type":"string"},"matchedOn":{"type":"string","enum":["commune","network","department","insee"]}},"required":["inseeCode","slug","nameFr","departmentCode","departmentNameFr","isFeatured","via","viaKind","uiState","statusTextFr","matchedOn"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false}}}}}}},"/cities/{inseeCode}":{"get":{"summary":"City detail (INSEE code or slug)","parameters":[{"name":"inseeCode","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"},"departmentNameFr":{"type":"string"},"regionCode":{"type":"string"},"regionNameFr":{"type":"string"},"timezone":{"type":"string"},"population":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"populationYear":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"map":{"anyOf":[{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"inset":{"anyOf":[{"type":"string","enum":["971","972","973","974","976"]},{"type":"null"}]}},"required":["x","y","inset"],"additionalProperties":false},{"type":"null"}]},"isFeatured":{"type":"boolean"},"networks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"default":"URBAIN","type":"string","enum":["URBAIN","INTERURBAIN"]},"sourceQualityNoteFr":{"default":null,"type":["string","null"]},"aomName":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"operators":{"type":"array","items":{"type":"string"}},"modes":{"type":"array","items":{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]}},"coverageState":{"type":"string","enum":["ACTIVE_LIVE","ACTIVE_DELAYED","STATIC_ONLY","MANUAL_ONLY","ONBOARDING","NO_SOURCE","ERROR","STALE"]},"coverageMessageFr":{"type":"string"},"activeSourceCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"object","properties":{"availability":{"type":"string","enum":["NORMAL_CONFIRMED","DEGRADED","MAJOR_DISRUPTION","UNKNOWN","STALE"]},"uiState":{"type":"string","enum":["perturbe","ralenti","normal","indisponible","ancien"]},"statusTextFr":{"type":"string"},"summaryFr":{"type":"string"},"isStale":{"type":"boolean"},"confirmedActiveIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"plannedIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durableChangeCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"unconfirmedAlertCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"calculatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"sourceLastSuccessfulFetchAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"reasonCodes":{"type":"array","items":{"type":"string"}},"policyVersion":{"type":"string"}},"required":["availability","uiState","statusTextFr","summaryFr","isStale","confirmedActiveIncidentCount","plannedIncidentCount","durableChangeCount","unconfirmedAlertCount","calculatedAt","sourceLastSuccessfulFetchAt","reasonCodes","policyVersion"],"additionalProperties":false},"primaryCity":{"anyOf":[{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"}},"required":["inseeCode","slug","nameFr","departmentCode"],"additionalProperties":false},{"type":"null"}]},"communesServed":{"type":"array","items":{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"}},"required":["inseeCode","slug","nameFr","departmentCode"],"additionalProperties":false}},"communesServedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"regionCode":{"type":["string","null"]},"dataMode":{"type":"string","enum":["LIVE","DEMO"]}},"required":["id","slug","name","kind","sourceQualityNoteFr","aomName","websiteUrl","operators","modes","coverageState","coverageMessageFr","activeSourceCount","status","primaryCity","communesServed","communesServedCount","regionCode","dataMode"],"additionalProperties":false}},"sharedNetworkWith":{"anyOf":[{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"}},"required":["inseeCode","slug","nameFr","departmentCode"],"additionalProperties":false},{"type":"null"}]},"lastVerifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["inseeCode","slug","nameFr","departmentCode","departmentNameFr","regionCode","regionNameFr","timezone","population","populationYear","map","isFeatured","networks","sharedNetworkWith","lastVerifiedAt"],"additionalProperties":false}}}}}}},"/cities/{inseeCode}/networks":{"get":{"summary":"Networks serving a city","parameters":[{"name":"inseeCode","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"default":"URBAIN","type":"string","enum":["URBAIN","INTERURBAIN"]},"sourceQualityNoteFr":{"default":null,"type":["string","null"]},"aomName":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"operators":{"type":"array","items":{"type":"string"}},"modes":{"type":"array","items":{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]}},"coverageState":{"type":"string","enum":["ACTIVE_LIVE","ACTIVE_DELAYED","STATIC_ONLY","MANUAL_ONLY","ONBOARDING","NO_SOURCE","ERROR","STALE"]},"coverageMessageFr":{"type":"string"},"activeSourceCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"object","properties":{"availability":{"type":"string","enum":["NORMAL_CONFIRMED","DEGRADED","MAJOR_DISRUPTION","UNKNOWN","STALE"]},"uiState":{"type":"string","enum":["perturbe","ralenti","normal","indisponible","ancien"]},"statusTextFr":{"type":"string"},"summaryFr":{"type":"string"},"isStale":{"type":"boolean"},"confirmedActiveIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"plannedIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durableChangeCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"unconfirmedAlertCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"calculatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"sourceLastSuccessfulFetchAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"reasonCodes":{"type":"array","items":{"type":"string"}},"policyVersion":{"type":"string"}},"required":["availability","uiState","statusTextFr","summaryFr","isStale","confirmedActiveIncidentCount","plannedIncidentCount","durableChangeCount","unconfirmedAlertCount","calculatedAt","sourceLastSuccessfulFetchAt","reasonCodes","policyVersion"],"additionalProperties":false},"primaryCity":{"anyOf":[{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"}},"required":["inseeCode","slug","nameFr","departmentCode"],"additionalProperties":false},{"type":"null"}]},"communesServed":{"type":"array","items":{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"}},"required":["inseeCode","slug","nameFr","departmentCode"],"additionalProperties":false}},"communesServedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"regionCode":{"type":["string","null"]},"dataMode":{"type":"string","enum":["LIVE","DEMO"]}},"required":["id","slug","name","kind","sourceQualityNoteFr","aomName","websiteUrl","operators","modes","coverageState","coverageMessageFr","activeSourceCount","status","primaryCity","communesServed","communesServedCount","regionCode","dataMode"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false}}}}}}},"/cities/{inseeCode}/guide":{"get":{"summary":"City guide \"À découvrir\" in a language, with live status of its lines (404 without guide)","parameters":[{"name":"inseeCode","in":"path","required":true,"schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"citySlug":{"type":"string","maxLength":80,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"inseeCode":{"type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"lang":{"type":"string","enum":["fr","en","de","it","es","nl","pt"]},"translated":{"type":"boolean"},"updatedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"verifiedAt":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"summary":{"type":"string","minLength":40,"maxLength":400},"sections":{"minItems":3,"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["see","do","eat","drink","walk","family"]},"items":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","minLength":2,"maxLength":80},"blurb":{"type":"string","minLength":20,"maxLength":300},"ids":{"type":"object","properties":{"wikidata":{"type":"string","pattern":"^Q[1-9]\\d{0,12}$"},"datatourisme":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"},"osm":{"type":"string","pattern":"^(?:node|way|relation)\\/[1-9]\\d{0,14}$"}},"additionalProperties":false},"url":{"type":"string","maxLength":300,"format":"uri"},"nearRouteIds":{"default":[],"maxItems":6,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"accessible":{"type":["boolean","null"]}},"required":["title","blurb","ids","nearRouteIds"],"additionalProperties":false}}},"required":["kind","items"],"additionalProperties":false}},"itineraries":{"minItems":1,"maxItems":2,"type":"array","items":{"type":"object","properties":{"days":{"anyOf":[{"type":"number","const":1},{"type":"number","const":2}]},"title":{"type":"string","minLength":2,"maxLength":80},"steps":{"minItems":2,"maxItems":12,"type":"array","items":{"type":"object","properties":{"day":{"anyOf":[{"type":"number","const":1},{"type":"number","const":2}]},"slot":{"type":"string","enum":["matin","midi","après-midi","soir"]},"itemRef":{"type":"string","minLength":2,"maxLength":80},"routeIds":{"default":[],"maxItems":6,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"transitNote":{"type":"string","maxLength":160}},"required":["day","slot","itemRef","routeIds","transitNote"],"additionalProperties":false}}},"required":["days","title","steps"],"additionalProperties":false}},"sources":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":120},"url":{"type":"string","maxLength":300,"format":"uri"},"licence":{"type":"string","minLength":2,"maxLength":160}},"required":["name","url","licence"],"additionalProperties":false}},"routes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"networkId":{"type":"string"},"sourceRouteId":{"type":["string","null"]},"shortName":{"type":["string","null"]},"longName":{"type":["string","null"]},"mode":{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]},"colorHex":{"type":["string","null"]},"textColorHex":{"type":["string","null"]},"activeIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"worstSeverity":{"anyOf":[{"type":"string","enum":["majeur","modere","mineur","info","inconnu"]},{"type":"null"}]}},"required":["id","networkId","sourceRouteId","shortName","longName","mode","colorHex","textColorHex","activeIncidentCount","worstSeverity"],"additionalProperties":false}},"calculatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["citySlug","inseeCode","lang","translated","updatedAt","verifiedAt","summary","sections","itineraries","sources","routes","calculatedAt"],"additionalProperties":false}}}}}}},"/guides":{"get":{"summary":"Cities that have a guide","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"citySlug":{"type":"string","maxLength":80,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"inseeCode":{"type":"string","pattern":"^(?:\\d{5}|2[AB]\\d{3})$"},"updatedAt":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"verifiedAt":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]}},"required":["citySlug","inseeCode","updatedAt","verifiedAt"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}}}}},"/networks/{networkId}":{"get":{"summary":"Network with coverage and status","parameters":[{"name":"networkId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"kind":{"default":"URBAIN","type":"string","enum":["URBAIN","INTERURBAIN"]},"sourceQualityNoteFr":{"default":null,"type":["string","null"]},"aomName":{"type":["string","null"]},"websiteUrl":{"type":["string","null"]},"operators":{"type":"array","items":{"type":"string"}},"modes":{"type":"array","items":{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]}},"coverageState":{"type":"string","enum":["ACTIVE_LIVE","ACTIVE_DELAYED","STATIC_ONLY","MANUAL_ONLY","ONBOARDING","NO_SOURCE","ERROR","STALE"]},"coverageMessageFr":{"type":"string"},"activeSourceCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"object","properties":{"availability":{"type":"string","enum":["NORMAL_CONFIRMED","DEGRADED","MAJOR_DISRUPTION","UNKNOWN","STALE"]},"uiState":{"type":"string","enum":["perturbe","ralenti","normal","indisponible","ancien"]},"statusTextFr":{"type":"string"},"summaryFr":{"type":"string"},"isStale":{"type":"boolean"},"confirmedActiveIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"plannedIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durableChangeCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"unconfirmedAlertCount":{"default":null,"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"calculatedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"sourceLastSuccessfulFetchAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"reasonCodes":{"type":"array","items":{"type":"string"}},"policyVersion":{"type":"string"}},"required":["availability","uiState","statusTextFr","summaryFr","isStale","confirmedActiveIncidentCount","plannedIncidentCount","durableChangeCount","unconfirmedAlertCount","calculatedAt","sourceLastSuccessfulFetchAt","reasonCodes","policyVersion"],"additionalProperties":false},"primaryCity":{"anyOf":[{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"}},"required":["inseeCode","slug","nameFr","departmentCode"],"additionalProperties":false},{"type":"null"}]},"communesServed":{"type":"array","items":{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"}},"required":["inseeCode","slug","nameFr","departmentCode"],"additionalProperties":false}},"communesServedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"regionCode":{"type":["string","null"]},"dataMode":{"type":"string","enum":["LIVE","DEMO"]}},"required":["id","slug","name","kind","sourceQualityNoteFr","aomName","websiteUrl","operators","modes","coverageState","coverageMessageFr","activeSourceCount","status","primaryCity","communesServed","communesServedCount","regionCode","dataMode"],"additionalProperties":false}}}}}}},"/networks/{networkId}/routes":{"get":{"summary":"Route directory","parameters":[{"name":"networkId","in":"path","required":true,"schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"networkId":{"type":"string"},"sourceRouteId":{"type":["string","null"]},"shortName":{"type":["string","null"]},"longName":{"type":["string","null"]},"mode":{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]},"colorHex":{"type":["string","null"]},"textColorHex":{"type":["string","null"]},"activeIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"worstSeverity":{"anyOf":[{"type":"string","enum":["majeur","modere","mineur","info","inconnu"]},{"type":"null"}]}},"required":["id","networkId","sourceRouteId","shortName","longName","mode","colorHex","textColorHex","activeIncidentCount","worstSeverity"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false}}}}}}},"/routes/{routeId}":{"get":{"summary":"Route detail with incidents","parameters":[{"name":"routeId","in":"path","required":true,"schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"networkId":{"type":"string"},"sourceRouteId":{"type":["string","null"]},"shortName":{"type":["string","null"]},"longName":{"type":["string","null"]},"mode":{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]},"colorHex":{"type":["string","null"]},"textColorHex":{"type":["string","null"]},"activeIncidentCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"worstSeverity":{"anyOf":[{"type":"string","enum":["majeur","modere","mineur","info","inconnu"]},{"type":"null"}]},"network":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"stops":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},{"type":"null"}]},"stopsSource":{"type":["string","null"]},"incidents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"dataMode":{"type":"string","enum":["LIVE","DEMO"]},"titleFr":{"type":"string"},"summaryFr":{"type":"string"},"impactStatementFr":{"type":["string","null"]},"title":{"type":"string"},"summary":{"type":"string"},"impactStatement":{"type":["string","null"]},"lang":{"type":"string","enum":["fr","en","de","it","es","nl","pt"]},"machineTranslated":{"type":"boolean"},"translationModel":{"type":["string","null"]},"eventType":{"type":"string","enum":["STRIKE_NOTICE","STRIKE_CONFIRMED","PROTEST_ANNOUNCED","PROTEST_CONFIRMED","SERVICE_DISRUPTION","DELAY","CANCELLATION","WORKS_PLANNED","WORKS_UNPLANNED","ROUTE_DIVERSION","STATION_CLOSED","STOP_MOVED","SERVICE_RECOVERY","INFORMATION","OTHER"]},"severity":{"type":"string","enum":["UNKNOWN","INFO","MINOR","MODERATE","MAJOR","CRITICAL"]},"uiSeverity":{"type":"string","enum":["majeur","modere","mineur","info","inconnu"]},"evidenceStatus":{"type":"string","enum":["UNVERIFIED","CORROBORATED","OFFICIAL_CONFIRMED","OPERATOR_CONFIRMED","REJECTED"]},"lifecycle":{"type":"string","enum":["ANNOUNCED","PLANNED","ACTIVE","RESOLVED","EXPIRED","CANCELLED"]},"isOperationalImpactConfirmed":{"type":"boolean"},"primaryMode":{"anyOf":[{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]},{"type":"null"}]},"affectedNetworks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}},"affectedRoutes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"shortName":{"type":["string","null"]},"mode":{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]},"colorHex":{"type":["string","null"]},"textColorHex":{"type":["string","null"]},"impactVerified":{"type":"boolean"}},"required":["id","shortName","mode","colorHex","textColorHex","impactVerified"],"additionalProperties":false}},"cities":{"type":"array","items":{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"}},"required":["inseeCode","slug","nameFr","departmentCode"],"additionalProperties":false}},"departmentCodes":{"type":"array","items":{"type":"string"}},"regionCodes":{"type":"array","items":{"type":"string"}},"startsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"announcedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastVerifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sources":{"type":"array","items":{"type":"object","properties":{"sourceId":{"type":"string"},"publisher":{"type":"string"},"url":{"type":"string"},"trustTier":{"type":"string","enum":["P0","P1","P2","P3","P4","P5"]},"isOfficial":{"type":"boolean"},"kind":{"type":"string","enum":["FEED","OFFICIAL_PAGE"]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"licenseId":{"type":["string","null"]}},"required":["sourceId","publisher","url","trustTier","isOfficial","publishedAt","lastCheckedAt","licenseId"],"additionalProperties":false}},"canNotifyUsers":{"type":"boolean"},"affectedSection":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","prefixItems":[{"type":"string"},{"type":"string"}],"items":false,"minItems":2,"maxItems":2}},{"type":"null"}]},"observation":{"default":null,"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"OBSERVED_IMPACT"},"canceledTrips":{"type":"integer","minimum":0,"maximum":9007199254740991},"delayedTrips":{"type":"integer","minimum":0,"maximum":9007199254740991},"tripsSeen":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kind","canceledTrips","delayedTrips","tripsSeen"],"additionalProperties":false},{"type":"null"}]}},"required":["id","dataMode","titleFr","summaryFr","impactStatementFr","eventType","severity","uiSeverity","evidenceStatus","lifecycle","isOperationalImpactConfirmed","primaryMode","affectedNetworks","affectedRoutes","cities","departmentCodes","regionCodes","startsAt","endsAt","announcedAt","lastVerifiedAt","updatedAt","timezone","revision","sources","canNotifyUsers","affectedSection","observation"],"additionalProperties":false}}},"required":["id","networkId","sourceRouteId","shortName","longName","mode","colorHex","textColorHex","activeIncidentCount","worstSeverity","network","stops","stopsSource","incidents"],"additionalProperties":false}}}}}}},"/traffic":{"get":{"summary":"Search active/planned events","parameters":[{"name":"department","in":"query","required":false,"schema":{"type":"string"}},{"name":"region","in":"query","required":false,"schema":{"type":"string"}},{"name":"city","in":"query","required":false,"schema":{"type":"string"}},{"name":"network","in":"query","required":false,"schema":{"type":"string"}},{"name":"route","in":"query","required":false,"schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"schema":{"type":"string"}},{"name":"severity","in":"query","required":false,"schema":{"type":"string"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string"}},{"name":"lifecycle","in":"query","required":false,"schema":{"type":"string"}},{"name":"tab","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string"}},{"name":"to","in":"query","required":false,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"dataMode":{"type":"string","enum":["LIVE","DEMO"]},"titleFr":{"type":"string"},"summaryFr":{"type":"string"},"impactStatementFr":{"type":["string","null"]},"title":{"type":"string"},"summary":{"type":"string"},"impactStatement":{"type":["string","null"]},"lang":{"type":"string","enum":["fr","en","de","it","es","nl","pt"]},"machineTranslated":{"type":"boolean"},"translationModel":{"type":["string","null"]},"eventType":{"type":"string","enum":["STRIKE_NOTICE","STRIKE_CONFIRMED","PROTEST_ANNOUNCED","PROTEST_CONFIRMED","SERVICE_DISRUPTION","DELAY","CANCELLATION","WORKS_PLANNED","WORKS_UNPLANNED","ROUTE_DIVERSION","STATION_CLOSED","STOP_MOVED","SERVICE_RECOVERY","INFORMATION","OTHER"]},"severity":{"type":"string","enum":["UNKNOWN","INFO","MINOR","MODERATE","MAJOR","CRITICAL"]},"uiSeverity":{"type":"string","enum":["majeur","modere","mineur","info","inconnu"]},"evidenceStatus":{"type":"string","enum":["UNVERIFIED","CORROBORATED","OFFICIAL_CONFIRMED","OPERATOR_CONFIRMED","REJECTED"]},"lifecycle":{"type":"string","enum":["ANNOUNCED","PLANNED","ACTIVE","RESOLVED","EXPIRED","CANCELLED"]},"isOperationalImpactConfirmed":{"type":"boolean"},"primaryMode":{"anyOf":[{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]},{"type":"null"}]},"affectedNetworks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}},"affectedRoutes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"shortName":{"type":["string","null"]},"mode":{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]},"colorHex":{"type":["string","null"]},"textColorHex":{"type":["string","null"]},"impactVerified":{"type":"boolean"}},"required":["id","shortName","mode","colorHex","textColorHex","impactVerified"],"additionalProperties":false}},"cities":{"type":"array","items":{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"}},"required":["inseeCode","slug","nameFr","departmentCode"],"additionalProperties":false}},"departmentCodes":{"type":"array","items":{"type":"string"}},"regionCodes":{"type":"array","items":{"type":"string"}},"startsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"announcedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastVerifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sources":{"type":"array","items":{"type":"object","properties":{"sourceId":{"type":"string"},"publisher":{"type":"string"},"url":{"type":"string"},"trustTier":{"type":"string","enum":["P0","P1","P2","P3","P4","P5"]},"isOfficial":{"type":"boolean"},"kind":{"type":"string","enum":["FEED","OFFICIAL_PAGE"]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"licenseId":{"type":["string","null"]}},"required":["sourceId","publisher","url","trustTier","isOfficial","publishedAt","lastCheckedAt","licenseId"],"additionalProperties":false}},"canNotifyUsers":{"type":"boolean"},"affectedSection":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","prefixItems":[{"type":"string"},{"type":"string"}],"items":false,"minItems":2,"maxItems":2}},{"type":"null"}]},"observation":{"default":null,"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"OBSERVED_IMPACT"},"canceledTrips":{"type":"integer","minimum":0,"maximum":9007199254740991},"delayedTrips":{"type":"integer","minimum":0,"maximum":9007199254740991},"tripsSeen":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kind","canceledTrips","delayedTrips","tripsSeen"],"additionalProperties":false},{"type":"null"}]}},"required":["id","dataMode","titleFr","summaryFr","impactStatementFr","eventType","severity","uiSeverity","evidenceStatus","lifecycle","isOperationalImpactConfirmed","primaryMode","affectedNetworks","affectedRoutes","cities","departmentCodes","regionCodes","startsAt","endsAt","announcedAt","lastVerifiedAt","updatedAt","timezone","revision","sources","canNotifyUsers","affectedSection","observation"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]},"calculatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"counts":{"type":"object","properties":{"enCours":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prevu":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["enCours","prevu","total"],"additionalProperties":false}},"required":["items","nextCursor","calculatedAt","counts"],"additionalProperties":false}}}}}}},"/traffic/{id}":{"get":{"summary":"Event detail with evidence and timeline","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"dataMode":{"type":"string","enum":["LIVE","DEMO"]},"titleFr":{"type":"string"},"summaryFr":{"type":"string"},"impactStatementFr":{"type":["string","null"]},"title":{"type":"string"},"summary":{"type":"string"},"impactStatement":{"type":["string","null"]},"lang":{"type":"string","enum":["fr","en","de","it","es","nl","pt"]},"machineTranslated":{"type":"boolean"},"translationModel":{"type":["string","null"]},"eventType":{"type":"string","enum":["STRIKE_NOTICE","STRIKE_CONFIRMED","PROTEST_ANNOUNCED","PROTEST_CONFIRMED","SERVICE_DISRUPTION","DELAY","CANCELLATION","WORKS_PLANNED","WORKS_UNPLANNED","ROUTE_DIVERSION","STATION_CLOSED","STOP_MOVED","SERVICE_RECOVERY","INFORMATION","OTHER"]},"severity":{"type":"string","enum":["UNKNOWN","INFO","MINOR","MODERATE","MAJOR","CRITICAL"]},"uiSeverity":{"type":"string","enum":["majeur","modere","mineur","info","inconnu"]},"evidenceStatus":{"type":"string","enum":["UNVERIFIED","CORROBORATED","OFFICIAL_CONFIRMED","OPERATOR_CONFIRMED","REJECTED"]},"lifecycle":{"type":"string","enum":["ANNOUNCED","PLANNED","ACTIVE","RESOLVED","EXPIRED","CANCELLED"]},"isOperationalImpactConfirmed":{"type":"boolean"},"primaryMode":{"anyOf":[{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]},{"type":"null"}]},"affectedNetworks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}},"affectedRoutes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"shortName":{"type":["string","null"]},"mode":{"type":"string","enum":["METRO","RER","TRAM","BUS","TER","TRAIN","FERRY","CABLE","OTHER"]},"colorHex":{"type":["string","null"]},"textColorHex":{"type":["string","null"]},"impactVerified":{"type":"boolean"}},"required":["id","shortName","mode","colorHex","textColorHex","impactVerified"],"additionalProperties":false}},"cities":{"type":"array","items":{"type":"object","properties":{"inseeCode":{"type":"string"},"slug":{"type":"string"},"nameFr":{"type":"string"},"departmentCode":{"type":"string"}},"required":["inseeCode","slug","nameFr","departmentCode"],"additionalProperties":false}},"departmentCodes":{"type":"array","items":{"type":"string"}},"regionCodes":{"type":"array","items":{"type":"string"}},"startsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"endsAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"announcedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastVerifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string"},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sources":{"type":"array","items":{"type":"object","properties":{"sourceId":{"type":"string"},"publisher":{"type":"string"},"url":{"type":"string"},"trustTier":{"type":"string","enum":["P0","P1","P2","P3","P4","P5"]},"isOfficial":{"type":"boolean"},"kind":{"type":"string","enum":["FEED","OFFICIAL_PAGE"]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"licenseId":{"type":["string","null"]}},"required":["sourceId","publisher","url","trustTier","isOfficial","publishedAt","lastCheckedAt","licenseId"],"additionalProperties":false}},"canNotifyUsers":{"type":"boolean"},"affectedSection":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","prefixItems":[{"type":"string"},{"type":"string"}],"items":false,"minItems":2,"maxItems":2}},{"type":"null"}]},"observation":{"default":null,"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"OBSERVED_IMPACT"},"canceledTrips":{"type":"integer","minimum":0,"maximum":9007199254740991},"delayedTrips":{"type":"integer","minimum":0,"maximum":9007199254740991},"tripsSeen":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kind","canceledTrips","delayedTrips","tripsSeen"],"additionalProperties":false},{"type":"null"}]},"timeline":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"kind":{"type":"string","enum":["ANNOUNCED","FIRST_SEEN","UPDATED","RESOLVED","EXPIRED","CORRECTED"]},"noteFr":{"type":["string","null"]}},"required":["at","kind","noteFr"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"excerpt":{"type":["string","null"]},"locator":{"type":["string","null"]},"role":{"type":"string","enum":["PRIMARY","SECONDARY","CONTRADICTION"]},"sourceUrl":{"type":"string"},"publisher":{"type":"string"}},"required":["excerpt","locator","role","sourceUrl","publisher"],"additionalProperties":false}}},"required":["id","dataMode","titleFr","summaryFr","impactStatementFr","eventType","severity","uiSeverity","evidenceStatus","lifecycle","isOperationalImpactConfirmed","primaryMode","affectedNetworks","affectedRoutes","cities","departmentCodes","regionCodes","startsAt","endsAt","announcedAt","lastVerifiedAt","updatedAt","timezone","revision","sources","canNotifyUsers","affectedSection","observation","timeline","evidence"],"additionalProperties":false}}}}}}},"/status/overview":{"get":{"summary":"National coverage and traffic states","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"dataMode":{"type":"string","enum":["LIVE","DEMO"]},"calculatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"national":{"type":"object","properties":{"uiState":{"type":"string","enum":["perturbe","ralenti","normal","indisponible","ancien"]},"counts":{"type":"object","propertyNames":{"type":"string","enum":["perturbe","ralenti","normal","indisponible","ancien"]},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":["perturbe","ralenti","normal","indisponible","ancien"]}},"required":["uiState","counts"],"additionalProperties":false},"departmentsListed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"networksListed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"networksWithActiveSources":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"networksWithVerifiedIncident":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"latestSourceSuccessAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["dataMode","calculatedAt","national","departmentsListed","networksListed","networksWithActiveSources","networksWithVerifiedIncident","latestSourceSuccessAt"],"additionalProperties":false}}}}}}},"/sources":{"get":{"summary":"Public source provenance","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"publisherName":{"type":"string"},"sourceType":{"type":"string","enum":["GTFS_RT_ALERTS","GTFS_RT_TRIP_UPDATES","SIRI_SX","RSS","HTML","PDF","JSON_API","MANUAL"]},"trustTier":{"type":"string","enum":["P0","P1","P2","P3","P4","P5"]},"canonicalUrl":{"type":"string"},"licenseId":{"type":["string","null"]},"licenseNameFr":{"type":["string","null"]},"termsUrl":{"type":["string","null"]},"networks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}},"departmentCodes":{"type":"array","items":{"type":"string"}},"pollIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"freshnessSlaSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enabled":{"type":"boolean"},"healthState":{"type":"string","enum":["ONBOARDING","HEALTHY","SLOW","HTTP_ERROR","RATE_LIMITED","BLOCKED","SCHEMA_CHANGED","DISABLED"]},"isFresh":{"type":"boolean"},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSuccessAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastChangedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualityNoteFr":{"default":null,"type":["string","null"]}},"required":["id","publisherName","sourceType","trustTier","canonicalUrl","licenseId","licenseNameFr","termsUrl","networks","departmentCodes","pollIntervalSeconds","freshnessSlaSeconds","enabled","healthState","isFresh","lastCheckedAt","lastSuccessAt","lastChangedAt","consecutiveFailures","qualityNoteFr"],"additionalProperties":false}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false}}}}}}},"/sources/{id}":{"get":{"summary":"Source detail and recent runs","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"publisherName":{"type":"string"},"sourceType":{"type":"string","enum":["GTFS_RT_ALERTS","GTFS_RT_TRIP_UPDATES","SIRI_SX","RSS","HTML","PDF","JSON_API","MANUAL"]},"trustTier":{"type":"string","enum":["P0","P1","P2","P3","P4","P5"]},"canonicalUrl":{"type":"string"},"licenseId":{"type":["string","null"]},"licenseNameFr":{"type":["string","null"]},"termsUrl":{"type":["string","null"]},"networks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}},"departmentCodes":{"type":"array","items":{"type":"string"}},"pollIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"freshnessSlaSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"enabled":{"type":"boolean"},"healthState":{"type":"string","enum":["ONBOARDING","HEALTHY","SLOW","HTTP_ERROR","RATE_LIMITED","BLOCKED","SCHEMA_CHANGED","DISABLED"]},"isFresh":{"type":"boolean"},"lastCheckedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSuccessAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastChangedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualityNoteFr":{"default":null,"type":["string","null"]},"recentRuns":{"type":"array","items":{"type":"object","properties":{"startedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"status":{"type":"string"},"httpStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"parsedRecords":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"changedRecords":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"errorCode":{"type":["string","null"]}},"required":["startedAt","finishedAt","status","httpStatus","parsedRecords","changedRecords","durationMs","errorCode"],"additionalProperties":false}}},"required":["id","publisherName","sourceType","trustTier","canonicalUrl","licenseId","licenseNameFr","termsUrl","networks","departmentCodes","pollIntervalSeconds","freshnessSlaSeconds","enabled","healthState","isFresh","lastCheckedAt","lastSuccessAt","lastChangedAt","consecutiveFailures","qualityNoteFr","recentRuns"],"additionalProperties":false}}}}}}},"/feedback":{"post":{"summary":"Report an error (rate limited)","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"eventId":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"feedbackType":{"type":"string","enum":["ERREUR_INFORMATION","SOURCE_MANQUANTE","ACCESSIBILITE","AUTRE"]},"message":{"type":"string","minLength":3,"maxLength":2000}},"required":["feedbackType","message"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","const":"received"}},"required":["id","status"],"additionalProperties":false}}}}}}},"/admin/status":{"get":{"summary":"Platform health (not traffic)","parameters":[],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"environment":{"type":"string"},"sourcesByHealth":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"lastSuccessfulIngestionAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"fetchRuns24h":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ok":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","ok","failed"],"additionalProperties":false},"reviewBacklog":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"oldestOpenReviewAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"ai":{"type":"object","properties":{"enabled":{"type":"boolean"},"monthSpendUsd":{"type":"number"},"monthlyCapUsd":{"type":"number"}},"required":["enabled","monthSpendUsd","monthlyCapUsd"],"additionalProperties":false},"email":{"type":"object","properties":{"enabled":{"type":"boolean"},"subscribers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"alertsToday":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"alertCap":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confirmsToday":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confirmCap":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failedToday":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cappedToday":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["enabled","subscribers","pending","alertsToday","alertCap","confirmsToday","confirmCap","failedToday","cappedToday"],"additionalProperties":false}},"required":["generatedAt","environment","sourcesByHealth","lastSuccessfulIngestionAt","fetchRuns24h","reviewBacklog","oldestOpenReviewAt","ai"],"additionalProperties":false}}}}}}},"/admin/datatourisme/probe":{"get":{"summary":"Probe the DATAtourisme API with the production key (counts + first 3 items)","parameters":[{"name":"insee","in":"query","required":false,"schema":{"type":"string"}},{"name":"endpoint","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string"}}],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"endpoint":{"type":"string"},"insee":{"type":"string"},"upstreamStatus":{"type":["number","null"]},"ok":{"type":"boolean"},"total":{"type":["number","null"]},"returned":{"type":"number"}},"required":["endpoint","insee","upstreamStatus","ok","total","returned"],"additionalProperties":false}}}}}}},"/admin/metrics":{"get":{"summary":"Errors, lag, AI budgets","parameters":[],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"generatedAt":{"type":"string"},"openReviewTasks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"dlqMessages24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"fetchRuns24h":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ok":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","ok","failed"],"additionalProperties":false},"aiUsage":{"type":"array","items":{"type":"object","properties":{"usageDate":{"type":"string"},"provider":{"type":"string"},"modelId":{"type":"string"},"requests":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inputTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"outputTokens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"costUsdEstimate":{"type":"number"}},"required":["usageDate","provider","modelId","requests","inputTokens","outputTokens","costUsdEstimate"],"additionalProperties":false}},"aiMonthSpendUsd":{"type":"number"},"aiMonthlyCapUsd":{"type":"number"},"sourcesFailing":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"healthState":{"type":"string"},"consecutiveFailures":{"type":"number"}},"required":["id","healthState","consecutiveFailures"],"additionalProperties":false}}},"required":["generatedAt","openReviewTasks","dlqMessages24h","fetchRuns24h","aiUsage","aiMonthSpendUsd","aiMonthlyCapUsd","sourcesFailing"],"additionalProperties":false}}}}}}},"/admin/sources":{"get":{"summary":"Source registry (operator view)","parameters":[],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"publisherName":{"type":"string"},"sourceType":{"type":"string"},"trustTier":{"type":"string"},"fetchUrl":{"type":["string","null"]},"allowedHosts":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"allowedByPolicy":{"type":"boolean"},"pollIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthState":{"type":"string"},"healthDetail":{"type":["string","null"]},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastCheckedAt":{"type":["string","null"]},"lastSuccessAt":{"type":["string","null"]},"nextDueAt":{"type":["string","null"]},"retryAfterUntil":{"type":["string","null"]},"leaseUntil":{"type":["string","null"]},"sourceVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"parserAdapter":{"default":"","type":"string"},"termsUrl":{"default":null,"type":["string","null"]},"cguReviewed":{"default":false,"type":"boolean"},"robotsCheckedAt":{"default":null,"type":["string","null"]},"isOfficialPage":{"default":false,"type":"boolean"}},"required":["id","publisherName","sourceType","trustTier","fetchUrl","allowedHosts","enabled","allowedByPolicy","pollIntervalSeconds","healthState","healthDetail","consecutiveFailures","lastCheckedAt","lastSuccessAt","nextDueAt","retryAfterUntil","leaseUntil","sourceVersion","parserAdapter","termsUrl","cguReviewed","robotsCheckedAt","isOfficialPage"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}}}}},"/admin/sources/{id}":{"patch":{"summary":"Enable/disable, interval, allowed hosts","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"enabled":{"type":"boolean"},"pollIntervalSeconds":{"type":"integer","minimum":60,"maximum":86400},"markOutdated":{"type":"boolean"},"allowedHosts":{"maxItems":10,"type":"array","items":{"type":"string","minLength":3,"maxLength":253,"pattern":"^(\\*\\.)?[a-z0-9.-]+$"}},"cguReviewed":{"type":"boolean"},"reason":{"type":"string","minLength":3,"maxLength":1000}},"required":["reason"],"additionalProperties":false}}}},"security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"publisherName":{"type":"string"},"sourceType":{"type":"string"},"trustTier":{"type":"string"},"fetchUrl":{"type":["string","null"]},"allowedHosts":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"allowedByPolicy":{"type":"boolean"},"pollIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"healthState":{"type":"string"},"healthDetail":{"type":["string","null"]},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastCheckedAt":{"type":["string","null"]},"lastSuccessAt":{"type":["string","null"]},"nextDueAt":{"type":["string","null"]},"retryAfterUntil":{"type":["string","null"]},"leaseUntil":{"type":["string","null"]},"sourceVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"parserAdapter":{"default":"","type":"string"},"termsUrl":{"default":null,"type":["string","null"]},"cguReviewed":{"default":false,"type":"boolean"},"robotsCheckedAt":{"default":null,"type":["string","null"]},"isOfficialPage":{"default":false,"type":"boolean"}},"required":["id","publisherName","sourceType","trustTier","fetchUrl","allowedHosts","enabled","allowedByPolicy","pollIntervalSeconds","healthState","healthDetail","consecutiveFailures","lastCheckedAt","lastSuccessAt","nextDueAt","retryAfterUntil","leaseUntil","sourceVersion","parserAdapter","termsUrl","cguReviewed","robotsCheckedAt","isOfficialPage"],"additionalProperties":false}}}}}}},"/admin/review/{id}/decision":{"post":{"summary":"Approve / reject / expire (audited)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"decision":{"type":"string","enum":["APPROVE","REJECT","EXPIRE"]},"reason":{"type":"string","minLength":3,"maxLength":1000},"edits":{"type":"object","properties":{"titleFr":{"type":"string","maxLength":140},"summaryFr":{"type":"string","maxLength":700},"severity":{"type":"string","enum":["UNKNOWN","INFO","MINOR","MODERATE","MAJOR","CRITICAL"]},"eventType":{"type":"string","enum":["STRIKE_NOTICE","STRIKE_CONFIRMED","PROTEST_ANNOUNCED","PROTEST_CONFIRMED","SERVICE_DISRUPTION","DELAY","CANCELLATION","WORKS_PLANNED","WORKS_UNPLANNED","ROUTE_DIVERSION","STATION_CLOSED","STOP_MOVED","SERVICE_RECOVERY","INFORMATION","OTHER"]},"lifecycle":{"type":"string","enum":["ANNOUNCED","PLANNED","ACTIVE","RESOLVED","EXPIRED","CANCELLED"]}},"additionalProperties":false}},"required":["decision","reason"],"additionalProperties":false}}}},"security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ok":{"type":"boolean","const":true}},"required":["ok"],"additionalProperties":false}}}}}}},"/admin/ai/recovery-check":{"post":{"summary":"Smoke test of the Jev recovery check (spend row only)","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"titleFr":{"type":"string","minLength":1,"maxLength":300},"descriptionFr":{"type":"string","maxLength":4000},"effect":{"type":"string","maxLength":60}},"required":["titleFr"],"additionalProperties":false}}}},"security":[{"bearer":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"recovered":{"type":"boolean"},"announcesEnd":{"type":"number"},"announcesEndInFuture":{"type":"number"},"latencyMs":{"type":"number"}},"required":["recovered","announcesEnd","announcesEndInFuture","latencyMs"],"additionalProperties":false}}}}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}}}