# CIFS specification

CIFS (Closure and Incident Feed Specification) is Waze's standard protocol to describe Incidents and Road Closures in Partners' feeds.

The parameter table below classifies each element as follows:

- **Required:** Without a properly-formatted value for a required tag, your feed is considered invalid.
- **Requested:** While technically not required, requested tags are considered recommended.
- **Optional:** Optional tags that allow you to provide more data.

The order of the elements does not matter to the engine parsing the file.


Those tags can describe either an Incident or a Road Closure according to the value of the `type` tag.
Minor differences are explained where relevant.


Here are some examples of [Road Closures in a feed](https://developers.google.com/waze/data-feed/road-closure-information#closure-examples)


Here is some examples of [Incidents in a feed](https://developers.google.com/waze/data-feed/incident-information#incident-examples)


Remember that you can mix Closures and Incidents in the same feed file.

## CIFS Elements

| Element | Required | Tag input | Description |
|---|---|---|---|
| incident id | Required | Free text | Specifies an alphanumeric or numeric identifier. The Id must be unique inside your feed and remain stable over an incident's lifetime. ``` <incident id="LND11DEayKr">...</incident> ``` |
| type | Required | One of: `ROAD_CLOSED` `ACCIDENT` `HAZARD` `POLICE` `CHIT_CHAT` `JAM` | The type will determine the way your event will be consumed by the Waze app. `ROAD_CLOSED` will result in a full closure. All other types will be shown in the Waze map and will trigger a popup notification for nearby Wazers, but will have no direct impact on routing. ``` <type>ROAD_CLOSED</type> ``` |
| subtype | Requested | See [list of allowed subtypes](https://developers.google.com/waze/data-feed/cifs-specification#incident-subtypes) | A more precise description for the type of the reported incident. The subtype must match the value provided in the [type tag](https://developers.google.com/waze/data-feed/cifs-specification#cifs-tags-type). Here is the full list of [allowed subtypes per type](https://developers.google.com/waze/data-feed/cifs-specification#incident-subtypes) |
| polyline | Required | List of blank separated `lat lon` pairs | Decimal Degrees (DD, projection SRID 4326) latitude and longitude coordinates that describe the location of the incident or road closure. These should ideally have at least 6 digits after the decimal point for sufficient accuracy. The order of the coordinates must reflect the direction of the traffic that is affected. We cannot deduct the traffic direction from a single point. **If the incident only affects one traffic direction**, an additional coordinate should be provided to clarify the direction. The following polyline will impact one traffic direction (add a `direction` element to impact both directions): ``` <polyline>51.510090 -0.006902 51.509142 -0.006564 51.506291 -0.003640 51.503796 0.001051 51.499218 0.001687 51.497365 0.002020</polyline> ``` |
| direction | Requested | `BOTH_DIRECTIONS` or `ONE_DIRECTION` | Specifies whether the disruption or closure affects one or both traffic directions on the road. It's strongly recommended to provide a direction, even when a polyline is provided. If only a single set of coordinates can be provided, the direction field is required to ensure that the event is displayed in the correct driving direction. ``` <direction>BOTH_DIRECTIONS</direction> ``` |
| street | Required | Free text | Specifies the name of the street or road on which the event is occurring. ``` <street>NW 12th St</street> ``` |
| starttime | Required | `yyyy-MM-dd'T'HH:mm:ss+HH:mm` | Specifies the start datetime for one period of disruption. You can omit it for incidents that are not of type ROAD_CLOSED and we will assume the incident is currently active. The timestamp must be in ISO8601 format in granularity of seconds and include the time zone offset. ``` <starttime>2023-04-07T09:00:00+01:00</starttime> ``` |
| endtime | Requested | `yyyy-MM-dd'T'HH:mm:ss+HH:mm` | Specify the end datetime using ISO8601 format in granularity of seconds and include the timezone offset If you omit this, it will currently default to 14 days after start time. ``` <endtime>2023-04-07T23:00:00+01:00</endtime> ``` |
| description | Requested | Free text | The cause of the traffic disruption. This description should be less than 40 characters. A description that is more than 40 characters will be accepted, but may not display properly in the Waze app. ``` <description>I-95 All NB lanes closed btwn Exits 184 and 186.</description> ``` |
| lane impact | optional | structured lane impact information | **Only provide lane impact data if the incident is not a full road closure and affects a single direction of traffic.** Supply information on all the lanes by specifying an array of lanes, using the [WZDx lane format or similar format.](https://github.com/usdot-jpo-ode/wzdx/blob/main/spec-content/objects/Lane.md) Lane impact can be provided in two formats - full and partial. Full format example: \<order\>1\</order\> represents the leftmost lane. ``` <lanes> <lane> <order>1</order> <type>LANE</type> <status>CLOSED</status> </lane> <lane> <order>2</order> <type>LANE</type> <status>OPEN</status> </lane> </lanes> ``` <br /> Partial format example: ``` <lane_impact> <total_closed_lanes>2</total_closed_lanes> <roadside>RIGHT</roadside> </lane_impact> ``` <br /> |
| schedule | Optional | `<dayname>hh:mm-hh:mm</dayname>` | Encapsulates all start and end datetimes for the incident. ``` <schedule> <monday>09:00-11:00,17:00-21:00</monday> <thursday>09:00-11:00,17:00-21:00</thursday> <friday>09:00-11:00,17:00-21:00</friday> <saturday>00:00-05:00</saturday> <sunday>09:00-18:00</sunday> </schedule> ``` |

## Incident And Closures subtypes

Provide more details as to the nature of the incident. Acceptable
subtypes are determined by the type provided.

| Type | Possible subtypes |
|---|---|
| `ACCIDENT` | ACCIDENT_MINOR ACCIDENT_MAJOR |
| `HAZARD` | HAZARD_ON_ROAD HAZARD_ON_ROAD_CAR_STOPPED HAZARD_ON_ROAD_CONSTRUCTION HAZARD_ON_ROAD_EMERGENCY_VEHICLE HAZARD_ON_ROAD_ICE HAZARD_ON_ROAD_LANE_CLOSED HAZARD_ON_ROAD_OBJECT HAZARD_ON_ROAD_OIL HAZARD_ON_ROAD_POT_HOLE HAZARD_ON_ROAD_ROAD_KILL HAZARD_ON_ROAD_TRAFFIC_LIGHT_FAULT HAZARD_ON_SHOULDER HAZARD_ON_SHOULDER_ANIMALS HAZARD_ON_SHOULDER_CAR_STOPPED HAZARD_ON_SHOULDER_MISSING_SIGN HAZARD_WEATHER HAZARD_WEATHER_FLOOD HAZARD_WEATHER_FOG HAZARD_WEATHER_FREEZING_RAIN HAZARD_WEATHER_HAIL HAZARD_WEATHER_HEAT_WAVE HAZARD_WEATHER_HEAVY_RAIN HAZARD_WEATHER_HEAVY_SNOW HAZARD_WEATHER_HURRICANE HAZARD_WEATHER_MONSOON HAZARD_WEATHER_TORNADO |
| `ROAD_CLOSED` | ROAD_CLOSED_HAZARD ROAD_CLOSED_CONSTRUCTION ROAD_CLOSED_EVENT |
| `JAM` | JAM_LIGHT_TRAFFIC JAM_MODERATE_TRAFFIC JAM_HEAVY_TRAFFIC JAM_STAND_STILL_TRAFFIC |
| `POLICE` | POLICE_VISIBLE POLICE_HIDING POLICE_WITH_MOBILE_CAMERA |