Schema commun à toutes les routes d'API
Ce schéma représente le processus de authentification et d'autorisation des requêtes HTTP à l'API du Registre de
Preuve de Covoiturage.
ENDPOINT
correspond à la route de l'API appelée.
flowchart TD CLIENT --> TOKEN{Token ?} TOKEN -- no --> E401[401 Unauthorized] TOKEN -- yes --> PERMS{Permissions ?} PERMS -- no --> E403[403 Forbidden] PERMS -- yes --> APIVER{Supported API version ?} APIVER -- no --> E422[422 Unprocessable Entity] APIVER -- yes --> ENDPOINT
Délais pour la réception et le traitement des trajets
La réception d'un trajet par le RPC est constituée de plusieurs étapes synchrones et asynchrones :
- 0h : date et heure de départ du trajet passager ;
- 0h - 24h : délai pour envoyer le trajet au RPC et possibilité de mettre à jour un trajet qui est en erreur ;
- 24h - 48h : phase de détection d'anomalie ou de fraude sur le trajet par le RPC ;
- +48h : calcul des incitations par le RPC sur les campagnes paramétrées ;
sequenceDiagram participant O as Opérateur participant A as API Note over O,A: 0h - 24h O->>A: envoi du trajet<br/>POST /journeys A-->>O: 200 Created O->>A: Vérification du statut<br/>GET /journeys/{operator_journey_id} A-->>O: 200 (trajet trouvé)<br/>statut dans le payload opt Modification du trajet O->>A: PATCH /journeys/{operator_journey_id} A-->>O: 200 trajet modifié end Note over O,A: 24h - 48h A--)A: Normalisation<br/>géographique (async) A--)A: Détection<br/>d'anomalie (async) A--)A: Détection<br/>de fraude (async) Note over O,A: 48h+ A--)A: Calcul des incitations<br/>sur les campagnes<br/>paramétrées (async)
Envoyer un trajet
flowchart TD R[POST /journeys] --> CHECKS{checks} --> VALID{Valid ?} VALID -- no --> E400[400 Bad Request] VALID -- yes --> UNIQ{Unique ?} UNIQ -- no --> E409[409 Conflict] UNIQ -- yes --> TERMS{Respect des CGU ?} TERMS -- no --> E422[422 Unprocessable Entity] TERMS -- yes --> OK[201 Created]
Vérifier le statut d'un trajet
flowchart TD R["GET /journeys/{operator_journey_id}"] --> CHECKS{checks} --> EXIST{Exists ?} EXIST -- no --> E404[404 Not Found] EXIST -- yes --> OK[200 Success]
Modification d'un trajet
flowchart TD R["POST /journeys/{operator_journey_id}"] --> CHECKS{checks} --> VALID{Valid ?} VALID -- no --> E400[400 Bad Request] VALID -- yes --> OK[200 Success]
Invalidation d'un trajet
flowchart TD R["POST /journeys/{operator_journey_id}/cancel"] --> CHECKS{checks} --> EXIST{Exists ?} EXIST -- no --> E404[404 Not found] EXIST -- yes --> OK[200 Success]
L'invalidation d'un trajet a différents impacts en fonction du moment où elle est effectuée :
- Avant le calcul des incitations : le trajet n'apparait pas dans les exports ou les appels de fonds ;
- Après le calcul des incitations : le trajet n'apparait pas dans les exports ou les appels de fonds ;
- Après le 6 du mois suivant* : le trajet n'apparait pas dans les exports mais est dans les appels de fonds.
* Les appels de fonds sont calculés le 6 de chaque mois pour le mois précédent.
sequenceDiagram participant O as Opérateur participant A as API Note over O,A: 0h - 48h opt Invalidation du trajet<br>AVANT<br>calcul des incitations O->>A: POST /journeys/{operator_journey_id}/cancel A-->>O: 200 annulation enregistrée.<br>Le trajet n'apparait pas dans les exports<br>ou les appels de fonds end Note over O,A: 48h - 6 du mois suivant A--)A: Calcul des incitations<br/>sur les campagnes<br/>paramétrées (async) opt Invalidation du trajet<br>APRÈS<br>calcul des incitations O->>A: POST /journeys/{operator_journey_id}/cancel A-->>O: 200 annulation enregistrée.<br>Le trajet n'apparait pas dans les exports<br>ou les appels de fonds end Note over O,A: Après le 6 du mois suivant opt Invalidation du trajet<br>APRÈS<br>calcul des incitations O->>A: POST /journeys/{operator_journey_id}/cancel A-->>O: 200 annulation enregistrée.<br>Le trajet n'apparait pas dans les exports<br>mais est dans les appels de fonds end
CEE
Enregistrer une demande
flowchart TD R[POST /policies/cee] --> CHECKS{checks} --> VALID{Valid ?} VALID -- no --> E400[400 Bad Request] VALID -- yes --> EXISTS{Exists ?} EXISTS -- no --> E404[404 Not Found] EXISTS -- yes --> UNIQ{Unique ?} UNIQ -- no --> E409[409 Conflict] UNIQ -- yes --> OK[201 Created]
Simuler une demande
flowchart TD R[POST /policies/cee/simulate] --> CHECKS{checks} --> VALID{Valid ?} VALID -- no --> E400[400 Bad Request] VALID -- yes --> UNIQ{Unique ?} UNIQ -- no --> E409[409 Conflict] UNIQ -- yes --> OK[200 Success]
Rechercher une demande
flowchart TD R["GET /policies/cee/{uuid}"] --> CHECKS{checks} --> VALID{Valid ?} VALID -- no --> E400[400 Bad Request] VALID -- yes --> EXISTS{Exists ?} EXISTS -- no --> E404[404 Not Found] EXISTS -- yes --> OK[200 Success]
Supprimer une demande
flowchart TD R["DELETE /policies/cee/{uuid}"] --> CHECKS{checks} --> VALID{Valid ?} VALID -- no --> E400[400 Bad Request] VALID -- yes --> EXISTS{Exists ?} EXISTS -- no --> E404[404 Not Found] EXISTS -- yes --> OK[204 No Content]