Exemple de réponse d'un item (une circulation)

Voici un des items obtenus. Sa lecture vous sera assez simple, quelques points cependant.
{
    "calendars": [
Liste des périodes de validité de la circulation donnée. Ici, les données présentées signifient que le train circule du 28/08/2017 au 02/09/2017 les lundi, mardi, mercredi, jeudi et vendredi.
Ce n'est pas la manière la plus simple de récupérer ces données de validité, le validity_pattern contenu en fin de réponse est nettement plus simple à prendre en compte informatiquement.
       {
            "active_periods": [
               {
                    "begin": "20170828",
                    "end": "20170902"
                }
            ],
            "week_pattern": {
                "friday": true,
                "monday": true
                "thursday": true,
                "tuesday": true,
                "wednesday": true,
            }
        }
    ],
« codes » et « disruptions » ne nous intéressent pas, nous voulons juste les horaires et circulations théoriques.
    "codes": [],
    "disruptions": [],
L'identification de la circulation se fait logiquement par le numéro de circulation SNCF « name » attention cependant, il n'est pas toujours unique (des bus partagent parfois des mêmes numéros, voire du FRET avec du Transilien, pas totalement fiable !), et l'id qui lui est forcément unique (vous aurez remarqué qu'il contient le numéro SNCF).
    "id": "vehicle_journey:OCE:SN855807F01001",
    "journey_pattern": {
        "id": "journey_pattern:2",
        "name": "journey_pattern:2"
    },
    "name": "855807",
Les stop_times sont en réalité la liste des arrêts avec les heures d'arrivée et de départ, headsign correspond au numéro de la circulation affiché (attention à la parité, ou aux lignes Transiliennes) ainsi que le lieu stop_point
    "stop_times": [
       {
            "arrival_time": "060000"
            "departure_time": "060000",
            "headsign": "855807",
Un arrêt est déterminé par sa géolocalisation (lat/lon), son id unique, qui contient notamment à sa fin le numéro UIC de l'arrêt sur 2+6 chiffres.
Le label est le nom de l'arrêt ou de la gare (ce n'est pas la même chose, voir la page des définitions, name également (à discriminer ?).

Suivent à la suite la liste des arrêts prévus, dans l'ordre d'arrivée.

            "stop_point": {
                "coord": {
                    "lat": "48.103533",
                    "lon": "-1.672321"
                },
                "equipments": [],
                "id": "stop_point:OCE:SP:TrainTER-87471003"
                "label": "Rennes (Rennes)",
                "links": [],
                "name": "Rennes",
            },
        },
       {...},
       {...},
       {...},
       {...},
       {...},
       {...},
       {...},
       {...}
    ],
L'objet trip contient de quoi identifier la circulation à nouveau, de la même manière que nous avons vu au début (les données sont d'ailleurs les mêmes).
    "trip": {
        "id": "OCE:SN855807F01001",
        "name": "855807"
    }
Enfin, le validity_pattern est une manière plutôt commode de représenter les validités de circulation d'une circulation puisqu'il s'agît bêtement d'indiquer jour par jour si le train circule (1) ou non (0) à compter d'une date donnée (beginning_date) incluse.

L'avantage de cette représentation est qu'elle évite tout bug d'interprétation des inclusions ou exclusions pouvant être contenues dans le champ calendars vu plus haut, et est extrêmement simple à parser… :)

    "validity_pattern": {
        "beginning_date": "20170703",
        "days": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111100000000000000000000000000000000000000000000000000000000"
    },
}