API Tam

Cette API permet d'interroger le service quasi inutilisable mis à disposition des usagers par Transdev (Société qui gère les transports en commun pour la Tam) : MOBITrans®.

Grâce à cette API il vous est possible d'obtenir les horaires du prochain passage du bus/tram de chaque ligne à chaque arrêt et dans chaque direction.

MOBITrans® étant un service commun aux transports des agglomérations de Montpellier, Genoble, Orléans et Reims, il est tout à fait possible de l'utiliser pour ces villes !

Sources de données

Liste des arrêts et heure du prochain passage en tems réel : MOBITrans®. Attention, cette source n'est pas très stable. En effet, à de nombreuses reprises, le service a montré de multiples défaillances temporaires (lignes qui disparaissent, directions inexistantes…).

Noms réels des arrêts (et prochainement horaires théoriques selon la date et l'heure) : tam.agilisprod.com accessible sur le site de la Tam.

Transdev est l'éditeur de ces deux sources de données, mais aucune mentions concernant la propriété de ces données n'est clairement définie sur les sites (ni aucune mentions légales pourant obligatoires).


À propos de cette API

Cette API est développée par Jean-François VIAL qui assume l'entière responsabilité, notamment juridique, de cette API.

Cette API n'est pas une application, c'est une utilitaire qui va chercher des données proposées en libre accès par différents sites web et permet à des application de les exploiter directement.

Code source sous licence GPLv3.

Vous pouvez contribuer à cette API en remontant des bugs proposer des patches ou faire un fork.

Aucune donnée n'est distribuée avec cette API.

Usage

L'usage de cette API est très simple : tout se passe en GET et il n'y a, pour l'instant, que deux commandes décrites ci-après.

Les réponses sont toujours en JSON suivant le même format : un tableau comportant deux entrées, l'une nommée "status", l'autre "response".

"status" peut valoir "ok" ou "error" suivant si la requête est bonne ou pas.

"response" contient soit un tableau, soit un texte explicatif de l'erreur.

Dans vos applications, veuillez spécifier la source de vos données via l'une des mentions : «MOBITrans®» ou «API Tam» accompagné d'un lien vers la source.

Merci d'utiliser cette API depuis votre propre serveur et de ne pas interroger directement ce serveur ormis pour des tests.

Installation / Initialisation

Copiez simplement le fichier index.php et adaptez le à vos besoins si nécessaire.

Vous aurez besoin uniquement de PHP5, aucune extention non native n'est nécessaire.

Avant d'opérer la première requête, l'API a besoin de récupérer un certain nombre d'informations depuis les différentes sources de données et de les mettre en cache dans un fichier (probablement, plus tard une base de données).
Cette opération est automatique (effectuée au premier appel à l'API et prends un certain temps.

Si les données transitant par l'API étaient ouvertes et/ou libres, une version de ce fichier de cache aurait pu être distribué avec cette API, hors, hélas, ce n'est pas le cas : cette opération de mise en cache est obligatoire.

Afin de renouveler ce cache, si besoin, il suffit de le supprimer : il sera recréé automatiquement au prochain appel de l'API.


Derniers changements (21 avril 2012)

  • Compatibilité complète vis à vis du nouveau réseau Tam
  • Réparation de la récupération de la liste des lignes passant par un arrêt (cassé suite à la modification de la source Agilis
  • Ajout de la géolocalisation de chaque arrêt

Liste des arrêts / lignes

Exemple: http://www.modulaweb.fr/apitam/?request=getStopsList

Arguments:
request = getStopsList
fullInfos = 1 (facultatif)

Vous récupérez un tableau associatif où chaque clé est le numéro de ligne, et chaque valeur la liste des noms des arrêts.

Ce sont ces numéros de lignes et ces noms d'arrêts qu'il faudra utiliser avec la deuxième commande.

En rajoutant l'argument «fullInfos» vous obtiendrez à la place du simple nom de l'arrêt, un autre tableau associatif du type :

"Chateau D'o": {
    "id": "17402888",
    "name": "Château d'Ô",
    "town": "Montpellier",
    "lines": {
        "id": "17402888",
        "name": "Château d'Ô",
        "town": "Montpellier",
        "lines": [
            {
                "id": "23894380",
                "number": "1",
                "name": "Mosson - Odysseum"
            },
            {
                "id": "17402778",
                "number": "16",
                "name": "Tournezy - Euromédecine"
            },
            {
                "id": "24910222",
                "number": "7",
                "name": "J. Monnet - Martelle/Bouisses"
            }
        ]
    }

}}

où :
id est l'indentifiant de cet arrêt dans la deuxième source de données (tam.agilisprod.com),
name est le nom réel de l'arrêt,
town est la ville où se trouve l'arrêt,
lines une liste des lignes en correspondance à cet arrêt (certaines lignes n'étant pas encore utilisables directement via l'API).

Les informations de géolocalisation viendrons bientôt.

Tester cette commande (liste simple)

Tester cette commande (fullInfos)

Prochain passage

Exemple: http://www.modulaweb.fr/apitam/?request=getTransit&line=3&stop=Astruc&direction=Mosson

Arguments:
request = getTransit
line = le numéro de la ligne
stop = le nom de l'arrêt
direction = le nom de la direction de la ligne (optionnel)

Avec cette commande vous récupérez un tableau associatif vous donnant les deux prochains horaires de passage de la ligne "ligne" à l'arrêt "stop" en direction de "direction", plus une indication précisant si ce sont des données réelles ou théoriques.

si vous ne spécifiez pas la direction, vous obtiendrez ces mêmes informations pour chaque direction de la ligne qui dessert l'arrêt.

Tester cette commande

Tester cette commande (sans la direction)