# Schémas des requêtes HTTP ## 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. ```mermaid 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 : 1. 0h : date et heure de départ du trajet passager ; 2. 0h - 24h : délai pour envoyer le trajet au RPC et possibilité de mettre à jour un trajet qui est en erreur ; 3. 24h - 48h : phase de détection d'anomalie ou de fraude sur le trajet par le RPC ; 4. +48h : calcul des incitations par le RPC sur les campagnes paramétrées ; ```mermaid sequenceDiagram participant O as Opérateur participant A as API Note over O,A: 0h - 24h O->>A: envoi du trajet
POST /journeys A-->>O: 200 Created O->>A: Vérification du statut
GET /journeys/{operator_journey_id} A-->>O: 200 (trajet trouvé)
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
géographique (async) A--)A: Détection
d'anomalie (async) A--)A: Détection
de fraude (async) Note over O,A: 48h+ A--)A: Calcul des incitations
sur les campagnes
paramétrées (async) ``` ### Envoyer un trajet ```mermaid 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 ```mermaid 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 ```mermaid 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 ```mermaid flowchart TD R["POST /journeys/{operator_journey_id}/cancel"] --> CHECKS{checks} --> EXIST{Exists ?} EXIST -- no --> E404[404 Not found] EXIST -- yes --> OK[200 Success] ``` > info > 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._ ```mermaid sequenceDiagram participant O as Opérateur participant A as API Note over O,A: 0h - 48h opt Invalidation du trajet
AVANT
calcul des incitations O->>A: POST /journeys/{operator_journey_id}/cancel A-->>O: 200 annulation enregistrée.
Le trajet n'apparait pas dans les exports
ou les appels de fonds end Note over O,A: 48h - 6 du mois suivant A--)A: Calcul des incitations
sur les campagnes
paramétrées (async) opt Invalidation du trajet
APRÈS
calcul des incitations O->>A: POST /journeys/{operator_journey_id}/cancel A-->>O: 200 annulation enregistrée.
Le trajet n'apparait pas dans les exports
ou les appels de fonds end Note over O,A: Après le 6 du mois suivant opt Invalidation du trajet
APRÈS
calcul des incitations O->>A: POST /journeys/{operator_journey_id}/cancel A-->>O: 200 annulation enregistrée.
Le trajet n'apparait pas dans les exports
mais est dans les appels de fonds end ``` # CEE ### Enregistrer une demande ```mermaid 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 ```mermaid 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 ```mermaid 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 ```mermaid 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] ```