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.

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 ;
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]