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]