{
  "agency": {
    "country": "FR",
    "id": "fr-pan-82363",
    "name": "R\u00e9seau urbain Tr\u00e9ma (Bressuire)",
    "subdivision_code": "FR-NAQ",
    "subdivision_name": "Nouvelle-Aquitaine"
  },
  "categories": {
    "completeness": {
      "details": {
        "accessibility": {
          "measures": "presence_not_usability",
          "score": 59.9,
          "stops_marked_accessible_pct": 0.0,
          "stops_marked_not_accessible_pct": 95.9,
          "stops_stated_pct": 95.9,
          "trips_stated_pct": 0.0
        },
        "accessibility_measures": "presence_not_usability",
        "cemv": {
          "declared": false,
          "supported": false
        },
        "components": {
          "contact": 7.5,
          "fares": 0.0,
          "headsigns": 15.0,
          "stop_names": 3.9,
          "wheelchair_stops": 24.0,
          "wheelchair_trips": 0.0
        },
        "fare_free": false,
        "fares": {
          "applied": false,
          "has_leg_rules": false,
          "has_products": false,
          "has_transfer_rules": false,
          "model": "none",
          "product_count": 0
        },
        "flex": {
          "booking_reachable": false,
          "booking_rule_count": 0,
          "has_booking_rules": false,
          "has_flex": false
        },
        "has_fares": false,
        "headsign_applicable_trips": 372,
        "headsign_loop_exempt_trips": 0,
        "headsign_pct": 100.0,
        "headsign_scored_pct": 100.0,
        "mixed_case_stop_name_pct": 26.1,
        "pathways": {
          "has_entrances": false,
          "has_levels": false,
          "has_pathways": false,
          "has_stations": true,
          "has_step_free": false,
          "pathway_count": 0
        },
        "stops": 1042,
        "translations": {
          "feed_lang": null,
          "has_translations": false,
          "languages": [],
          "translated_tables": [],
          "translation_count": 0
        },
        "trips": 372,
        "unmeasured_components": [],
        "wheelchair_accessible_pct": 0.0,
        "wheelchair_boarding_pct": 95.9,
        "wheelchair_marked_accessible_pct": 0.0,
        "wheelchair_marked_not_accessible_pct": 95.9
      },
      "findings": [
        {
          "code": "scorecard_wheelchair_boarding_unknown",
          "count": 43,
          "effort": "A column in stops.txt; your scheduling software likely has it.",
          "fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops.",
          "owner": "Likely your team",
          "points": 1.0,
          "severity": "WARNING",
          "what": "43 of 1042 stops don't say whether a wheelchair user can board there.",
          "why": "Riders who use wheelchairs can't plan a trip when accessibility is marked 'unknown'; apps show no information at all."
        },
        {
          "code": "scorecard_wheelchair_accessible_unknown",
          "count": 372,
          "effort": "A default or per-trip field in your export.",
          "fix": "Set wheelchair_accessible on every trip. If every vehicle is accessible, this may be one default; otherwise use the value for each trip.",
          "owner": "Likely your export tool",
          "points": 15.0,
          "severity": "WARNING",
          "what": "372 of 372 trips don't say whether the vehicle is wheelchair accessible.",
          "why": "Even with accessible stops, riders need to know the bus itself can take them."
        },
        {
          "code": "scorecard_no_fare_data",
          "count": 1,
          "effort": "A small file for most flat-fare systems.",
          "fix": "Add fare_attributes.txt (or Fares v2 files) with your fare structure. If your service is fare-free, ask to have it marked fare-free instead.",
          "owner": "",
          "points": 15.0,
          "severity": "WARNING",
          "what": "The feed contains no fare information.",
          "why": "Riders see 'fare unknown' in trip planners and can't budget their trip; visitors are most affected."
        },
        {
          "code": "scorecard_stop_names_all_caps",
          "count": 770,
          "effort": "Often a bulk fix in your scheduling software.",
          "fix": "Rename stops to mixed case where the language has letter case (for example, 'Central Station').",
          "owner": "Likely your export tool",
          "points": 11.1,
          "severity": "INFO",
          "what": "About 770 stop names are written in ALL CAPS.",
          "why": "Mixed-case names are easier to read in apps and are read more naturally by screen readers."
        },
        {
          "code": "scorecard_no_feed_contact",
          "count": 1,
          "effort": "One field.",
          "fix": "Add feed_contact_email to feed_info.txt.",
          "owner": "",
          "points": 7.5,
          "severity": "INFO",
          "what": "feed_info.txt has no technical contact (feed_contact_email or feed_contact_url).",
          "why": "App makers and state data programs have nobody to email when they spot a problem. Small errors then sit in the feed for months."
        },
        {
          "code": "scorecard_station_no_pathways",
          "count": 1,
          "effort": "Worth it for multi-level or large stations; flat stops don't need it.",
          "fix": "Add pathways.txt to link entrances, platforms, and elevators. Give each one a level.",
          "owner": "",
          "points": 0.0,
          "severity": "WARNING",
          "what": "This feed models stations or entrances but has no pathways.txt.",
          "why": "Trip planners can't guide riders through the station, and there is no step-free route information for wheelchair users."
        }
      ],
      "name": "completeness",
      "score": 50.4,
      "status": "measured",
      "summary": "96% of stops state wheelchair accessibility (0% marked accessible, 96% marked not accessible). This measures what the feed publishes, not whether a stop is physically usable. Fare data is not published.",
      "weight": 0.25
    },
    "correctness": {
      "details": {
        "distinct_codes": 6,
        "instances_by_severity": {
          "ERROR": 13,
          "INFO": 396,
          "WARNING": 863
        },
        "validator_version": "8.0.1"
      },
      "findings": [
        {
          "code": "decreasing_or_equal_stop_time_distance",
          "count": 13,
          "effort": "Usually an export-tool fix, not hand editing.",
          "fix": "Re-generate shape distances in your export; flag to your vendor if it persists.",
          "owner": "Likely your export tool",
          "points": 18.0,
          "severity": "ERROR",
          "what": "Some trips have stop times whose distances along the route go backwards.",
          "why": "Apps can show buses jumping backwards or mis-order stops."
        },
        {
          "code": "mixed_case_recommended_field",
          "count": 860,
          "effort": "Often a bulk fix in your scheduling software.",
          "fix": "Use mixed case for stop names and headsigns (e.g. 'Main St & 2nd Ave', not 'MAIN ST & 2ND AVE').",
          "owner": "Likely your export tool",
          "points": 8.0,
          "severity": "WARNING",
          "what": "Some rider-facing names are in ALL CAPS or all lowercase.",
          "why": "ALL-CAPS stop and headsign names are harder to read in apps and are read awkwardly by screen readers."
        },
        {
          "code": "stops_match_shape_out_of_order",
          "count": 2,
          "effort": "A few minutes per flagged trip.",
          "fix": "Check the stop order and the shape direction in your scheduling software; the shape is often drawn backwards.",
          "owner": "Likely your export tool",
          "points": 4.0,
          "severity": "WARNING",
          "what": "On some trips the stops fall along the route line in a different order than the schedule lists.",
          "why": "Trip planners can draw the bus doubling back or skipping ahead, which confuses riders reading the map."
        },
        {
          "code": "missing_recommended_file",
          "count": 1,
          "effort": "One small file, set once in export settings.",
          "fix": "Add feed_info.txt with publisher name, URL, language, and feed_start_date/feed_end_date.",
          "owner": "Likely your export tool",
          "points": 4.0,
          "severity": "WARNING",
          "what": "A file GTFS asks for (usually feed_info.txt) is missing.",
          "why": "feed_info.txt tells apps who publishes the feed and when it expires; without it nobody is warned before data goes stale."
        },
        {
          "code": "trip_with_shape_dist_traveled_but_no_shape_distances",
          "count": 372,
          "effort": "Varies.",
          "fix": "Review the rule documentation for 'trip_with_shape_dist_traveled_but_no_shape_distances' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed.",
          "owner": "",
          "points": 1.0,
          "severity": "INFO",
          "what": "Trip with shape dist traveled but no shape distances (flagged by the MobilityData validator).",
          "why": "See the linked rule for what this affects."
        },
        {
          "code": "big_gap_in_service",
          "count": 24,
          "effort": "A review of your calendar dates.",
          "fix": "Check whether the gap is real, like a seasonal break; if not, add the missing dates to the calendar.",
          "owner": "",
          "points": 0.8,
          "severity": "INFO",
          "what": "The feed has a stretch of two weeks or more with no service running.",
          "why": "A long gap can mean dates were left out of the calendar. Apps then show no trips on those days."
        }
      ],
      "name": "correctness",
      "score": 64.2,
      "status": "measured",
      "summary": "The MobilityData validator flagged 6 kinds of issue across 1272 instances (13 error, 863 warning, 396 informational).",
      "weight": 0.35
    },
    "freshness": {
      "details": {
        "days_until_expiry": 305,
        "effective_expiry_date": "2027-07-03",
        "feed_end_date": null,
        "feed_start_date": null,
        "feed_version": null,
        "has_feed_info": false,
        "last_service_date": "2027-07-03",
        "seasonal_boundary": false,
        "service_horizon_review_years": 10,
        "service_horizon_status": "within_review_threshold",
        "service_type": "fixed"
      },
      "findings": [
        {
          "code": "scorecard_missing_feed_info_dates",
          "count": 1,
          "effort": "Two fields, set once in export settings.",
          "fix": "Add feed_info.txt with feed_start_date and feed_end_date to your export.",
          "owner": "Likely your export tool",
          "points": 15.0,
          "severity": "WARNING",
          "what": "feed_info.txt is missing its start/end dates (the file itself is absent)",
          "why": "Apps and this scorecard can't warn anyone before the feed goes stale without stated validity dates."
        }
      ],
      "name": "freshness",
      "score": 85.0,
      "status": "measured",
      "summary": "Service data covers the next 305 days.",
      "weight": 0.2
    },
    "realtime": {
      "name": "realtime",
      "status": "not_yet_measured",
      "summary": "Not scored yet. Nothing here counts against the grade.",
      "weight": 0.2
    }
  },
  "confidence": {
    "feed_age_days": 0,
    "fetch_source": "origin",
    "level": "medium",
    "measured_categories": 3,
    "notes": [
      "Realtime quality was not measured this run. It does not count against the grade.",
      "The feed was downloaded from the official feed URL on file."
    ],
    "rt_windows": 0,
    "total_categories": 4
  },
  "conformance": {
    "awarded": false,
    "criteria": [
      {
        "detail": "1 validator error to resolve.",
        "key": "valid",
        "met": false
      },
      {
        "detail": "Service data covers the next 305 days.",
        "key": "current",
        "met": true
      },
      {
        "detail": "States wheelchair access on 96% of stops and 0% of trips; the mark needs 90% of each.",
        "key": "accessible",
        "met": false
      }
    ],
    "status": "not_yet",
    "summary": "Two requirements remain for this feed to earn the conformance mark. 1 validator error to resolve. States wheelchair access on 96% of stops and 0% of trips; the mark needs 90% of each.",
    "version": 2
  },
  "feed": {
    "license_note": "Open Database License (ODbL), recorded by France's National Access Point; credit CA du Bocage Bressuirais, identify the ODbL, and preserve share-alike terms where they apply.",
    "reachable": true,
    "sha256": "ac32d6564c724d96211f7d60feb13e706686688d0ad35ad4f44c969d130ec4c9",
    "size_bytes": 1385065,
    "source_provenance": "official",
    "static_url": "https://www.data.gouv.fr/api/1/datasets/r/414c049b-323a-4a5c-b484-e3917a62f485"
  },
  "fetch": {
    "final_url": "https://www.pigma.org/public/opendata/nouvelle_aquitaine_mobilites/publication/ca_bocage_bressuirais-aggregated-gtfs.zip",
    "max_attempts": 4,
    "reader_archive_profile": "raw-v1",
    "source": "origin",
    "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
  },
  "generated_at": "2026-09-01T00:00:00+00:00",
  "geo": {
    "bbox": [
      -0.89543,
      46.63149,
      -0.28381,
      47.07791
    ],
    "lat": 46.83071,
    "lon": -0.55035,
    "stop_count": 1042
  },
  "mode_profile": {
    "ferry_only": false,
    "graded": false,
    "has_ferry": false,
    "is_multimodal": false,
    "measured": true,
    "modes": [
      {
        "key": "bus",
        "label": "Bus",
        "route_count": 106,
        "trip_count": 372,
        "trip_share_pct": 100.0
      }
    ],
    "primary_mode": "bus",
    "primary_mode_label": "Bus",
    "route_count": 106,
    "trip_count": 372
  },
  "overall": {
    "grade": "D",
    "margin_to_lower_band": 5.1,
    "margin_to_next_band": 4.9,
    "score": 65.1
  },
  "recommendations": [
    {
      "category": "accessibility",
      "code": "scorecard_stop_name_needs_tts",
      "count": 55,
      "effort": "A short text field per affected stop; start with the busiest.",
      "fix": "Add tts_stop_name with the spoken form, e.g. 'Main Street and Second Avenue', for the affected stops.",
      "owner": "",
      "points": 0.0,
      "severity": "INFO",
      "what": "55 stop name(s) use abbreviations or symbols a screen reader may mispronounce, with no spoken form set (\"GABARD/BORDELIERE\", \"ST PORCHAIRE La Poterie\", \"CRF rue Hardrevins/Blvd Foch\", and more).",
      "why": "A screen reader speaks the raw name. 'Main St & 2nd Ave' can come out as 'Main saint', or lose the ampersand."
    },
    {
      "category": "accessibility",
      "code": "scorecard_station_missing_step_free_data",
      "count": 2,
      "effort": "Worth it for multi-level or large stations; flat stops don't need it.",
      "fix": "Add pathways.txt connecting entrances, platforms, and elevators, and levels.txt for each floor, so the step-free route is described.",
      "owner": "",
      "points": 0.0,
      "severity": "WARNING",
      "what": "This feed models stations or entrances but has no pathways.txt and levels.txt.",
      "why": "Without pathways and levels, a wheelchair user can't tell if a step-free route exists inside the station. Trip planners can't route anyone through it."
    }
  ],
  "routability": {
    "boardable_stops": 522,
    "findings": [],
    "orphan_stops": 0,
    "single_stop_trips": 0,
    "trips_total": 372
  },
  "route_map": {
    "drawn_route_count": 106,
    "has_shapes": true,
    "path": "data/artifacts/fr-pan-82363/geometry.geojson",
    "route_count": 106,
    "routes": [
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1001015",
        "label": "210",
        "long": "Ligne 210 Bressuire",
        "short": "210",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1001088",
        "label": "L4",
        "long": "Ligne 4 BRESSUIRE MONCOUTANT BRESSUIRE",
        "short": "L4",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1001090",
        "label": "L5",
        "long": "Ligne 5 BRESSUIRE CERIZAY BRESSUIRE",
        "short": "L5",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1001092",
        "label": "L7",
        "long": "Ligne 7 BRESSUIRE NUEIL LES AUBIERS BRESSUIRE",
        "short": "L7",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1001098",
        "label": "L8",
        "long": "Ligne 8 BRESSUIRE ARGENTONNAY BRESSUIRE",
        "short": "L8",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002297",
        "label": "L1",
        "long": "LIGNE 1 MEQUINENZA/POTERIE/MEQUINENZA",
        "short": "L1",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002318",
        "label": "L2",
        "long": "LIGNE 2 LIGNE 2 ALPHAPARC/MOULIN/JACQUET ALPHAPARC",
        "short": "L2",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002338",
        "label": "L6",
        "long": "Ligne 6 BRESSUIRE MAULEON BRESSUIRE",
        "short": "L6",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002437",
        "label": "2001",
        "long": "SME/BRESSUIRE/SME",
        "short": "2001",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002438",
        "label": "2002",
        "long": "SUD ARGENTONNAY/BRESSUIRE/SUD ARGENTONNAY",
        "short": "2002",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002439",
        "label": "2201",
        "long": "ARGENTONNAY/LA CHAPELLE GAUDIN/ARGENTONNAY",
        "short": "2201",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002440",
        "label": "2202",
        "long": "ARGENTONNAY/NLA/ARGENTONNAY",
        "short": "2202",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002441",
        "label": "2203",
        "long": "ARGENTONNAY/SME/ARGENTONNAY",
        "short": "2203",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002442",
        "label": "2204",
        "long": "ARGENTONNAY/GENNETON/ARGENTONNAY",
        "short": "2204",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002443",
        "label": "2205",
        "long": "ARGENTONNAY/VOULMENTIN/ARGENTONNAY",
        "short": "2205",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002444",
        "label": "2206",
        "long": "ARGENTONNAY/MOUTIERS SOUS ARGENTON/ARGENTONNAY",
        "short": "2206",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002445",
        "label": "2301",
        "long": "MONCOUTANT/CHANTELOUP/MONCOUTANT",
        "short": "2301",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002446",
        "label": "2302",
        "long": "MONCOUTANT/LA CHAPELLE ST LAURENT/MONCOUTANT",
        "short": "2302",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002447",
        "label": "2303",
        "long": "MONCOUTANT/NORD CLESSE/MONCOUTANT",
        "short": "2303",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002448",
        "label": "2304",
        "long": "MONCOUTANT/SUD CLESSE/MONCOUTANT",
        "short": "2304",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002449",
        "label": "2305",
        "long": "MONCOUTANT/LARGEASSE/MONCOUTANT",
        "short": "2305",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002450",
        "label": "2306",
        "long": "MONCOUTANT/L'ABSIE/MONCOUTANT",
        "short": "2306",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002451",
        "label": "2307",
        "long": "MONCOUTANT/ST MARSAULT/MONCOUTANT",
        "short": "2307",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002452",
        "label": "2308",
        "long": "MONCOUTANT/LAIMIERE/MONCOUTANT",
        "short": "2308",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002453",
        "label": "2309",
        "long": "MONCOUTANT/COURLAY 1/MONCOUTANT",
        "short": "2309",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002454",
        "label": "2310",
        "long": "MONCOUTANT/COURLAY 2/MONCOUTANT",
        "short": "2310",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002455",
        "label": "2401",
        "long": "CERIZAY/LE PIN/CERIZAY",
        "short": "2401",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002456",
        "label": "2402",
        "long": "CERIZAY/CIRIERES 1/CERIZAY",
        "short": "2402",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002457",
        "label": "2403",
        "long": "CERIZAY/CIRIERES 2/CERIZAY",
        "short": "2403",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002458",
        "label": "2404",
        "long": "CERIZAY/COMBRAND/CERIZAY",
        "short": "2404",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002459",
        "label": "2405",
        "long": "CERIZAY/COURLAY/CERIZAY",
        "short": "2405",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002460",
        "label": "2406",
        "long": "CERIZAY/L'ABSIE/CERIZAY",
        "short": "2406",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002461",
        "label": "2407",
        "long": "CERIZAY/TERVES/CERIZAY",
        "short": "2407",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002462",
        "label": "2408",
        "long": "CERIZAY/ST ANDRE SUR SEVRE/CERIZAY",
        "short": "2408",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002463",
        "label": "2409",
        "long": "CERIZAY/ST PIERRE DES ECHAUBROGNES/CERIZAY",
        "short": "2409",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002465",
        "label": "2410",
        "long": "CERIZAY/BRETIGNOLLES/CERIZAY",
        "short": "2410",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002466",
        "label": "2501",
        "long": "MAULEON/ST PIERRE DES ECHAUBROGNES/MAULEON",
        "short": "2501",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002467",
        "label": "2502",
        "long": "MAULEON/ST AUBIN DE BAUBIGNE/MAULEON",
        "short": "2502",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002468",
        "label": "2503",
        "long": "ARGENTON/MAULEON/CERIZAY",
        "short": "2503",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002469",
        "label": "2504",
        "long": "MAULEON/LE PIN/MAULEON",
        "short": "2504",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002470",
        "label": "2601",
        "long": "NLA 1",
        "short": "2601",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002471",
        "label": "2602",
        "long": "NLA 2",
        "short": "2602",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002472",
        "label": "2603",
        "long": "NLA 3",
        "short": "2603",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002473",
        "label": "2604",
        "long": "NLA 4",
        "short": "2604",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002474",
        "label": "2605",
        "long": "NLA 5",
        "short": "2605",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002475",
        "label": "2505",
        "long": "MAULEON/CERIZAY/MAULEON",
        "short": "2505",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002476",
        "label": "2506",
        "long": "CERIZAY/MAULEON/CERIZAY",
        "short": "2506",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002477",
        "label": "2507",
        "long": "MAULEON/ST LAURENT SUR SEVRE/MAULEON",
        "short": "2507",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002478",
        "label": "2508",
        "long": "MAULEON/LOUBLANDE/MAULEON",
        "short": "2508",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002479",
        "label": "2509",
        "long": "MAULEON/MOULINS/MAULEON",
        "short": "2509",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002480",
        "label": "311",
        "long": "BRESSUIRE PRIM 1",
        "short": "311",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002481",
        "label": "312",
        "long": "BRESSUIRE PRIM 2",
        "short": "312",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002482",
        "label": "313",
        "long": "BRESSUIRE PRIM 3",
        "short": "313",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002483",
        "label": "314",
        "long": "RPI CHAMBROUTET",
        "short": "314",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002484",
        "label": "316",
        "long": "CHICHE PRIM",
        "short": "316",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002485",
        "label": "317",
        "long": "BOISME PRIM",
        "short": "317",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002486",
        "label": "321",
        "long": "ARGENTONNAY PRIM",
        "short": "321",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002487",
        "label": "322",
        "long": "MOUTIERS SOUS ARGENTON PRIM",
        "short": "322",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002488",
        "label": "323",
        "long": "VOULMENTIN PRIM",
        "short": "323",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002497",
        "label": "324",
        "long": "SME PRIM 1",
        "short": "324",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002499",
        "label": "331",
        "long": "MONCOUTANT/ST JOUIN DE MILLY/MONCOUTANT",
        "short": "331",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002500",
        "label": "332",
        "long": "COURLAY PRIM",
        "short": "332",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002501",
        "label": "333",
        "long": "LA CHAPELLE ST LAURENT PRIM",
        "short": "333",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002502",
        "label": "334",
        "long": "BREUIL BERNARD PRIM",
        "short": "334",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002503",
        "label": "335",
        "long": "CLESSE PRIM",
        "short": "335",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002504",
        "label": "336",
        "long": "LA CHAPELLE ST ETIENNE PRIM",
        "short": "336",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002505",
        "label": "337",
        "long": "L'ABSIE PRIM",
        "short": "337",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002506",
        "label": "341",
        "long": "CERIZAY PRIM 1",
        "short": "341",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002507",
        "label": "342",
        "long": "CERIZAY PRIM 2",
        "short": "342",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002508",
        "label": "343",
        "long": "LA FORET SUR SEVRE PRIM 1",
        "short": "343",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002509",
        "label": "344",
        "long": "LA FORET SUR SEVRE PRIM 2",
        "short": "344",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002510",
        "label": "345",
        "long": "ST ANDRE SUR SEVRE PRIM",
        "short": "345",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002511",
        "label": "346",
        "long": "MONTRAVERS PRIM",
        "short": "346",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002512",
        "label": "347",
        "long": "ST AMAND SUR SEVRE PRIM",
        "short": "347",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002513",
        "label": "351",
        "long": "MAULEON PRIM",
        "short": "351",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002514",
        "label": "361",
        "long": "NLA PRIM RETOUR",
        "short": "361",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002517",
        "label": "2003",
        "long": "LA CHAPELLE GAUDIN/BRESSUIRE/LA CHAPELLE GAUDIN",
        "short": "2003",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002518",
        "label": "2004",
        "long": "FAYE L'ABBESSE/BRESSUIRE/FAYE L'ABBESSE",
        "short": "2004",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002519",
        "label": "2005",
        "long": "CHICHE/BRESSUIRE/CHICHE 1",
        "short": "2005",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002520",
        "label": "2006",
        "long": "CHICHE/BRESSUIRE/CHICHE 2",
        "short": "2006",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002521",
        "label": "310",
        "long": "BRESSUIRE PRIM 4",
        "short": "310",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002522",
        "label": "2007",
        "long": "BOISME/CHICHE/BRESSUIRE",
        "short": "2007",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002523",
        "label": "2008",
        "long": "BOISME/BRESSUIRE/BOISME",
        "short": "2008",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002524",
        "label": "2009",
        "long": "CLESSE/BRESSUIRE/CLESSE",
        "short": "2009",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002525",
        "label": "2010",
        "long": "TRAYES/BRESSUIRE",
        "short": "2010",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002526",
        "label": "2011",
        "long": "L'ABSIE/BRESSUIRE/L'ABSIE",
        "short": "2011",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002527",
        "label": "2012",
        "long": "SUD MONCOUTANT/BRESSUIRE/SUD MONCOUTANT",
        "short": "2012",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002528",
        "label": "2013",
        "long": "LA CHAPELLE ST LAURENT/BRESSUIRE/LA CHAPELLE ST LAURENT",
        "short": "2013",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002529",
        "label": "2014",
        "long": "COURLAY/BRESSUIRE/COURLAY 1",
        "short": "2014",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002530",
        "label": "2015",
        "long": "ST JOUIN DE MILLY/BRESSUIRE/ST JOUIN DE MILLY",
        "short": "2015",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002531",
        "label": "2016",
        "long": "LA RONDE/BRESSUIRE/LA RONDE",
        "short": "2016",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002532",
        "label": "2017",
        "long": "COURLAY/BRESSUIRE/COURLAY 2",
        "short": "2017",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002533",
        "label": "2018",
        "long": "MONTIGNY/BRESSUIRE/MONTIGNY",
        "short": "2018",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002534",
        "label": "2019",
        "long": "ST ANDRE SUR SEVRE/BRESSUIRE/ST ANDRE SUR SEVRE",
        "short": "2019",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002535",
        "label": "2020",
        "long": "BEAULIEU SOUS BRESSUIRE/BRESSUIRE",
        "short": "2020",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002536",
        "label": "2021",
        "long": "LE PIN/BRESSUIRE/LE PIN",
        "short": "2021",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002537",
        "label": "2022",
        "long": "COMBRAND/BRESSUIRE/COMBRAND",
        "short": "2022",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002538",
        "label": "2023",
        "long": "ST AMAND SUR SEVRE/BRESSUIRE/ST AMAND SUR SEVRE",
        "short": "2023",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002539",
        "label": "2024",
        "long": "LOUBLANDE/BRESSUIRE/LOUBLANDE",
        "short": "2024",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002540",
        "label": "2025",
        "long": "MOULINS/BRESSUIRE/MOULINS",
        "short": "2025",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002541",
        "label": "2027",
        "long": "VOULMENTIN/BRESSUIRE/VOULMENTIN",
        "short": "2027",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002542",
        "label": "2028",
        "long": "ST SAUVEUR/BRESSUIRE/ST SAUVEUR",
        "short": "2028",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002543",
        "label": "2031",
        "long": "GEAY/BRESSUIRE/GEAY",
        "short": "2031",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002557",
        "label": "2026",
        "long": "NLA/BRESSUIRE/NLA DOUBLON 1",
        "short": "2026",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002558",
        "label": "2030",
        "long": "NLA/BRESSUIRE/NLA DOUBLON 2",
        "short": "2030",
        "text_color": "000000",
        "type_label": "Bus"
      },
      {
        "color": "FFFFFF",
        "color_name": "white",
        "has_shape": true,
        "id": "CA_BOCAGE_BRESSUIRAIS:Line:1002559",
        "label": "2029",
        "long": "CERIZAY/BRESSUIRE DOUBLON 1",
        "short": "2029",
        "text_color": "000000",
        "type_label": "Bus"
      }
    ],
    "stop_count": 1042,
    "stop_points_capped": false
  },
  "rubric_version": "1.3",
  "schema_version": "1.18",
  "scoring_profile": {
    "id": "gtfs-scorecard-1.3",
    "provenance": "GTFS Scorecard's project-authored weights, deductions, thresholds, grade bands, and fix ranking, informed by the California Transit Data Guidelines and the MobilityData gtfs-validator. It is not a worldwide standard or a compliance determination.",
    "rubric_version": "1.3"
  },
  "snapshot_date": "2026-09-01",
  "top_fixes": [
    {
      "code": "decreasing_or_equal_stop_time_distance",
      "count": 13,
      "effort": "Usually an export-tool fix, not hand editing.",
      "fix": "Re-generate shape distances in your export; flag to your vendor if it persists.",
      "owner": "Likely your export tool",
      "points": 18.0,
      "rank": 1,
      "severity": "ERROR",
      "what": "Some trips have stop times whose distances along the route go backwards.",
      "why": "Apps can show buses jumping backwards or mis-order stops."
    },
    {
      "code": "scorecard_wheelchair_accessible_unknown",
      "count": 372,
      "effort": "A default or per-trip field in your export.",
      "fix": "Set wheelchair_accessible on every trip. If every vehicle is accessible, this may be one default; otherwise use the value for each trip.",
      "owner": "Likely your export tool",
      "points": 15.0,
      "rank": 2,
      "severity": "WARNING",
      "what": "372 of 372 trips don't say whether the vehicle is wheelchair accessible.",
      "why": "Even with accessible stops, riders need to know the bus itself can take them."
    },
    {
      "code": "scorecard_missing_feed_info_dates",
      "count": 1,
      "effort": "Two fields, set once in export settings.",
      "fix": "Add feed_info.txt with feed_start_date and feed_end_date to your export.",
      "owner": "Likely your export tool",
      "points": 15.0,
      "rank": 3,
      "severity": "WARNING",
      "what": "feed_info.txt is missing its start/end dates (the file itself is absent)",
      "why": "Apps and this scorecard can't warn anyone before the feed goes stale without stated validity dates."
    }
  ],
  "validator_version": "8.0.1"
}
