NuxtJS web app available at https://pretavoyager.sncf.com/ for scanning a COVID certificate and associating it with an SNCF train ticket. (Previously called voyagezen.sncf.com)
Base URL: https://pretavoyager.sncf.com/api
Called after ticket scanned to check if the ticket has already been scanned with the web app
POST /ticketexists
ticket_string: string - Train ticket QRCode contents{
"ticket_string":"i0CVSTISEN173300014121111/04/1992FRPBEFRCFE0598312/040029090164110984659 DUPONT JEAN2JR110 00000"
}
[
{
"validite": 1,
"num_dossier_voy": "STISEN",
"nom_client": "DUPONT",
"prenom_client": "JEAN",
"date_naissance": "1992-04-11T00:00:00.000Z",
"date_voyage_segment_1": "2021-04-12T00:00:00.000Z",
"num_train_segment_1": "05983",
"origine_segment_1": "FRPBE",
"destination_segment_1": "FRCFE",
"num_train_segment_2": "00000",
"origine_segment_2": null,
"destination_segment_2": null,
"type_train": "sncf",
"ticket_string": "i0CVSTISEN173300014121111/04/1992FRPBEFRCFE0598312/040029090164110984659 DUPONT JEAN2JR110 00000"
}
]
Called after COVID certificate scanned and consent provided by the user
POST /checkpassticket
ticket: Decoded train ticket QRCode contents
format_id: string (Example: i)code_pectab: string (Example: 0)code_titre: string (Example: CV)num_dossier_voy: string - Trip dossier identifier (Example: STISEN)num_comptable_emmission: “E-Billet” number string - (Example: 173300014)ind_specimen: string (Example: 1)version_code_barre: string (Example: 2)num_chainage string (Example: 11)date_naissance: string - Traveler birth date - Format: DD/MM/YYYY (Example: 11/04/1992)origine_segment_1: string - UN/LOCODE Departure destination for first trip segment (Example: FRPBE for Paris Bercy)destination_segment_1: string - UN/LOCODE Arrival destination for first trip segment (Example: FRCFE for Clermont-Ferrand)num_train_segment_1: string - Train number for first trip segment (Example: 05983)date_voyage_segment_1: string - Departure date for first trip segment - Format: DD/MM (Example: 12/04)mrc_client: string - SNCF Client number (Example: 0029090164110984659)nom_client: string - Traveler last name (Example: DUPONT)prenom_client: string - Traveler first name (Example: JEAN)classe_physique_segment_1: string (Example: 0)code_tarif_reduc: string (Example: JR11)origine_segment_2: string - UN/LOCODE Departure destination for second trip segmentdestination_segment_2: string - UN/LOCODE Arrival destination for second trip segmentnum_train_segment_2: string - Train number for second trip segment (Example: 00000)type_train: string - sncf / ouigoticket_string: Train ticket QRCode contentspass:
valid: boolean - Whether pass is valid or notvalidBirthDate: boolean - Indicates if the birth date obtained from the COVID certificate matches traveler’s birth date from the train ticketfirstName: string - Person’s first name (Example: JEAN)lastName: string - Person’s last name (Example: DUPONT)string: string - First 10 characters of COVID Certificate (Example: HC1:6BFOXN) + person’s initials (Example: JD) - (Example: HC1:6BFOXNJD)certificate_id: string - European DCC UVCI (Example: urn:uvci:01:FR:R7DTBHHGBFUT#7)key: string - Base64 encoded key - see “Generating key” (Example: U1RJU0VOSEMxOjZCRk9YTnVybjp1dmNpOjAxOkZSOlI3RFRCSEhHQkZVVCM3){
"ticket": {
"format_id": "i",
"code_pectab": "0",
"code_titre": "CV",
"num_dossier_voy": "STISEN",
"num_comptable_emmission": "173300014",
"ind_specimen": "1",
"version_code_barre": "2",
"num_chainage": "11",
"date_naissance": "11/04/1992",
"origine_segment_1": "FRPBE",
"destination_segment_1": "FRCFE",
"num_train_segment_1": "05983",
"date_voyage_segment_1": "12/04",
"mrc_client": "0029090164110984659",
"nom_client": "DUPONT",
"prenom_client": "JEAN",
"classe_physique_segment_1": "0",
"code_tarif_reduc": "JR11",
"origine_segment_2": "",
"destination_segment_2": "",
"num_train_segment_2": "00000",
"type_train": "sncf"
},
"ticket_string": "i0CVSTISEN173300014121111/04/1992FRPBEFRCFE0598312/040029090164110984659 DUPONT JEAN2JR110 00000",
"pass": {
"valid": true,
"validBirthdate": true,
"firstname": "JEAN",
"lastname": "DUPONT",
"string": "HC1:6BFOXNJD",
"certificate_id": "urn:uvci:01:FR:R7DTBHHGBFUT#7"
},
"key": "U1RJU0VOSEMxOjZCRk9YTnVybjp1dmNpOjAxOkZSOlI3RFRCSEhHQkZVVCM3"
}
{
"valid": true
}
Uses the server to decode / decrypt OuiGo train tickets
POST /decodeouigo
encryptedDataB64: string - OuiGo QRCode contents{
"encryptedDataB64": "0fItRk7MFJRfSpwtZYUXzloK1ghS4F+KEQx8hdAeOhfcTQ2YPR+YINCCl6BDK/ZeklLwKPGAdsTn3UcBRzGhMHcJmSowVUiFHq1rU0Z+E7nFUbOWZvsUYnCl4rtIqCQEziTpylHDtcEALWOkXx9gOzD4IEZ/k2ghhLophHwlGpoE3hvPOIuPmrs47qymD2NVn"
}
{
"nom_client": "Martin",
"prenom_client": "Pierre",
"date_naissance": "01/01/1973",
"num_train_segment_1": "6271",
"origine_segment_1": "MLV",
"destination_segment_1": "MSC",
"num_dossier_voy": "VBMN8K",
"date_voyage_segment_1": "29/10/2012",
"type_train": "ouigo"
}
Allows retrieving information of a previously scanned ticket from the server
POST /retrieveinfo
numDossier: string - Trip dossier identifier (Example: STISEN)nomClient: string - Traveler’s last name (Example: DUPONT){
"numDossier": "STISEN",
"nomClient": "DUPONT"
}
[{
"validite": 1,
"num_dossier_voy": "STISEN",
"nom_client": "DUPONT",
"prenom_client": "JEAN",
"date_naissance": "1992-04-11T00:00:00.000Z",
"date_voyage_segment_1": "2021-04-12T00:00:00.000Z",
"num_train_segment_1": "05983",
"origine_segment_1": "FRPBE",
"destination_segment_1": "FRCFE",
"num_train_segment_2": "00000",
"origine_segment_2": null,
"destination_segment_2": null,
"type_train": "sncf",
"ticket_string": "i0CVSTISEN173300014121111/04/1992FRPBEFRCFE0598312/040029090164110984659 DUPONT JEAN2JR110 00000"
}]
keyFormat: [TICKET_TRIP_IDENTIFIER][PASS_STRING][PASS_UVCI]
TICKET_TRIP_IDENTIFIER: Trip dossier identifier - ticket.num_dossier_voy (Example: STISEN)PASS_STRING: First 10 characters of scanned COVID Certificate document (Example: HC1:6BFOXN for European DCC - DC04FR03AV for French 2D-Doc)PASS_UVCI: European DCC UVCI - pass.certificate_id (Example: urn:uvci:01:FR:R7DTBHHGBFUT#7 for European DCC - undefined for French 2D-Doc)Example: STISENHC1:6BFOXNurn:uvci:01:FR:R7DTBHHGBFUT#7
Encode the string with Base64: U1RJU0VOSEMxOjZCRk9YTnVybjp1dmNpOjAxOkZSOlI3RFRCSEhHQkZVVCM3
Example: STISENDC04FR03AVundefined
Encode the string with Base64: U1RJU0VOREMwNEZSMDNBVnVuZGVmaW5lZA==