CINXE.COM

Troubleshooting | Transport Open Data

<!-- THEME DEBUG --> <!-- THEME HOOK: 'html' --> <!-- FILE NAME SUGGESTIONS: ▪️ html--node--developers.html.twig ▪️ html--node--52.html.twig ▪️ html--node--%.html.twig ▪️ html--node.html.twig ✅ html.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/radix/templates/layout/html.html.twig' --> <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8" /> <meta name="Generator" content="Drupal 10 (https://www.drupal.org)" /> <meta name="MobileOptimized" content="width" /> <meta name="HandheldFriendly" content="true" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="icon" href="/themes/custom/tfnsw_opendata_theme/favicon.png" type="image/png" /> <link rel="canonical" href="http://opendata.transport.nsw.gov.au/developers/troubleshooting" /> <link rel="shortlink" href="http://opendata.transport.nsw.gov.au/node/52" /> <title>Troubleshooting | Transport Open Data</title> <link rel="stylesheet" media="all" href="/sites/default/files/css/css_pR_NoNbDEdu-IuO5Kh-BzwaCz1Yq74DRhGRJidVruGU.css?delta=0&amp;language=en&amp;theme=tfnsw_opendata_theme&amp;include=eJwrriwuSc3VT0osTtUpScsrLo_PL0jNS0ksSYwvyUjNTdUvLqnMwSGVlJOfnA0AXTQaAA" /> <link rel="stylesheet" media="all" href="/sites/default/files/css/css_hlJY3Dyx3NsySGdiObzijovMqomT6zL-xxwYelGbBbA.css?delta=1&amp;language=en&amp;theme=tfnsw_opendata_theme&amp;include=eJwrriwuSc3VT0osTtUpScsrLo_PL0jNS0ksSYwvyUjNTdUvLqnMwSGVlJOfnA0AXTQaAA" /> </head> <body class="node-52 node-type--developers path-node language--en"> <a href="#main-content" class="visually-hidden focusable"> Skip to main content </a> <!-- THEME DEBUG --> <!-- THEME HOOK: 'off_canvas_page_wrapper' --> <!-- BEGIN OUTPUT from 'core/modules/system/templates/off-canvas-page-wrapper.html.twig' --> <div class="dialog-off-canvas-main-canvas" data-off-canvas-main-canvas> <!-- THEME DEBUG --> <!-- THEME HOOK: 'page' --> <!-- FILE NAME SUGGESTIONS: ▪️ page--node--developers.html.twig ▪️ page--path--developers-troubleshooting.html.twig ▪️ page--node--developers.html.twig ▪️ page--node--52.html.twig ▪️ page--node--%.html.twig ▪️ page--node.html.twig ✅ page.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/page/page.html.twig' --> <div class="page"> <div class="ms-auto"> <!-- TOPBAR START --> <nav class="navbar navbar-expand-lg justify-content-between navbar-dark bg-primary" data-bs-theme="dark"> <div class="container"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#topbar-nav" aria-controls="topbar-nav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div id="topbar-nav" class="collapse navbar-collapse"> <div class="ms-auto d-flex d-flex flex-column flex-lg-row justify-content-end"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'region' --> <!-- FILE NAME SUGGESTIONS: ▪️ region--topbar.html.twig ✅ region.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/region/region.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-tfnswckanloginblock.html.twig ✅ block--tfnsw-ckan-login-menu-block.html.twig ▪️ block--tfnsw-ckanlogin-block.html.twig ▪️ block.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/block/block--tfnsw-ckan-login-menu-block.html.twig' --> <div class="block block--tfnsw-opendata-theme-tfnswckanloginblock"> <ul class="navbar-nav"> <li class="nav-item"><a href="/data/user/login" class="nav-link">Login</a></li> <li class="nav-item"><a href="/data/user/register" class="nav-link">Register</a></li> </ul> </div> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/block/block--tfnsw-ckan-login-menu-block.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-search.html.twig ▪️ block--system-menu-block--search.html.twig ✅ block--system-menu-block.html.twig ▪️ block--system.html.twig ▪️ block.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/radix/templates/block/block--system-menu-block.html.twig' --> <div class="block block--tfnsw-opendata-theme-search block--system-menu"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'menu__search' --> <!-- FILE NAME SUGGESTIONS: ▪️ menu--search.html.twig ✅ menu.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/menu/menu.html.twig' --> <ul class="navbar-nav nav"> <li class="nav-item dropdown"> <a href="/relatedlinks" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">Related Links</a> <div class="dropdown-menu"> <a href="https://www.transport.nsw.gov.au" class="dropdown-item">Transport for NSW</a> </div> </li> </ul> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/menu/menu.html.twig' --> </div> <!-- END OUTPUT from 'themes/contrib/radix/templates/block/block--system-menu-block.html.twig' --> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/region/region.html.twig' --> </div> </div> </div> </nav> <!-- TOPBAR END --> </div> <!-- NAVBAR START --> <nav class="navbar navbar-expand-lg justify-content-between navbar-light bg-light" data-bs-theme="light"> <div class="container"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'region' --> <!-- FILE NAME SUGGESTIONS: ▪️ region--navbar-branding.html.twig ✅ region.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/region/region.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-site-branding.html.twig ✅ block--system-branding-block.html.twig ▪️ block--system.html.twig ▪️ block.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/block/block--system-branding-block.html.twig' --> <div class="block block--tfnsw-opendata-theme-site-branding block--system-branding"> <a href="/" class="navbar-brand d-flex align-items-center py-0 " aria-label=""> <img src="/themes/custom/tfnsw_opendata_theme/logo.svg" width="240" alt="Transport Open Data logo" class="me-2" /> </a> </div> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/block/block--system-branding-block.html.twig' --> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/region/region.html.twig' --> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-main" aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div id="navbar-main" class="collapse navbar-collapse"> <div class="ms-auto"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'region' --> <!-- FILE NAME SUGGESTIONS: ▪️ region--navbar-right.html.twig ✅ region.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/region/region.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-main-menu.html.twig ▪️ block--system-menu-block--main.html.twig ✅ block--system-menu-block.html.twig ▪️ block--system.html.twig ▪️ block.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/radix/templates/block/block--system-menu-block.html.twig' --> <div class="block block--tfnsw-opendata-theme-main-menu block--system-menu"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'menu__main' --> <!-- FILE NAME SUGGESTIONS: ✅ menu--main.html.twig ✅ menu--main.html.twig ▪️ menu.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/menu/menu--main.html.twig' --> <ul class="nav navbar-nav"> <li class="nav-item"> <a href="/about" class="nav-link" data-drupal-link-system-path="node/45">About</a> </li> <li class="nav-item dropdown"> <a href="/browse" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">Browse</a> <div class="dropdown-menu"> <a href="/data/dataset/" class="dropdown-item">Data Catalogue</a> <a href="/data/dataset/?tags=geospatial" class="dropdown-item" data-drupal-link-query="{&quot;tags&quot;:&quot;geospatial&quot;}">Geospatial</a> <a href="/data/dataset/?tags=insights" class="dropdown-item" data-drupal-link-query="{&quot;tags&quot;:&quot;insights&quot;}">Insights</a> <a href="/curatedviews" class="dropdown-item" data-drupal-link-system-path="node/49">Curated Views</a> <a href="/gtfs-studio/" class="dropdown-item">GTFS Studio</a> </div> </li> <li class="nav-item dropdown"> <a href="/menudevelopers" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">Developers</a> <div class="dropdown-menu"> <a href="/developers" class="dropdown-item" data-drupal-link-system-path="developers">Developers</a> <a href="/dataset-status" class="dropdown-item" data-drupal-link-system-path="dataset-status">Data Updates</a> <a href="/tfnsw-apistatus" class="dropdown-item" data-drupal-link-system-path="tfnsw-apistatus">API Status</a> <a href="/faqs" class="dropdown-item" data-drupal-link-system-path="node/95">FAQs</a> </div> </li> <li class="nav-item dropdown"> <a href="/datainaction" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">Data In Action</a> <div class="dropdown-menu"> <a href="/datastories" class="dropdown-item" data-drupal-link-system-path="datastories">Data Stories</a> <a href="/innovation" class="dropdown-item" data-drupal-link-system-path="node/96">Innovation Challenges</a> </div> </li> <li class="nav-item"> <a href="/datapartnerships" class="nav-link" data-drupal-link-system-path="node/28">Data Partnerships</a> </li> <li class="nav-item dropdown"> <a href="/forum" class="nav-link dropdown-toggle" data-bs-toggle="dropdown">Forum</a> <div class="dropdown-menu"> <a href="/blog" class="dropdown-item" data-drupal-link-system-path="blog">Blog</a> <a href="https://opendataforum.transport.nsw.gov.au" class="dropdown-item">Forum</a> </div> </li> </ul> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/menu/menu--main.html.twig' --> </div> <!-- END OUTPUT from 'themes/contrib/radix/templates/block/block--system-menu-block.html.twig' --> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/region/region.html.twig' --> </div> </div> </div> </nav> <!-- NAVBAR START --> <main class="py-0"> <header class="page__header mb-2"> <div class="container"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'region' --> <!-- FILE NAME SUGGESTIONS: ▪️ region--header.html.twig ✅ region.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/region/region.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-messages.html.twig ✅ block--system-messages-block.html.twig ▪️ block--system.html.twig ▪️ block.html.twig --> <!-- BEGIN OUTPUT from 'core/modules/system/templates/block--system-messages-block.html.twig' --> <div data-drupal-messages-fallback class="hidden"></div> <!-- END OUTPUT from 'core/modules/system/templates/block--system-messages-block.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-breadcrumbs.html.twig ▪️ block--system-breadcrumb-block.html.twig ▪️ block--system.html.twig ✅ block.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/radix/templates/block/block.html.twig' --> <div class="block block--tfnsw-opendata-theme-breadcrumbs"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'breadcrumb' --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/navigation/breadcrumb.html.twig' --> <nav aria-label="breadcrumb" class="breadcrumb p-0 mb-2"> <ol class="breadcrumb mb-0 p-0"> <li class="breadcrumb-item "> <a href="/">Home</a> </li> <li class="breadcrumb-item "> <a href="/developers">Developers</a> </li> </ol> </nav> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/navigation/breadcrumb.html.twig' --> </div> <!-- END OUTPUT from 'themes/contrib/radix/templates/block/block.html.twig' --> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/region/region.html.twig' --> </div> </header> <div class="page__content pb-4" id="main-content"> <div class="container"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'region' --> <!-- FILE NAME SUGGESTIONS: ▪️ region--content.html.twig ✅ region.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/region/region.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-pagetitle.html.twig ▪️ block--page-title-block.html.twig ▪️ block--core.html.twig ✅ block.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/radix/templates/block/block.html.twig' --> <div class="block block--tfnsw-opendata-theme-pagetitle"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'page_title' --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/content/page-title.html.twig' --> <h1 class="page-title"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: ▪️ field--node--title--developers--full.html.twig ▪️ field--node--title--developers.html.twig ✅ field--node--title.html.twig ▪️ field--node--developers.html.twig ▪️ field--title.html.twig ▪️ field--string.html.twig ▪️ field.html.twig --> <!-- BEGIN OUTPUT from 'core/modules/node/templates/field--node--title.html.twig' --> <span>Troubleshooting</span> <!-- END OUTPUT from 'core/modules/node/templates/field--node--title.html.twig' --> </h1> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/content/page-title.html.twig' --> </div> <!-- END OUTPUT from 'themes/contrib/radix/templates/block/block.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-content.html.twig ✅ block--system-main-block.html.twig ▪️ block--system.html.twig ▪️ block.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/radix/templates/block/block--system-main-block.html.twig' --> <div class="block block--tfnsw-opendata-theme-content block--system-main"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'node' --> <!-- FILE NAME SUGGESTIONS: ▪️ node--52--full.html.twig ▪️ node--52.html.twig ▪️ node--developers--full.html.twig ▪️ node--developers.html.twig ▪️ node--full.html.twig ✅ node.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/content/node.html.twig' --> <article data-history-node-id="52" class="node node--promoted developers developers--full"> <div class="node__content"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'links__node' --> <!-- FILE NAME SUGGESTIONS: ▪️ links--node.html.twig ✅ links.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/navigation/links.html.twig' --> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/navigation/links.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: ▪️ field--node--field-caption--developers--full.html.twig ▪️ field--node--field-caption--developers.html.twig ▪️ field--node--field-caption.html.twig ▪️ field--node--developers.html.twig ▪️ field--field-caption.html.twig ▪️ field--text-long.html.twig ✅ field.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/field/field.html.twig' --> <div class="field field--name-field-caption field--type-text-long field--label-hidden field__item"><p>Tips and tricks for troubleshooting your applications.&nbsp;</p></div> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/field/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: ▪️ field--node--body--developers--full.html.twig ▪️ field--node--body--developers.html.twig ▪️ field--node--body.html.twig ▪️ field--node--developers.html.twig ▪️ field--body.html.twig ▪️ field--text-with-summary.html.twig ✅ field.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/field/field.html.twig' --> <div class="field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>The data we provide on the Open Data Hub is often acquired directly from an operational system, which means a lot of work happens in the background to cleanse and make the data more useful. However, there are still a lot of quirks when working with our data. We have learned a lot from third-party app developers and have put together some tips and tricks to help you troubleshoot your problems.</p><h5><strong>HTTP standards</strong></h5><p><strong>I’m having trouble checking whether an API has been updated or not</strong></p><p>Some APIs return a last-modified header and timestamp in the HTTP response. If you send this timestamp in an if-modified-since header, you may not get back an HTTP status of 304 (not modified). Instead, in some cases, you may need to use the HEAD HTTP method to retrieve the last-modified timestamp without retrieving the data.</p><p><strong>I’ve encountered some issues with OAuth 2 authentication</strong></p><p>The OAuth 2 authentication method was the old way of connecting to our APIs in the previous version of the gateway/portal. OAuth 2 allowed a non-standard security protocol for obtaining OAuth tokens. We now recommend that you only use the API key method of authentication, which is simpler and safer to use.</p><p><strong>I’m getting a HTTP 401 error when calling an API, what’s wrong?</strong></p><p>If you’re getting a 401 error when you call an API it means that you’re either not passing your authentication parameters correctly or you have not selected the API you’re using in your application setup. For more information on how to set up your application and use our data please follow our <a href="/developers/userguide">User Guide</a>.</p><h5><strong>Real-time Public Transport (GTFS-R feed)</strong></h5><p><strong>Why can’t I find all services in the GTFS-R data feed?</strong></p><p>The GTFS-Realtime data feed does not include any scheduled services that are not real-time. To see all scheduled services you need to look at the Timetables Complete GTFS (GTFS bundle) dataset or the TXC bundle. Also make sure to have a look at the <a href="/data/dataset/reference-tables-tfnsw-gtfs-feeds">Overlapping Agencies in GTFS Feeds</a> list that outlines all the agencies with real-time services.</p><p><strong>How do I ensure customers have the most accurate information in my app?</strong></p><p>Real-time data isn’t always accurate. Various issues such as connectivity and GPS issues can affect the data feed. If you are developing a real-time app always make sure to use scheduled data as a fall back indicate when data is real-time as clearly as possible.</p><p><strong>The API response is in a weird binary format that is unreadable, what do I do?</strong></p><p>When you call the API, the response will be returned in binary format. You need to use a&nbsp;<a href="/sites/default/files/2023-08/gtfs-realtime.proto_.txt">.proto file</a>&nbsp;to convert the data into readable format and apply our modifications. To learn more about protocol buffer files go to&nbsp;<a href="https://developers.google.com/protocol-buffers/docs/proto">https://developers.google.com/protocol-buffers/docs/proto</a></p><ul><li><a href="/sites/default/files/2023-08/gtfs-realtime_1007_extension.proto__0.txt">TfNSW proto file</a>&nbsp;-&nbsp;describes the tfnsw vehicle descriptor extension 1007 that includes aircond and wheelchair accessibility (***after downloading please change the file extension to ".proto", ie. remove "_.txt")</li><li><a href="/sites/default/files/2023-08/tfnsw-gtfs-realtime-carriage.proto_.txt">Proto File for NLR and Metro</a>&nbsp;-&nbsp;download the proto file for Newcastle Light Rail and Metro</li><li><a href="/sites/default/files/2023-08/tfnsw-realtime%20%28002%29.proto_.txt">Proto File for CBD and South East Light Rail</a> - download the proto file for CBD and South East Light Rail</li></ul><p><strong>I’m calling the real-time APIs every second and hitting my quota limit, what can I do?</strong></p><p>The real-time files are updated every 10 to 15 seconds from the operational systems therefore there is no point in calling the APIs every second. We recommend that you call the APIs and update your app data every 15 seconds.</p><p><strong>I’m having trouble identifying buses with special livery or Wi-Fi</strong></p><p>The buses real-time feed (Vehicle Positions API) has a special_vehicle_attributes parameter that signifies whether a bus is a 85th anniversary bus, has Wi-Fi or is a Christmas bus depending on its value. For more information please read the buses technical documentation.</p><p><strong>I’m including future projections in my app, why am I seeing different ranges of future dates between modes?</strong></p><p>Future projections for data feeds might not necessarily match between GTFS and real-time since they come from different systems. Some systems require the feeds to have at least 100 days of data in the future while others have a set number of days. We recommend that you always use the latest available bundles and files to ensure that the data is up to date and reliable.</p><h5><strong>Public Transport Service Alerts</strong></h5><p><strong>I’m having trouble setting up service alerts in my app</strong></p><p>Alerts are available for all modes in GTFS-R format. You can also use the Trip Planner API add_info endpoint to get full service alerts for all modes. This will make your app more efficient and prevent the need to clean up duplicate entries if using multiple feeds. For more information about this please make sure to read the <a href="/sites/default/files/2024-10/Trip%20Planner%20API%20manual-opendataproduction%20v3.2_0.pdf">Trip Planner API manual</a>.</p><h5><strong>GTFS and GTFS-R Updates</strong></h5><p><strong>I’m not sure when and how often I should update my app’s GTFS files</strong></p><p>The GTFS files will update daily overnight with each transport mode having a different time. Therefore you should only need to download/update your files once per day. For more details about each mode see mode specific sections below.</p><p><strong>I’m not sure how often I should update my app’s real-time data</strong></p><p>The real-time files/APIs are updated once every 10 to 15 seconds, therefore we recommend you update real-time data every 15 seconds. There is no point calling the APIs more frequently than this since the data won’t change and you risk hitting your quota or rate limit.</p><h5><strong>Sydney Trains</strong></h5><p><strong>When does the Sydney Trains GTFS bundle update?</strong></p><p>The Sydney Trains GTFS files update daily at around 02:00am. Updates will contain regular changes of trip/calendar keys while in most cases shapes can change without the shape_id changing.</p><p><strong>What are RTTA_DEF and RTTA_REV services in the real-time feed?</strong></p><p>Services with route_id as RTTA_DEF or RTTA_DEF are non-revenue services and should be excluded by app developers and not presented to customers.&nbsp;Sydney Trains Charter services should also not be displayed to paying customers. Check the <a href="/developers/documentation#trains">Sydney Trains release notes</a>&nbsp;for the relevant run numbers.</p><p><strong>I’m seeing duplicate services in the Trains feed, what am I doing wrong?</strong></p><p>You need to exclude some services from the NSW Trains and Sydney Trains feeds to avoid duplication, for more information about this please make sure to read the <a href="/sites/default/files/2024-10/NSWTrains_4trak_Technical.pdf">NSW Trains technical documentation</a>.</p><p><strong>There seems to be additional stops in some trips that aren’t used</strong></p><p>Extra stops are presented in the Sydney Trains feed as they include passing stops in trips that are flagged as no set down/no pick up, and should not be passed on to customers. The stops are not included at all in the Complete GTFS dataset, as they effectively aren’t in use.</p><p><strong>I’m having trouble producing the right shapes for train lines</strong></p><p>Best practice is to have a look at the shapes.txt file included in the GTFS bundle and use the lat/long coordinates to produce your own shapes. Be aware that shapes do not always match trips 100%. There may be missing stops at the beginning of the shape or extra stops at the end of the shape.</p><p><strong>I’m having trouble working out train delay information</strong></p><p>To determine the train delay information for scheduled services (ie. have a trip schedule_relationship of SCHEDULED), only a delay field is provided. You should obtain the scheduled arrival time and departure time from stop_times.txt (in the GTFS for real-time dataset) and add the delay seconds. Negative value denotes the vehicle is expected to arrive or depart ahead of schedule. Match each stop_time_update by the stop_id provided in the realtime and static feeds.</p><p><strong>What about delay information for replacement services?</strong></p><p>To determine the train delay information for replacement services (ie. have a trip schedule_replacement of REPLACEMENT), these include a timestamp for arrival and departure. Delay field is also provided for stops which were already part of the schedule (in stop_times.txt) and have not been skipped, added or replaced.</p><p><strong>I’m not sure how much time I should have for transport connections and transfers in my app</strong></p><p>To figure out the amount of time needed for connections please have a look at the following documentation, <a href="/sites/default/files/2024-10/Connections%20Guide%20RSDO%202017%20Timetable.pdf">Connections Guide RSDO 2017 Timetable.pdf</a>.</p><p><strong>Why am I seeing changing trip and service IDs?</strong></p><p>The timetable ID and version ID of each weekday/weekend train plan is used as a component in GTFS service/trip IDs generated by RTTA. Any single change in a train plan will increment the version ID meaning all related trip/service IDs will change.</p><p><strong>Why does the start date for the active working timetable keep changing?</strong></p><p>The current behaviour in RTTA is that the startDate increments to be at minimum the current day, so for the current active daily working timetable will change daily. The GTFS bundle keying now changes daily at minimum of 5 days a week.</p><p><strong>Why am I seeing the REPLACEMENT schedule relationship value? I thought that wasn't part of the spec any more.</strong></p><p>The current official GTFS-realtime specification is not compatible with the Sydney Trains GTFS-real-time feed. REPLACEMENT has been removed from the official GTFS-realtime specification but the Sydney Trains feed still contains it.</p><h5><strong>NSW Trains</strong></h5><p><strong>When does the NSW Trains GTFS bundle update?</strong></p><p>GTFS files for NSW Trains updates daily. The bundle covers the next 35 days of the daily working timetable. Each trip is defined with a unique ID for each day it will operate on, so there is long term key consistency 34 days in advance.&nbsp;For more information about this please make sure to read the <a href="/sites/default/files/2024-10/NSWTrains_4trak_Technical.pdf">NSW Trains Technical Documentation</a>.</p><h5><strong>Buses</strong></h5><p><strong>When does the Buses GTFS bundle update?</strong></p><p>GTFS files for buses updates daily, normally around 3:30am. Has key consistency over time - the key of a trip appears to be linked to the definition of it, so if the route of a bus changes temporarily then a new trip ID will be assigned to it.</p><p><strong>Why am I seeing trips being added and removed from the buses feed?</strong></p><p>The buses feed will periodically have new sets of trips added/removed from it as operators upload new data - sometimes only 1-2 days before the added trips will commence operation (so updating regularly is important, but taking a few hours to process updates is fine).</p><p><strong>I’m having trouble finding the features of a bus</strong></p><p>Features such as air conditioning or wheelchair access can be found in the vehicle descriptor parameters in the Vehicle Positions API. The vehicle descriptor extension is described in the TfNSW Proto File.</p><p><strong>I’m having trouble finding the vehicle occupancy indicator for buses</strong></p><p>The vehicle occupancy indicator can be found in the Vehicle Positions API for bus services.</p><p><strong>I’m having trouble finding what the passenger&nbsp;occupancy status for buses mean</strong></p><p>The degree of passenger occupancy of the vehicle can be found in the <a href="/sites/default/files/2023-08/gtfs-realtime.proto_.txt">TfNSW proto file</a>.</p><h5><strong>Ferries</strong></h5><p><strong>When does the Sydney Ferries GTFS bundle update?</strong></p><p>The GTFS files for Sydney Ferries update daily.&nbsp;Trip IDs are mostly consistent over time.</p><p><strong>Why do the calendars for ferries keep changing?</strong></p><p>Calendars in the ferries feed can change on a daily basis, particularly around public holidays, due to limitations of the operational system timetabling. Always make sure to use the latest bundles.</p><h5><strong>Light Rail</strong></h5><p><strong>When does the Light Rail GTFS bundle update?</strong></p><p>The GTFS files for Light Rail services are updated ad-hoc as necessary since it is a manual process. It’s best to monitor it periodically.</p><p><strong>Why am I seeing platform code numbers in the feed if Light Rail stations don’t have platform numbers?</strong></p><p>Platform_code is populated. Light Rail stops do not have platform number displayed on the ground, but these have been added to indicate a direction for each. 1 = toward Central, 2 = toward Dulwich Hill.</p><h5><strong>Live Traffic Data</strong></h5><p><strong>How often does Live Traffic data update?</strong></p><p>There are no set intervals for updates, the data feed is updated whenever something changes.</p><h5><strong>Other Tips, Tricks and Info</strong></h5><ul><li>For the Sydney Trains feed be careful when applying trip_headsign and stop_headsign correctly so “empty trains” do not appear. For app developers who do not know the Sydney Trains network, there is a loop. Please check the GTFS Specifications and apply block_id to join services.</li><li>There is a character limit on Sydney Trains headsigns so you need to do a transformation.</li><li>For the Sydney Trains feed, the calendar service_id's are constructed using the format {timetableId}.{timetableVersionId}.{dopRef}-{startDate}, while the trip_id’s are constructed using the format {tripName}.{serviceId}.{setType}.{numberOfCars}.{tpsTripId}.</li></ul><h5><strong>Need more help?</strong></h5><p>If you need more help please have a look at our <a href="/developers/resources">Developer Resources</a> and also make sure to read all of our <a href="/developers/documentation">Technical Documentation</a> before you start working with our data and APIs.</p></div> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/field/field.html.twig' --> </div> </article> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/content/node.html.twig' --> </div> <!-- END OUTPUT from 'themes/contrib/radix/templates/block/block--system-main-block.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-tfnswodiebot.html.twig ▪️ block--tfnsw-odiebot-block.html.twig ✅ block--tfnsw-odiebot.html.twig ▪️ block.html.twig --> <!-- BEGIN OUTPUT from 'modules/custom/tfnsw_odiebot/templates/block--tfnsw-odiebot.html.twig' --> <div id="block-tfnsw-opendata-theme-tfnswodiebot"> <div id="tfnsw-odiebot-container"></div> <script type="text/javascript" src="https://unpkg.com/markdown-it/dist/markdown-it.min.js"></script> <script src="/sites/default/files/modules/custom/tfnsw_odiebot/public/js/odiebot.js" defer onload="odiebot('mjoBMqfapUk.tEShB4kCsqowjwDTHoEV9UNfxujkVkSQk0t2d8jPC6Y')"></script> </div> <!-- END OUTPUT from 'modules/custom/tfnsw_odiebot/templates/block--tfnsw-odiebot.html.twig' --> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/region/region.html.twig' --> </div> </div> </main> <!-- FOOTER START --> <footer class="page__footer"> <div class="container-fluid text-light bg-primary pt-4"> <div class="container"> <div class="d-flex flex-wrap justify-content-lg-between"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'region' --> <!-- FILE NAME SUGGESTIONS: ▪️ region--footer.html.twig ✅ region.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/region/region.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-contact.html.twig ✅ block--system-menu-block--contact.html.twig ▪️ block--system-menu-block.html.twig ▪️ block--system.html.twig ▪️ block.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/block/block--system-menu-block--contact.html.twig' --> <div class="block block--tfnsw-opendata-theme-contact block--system-menu pe-5 pb-4"> <h5 class="text-text-light-emphasis">CONTACT </h5> <ul id="block-tfnsw-opendata-theme-contact" class="nav flex-column" style="--bs-nav-link-padding-x: 0rem; --bs-nav-link-padding-y: 0.4rem;"> <li class="nav-item"> <a href="mailto:opendataprogram@transport.nsw.gov.au" class="nav-link">Enquiries &amp; Feedback</a> </li> </ul> </div> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/block/block--system-menu-block--contact.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-support.html.twig ✅ block--system-menu-block--support.html.twig ▪️ block--system-menu-block.html.twig ▪️ block--system.html.twig ▪️ block.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/block/block--system-menu-block--support.html.twig' --> <div class="block block--tfnsw-opendata-theme-support block--system-menu pe-5 pb-4"> <h5 class="text-text-light-emphasis">SUPPORT</h5> <ul id="block-tfnsw-opendata-theme-support" class="nav flex-column" style="--bs-nav-link-padding-x: 0rem; --bs-nav-link-padding-y: 0.4rem;"> <li class="nav-item"> <a href="https://opendataforum.transport.nsw.gov.au" class="nav-link">Forum</a> </li> <li class="nav-item"> <a href="mailto:OpenDataHelp@transport.nsw.gov.au" class="nav-link">Support</a> </li> <li class="nav-item active"> <a href="/developers/troubleshooting" class="nav-link is-active" data-drupal-link-system-path="node/52" aria-current="page">Troubleshooting</a> </li> </ul> </div> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/block/block--system-menu-block--support.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-legal.html.twig ✅ block--system-menu-block--legal.html.twig ▪️ block--system-menu-block.html.twig ▪️ block--system.html.twig ▪️ block.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/block/block--system-menu-block--legal.html.twig' --> <div class="block block--tfnsw-opendata-theme-legal block--system-menu pe-5 pb-4"> <h5 class="text-text-light-emphasis">LEGAL</h5> <ul id="block-tfnsw-opendata-theme-legal" class="nav flex-column" style="--bs-nav-link-padding-x: 0rem; --bs-nav-link-padding-y: 0.4rem;"> <li class="nav-item"> <a href="/sites/default/files/2024-09/TfNSW-Open-Data-Portal-Terms.pdf" class="nav-link">Terms</a> </li> <li class="nav-item"> <a href="/sites/default/files/2024-09/TfNSW-Privacy.pdf" class="nav-link">Privacy Policy</a> </li> <li class="nav-item"> <a href="/sites/default/files/2024-09/TfNSW-Acceptable-Use-Policy.pdf" class="nav-link">Acceptable Use Policy</a> </li> <li class="nav-item"> <a href="/datalicence" class="nav-link" data-drupal-link-system-path="node/90">Data Licence</a> </li> </ul> </div> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/block/block--system-menu-block--legal.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'block' --> <!-- FILE NAME SUGGESTIONS: ▪️ block--tfnsw-opendata-theme-follow.html.twig ✅ block--system-menu-block--follow.html.twig ▪️ block--system-menu-block.html.twig ▪️ block--system.html.twig ▪️ block.html.twig --> <!-- 💡 BEGIN CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/block/block--system-menu-block--follow.html.twig' --> <div class="block block--tfnsw-opendata-theme-follow block--system-menu pe-5 pb-4"> <h5 class="text-text-light-emphasis">FOLLOW</h5> <ul id="block-tfnsw-opendata-theme-follow" class="nav flex-column" style="--bs-nav-link-padding-x: 0rem; --bs-nav-link-padding-y: 0.4rem;"> <li class="nav-item"> <a href="https://twitter.com/DataTfNSW" class="nav-link">X (formerly Twitter)</a> </li> </ul> </div> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/block/block--system-menu-block--follow.html.twig' --> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/region/region.html.twig' --> </div> </div> <div class="container"> <div class="d-flex flex-wrap justify-content-md-between align-items-md-center"> <div class="footer__serpent d-flex align-items-center justify-content-between w-100"> <p>Transport for NSW recognise and celebrate the diversity of Aboriginal peoples and their ongoing cultures and care of Country. We pay respect to traditional custodians and Elders past and present.</p> <img alt="Serpent" width="25%" height="auto" src="/themes/custom/tfnsw_opendata_theme/serpent-logo.png"> </div> </div> </div> </div> </footer> <!-- FOOTER END --> </div> <!-- END CUSTOM TEMPLATE OUTPUT from 'themes/custom/tfnsw_opendata_theme/templates/page/page.html.twig' --> </div> <!-- END OUTPUT from 'core/modules/system/templates/off-canvas-page-wrapper.html.twig' --> <script type="application/json" data-drupal-selector="drupal-settings-json">{"path":{"baseUrl":"\/","pathPrefix":"","currentPath":"node\/52","currentPathIsAdmin":false,"isFront":false,"currentLanguage":"en","themeUrl":"themes\/custom\/tfnsw_opendata_theme"},"pluralDelimiter":"\u0003","suppressDeprecationErrors":true,"tfnsw_odiebot":{"imagePaths":{"odiebot":"\/modules\/custom\/tfnsw_odiebot\/public\/images\/odiebot.svg","cross":"\/modules\/custom\/tfnsw_odiebot\/public\/images\/cross.svg","anotherImage":"\/modules\/custom\/tfnsw_odiebot\/public\/images\/another-image.svg"}},"user":{"uid":0,"permissionsHash":"9957a3cb925941d2e8c550cebf0c930daafb445143cf14078253320229f8cf75"}}</script> <script src="/sites/default/files/js/js_f136GZHGcA0tz4U200-veyYPT0Ou2QtoZtifGPdq61Q.js?scope=footer&amp;delta=0&amp;language=en&amp;theme=tfnsw_opendata_theme&amp;include=eJwrScsrLo_PL0jNS0ksSYwvyUjNTdUvLqnMSdUpwSaVlJOfnA0ASN8VZQ"></script> </body> </html> <!-- END OUTPUT from 'themes/contrib/radix/templates/layout/html.html.twig' -->

Pages: 1 2 3 4 5 6 7 8 9 10