Envoyer un trajet
Un trajet est un couple passager.ère / conducteur.rice ayant des points et de horaires de départ et d'arrivée. Si une conductrice covoiture avec plusieurs passagères, plusieurs trajets sont déclarés.
Unités de mesure
Les unités utilisées pour les valeurs sont :
- montants financiers en centimes d'Euros
- distances en mètres
Données financières
Le principe est de coller au plus près avec la réalité comptable (transaction usager) et d'avoir suffisamment d'informations pour recalculer le coût initial du trajet.
Ainsi, les propriétés passenger.contribution
et driver.revenue
combinées au tableau incentives
doivent permettre ce calcul.
Ceci afin de s'assurer du respect de la définition du covoiturage et de la bonne application des politiques incitatives gérées par le registre.
Les données envoyées en
passenger.contribution
etdriver.revenue
sont utilisées dans les attestations de covoiturage à destination des employeurs (Forfait Mobilités Durables).
Validation
Le schéma de données est présenté au format JSON Schema Draft-07.
Vérification
Les vérifications sont faites de manière asynchrone.
Le statut ne peut plus changer 48h après la date de fin du trajet.
En cas d'indisponibilité du ou des services, le trajet est considéré comme ok
après 48h
Détection de fraude
Dans le cadre de la fraude inter opérateurs, les opérateurs sont tenus de vérifier le statut du trajet au plus tôt 24h après la réalisation de celui-ci.
Ces trajets seront retournés avec un champs status
à fraud_error
et un label dans fraud_error_labels
à interoperator_fraud
.
L'algorithme de détection de fraude inter opérateurs est appliqué sur tous les trajets envoyés.
Détection d'anomalie
Le trajet est incohérent ou physiquement impossible. Le trajet envoyé rentre en conflit avec un autre sur plan temporel ou spacial Voir la section du schema "anomaly_label" pour plus de détails
Body Required
-
Identifiant généré par l'opérateur. Doit être unique par couple conducteur/passager
-
Identifiant généré par l'opérateur pour regrouper des trajets (plusieurs passagers avec un même conducteur)
-
operator_class Required
classe de preuve correspondant aux spécifications définies dans Classes de preuve de covoiturage.
Values are
A
,B
, orC
. -
Tableau reprenant la liste complète des incitations appliquées (ordre d'application, montant, identifiant de l'incitateur). Si aucune incitation, envoyer un tableau vide.
Ordre par défaut
Par défaut, l'ordre d'application des politiques incitatives est le suivant :
- Territoire (AOM, Région, ...)
- Sponsors (incitations employeur, CE, etc.)
- Opérateur (opération promotionnelle, offres, etc.)
-
licence_plate string
Plaque d'immatriculation du véhicule
-
Position lat/lon + date du passager
Additional properties are NOT allowed.
-
Position lat/lon + date du passager
Additional properties are NOT allowed.
-
Distance exprimée en mètre
Minimum value is
0
, maximum value is1000000
. -
Additional properties are NOT allowed.
-
Additional properties are NOT allowed.
Responses
-
201 application/json
OK. Le trajet a bien été enregistré.
-
400 application/json
Mauvaise requête
-
401 application/json
Non authentifié. Le token applicatif est manquant ou invalide
-
403 application/json
Accès refusé Les permissions de votre token applicatif ne vous permettent pas de créer une attestation. Vous pouvez générer un nouveau token et réessayer. Si le problème persiste, contactez notre équipe.
-
Un trajet similaire a déjà enregistré.
curl \
-X POST http://api.example.com/journeys \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"operator_journey_id":"string","operator_trip_id":"string","operator_class":"A","incentives":[{"index":0,"amount":100,"siret":"11000101300017"}],"licence_plate":"string","start":{"datetime":"2021-01-01T11:00:00Z","lat":47.682821,"lon":-0.557483},"end":{"datetime":"2021-01-01T11:00:00Z","lat":47.682821,"lon":-0.557483},"distance":42.0,"driver":{"identity":{"identity_key":"string","travel_pass":{"name":"navigo","user_id":"00-MFR-6782929"},"phone":"+33601020304, +590690101010","phone_trunc":"+336010203, +5906901010","driving_license":"051227308989","operator_user_id":"d2e8a6c4-9e3a-4b6f-8e8d-9f7a6b5c4d3e","over_18":true},"revenue":42.0},"passenger":{"identity":{"identity_key":"string","travel_pass":{"name":"navigo","user_id":"00-MFR-6782929"},"phone":"+33601020304, +590690101010","phone_trunc":"+336010203, +5906901010","driving_license":"051227308989","operator_user_id":"d2e8a6c4-9e3a-4b6f-8e8d-9f7a6b5c4d3e","over_18":true},"payments":[{"index":0,"amount":100,"siret":"11000101300017","type":"string"}],"contribution":42.0,"seats":1}}'
{
"operator_journey_id": "string",
"operator_trip_id": "string",
"operator_class": "A",
"incentives": [
{
"index": 0,
"amount": 100,
"siret": "11000101300017"
}
],
"licence_plate": "string",
"start": {
"datetime": "2021-01-01T11:00:00Z",
"lat": 47.682821,
"lon": -0.557483
},
"end": {
"datetime": "2021-01-01T11:00:00Z",
"lat": 47.682821,
"lon": -0.557483
},
"distance": 42.0,
"driver": {
"identity": {
"identity_key": "string",
"travel_pass": {
"name": "navigo",
"user_id": "00-MFR-6782929"
},
"phone": "+33601020304, +590690101010",
"phone_trunc": "+336010203, +5906901010",
"driving_license": "051227308989",
"operator_user_id": "d2e8a6c4-9e3a-4b6f-8e8d-9f7a6b5c4d3e",
"over_18": true
},
"revenue": 42.0
},
"passenger": {
"identity": {
"identity_key": "string",
"travel_pass": {
"name": "navigo",
"user_id": "00-MFR-6782929"
},
"phone": "+33601020304, +590690101010",
"phone_trunc": "+336010203, +5906901010",
"driving_license": "051227308989",
"operator_user_id": "d2e8a6c4-9e3a-4b6f-8e8d-9f7a6b5c4d3e",
"over_18": true
},
"payments": [
{
"index": 0,
"amount": 100,
"siret": "11000101300017",
"type": "string"
}
],
"contribution": 42.0,
"seats": 1
}
}
{
"operator_journey_id": "string",
"created_at": "2024-05-04T09:42:00+00:00"
}
{
"id": 1,
"error": {
"code": -32602,
"data": "data/driver/identity/phone_trunc must match format \"phonetrunc\", data/driver/identity/phone_trunc must pass \"macro\" keyword validation",
"message": "Invalid params"
},
"jsonrpc": "2.0"
}
{
"code": 401,
"error": "Unauthorized"
}
{
"code": 403,
"error": "Forbidden"
}