As stated in the requests section, we support both JSON and XML from our RESTful endpoint as well as SOAP. The structure of the response does not change at all with the format.
Every response follows the same structure regardless of the format you use. There will always be one root response (rsp
) element that contains the entire response. The response element will always contain a time
field that has the time of the server when the request was processed. Each response will also contain a stat
element indicating the status of the response. It contains a code
field and a msg
field to help you quickly interpret the response. For specific structural details, check the documentation on each method.
Each response element will also contain a rqst
object with information about your request. It contains a method
field with the API method that is being responded to as well as a params
array containing all parameters that were supplied with the request. This should be useful for responding to requests that are made asynchronously.
The API uses status codes to indicate whether the request was successful or not. These codes are included in the stat
element and are also sent as HTTP status codes for RESTful requests. Any status code 300 or above indicate a problem occurred. Below is a list of all the potential status codes and what they mean.
200 |
The request was completed successfully. | |
400 |
A parameter was invalid. | |
401 |
The key provided is invalid. | |
403 |
The hourly request limit on the given key has been reached. | |
404 |
The requested method does not exist. | |
500 |
The server encountered an error. |
Many of the method calls return large datasets that change very infrequently (e.g. GetStops). To better accommodate caching we have included a changeset_id
to be returned with any cacheable dataset as part of the response (rsp
). It is determined by the date the data was updated and the parameters you send with the request.
Once a dataset has been returned with a changeset_id
, submitting that changeset_id
with the same parameters will generate a 202 "not modified" response from the server, indicating that the data has not changed. If the data has changed, you'll get a response like normal. If the changeset_id
, parameters, or data on the server does not match the original request, you'll receieve a new dataset.
When used in conjunction with changeset_id
, the new_changeset
field indicates whether new data is being returned. If a changeset_id
is not passed in, this field will always be true
. If an invalid changeset_id
is passed in (i.e. the data on the server has updated), this value will still be true
. However, if a valid changeset_id
is passed in with matching parameters, new_changeset
will be false
indicating that your cached data is still valid and the response is empty.
If a problem occurs, the status code and a description of the problem will be provided in the payload as follows.