Envoyer un trajet

POST /journeys
application/json

Body Required

  • operator_journey_id string Required

    Identifiant unique du trajet envoyé par l'opérateur.

    Minimum length is 1, maximum length is 256. Format should match the following pattern: ^[a-z0-9]{1,256}$.

  • operator_trip_id string Required

    Identifiant généré par l'opérateur pour regrouper des trajets (plusieurs passagers avec un même conducteur)

  • Classe de preuve correspondant aux spécifications définies dans Classes de preuve de covoiturage

    Values are A, B, or C.

  • incentives array[object] Required

    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 :

    1. Territoire (AOM, Région, ...)
    2. Sponsors (incitations employeur, CE, etc.)
    3. Opérateur (opération promotionnelle, offres, etc.)
    Hide incentives attributes Show incentives attributes object
    • index number Required

      Ordre d'application de l'incitation

      Minimum value is 0.

    • amount number Required

      Montant de l'incitation en centimes d'euros

      Minimum value is 0.

    • siret string Required

      Numéro de SIRET de l'entité qui finance l'incitation. Le SIRET est un identifiant unique par structure juridique. Il est composé de 14 chiffres.

  • Plaque d'immatriculation du véhicule

  • start object Required

    Position géographique et date de départ du passager

    Additional properties are NOT allowed.

    Hide start attributes Show start attributes object
    • datetime string(date-time) Required

      Date et heure du départ/arrivée du passager au format ISO 8601. L'heure est exprimée en UTC (YYYY-MM-DDThh:mm:ssZ)

      L'heure est exprimée en UTC (Coordinated Universal Time). UTC n'est pas ajusté sur l'heure d'été et hiver !

    • lat number Required

      Latitude comprise entre 90deg et -90deg décimaux en datum WSG-84

    • lon number Required

      Longitude comprise entre 180deg et -180deg décimaux en datum WSG-84

  • end object Required

    Position géographique et date de départ du passager

    Additional properties are NOT allowed.

    Hide end attributes Show end attributes object
    • datetime string(date-time) Required

      Date et heure du départ/arrivée du passager au format ISO 8601. L'heure est exprimée en UTC (YYYY-MM-DDThh:mm:ssZ)

      L'heure est exprimée en UTC (Coordinated Universal Time). UTC n'est pas ajusté sur l'heure d'été et hiver !

    • lat number Required

      Latitude comprise entre 90deg et -90deg décimaux en datum WSG-84

    • lon number Required

      Longitude comprise entre 180deg et -180deg décimaux en datum WSG-84

  • distance number Required

    Distance en mètres

    Minimum value is 0, maximum value is 1000000.

  • driver object Required

    Informations d'identité du conducteur

    Additional properties are NOT allowed.

    Hide driver attributes Show driver attributes object
    • identity object Required

      Ces données personnelles permettent d'identifier la personne effectuant le covoiturage afin de pouvoir comptabiliser ses trajets et lui distribuer des incitations en fonction des politiques applicables.

      Deux options sont disponibles pour la transmission du numéro de téléphone :

      • Numéro complet au format ITU E.164 (phone) (ex. +33601020304, +590690101010)
      • Numéro au format ITU E.164 tronqué des 2 derniers chiffres (phone_trunc) (ex. +336010203, +5906901010) + identifiant unique de l'opérateur (operator_user_id)

      Additional properties are NOT allowed.

      Hide identity attributes Show identity attributes object
      • identity_key string Required

        Correspond au SHA d'une chaîne concaténée tel que : sha256({phone_number}-{last_name}) où :

        • phone_number correspond au numéro de téléphone complet au format international sans espace ni tiret. Exemple : +33601020304
        • last_name correspond au nom de famille complet en majuscule, sans accent ni tiret ni apostrophe : Regexp: [A-Z ]*

        Exemple, M. D'Hérûg-de-l'Hérault ayant le numéro 07 01 02 03 04 doit être formatté comme suit +33701020304-D HERUG DE L HERAULT

        Minimum length is 64, maximum length is 64.

      • Numéro de carte de transport (TCL, Navigo, Trabool, etc.) de l'occupant.

        Obligatoire si l'information est disponible.

        Actuellement supporté: navigo

        Additional properties are NOT allowed.

        Hide travel_pass attributes Show travel_pass attributes object
        • name Required

          Nom du titre

          Value is navigo.

        • user_id string Required

          Numéro de carte de transport

      • phone string

        Numéro au format ITU E.164

      • phone_trunc string Required

        Numéro de téléphone au format ITU-T E.164 tronqué des 2 derniers chiffres

        Minimum length is 10, maximum length is 14. Format should match the following pattern: ^\+[0-9]{8,12}$.

      • application_timestamp string(datetime)

        Date de signature de l'engagement par le demandeur.

      • driving_license string

        One of:

        Numéro de permis de conduire composé de 12 chiffres après 1975.

        Minimum length is 12, maximum length is 12. Format should match the following pattern: ^[0-9]{12}$.

        Numéro de permis de conduire composé de 1 à 15 caractères suivis de 4 chiffres avant 1975.

        Minimum length is 5, maximum length is 19. Format should match the following pattern: ^[A-Z0-9]{1,15}[0-9]{4}$.

        Numéro de permis de conduire plus anciens composé de 1 à 15 caractères.

        Minimum length is 1, maximum length is 15. Format should match the following pattern: ^[A-Z0-9]{1,15}$.

        Numéro de permis étranger préfixé de l'indicatif '99-'.

        Minimum length is 4, maximum length is 64. Format should match the following pattern: ^99-.*$.

      • operator_user_id string Required

        Identifiant de l'utilisateur chez l'opérateur. Obligatoire.

      • Applicable seulement au passager.

        • true si majeur
        • false si mineur
        • null si non fourni


        De nombreuses campagnes utilisent cette information pour s'assurer que les bénéficiaires d'incitations sont majeures. La valeur NULL les exclues.

        Values are true, false, or null.

    • revenue number Required

      La somme réellement perçue par le conducteur APRÈS que toutes les incitations (subventions employeurs, promotions opérateurs, incitations AOM, etc.), contributions des passagers aient été versées et que la commission de l'opérateur soit prise.

      Minimum value is 0.

  • passenger object Required

    Informations d'identité du passager

    Additional properties are NOT allowed.

    Hide passenger attributes Show passenger attributes object
    • identity object Required

      Ces données personnelles permettent d'identifier la personne effectuant le covoiturage afin de pouvoir comptabiliser ses trajets et lui distribuer des incitations en fonction des politiques applicables.

      Deux options sont disponibles pour la transmission du numéro de téléphone :

      • Numéro complet au format ITU E.164 (phone) (ex. +33601020304, +590690101010)
      • Numéro au format ITU E.164 tronqué des 2 derniers chiffres (phone_trunc) (ex. +336010203, +5906901010) + identifiant unique de l'opérateur (operator_user_id)

      Additional properties are NOT allowed.

      Hide identity attributes Show identity attributes object
      • identity_key string Required

        Correspond au SHA d'une chaîne concaténée tel que : sha256({phone_number}-{last_name}) où :

        • phone_number correspond au numéro de téléphone complet au format international sans espace ni tiret. Exemple : +33601020304
        • last_name correspond au nom de famille complet en majuscule, sans accent ni tiret ni apostrophe : Regexp: [A-Z ]*

        Exemple, M. D'Hérûg-de-l'Hérault ayant le numéro 07 01 02 03 04 doit être formatté comme suit +33701020304-D HERUG DE L HERAULT

        Minimum length is 64, maximum length is 64.

      • Numéro de carte de transport (TCL, Navigo, Trabool, etc.) de l'occupant.

        Obligatoire si l'information est disponible.

        Actuellement supporté: navigo

        Additional properties are NOT allowed.

        Hide travel_pass attributes Show travel_pass attributes object
        • name Required

          Nom du titre

          Value is navigo.

        • user_id string Required

          Numéro de carte de transport

      • phone string

        Numéro au format ITU E.164

      • phone_trunc string Required

        Numéro de téléphone au format ITU-T E.164 tronqué des 2 derniers chiffres

        Minimum length is 10, maximum length is 14. Format should match the following pattern: ^\+[0-9]{8,12}$.

      • application_timestamp string(datetime)

        Date de signature de l'engagement par le demandeur.

      • driving_license string

        One of:

        Numéro de permis de conduire composé de 12 chiffres après 1975.

        Minimum length is 12, maximum length is 12. Format should match the following pattern: ^[0-9]{12}$.

        Numéro de permis de conduire composé de 1 à 15 caractères suivis de 4 chiffres avant 1975.

        Minimum length is 5, maximum length is 19. Format should match the following pattern: ^[A-Z0-9]{1,15}[0-9]{4}$.

        Numéro de permis de conduire plus anciens composé de 1 à 15 caractères.

        Minimum length is 1, maximum length is 15. Format should match the following pattern: ^[A-Z0-9]{1,15}$.

        Numéro de permis étranger préfixé de l'indicatif '99-'.

        Minimum length is 4, maximum length is 64. Format should match the following pattern: ^99-.*$.

      • operator_user_id string Required

        Identifiant de l'utilisateur chez l'opérateur. Obligatoire.

      • Applicable seulement au passager.

        • true si majeur
        • false si mineur
        • null si non fourni


        De nombreuses campagnes utilisent cette information pour s'assurer que les bénéficiaires d'incitations sont majeures. La valeur NULL les exclues.

        Values are true, false, or null.

    • payments array[object]

      Zéro, une ou plusieurs méthodes de paiement utilisées (ex. carte employeur préchargée permettant de payer directement le covoiturage sur une application).


      La prise en charge des frais de transports personnel (carburant et forfait mobilité) pourra prendre la forme d'une solution de paiement spécifique, dématérialisée et prépayée, intitulée « titre-mobilité ».

      Ainsi, il apparaît comme pertinent de détailler la solution de paiement utilisée dans le cadre d'un trajet covoituré, s'il s'agit de Titre-Mobilité.

      Hide payments attributes Show payments attributes object
      • index number Required

        Ordre d'application

        Minimum value is 0.

      • amount number Required

        Montant du paiement en centimes d'euros

        Minimum value is 0.

      • siret string Required

        Numéro de SIRET du payeur

      • type string Required

        Nom du titre

    • contribution number Required

      Coût réel total du service pour l'occupant passager en fonction du nombre de sièges réservés APRÈS que toutes les possibles incitations aient été versées (subventions employeurs, promotions opérateurs, incitations AOM, etc).

      Minimum value is 0.

    • seats number

      Nombre de sièges réservés par l'occupant passager.

      Minimum value is 1, maximum value is 8. Default value is 1.

Responses

  • 201 application/json

    OK. Le trajet a bien été enregistré.

  • 400 application/json

    Requête invalide

  • 401 application/json

    Non authentifié. Le token applicatif est manquant ou invalide.

  • 403 application/json

    Non autorisé

  • Le trajet est déjà enregistré.

  • 422 application/json

    Le payload envoyé ne respecte pas le contrat d'interface / les Conditions Générales d'Utilisation. Le trajet n'a pas été enregistré par le Registre de Preuve de Covoiturage.

    Hide response attributes Show response attributes object
    • id integer
    • jsonrpc string

      Value is 2.0.

    • error object

      Additional properties are allowed.

      Hide error attributes Show error attributes object
      • data object

        Additional properties are allowed.

        Hide data attribute Show data attribute object
        • terms_violation_labels string Required

          Etiquette possible pour un cas de non respect des CGU :

          • distance_too_short : le trajet a une distance trop faible (<2 km)
          • too_many_trips_by_day : le participant (driver_identity_key ou passenger_identity_key) a fait plus de 4 trajets dans la même journée (4 operator_trip_id maximum par usager et par jour sur la même date de départ)
          • too_close_trips : le trajet est trop rapproché d'un trajet précédent ou suivant réalisé avec la même personne (Délai minimum de 30mn entre 2 trajets (operator_trip_id différent) impliquant un même usager (driver_identity_key ou passenger_identity_key). Sont pris en compte les trajets finissant moins de 30 min avant le départ du trajet soumis ou démarrant moins de 30 min après la fin du trajet soumis.
          • expired : le trajet a dépassé la date limite d'envoi de 24h après la date de début du trajet. Cf: engagement de délais d'envoi par les opérateurs

          Values are distance_too_short, too_many_trips_by_day, too_close_trips, or expired.

      • code integer

        Value is -32422.

      • message string

        Value is Unprocessable Request.

POST /journeys
curl \
 -X POST https://api.demo.covoiturage.beta.gouv.fr/v3.1/journeys \
 -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","application_timestamp":"string","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","application_timestamp":"string","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}}'
Request examples
{
  "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",
      "application_timestamp": "string",
      "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",
      "application_timestamp": "string",
      "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
  }
}
Response examples (201)
{
  "id": 1,
  "result": {
    "data": {
      "created_at": "2021-01-01T00:00:00+0100",
      "operator_journey_id": "cb82956e-3833-4925-9891-47d9b2ba0186"
    },
    "meta": null
  },
  "jsonrpc": "2.0"
}
Response examples (400)
{
  "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"
}
Response examples (401)
{
  "id": 1,
  "error": {
    "code": -32501,
    "data": "Unauthorized application",
    "message": "Unauthorized Error"
  },
  "jsonrpc": "2.0"
}
Response examples (403)
{
  "id": 1,
  "error": {
    "code": -32503,
    "data": "Invalid permissions",
    "message": "Forbidden Error"
  },
  "jsonrpc": "2.0"
}
Response examples (422)
{
  "id": 1,
  "jsonrpc": "2.0",
  "error": {
    "data": {
      "terms_violation_labels": [
        "expired"
      ]
    },
    "code": -32422,
    "message": "Unprocessable Request"
  }
}