Skip to content

Latest commit

 

History

History
2741 lines (1973 loc) · 139 KB

RULES.md

File metadata and controls

2741 lines (1973 loc) · 139 KB

Implemented rules

This document lists all the notices that are emitted by this validator.
Note that the notice naming convention changed in v2 to make contributions of new rules easier by reducing the likelihood of conflicting IDs during parallel development. Please refer to MIGRATION_V1_V2.md for a mapping between v1 and v2 notices.
Note that some severities were modified in v3 to solve discrepancies with the specification. Please refer to MIGRATION_V2_V3.md for a mapping between v2 and v3 notices.

Definitions

A Rule

A part of the specification that is translated into code in the validator. A Rule will describe if a set of conditions is met or not. For example:

A Notice

The output that the user will see if the conditions aren’t met.

  • For example, the output of StopZoneIdValidator.java is the Notice stop_without_zone_id.

The Severity of a Notice

Each Notice is associated with a severity: INFO, WARNING, ERROR.

  • ERROR notices are for GTFS Schedule Reference violations. These are items that the GTFS Schedule Reference explicitly requires or prohibits (using the language "must").
  • WARNING notices are for GTFS Schedule Best Practices. These are items that the GTFS Schedule Reference explicitly recommends (using the language "should"), or items mentioned in the official GTFS Schedule Best Practices.
  • INFO notices are for items that may affect the feed's quality. They are unexpected finds that should be brought to the user's attention.

⚠️ Please note that this validator also generates System Errors that give information about things that may have gone wrong during the validation process such as the inability to unzip a GTFS file. These are generated in a second report system_errors.json.

Notice code Description
block_trips_with_overlapping_stop_times Block trips with overlapping stop times.
csv_parsing_failed Parsing of a CSV file failed.
decreasing_shape_distance Decreasing shape_dist_traveled in shapes.txt.
decreasing_or_equal_stop_time_distance Decreasing or equal shape_dist_traveled in stop_times.txt.
duplicated_column Duplicated column in CSV.
duplicate_key Duplicated entity.
empty_column_name A column name is empty.
empty_file A CSV file is empty.
equal_shape_distance_diff_coordinates Two consecutive points have equal shape_dist_traveled and different lat/lon coordinates in shapes.txt.
fare_transfer_rule_duration_limit_type_without_duration_limit A row from GTFS file fare_transfer_rules.txt has a defined duration_limit_type field but no duration_limit specified.
fare_transfer_rule_duration_limit_without_type A row from GTFS file fare_transfer_rules.txt has a defined duration_limit field but no duration_limit_type specified.
fare_transfer_rule_invalid_transfer_count A row from GTFS file fare_transfer_rules.txt has a defined transfer_count with an invalid value.
fare_transfer_rule_missing_transfer_count A row from fare_transfer_rules.txt has from_leg_group_id equal to to_leg_group_id, but has no transfer_count specified.
fare_transfer_rule_with_forbidden_transfer_count A row from fare_transfer_rules.txt has from_leg_group_id not equal to to_leg_group_id, but has transfer_count specified.
foreign_key_violation Wrong foreign key.
inconsistent_agency_timezone Inconsistent Timezone among agencies.
invalid_color A field contains an invalid color value.
invalid_currency A field contains a wrong currency code.
invalid_currency_amount A currency amount field has a value that does not match the format of its corresponding currency code field.
invalid_date A field cannot be parsed as date.
invalid_email A field contains a malformed email address.
invalid_float A field cannot be parsed as a floating point number.
invalid_integer A field cannot be parsed as an integer.
invalid_language_code A field contains a wrong language code.
invalid_phone_number A field contains a malformed phone number.
invalid_row_length Invalid csv row length.
invalid_time A field cannot be parsed as time.
invalid_timezone A field cannot be parsed as a timezone.
invalid_url A field contains a malformed URL.
location_without_parent_station A location that must have parent_station field does not have it.
location_with_unexpected_stop_time A location in stops.txt that is not a stop is referenced by some stop_times.stop_id.
missing_calendar_and_calendar_date_files Missing GTFS files calendar.txt and calendar_dates.txt.
missing_level_id stops.level_id is conditionally required.
missing_required_column A required column is missing in the input file.
missing_required_field A required field is missing.
missing_required_file A required file is missing.
missing_trip_edge Missing trip edge arrival_time or departure_time.
new_line_in_value New line or carriage return in a value in CSV file.
number_out_of_range Out of range value.
overlapping_frequency Trip frequencies overlap.
pathway_to_platform_with_boarding_areas A pathway has an endpoint that is a platform which has boarding areas.
pathway_to_wrong_location_type A pathway has an endpoint that is a station.
pathway_unreachable_location A location is not reachable at least in one direction: from the entrances or to the exits.
point_near_origin A point is too close to origin (0, 0).
point_near_pole A point is too close to the North or South Pole.
route_both_short_and_long_name_missing Missing route short name and long name.
start_and_end_range_equal Two date or time fields are equal.
start_and_end_range_out_of_order Two date or time fields are out of order.
station_with_parent_station A station has parent_station field set.
stop_time_timepoint_without_times arrival_time or departure_time not specified for timepoint.
stop_time_with_arrival_before_previous_departure_time Backwards time travel between stops in stop_times.txt
stop_time_with_only_arrival_or_departure_time Missing stop_times.arrival_time or stop_times.departure_time.
stop_without_zone_id Stop without value for stops.zone_id.
too_many_rows A CSV file has too many rows.
transfer_with_invalid_stop_location_type A stop id field from GTFS file transfers.txt references a stop that has a location_type other than 0 or 1 (aka Stop/Platform or Station).
transfer_with_invalid_trip_and_route A trip id field from GTFS file transfers.txt references a route that does not match its trips.txt route_id.
transfer_with_invalid_trip_and_stop A trip id field from GTFS file transfers.txt references a stop that is not included in the referenced trip's stop-times.
translation_foreign_key_violation An entity with the given record_id and record_sub_id cannot be found in the referenced table.
translation_unexpected_value A field in a translations row has value but must be empty.
wrong_parent_location_type Incorrect type of the parent location.
Notice code Description
attribution_without_role Attribution with no role.
duplicate_route_name Two distinct routes have either the same route_short_name, the same route_long_name, or the same combination of route_short_name and route_long_name.
empty_row A row in the input file has only spaces.
equal_shape_distance_same_coordinates Two consecutive points have equal shape_dist_traveled and the same lat/lon coordinates in shapes.txt.
fast_travel_between_consecutive_stops A transit vehicle moves too fast between two consecutive stops.
fast_travel_between_far_stops A transit vehicle moves too fast between two far stops.
feed_expiration_date7_days Dataset should be valid for at least the next 7 days.
feed_expiration_date30_days Dataset should cover at least the next 30 days of service.
feed_info_lang_and_agency_mismatch Mismatching feed and agency language fields.
inconsistent_agency_lang Inconsistent language among agencies.
leading_or_trailing_whitespaces The value in CSV file has leading or trailing whitespaces.
missing_feed_info_date feed_end_date should be provided if feed_start_date is provided. feed_start_date should be provided if feed_end_date is provided.
missing_recommended_file A recommended file is missing.
missing_recommended_field A recommended field is missing.
missing_timepoint_column timepoint column is missing for a dataset.
missing_timepoint_value stop_times.timepoint value is missing for a record.
more_than_one_entity More than one row in CSV.
non_ascii_or_non_printable_char Non ascii or non printable char in id.
pathway_dangling_generic_node A generic node has only one incident location in a pathway graph.
pathway_loop A pathway starts and ends at the same location.
platform_without_parent_station A platform has no parent_station field set.
route_color_contrast Insufficient route color contrast.
route_short_and_long_name_equal route_short_name and route_long_name are equal for a single route.
route_short_name_too_long Short name of a route is too long (more than 12 characters).
same_name_and_description_for_route Same name and description for route.
same_name_and_description_for_stop Same name and description for stop.
same_route_and_agency_url Same routes.route_url and agency.agency_url.
same_stop_and_agency_url Same stops.stop_url and agency.agency_url.
same_stop_and_route_url Same stops.stop_url and routes.route_url.
stop_has_too_many_matches_for_shape Stop entry that has many potential matches to the trip's path of travel.
stops_match_shape_out_of_order Two stop entries are different than their arrival-departure order defined by the shapes.txt
stop_too_far_from_shape Stop too far from trip shape.
stop_too_far_from_shape_using_user_distance Stop time too far from shape.
stop_without_stop_time A stop in stops.txt is not referenced by any stop_times.stop_id.
transfer_with_suspicious_mid_trip_in_seat A trip id field from GTFS file transfers.txt with an in-seat transfer type references a stop that is not in the expected position in the trip's stop-times.
translation_unknown_table_name A translation references an unknown or missing GTFS table.
unexpected_enum_value An enum has an unexpected value.
unusable_trip Trips must have more than one stop to be usable.
unused_shape Shape is not used in GTFS file trips.txt.
unused_trip Trip is not be used in stop_times.txt
Notice code Description
unknown_column A column name is unknown.
unknown_file A file is unknown.
System error code Description
i_o_error Error in IO operation.
runtime_exception_in_loader_error RuntimeException while loading GTFS dataset in memory.
runtime_exception_in_validator_error RuntimeException while validating GTFS archive.
thread_execution_error ExecutionException during multithreaded validation
u_r_i_syntax_error A string could not be parsed as a URI reference.

More details - ERRORS

Trips with the same block id have overlapping stop times.

References

Notice fields description

Field name Description Type
csvRowNumberA The row number from trips.txt of the first faulty trip. Long
tripIdA The id of first faulty trip. String
serviceIdA The service id of the first faulty trip. String
csvRowNumberB The row number from trips.txt of the second faulty trip. Long
tripIdB The id of the other faulty trip. String
serviceIdB The service id of the other faulty trip. String
blockId The trips.block_id of the overlapping trip. String
intersection The overlapping period. Date

Affected files

Parsing of a CSV file failed. One common case of the problem is when a cell value contains more than 4096 characters.

Notice fields description

Field name Description Type
filename The name of the faulty file. Long
charIndex The location of the last character read from before the error occurred. Long
columnIndex The column index where the exception occurred. Integer
lineIndex The line number where the exception occurred. Long
message The detailed message describing the error, and the internal state of the parser/writer. String
content The record number when the exception occurred. String

Affected files

All GTFS files supported by the specification.

When sorted by shape.shape_pt_sequence, two consecutive shape points must not have decreasing values for shape_dist_traveled.

References

Notice fields description

Field name Description Type
shapeId The id of the faulty shape. String
csvRowNumber The row number from shapes.txt. Long
shapeDistTraveled Actual distance traveled along the shape from the first shape point to the faulty record. Double
shapePtSequence The faulty record's shapes.shape_pt_sequence. Integer
prevCsvRowNumber The row number from shapes.txt of the previous shape point. Long
prevShapeDistTraveled Actual distance traveled along the shape from the first shape point to the previous shape point. Double
prevShapePtSequence The previous record's shapes.shape_pt_sequence. Integer

Affected files

When sorted by stop_times.stop_sequence, two consecutive entries in stop_times.txt should have increasing distance, based on the field shape_dist_traveled. If the values are equal, this is considered as an error.

References

Notice fields description

Field name Description Type
tripId The id of the faulty trip. String
csvRowNumber The row number from stop_times.txt. Long
shapeDistTraveled Actual distance traveled along the shape from the first shape point to the faulty record. Double
stopSequence The faulty record's stop_times.stop_sequence. Integer
prevCsvRowNumber The row number from stop_times.txt of the previous stop time. Long
prevStopTimeDistTraveled Actual distance traveled along the shape from the first shape point to the previous stop time. Double
prevStopSequence The previous record's stop_times.stop_sequence. Integer

Affected files

The input file CSV header has the same column name repeated.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String
fieldName The name of the faulty field. String
firstIndex Index of the first occurrence. Integer
secondIndex Index of the other occurrence. Integer

Affected files

All GTFS files supported by the specification.

The values of the given key and rows are duplicates.

References

Notice fields description

Field name Description Type
filename The name of the faulty file String
oldCsvRowNumber The row of the first occurrence. Long
newCsvRowNumber The row of the other occurrence. Long
fieldName1 Composite key's first field name. String
fieldValue1 Composite key's first value. Object
fieldName2 Composite key's second field name. String
fieldValue2 Composite key's second value. Object

Affected files

All GTFS files supported by the specification.

A column name has not been provided. Such columns are skipped by the validator.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String
index The index of the empty column. Integer

Affected files

All GTFS files supported by the specification.

Empty csv file found in the archive: file does not have any headers, or is a required file and does not have any data. The GTFS specification requires the first line of each file to contain field names and required files must have data.

References

Notice fields description

Field name Description Type
filename The name of the faulty file String

Affected files

All GTFS files supported by the specification.

equal_shape_distance_diff_coordinates

When sorted by shape.shape_pt_sequence, the values for shape_dist_traveled must increase along a shape. Two consecutive points with equal values for shape_dist_traveled and different coordinates indicate an error.

Notice fields description

Field name Description Type
shapeId The id of the faulty shape. String
csvRowNumber The row number from shapes.txt. Long
shapeDistTraveled Actual distance traveled along the shape from the first shape point to the faulty record. Double
shapePtSequence The faulty record's shapes.shape_pt_sequence. Integer
prevCsvRowNumber The row number from shapes.txt of the previous shape point. Long
prevShapeDistTraveled Actual distance traveled along the shape from the first shape point to the previous shape point. Double
prevShapePtSequence The previous record's shapes.shape_pt_sequence. Integer

Affected files

A row from GTFS file fare_transfer_rules.txt has a defined duration_limit_type field but no duration_limit specified.

References

Notice fields description

Field name Description Type
csvRowNumber The row of the faulty record. Long

Affected files

A row from GTFS file fare_transfer_rules.txt has a defined duration_limit field but no duration_limit_type specified.

References

Notice fields description

Field name Description Type
csvRowNumber The row of the faulty record. Long

Affected files

A row from GTFS file fare_transfer_rules.txt has a defined transfer_count with an invalid value.

References

Notice fields description

Field name Description Type
csvRowNumber The row of the faulty record. Long
transferCount The transfer count value of the faulty record. Integer

Affected files

A row from GTFS file fare_transfer_rules.txt has from_leg_group_id equal to to_leg_group_id, but has no transfer_count specified. Per the spec, transfer_count is required if the two leg group ids are equal.

References

Notice fields description

Field name Description Type
csvRowNumber The row of the faulty record. Long

Affected files

A row from GTFS file fare_transfer_rules.txt has from_leg_group_id not equal to to_leg_group_id, but has transfer_count specified. Per the spec, transfer_count is forbidden if the two leg group ids are not equal.

References

Notice fields description

Field name Description Type
csvRowNumber The row of the faulty record. Long

Affected files

A foreign key references the primary key of another file. A foreign key violation means that the foreign key referenced from a given row (the child file) cannot be found in the corresponding file (the parent file). The Foreign keys are defined in the specification under "Type" for each file.

References

Notice fields description

Field name Description Type
childFilename The name of the file from which reference is made. String
childFieldName The name of the field that makes reference. String
parentFilename The name of the file that is referred to. String
parentFieldName The name of the field that is referred to. String
fieldValue The faulty record's value. String
csvRowNumber The row of the faulty record. Long

Affected files

Agencies from GTFS agency.txt have been found to have different timezones.

References

Notice fields description

Field name Description Type
csvRowNumber The row of the faulty record. Long
expected Expected timezone. String
actual Faulty record's timezone. String

Affected files

Value of field with type color is not valid. A color must be encoded as a six-digit hexadecimal number. The leading "#" is not included.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
fieldValue Faulty value. String

Affected files

Value of field with type currency is not valid. Currency code must follow ISO 4217

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
fieldValue Faulty value. String

Affected files

A currency amount field has a value that does not match the format (e.g. expected number of decimal places) of its corresponding currency code field. The number of decimal places is specified by ISO 4217.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
amount Faulty currency amount value. String

Affected files

Value of field with type date is not valid. Dates must have the YYYYMMDD format.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
fieldValue Faulty value. String

Affected files

Value of field with type email is not valid. Definitions for valid emails are quite vague. We perform strict validation using the Apache Commons EmailValidator.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
fieldValue Faulty value. String

Affected files

Value of field with type float is not valid.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
fieldValue Faulty value. String

Affected files

Value of field with type integer is not valid.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
fieldValue Faulty value. String

Affected files

Value of field with type language is not valid. Language codes must follow IETF BCP 47.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
fieldValue Faulty value. String

Affected files

Value of field with type phone number is not valid. This rule uses the PhoneNumberUtil class to validate a phone number based on a country code. If no country code is provided in the parameters used to run the validator, this notice won't be emitted.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
fieldValue Faulty value. String

Affected files

A row in the input file has a different number of values than specified by the CSV header.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
rowLength The length of the faulty record. Integer
headerCount The number of column in the faulty file. Intege

Affected files

All GTFS files supported by the specification.

Value of field with type time is not valid. Time must be in the H:MM:SS, HH:MM:SS or HHH:MM:SS format.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
fieldValue Faulty value. String

Affected files

Value of field with type timezone is not valid.Timezones are defined at www.iana.org. Timezone names never contain the space character but may contain an underscore. Refer to Wikipedia for a list of valid values.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
fieldValue Faulty value. String

Affected files

Value of field with type url is not valid. Definitions for valid URLs are quite vague. We perform strict validation using the Apache Commons UrlValidator.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
fieldValue Faulty value. String

Affected files

A location that must have parent_station field does not have it. The following location types must have parent_station: entrance, generic node, boarding_area.

References

Notice fields description

Field name Description Type
csvRowNumber The row of the faulty record. Long
stopId The id of the faulty record. String
stopName The stops.stop_name of the faulty record. String
locationType The stops.location_type of the faulty record. Integer

Affected files

Referenced locations (using stop_times.stop_id) must be stops/platforms, i.e. their stops.location_type value must be 0 or empty.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record from stops.txt. Long
stopId The id of the faulty record from stops.txt. String
stopName The stops.stop_name of the faulty record. String
stopTimeCsvRowNumber The row number of the faulty record from stop_times.txt. Long

Affected files

Both files calendar_dates.txt and calendar.txt are missing from the GTFS archive. At least one of the files must be provided.

References

Notice fields description

Field name Description Type
N/A N/A N/A

Affected files

GTFS file levels.txt is required for elevator (pathway_mode=5). A row from stops.txt linked to an elevator pathway has no value for stops.level_id.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
stopId The id of the faulty from stops.txt. String

Affected files

A required column is missing in the input file.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String
fieldName The name of the missing column. String

Affected files

All GTFS files supported by the specification.

The given field has no value in some input row, even though values are required.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String
csvRowNumber The row of the faulty record. Long
fieldName The name of the missing field. String

Affected files

All GTFS files supported by the specification.

A required file is missing. If this notice is triggered for every core file, it might be a problem with the input. To create a zip file from the GTFS .txt files: select all the .txt files, right-click, and compress. Do not compress the folder containing the files.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String

Affected files

All GTFS files supported by the specification.

First and last stop of a trip must define both arrival_time and departure_time fields.

References

Notice fields description

Field name Description Type
csvRowNumber The row of the faulty record. Long
stopSequence stops.stop_sequence of the faulty record. Integer
tripId The trips.trip_id of the faulty record. String
specifiedField Name of the missing field. String

A value in CSV file has a new line or carriage return.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String
csvRowNumber The row of the faulty record. Integer
fieldName The name of the faulty field. String
fieldValue Faulty value. String

Affected files

All GTFS files supported by the specification.

The values in the given column of the input rows are out of range.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String
csvRowNumber The row of the faulty record. Integer
fieldName The name of the faulty field. String
fieldType The type of the faulty field. String
fieldValue Faulty value. Object

Affected files

Trip frequencies must not overlap in time

References

Notice fields description

Field name Description Type
prevCsvRowNumber The row number of the first frequency. Long
prevEndTime The first frequency end time. String
currCsvRowNumber The overlapping frequency's row number. Long
currStartTime The overlapping frequency's start time. String
tripId The trip id associated to the first frequency. String

Affected files

A pathway has an endpoint that is a platform which has boarding areas. A platform that has boarding areas is treated as a parent object, not a point. In such cases, the platform must not have pathways assigned - instead, pathways must be assigned to its boarding areas.

References

A pathway has an endpoint that is a station. Pathways endpoints must be platforms (stops), entrances/exits, generic nodes or boarding areas.

References

A location belongs to a station that has pathways and is not reachable at least in one direction: from the entrances or to the exits.

Notices are reported for platforms, boarding areas and generic nodes but not for entrances or stations.

Notices are not reported for platforms that have boarding areas since such platforms may not have incident pathways. Instead, notices are reported for the boarding areas.

References

Notice fields description

Field name Description Type
csvRowNumber Row number of the unreachable location. Long
stopId The id of the unreachable location. String
stopName The stop name of the unreachable location. String
locationType The type of the unreachable location. Integer
parentStation The parent of the unreachable location. String
hasEntrance Whether the location is reachable from entrances. String
hasExit Whether some exit can be reached from the location. String

Affected files

A point is too close to origin (0, 0).

References

Notice fields description

Field name Description Type
filename The name of the affected GTFS file. String
csvRowNumber The row of the faulty row. Integer
latFieldName The name of the field that uses latitude value. String
latFieldValue The latitude of the faulty row. Double
lonFieldName The name of the field that uses longitude value. String
lonFieldValue The longitude of the faulty row Double

Affected files

A point is too close to the North or South Pole.

References

Notice fields description

Field name Description Type
filename The name of the affected GTFS file. String
csvRowNumber The row of the faulty row. Integer
latFieldName The name of the field that uses latitude value. String
latFieldValue The latitude of the faulty row. Double
lonFieldName The name of the field that uses longitude value. String
lonFieldValue The longitude of the faulty row Double

Affected files

Both short_name and long_name are missing for a route.

References

Notice fields description

Field name Description Type
routeId The id of the faulty record. String
csvRowNumber The row number of the faulty record. Long

Affected files

The fields frequencies.start_date and frequencies.end_date have been found equal in frequencies.txt. The GTFS spec is currently unclear how this case should be handled (e.g., is it a trip that circulates once?). It is recommended to use a trip not defined via frequencies.txt for this case.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String
csvRowNumber The row number of the faulty record. Long
startFieldName The start value's field name. String
endFieldName The end value's field name. String
value The faulty value. String

Affected files

Date or time fields have been found out of order in calendar.txt, feed_info.txt and stop_times.txt.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String
csvRowNumber The row number of the faulty record. Long
entityId The faulty service id. String
startFieldName The start value's field name. String
startValue The start value. String
endFieldName The end value's field name. String
endValue The end value. String

Affected files

Field parent_station must be empty when location_type is 1.

References

stop.txt

Notice fields description

Field name Description Type
stopId The id of the faulty record. String
stopName The stops.stop_name of the faulty record. String
csvRowNumber The row number of the faulty record. Long
parentStation Parent station's id. String

Affected files

Any records with stop_times.timepoint set to 1 must define a value for stop_times.arrival_time and stop_times.departure_time fields.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
tripId The faulty record's id. String
stopSequence The faulty record's stops.stop_sequence. String
specifiedField Either departure_time or arrival_time. String

Affected files

For a given trip_id, the arrival_time of (n+1)-th stoptime in sequence must not precede the departure_time of n-th stoptime in sequence in stop_times.txt.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
prevCsvRowNumber The row of the previous stop time. Long
tripId The trip_id associated to the faulty record. String
departureTime Departure time at the previous stop time. String
arrivalTime Arrival time at the faulty record. String

Affected files

Missing stop_time.arrival_time or stop_time.departure_time

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
tripId The trip_id associated to the faulty record. String
stopSequence The sequence of the faulty stop. Integer
specifiedField Either arrival_time or departure_time String

Affected files

If fare_rules.txt is provided, and fare_rules.txt uses at least one column among origin_id, destination_id, and contains_id, then all stops and platforms (location_type = 0) must have stops.zone_id assigned.

References

Notice fields description

Field name Description Type
stopId The faulty record's id. String
stopName The faulty record's stops.stop_name. String
csvRowNumber The row number of the faulty record. Long

Affected files

A CSV file has too many rows. Feeds with too large files cannot be processed in a reasonable time by GTFS consumers.

References

None.

Notice fields description

Field name Description Type
filename Name of the CSV file that has too many rows. String
rowNumber Number of the row when reading was stopped. long

A from_stop_id or to_stop_id field from GTFS file transfers.txt references a stop that has a location_type other than 0 or 1 (aka Stop/Platform or Station).

References

Notice fields description

Field name Description Type
csvRowNumber The row number from transfers.txt for the faulty entry. long
stopIdFieldName The name of the stop id field (e.g. from_stop_id) referencing the stop. String
stopId The referenced stop id. String
locationTypeValue The numeric value of the invalid location type. int
locationTypeName The name of the invalid location type. String

A from_trip_id or to_trip_id field from GTFS file transfers.txt references a route that does not match its trips.txt route_id.

References

Notice fields description

Field name Description Type
csvRowNumber The row number from transfers.txt for the faulty entry. long
tripFieldName The name of the trip id field (e.g. from_trip_id) referencing a trip. String
tripId The referenced trip id. String
routeFieldName The name of the route id field (e.g. from_route_id) referencing the route. String
routeId The referenced route id. String
expectedRouteId The expected route id from trips.txt. String

A from_trip_id or to_trip_id field from GTFS file transfers.txt references a stop that is not included in the referenced trip's stop-times.

References

Notice fields description

Field name Description Type
csvRowNumber The row number from transfers.txt for the faulty entry. long
tripFieldName The name of the trip id field (e.g. from_trip_id) referencing a trip. String
tripId The referenced trip id. String
stopFieldName The name of the stop id field (e.g. stop_route_id) referencing the stop. String
stopId The referenced stop id. String

A from_trip_id or to_trip_id field from GTFS file transfers.txt with an in-seat transfer type references a stop that is not in the expected position in the trip's stop-times. For in-seat transfers, we expect the stop to be the last stop-time in the trip sequence for from_stop_id and the first stop-time for to_stop_id. If you are intentionally using this feature to model mid-trip transfers, you can ignore this warning, but be aware that this functionality is still considered to be partially experimental in some interpretations of the spec.

Notice fields description

Field name Description Type
csvRowNumber The row number from transfers.txt for the faulty entry. long
tripIdFieldName The name of the trip id field (e.g. from_trip_id) referencing a trip. String
tripId The referenced trip id. String
stopIdFieldName The name of the stop id field (e.g. from_stop_id) referencing the stop. String
stopId The referenced stop id. String

An entity with the given record_id and record_sub_id cannot be found in the referenced table.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
tableName table_name of the faulty record. String
recordId record_id of the faulty record. String
recordSubId record_sub_id of the faulty record. String

Affected files

A field in a translations row has value but must be empty.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
fieldName The name of the field that was expected to be empty. String
fieldValue Actual value of the field that was expected to be empty. String

Affected files

Value of field location_type of parent found in field parent_station is invalid.

According to spec

  • Stop/platform can only have Station as parent
  • Station can NOT have a parent
  • Entrance/exit or generic node can only have Station as parent
  • Boarding Area can only have Platform as parent

Any other combination raise this error.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
stopId The id of the faulty record. String
stopName The faulty record's stops.stop_name. String
locationType The faulty record's stops.location_type. Integer
parentCsvRowNumber The row number of the faulty record's parent. Long
parentStation The id of the faulty record's parent station. String
parentStopName The stop name of the faulty record's parent. String
parentLocationType The location type of the faulty record's parent. Integer
expectedLocationType The expected location type of the faulty record. Integer

Affected files

More details - WARNINGS

At least one of the fields is_producer, is_operator, or is_authority should be set to 1.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
attributionId The id of the faulty record. String

Affected files

All routes of the same route_type with the same agency_id should have unique combinations of route_short_name and route_long_name.

Note that there may be valid cases where routes have the same short and long name, e.g., if they serve different areas. However, different directions must be modeled as the same route.

Example of bad data:

route_id route_short_name route_long_name
route1 U1 Southern
route2 U1 Southern

References

Notice fields description

Field name Description Type
csvRowNumber1 The row number of the first occurrence. Long
routeId1 The id of the the first occurrence. String
csvRowNumber2 The row number of the other occurrence. Long
routeId2 The id of the the other occurrence. String
routeShortName Common routes.route_short_name. String
routeLongName Common routes.route_long_name. String
routeType Common routes.route_type. String
agencyId Common routes.agency_id. String

Affected files

A row in the input file has only spaces.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String
csvRowNumber The row number of the faulty record. Long

Affected files

All GTFS files supported by the specification.

When sorted by shape.shape_pt_sequence, the values for shape_dist_traveled must increase along a shape. Two consecutive points with equal values for shape_dist_traveled and the same coordinates indicate a duplicative shape point.

References

Notice fields description

Field name Description Type
shapeId The id of the faulty shape. String
csvRowNumber The row number from shapes.txt. Long
shapeDistTraveled Actual distance traveled along the shape from the first shape point to the faulty record. Double
shapePtSequence The faulty record's shapes.shape_pt_sequence. Integer
prevCsvRowNumber The row number from shapes.txt of the previous shape point. Long
prevShapeDistTraveled Actual distance traveled along the shape from the first shape point to the previous shape point. Double
prevShapePtSequence The previous record's shapes.shape_pt_sequence. Integer

Affected files

A transit vehicle moves too fast between two consecutive stops. The speed threshold depends on route type.

Speed thresholds
Route type Description Threshold, km/h
0 Light rail 100
1 Subway 150
2 Rail 500
3 Bus 150
4 Ferry 80
5 Cable tram 30
6 Aerial lift 50
7 Funicular 50
11 Trolleybus 150
12 Monorail 150
- Unknown 200

References

Notice fields description

Field name Description Type
tripCsvRowNumber The row number of the problematic trip. Long
tripId trip_id of the problematic trip. String
routeId route_id of the problematic trip. String
speedKph Travel speed (km/h). Double
distanceKm Distance between stops (km). Double
csvRowNumber1 The row number of the first stop time. Long
stopSequence1 stop_sequence of the first stop. Integer
stopId1 stop_id of the first stop. String
stopName1 stop_name of the first stop. String
departureTime1 departure_time of the first stop. Time
csvRowNumber2 The row number of the second stop time. Long
stopSequence2 stop_sequence of the second stop. Integer
stopId2 stop_id of the second stop. String
stopName2 stop_name of the second stop. String
arrivalTime2 arrival_time of the second stop. Time

Affected files

A transit vehicle moves too fast between far consecutive stops (more than in 10 km apart). This normally indicates a more serious problem than too fast travel between consecutive stops. The speed threshold depends on route type.

Speed thresholds

Same as for fast_travel_between_consecutive_stops.

References

Notice fields description

Field name Description Type
tripCsvRowNumber The row number of the problematic trip. Long
tripId trip_id of the problematic trip. String
routeId route_id of the problematic trip. String
speedKph Travel speed (km/h). Double
distanceKm Distance between stops (km). Double
csvRowNumber1 The row number of the first stop time. Long
stopSequence1 stop_sequence of the first stop. Integer
stopId1 stop_id of the first stop. String
stopName1 stop_name of the first stop. String
departureTime1 departure_time of the first stop. Time
csvRowNumber2 The row number of the second stop time. Long
stopSequence2 stop_sequence of the second stop. Integer
stopId2 stop_id of the second stop. String
stopName2 stop_name of the second stop. String
arrivalTime2 arrival_time of the second stop. Time

Affected files

The dataset expiration date defined in feed_info.txt is in seven days or less. At any time, the published GTFS dataset should be valid for at least the next 7 days.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
currentDate Current date (YYYYMMDD format). String
feedEndDate Feed end date (YYYYMMDD format). String
suggestedExpirationDate Suggested expiration date (YYYYMMDD format). String

Affected files

At any time, the GTFS dataset should cover at least the next 30 days of service, and ideally for as long as the operator is confident that the schedule will continue to be operated.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
currentDate Current date (YYYYMMDD format). String
feedEndDate Feed end date (YYYYMMDD format). String
suggestedExpirationDate Suggested expiration date (YYYYMMDD format). String

Affected files

  1. Files agency.txt and feed_info.txt should define matching agency.agency_lang and feed_info.feed_lang. The default language may be multilingual for datasets with the original text in multiple languages. In such cases, the feed_lang field should contain the language code mul defined by the norm ISO 639-2.
  • If feed_lang is not mul and does not match with agency_lang, that's an error
  • If there is more than one agency_lang and feed_lang isn't mul, that's an error
  • If feed_lang is mul and there isn't more than one agency_lang, that's an error

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
agencyId The agency id of the faulty record. String
agencyName The agency name of the faulty record. String
agencyLang The agency language of the faulty record. String
feedLang The feed language of the faulty record. String

Affected files

Agencies from GTFS agency.txt have been found to have different languages.

References

Notice fields description

Field name Description Type
csvRowNumber The row of the faulty record. Long
expected Expected language. String
actual Faulty record's language. String

Affected files

The value in CSV file has leading or trailing whitespaces.

References

Notice fields description

Field name Description Type
filename The row of the faulty record. String
csvRowNumber The row of the faulty record. Long
fieldName Faulty record's field name. String
fieldValue Faulty value. String

Affected files

All GTFS files supported by the specification.

Even though feed_info.start_date and feed_info.end_date are optional, if one field is provided the second one should also be provided.

References

Notice fields description

Field name Description Type
fieldName Either feed_end_date or feed_start_date String
csvRowNumber The row number of the faulty record. Long

Affected files

Notice fields description

A recommended file is missing.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String

Affected files

missing_recommended_field

The given field has no value in some input row, even though values are recommended.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String
csvRowNumber The row of the faulty record. Long
fieldName The name of the missing field. String

Affected files

missing_timepoint_column

The timepoint column should be provided.

References

Notice fields description

Field name Description Type
filename The name of the affected file. String

Affected files

Even though the column timepoint is optional in stop_times.txt according to the specification, stop_times.timepoint should not be empty when provided.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
tripId The faulty record's stop_times.trip_id. String
stopSequence The faulty record's stop_times.stop_sequence. String

Affected files

The file is expected to have a single entity but has more (e.g., "feed_info.txt").

References

Notice fields description

Field name Description Type
filename Name of the faulty file. String
entityCount Number of occurrences. Long

Affected files

All GTFS files supported by the specification.

A value of a field with type id contains non ASCII or non printable characters. This is not recommended.

References

Notice fields description

Field name Description Type
filename Name of the faulty file. String
csvRowNumber Row number of the faulty record. Long
columnName Name of the column where the error occurred. String
fieldValue Faulty value. String

Affected files

All GTFS files supported by the specification.

A generic node has only one incident location in a pathway graph. Such generic node is useless because there is no benefit in visiting it.

References

Notice fields description

Field name Description Type
csvRowNumber Row number of the dangling generic node. Long
stopId The id of the dangling generic node. String
stopName The stop name of the dangling generic node. String
parentStation The parent station of the dangling generic node. String

Affected files

A pathway should not have same values for from_stop_id and to_stop_id.

References

Notice fields description

Field name Description Type
csvRowNumber Row number of the faulty row from pathways.txt. Long
pathwayId The id of the faulty record. String
stopId The pathway.stop_id that is repeated in pathways.from_stop_id and pathways.to_stop_id. String

Affected files

A platform has no parent_station field set.

References

Notice fields description

Field name Description Type
csvRowNumber Row number of the faulty record. Long
stopId The id of the faulty record. String
stopName The stop name of the faulty record. String
locationType The location type of the faulty record. Integer

Affected files

A route's color and route_text_color should be contrasting.

References

Notice fields description

Field name Description Type
routeId The id of the faulty record. String
csvRowNumber The row number of the faulty record. Long
routeColor The faulty record's HTML route color. String
routeTextColor The faulty record's HTML route text color. String

Affected files

A single route has the same values for route_short_name and route_long_name.

Example of bad data:

route_id route_short_name route_long_name
route1 L1 L1

References

Notice fields description

Field name Description Type
routeId The id of the faulty record. String
csvRowNumber The row number of the faulty record. Long
routeShortName The faulty record's route_short_name. String
routeLongName The faulty record's route_long_name. String

Affected files

Short name of a route is too long (more than 12 characters).

References

Notice fields description

Field name Description Type
routeId The id of the faulty record. String
csvRowNumber The row number of the faulty record. Long
routeShortName The faulty record's route_short_name. String

Affected files

The GTFS spec defines routes.txt route_desc as:

Description of a route that provides useful, quality information. Do not simply duplicate the name of the route.

See the GTFS and GTFS Best Practices links below for more examples of how to populate the route_short_name, route_long_name, and route_desc fields.

References

routes.txt specification routes.txt Best Practices

Notice fields description

Field name Description Type
filename The name of the faulty file. String
routeId The id of the faulty record. String
csvRowNumber The row number of the faulty record. Long
routeDesc The routes.routes_desc of the faulty record. String
specifiedField Either route_short_name or route_long_name. String

Affected files

The GTFS spec defines stops.txt stop_description as:

Description of the location that provides useful, quality information. Do not simply duplicate the name of the location.

References

stops.txt specification

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
stopId The id of the faulty record. String
stopDesc The faulty record's stop_desc. String

Affected files

A route should not have the same routes.route_url as a record from agency.txt.

References

Notice fields description

Field name Description Type
routeCsvRowNumber The row number of the faulty record from routes.txt. Long
routeId The faulty record's id. String
agencyId The faulty record's routes.agency_id. String
routeUrl The duplicate URL value String
agencyCsvRowNumber The row number of the faulty record from agency.txt. Long

Affected files

A stop should not have the same stops.stop_url as a record from agency.txt.

References

Notice fields description

Field name Description Type
stopCsvRowNumber The row number of the faulty record from stops.txt. Long
stopId The faulty record's id. String
agencyName The faulty record's agency.agency_name. String
stopUrl The duplicate URL value. String
agencyCsvRowNumber The row number of the faulty record from agency.txt. Long

Affected files

A stop should not have the same stop.stop_url as a record from routes.txt.

References

Notice fields description

Field name Description Type
stopsvRowNumber The row number of the faulty record from stops.txt. Long
stopId The faulty record's id. String
stopUrl The duplicate URL value. String
routeId The faulty record's id from `routes.txt. String
routeCsvRowNumber The row number of the faulty record from routes.txt. Long

Affected files

A stop entry that has many potential matches to the trip's path of travel, as defined by the shape entry in shapes.txt.

References

Notice fields description

Field name Description Type
tripCsvRowNumber The row number of the faulty record from trips.txt. Long
shapeId The id of the shape that is referred to. String
tripId The id of the trip that is referred to. String
stopTimeCsvRowNumber The row number of the faulty record from stop_times.txt. Long
stopId The id of the stop that is referred to. String
stopName The name of the stop that is referred to. String
match Latitude and longitude pair of the location. Object
matchCount The number of matches for the stop that is referred to. Integer

Affected files

Two stop entries in stop_times.txt are different than their arrival-departure order as defined by the shape in the shapes.txt file.

References

Notice fields description

Field name Description Type
tripCsvRowNumber The row number of the faulty record from trips.txt. Long
shapeId The id of the shape that is referred to. String
tripId The id of the trip that is referred to. String
stopTimeCsvRowNumber1 The row number of the first faulty record from stop_times.txt. Long
stopId1 The id of the first stop that is referred to. String
stopName1 The name of the first stop that is referred to. String
match1 Latitude and longitude pair of the first matching location. Object
stopTimeCsvRowNumber2 The row number of the second faulty record from stop_times.txt. Long
stopId2 The id of the second stop that is referred to. String
stopName2 The name of the second stop that is referred to. String
match2 Latitude and longitude pair of the second matching location. Object

Affected files

Per GTFS Best Practices, route alignments (in shapes.txt) should be within 100 meters of stop locations which a trip serves.

References

Notice fields description

Field name Description Type
tripCsvRowNumber The row number of the faulty record from trips.txt. Long
shapeId The id of the shape that is referred to. String
tripId The id of the trip that is referred to. String
stopTimeCsvRowNumber The row number of the faulty record from stop_times.txt. Long
stopId The id of the stop that is referred to. String
stopName The name of the stop that is referred to. String
match Latitude and longitude pair of the location. Object
geoDistanceToShape Distance from stop to shape. Double

Affected files

A stop time entry that is a large distance away from the location of the shape in shapes.txt as defined by shape_dist_traveled values.

References

Notice fields description

Field name Description Type
tripCsvRowNumber The row number of the faulty record from trips.txt. Long
shapeId The id of the shape that is referred to. String
tripId The id of the trip that is referred to. String
stopTimeCsvRowNumber The row number of the faulty record from stop_times.txt. Long
stopId The id of the stop that is referred to. String
stopName The name of the stop that is referred to. String
match Latitude and longitude pair of the location. Object
geoDistanceToShape Distance from stop to shape. Double

Affected files

  • stop_times.txt
  • stops.txt
  • trips.txt A stop time entry that is a large distance away from the location of the shape in shapes.txt as defined by shape_dist_traveled values.

A stop in stops.txt is not referenced by any stop_times.stop_id, so it is not used by any trip. Such stops normally do not provide user value. This notice may indicate a typo in stop_times.txt.

References

A translation references an unknown or missing GTFS table.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
tableName table_name of the faulty record. String

Affected files

An enum has an unexpected value.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String
csvRowNumber The row number of the faulty record. Long
fieldName The name of the field where the error occurred. String
fieldValue Faulty value. Integer

Affected files

A trip must visit more than one stop in stop_times.txt to be usable by passengers for boarding and alighting.

References:

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
tripId The faulty record's id. String

Affected files

All records defined by GTFS shapes.txt should be used in trips.txt.

References:

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
`shapeId The faulty record's id. String

Affected files

Trips should be referred to at least once in stop_times.txt.

References

Notice fields description

Field name Description Type
csvRowNumber The row number of the faulty record. Long
tripId The faulty record's id. String

Affected files

More details - INFOS

A column is unknown.

References

Notice fields description

Field name Description Type
filename The name of the faulty file. String
fieldName The name of the unknown column. String
index The index of the faulty column. Integer

Affected files

All GTFS files supported by the specification.

A file is unknown.

References

Notice fields description

Field name Description Type
filename The name of the unknown file. String

More details - SYSTEM ERRORS

Error in IO operation.

Notice fields description

Field name Description Type
exception The name of the exception. String
message The error message that explains the reason for the exception. String

A RuntimeException occurred while loading a table. This normally indicates a bug in validator.

Notice fields description

Field name Description Type
filename The name of the file that caused the exception. String
exception The name of the exception. String
message The error message that explains the reason for the exception. String

Affected files

All GTFS files supported by the specification.

A RuntimeException occurred during validation. This normally indicates a bug in validator code, e.g., in a custom validator class.

Notice fields description

Field name Description Type
validator The name of the validator that caused the exception. String
exception The name of the exception. String
message The error message that explains the reason for the exception. String

An ExecutionException occurred during multithreaded validation.

Notice fields description

Field name Description Type
exception The name of the exception. String
message The error message that explains the reason for the exception. String

A string could not be parsed as a URI reference.

Notice fields description

Field name Description Type
exception The name of the exception. String
message The error message that explains the reason for the exception. String