h1. DPark {{toc}} h2. Variables h3. Abonnement |_.Label|_.Description|_.Obligatoire| |firstnames|Prénoms|*O*| |lastname|Nom|*O*| |filenumber|Numero de dossier|*O*| |badgenumber|Numero de badge|N| |cardnumber|Numero de carte|N| h3. Adresse |_.Label|_.Description|_.Obligatoire| |address_complement1|Premier complément d'adresse|N| |address_complement2|Second complément d'adresse|N| |address_streetno|Numero de rue|N| |address_streetext|Extension numero de rue (BIS, TER, ...)|N| |address_streetname|Nom de la rue|N| |address_sticode|Code STI de l'adresse|*O*| |address_zipcode|Code postal|*O*| |address_locality|Localité|*O*| h2. Recherche de dossier h3. Requête * GET /dpark//search/
{
  'firstname': 'foo'
  'lastname': 'bar',
  'filenumber': '123456789'
  'badgenumber': '123456789'
  'cardnumber': '123456789' 
}
h3. Réponse h4. Cas passant
{
    "err": 0
}
h4. Cas non passant
{
   "err": 1, 
   "code": "unknown-file",
   "msg": "Dossier inconnu"
}
* @code@ est un code intelligible simplifié * @msg@ est le message exact retourné par DPark si disponible, ou en cas d'erreur autre le code et le message La table des codes: | Code DPark | Code WS | | 02 | unknown-file | | 03 | not-requester-file | | 04 | support-number-unknown | | 05 | badge-number-unknown | | autre | other-error | h2. Récupération informations dossier h3. Requête * GET /dpark//infos// Avec @nameid@ étant @form_user_name_identifier_0@ h3. Réponse h4. Cas passant
{
    "data": [
        {
            "adresse_boitepostalelieudit": null, 
            "adresse_codepostal": "31000", 
            "adresse_codesti": "315553609666", 
            "adresse_etageescalierappartement": null, 
            "adresse_extension": 1, 
            "adresse_immeublebatimentresidence": null, 
            "adresse_localite": "TOULOUSE", 
            "adresse_nomvoie": "All\u00e9es Jean Jaur\u00e8s", 
            "adresse_numerovoie": 80, 
            "adresse_quartier": "PERI", 
            "demande_datedebutabo": "20180625", 
            "demande_datefinabo": "20190624", 
            "demande_delaiautorise": 30, 
            "demande_immatvehicule1": "CX453AD", 
            "demande_immatvehicule2": null, 
            "demande_marquevehicule1": "CITROEN", 
            "demande_marquevehicule2": null, 
            "demande_modelevehicule1": "GS", 
            "demande_modelevehicule2": null, 
            "demande_numerodossier": 22952, 
            "demandeur_civilite": 1, 
            "demandeur_email": "foo@bar.org", 
            "demandeur_nomusuel": "Mercier", 
            "demandeur_prenom": "Eric", 
            "demandeur_telephonefixe": "0611111111", 
            "demandeur_telephoneportable": null
        }, 
    ], 
    "err": 0
h4. Cas non passant
{
  "data": null,
  "err": 1,
  "err_desc": "Dossier inconnu"
}
h2. Appairage h3. Requête * POST /dpark//link/
{
  'nameid': 'abcdefg'
  'firstname': 'foo'
  'lastname': 'bar',
  'filenumber': '123456789'
  'badgenumber': '123456789'
  'cardnumber': '123456789' 
}
h3. Réponse h4. Cas passant
{
  "err": 0
}
h4. Cas non passant
{
   "err": 1, 
   "code": "unknown-file",
   "msg": "Dossier inconnu"
}
* @code@ est un code intelligible simplifié * @msg@ est le message exact retourné par DPark si disponible, ou en cas d'erreur autre le code et le message La table des codes: | Code DPark | Code WS | | 02 | unknown-file | | 03 | not-requester-file | | 04 | support-number-unknown | | 05 | badge-number-unknown | | autre | other-error | h2. Désappairage h3. Requête |_.Nom|_.Obligatoire|_.Valeurs possibles|_.Description| |nameid|O||Idientifiant publik de l'utilisateur| |filenumber|||Numéro de dossier| * POST /dpark//unlink/
{
  'nameid': 'abcdefg' 
}
Si @filenumber@ présent, l'utilisateur sera désappairé que par rapport au numéro de dossier correspondant. h3. Réponse h4. Cas passant
{
  "data": True,
  "err": 0
}
h4. Cas non passant
{
  "data": null,
  "err": 1,
  "err_desc": "No pairing exists" # exemple de description d'erreur
}
h2. Vérification éligibilité adresse h3. Requête |_.Nom|_.Obligatoire|_.Valeurs possibles|_.Description| |address_sticode|O||Code STI| |address_locality|O||Nom de la localité| |address_zipcode|O||Code postal| |address_complement1|||Premier complement d'adresse: etage appartememt, escalier| |address_complement2|||Second complement d'adresse: immeuble, batiment, residence| |address_streetno|||Numero de rue| |address_streetext|||Numero d'extension de rue| |address_streetname|||Nom de rue|| * GET /dpark//address-eligibility/
{
  "address_complement1": "Apt 212",
  "address_complement2": "Batiment A",
  "address_streetno": "33",
  "address_streetext": "1", # (Vide, BIS, TER, QUATER)
  "address_streetname": "Rue du Cheval Blanc",
  "address_sticode": "37446",
  "address_zipcode": "44300",
  "address_locality": "Nantes"
}
h4. Les extensions d'adresse |_.identifiant|_.text| |1|Vide| |2|BIS| |3|TER| |4|QUATER| h3. Réponse h4. Cas passant
{
  "data": True,
  "address": {
    "address_zipcode": "31000", 
    "address_streetext": 1, 
    "address_complement2": null, 
    "address_complement1": null, 
    "address_locality": "Toulouse", 
    "address_streetno": 13, 
    "address_streetname": "Rue des Abeilles", 
    "address_sticode": "315550016038", 
    "address_place": null, 
    "address_district": "Dupuy" 
  },
  "desc": null,
  "err": 0,
}
h4. Cas non passant
{
  "data": False,
  "desc": "Erreur extension"
}
h2. Vérification du délais d’autorisation de renouvellement h3. Requête |_.Nom|_.Obligatoire|_.Valeurs possibles|_.Description| |filenumber|O||Numéro de dossier| |firstnames|O||Prénoms de l'abonné| |lastname|O||Nom de l'abonne| |badgenumber|||Numéro de badge| |cardnumber|||Numéro de carte| * GET /dpark//check-renewal-time/ h3. Réponse h4. Cas passant
{
  "data": True,
  "err": 0
}
h4. Cas non passant
{
  "data": null,
  "err": 1,
  "err_desc": "Renouvellement hors délai"
}
h2. Vérification d'un doublon de création h3. Requête |_.Nom|_.Obligatoire|_.Valeurs possibles|_.Description| |applicant_firstnames|*O*||Prénoms du demandeur| |applicant_lastname|*O*||Nom du demandeur| |address_complement1|N||Premier complément d'adresse| |address_complement2|N||Second complément d'adresse| |address_streetno|N||Numero de rue| |address_streetext|N||Extension numero de rue (BIS, TER, ...)| |address_streetname|N||Nom de la rue| |address_sticode|*O*||Code STI de l'adresse| |address_zipcode|*O*||Code postal| |address_locality|*O*||Localité| * GET /dpark//check-creation-duplicate/ h3. Réponse h4. Cas passant * pas de doublon:
{
  "data": True,
  "desc": "",
  "err": 0
}
* doublon ou autre problème:
{
  "data": False,
  "desc": "",
  "err": 0
}
h4. Cas non passant
{
  "err": 1,
  "err_desc": "",
}
h2. Vérification d’un doublon de renouvellement h3. Requête |_.Nom|_.Obligatoire|_.Valeurs possibles|_.Description| |filenumber|O||Numéro de dossier| |firstnames|O||Prénoms de l'abonné| |lastname|O||Nom de l'abonne| |badgenumber|||Numéro de badge| |cardnumber|||Numéro de carte| * GET /dpark//check-renewal-duplicate/ h3. Réponse h4. Cas passant * pas de doublon:
{
  "data": True,
  "desc": "",
  "err": 0
}
* doublon ou autre problème:
{
  "data": False,
  "desc": "",
  "err": 0
}
h4. Cas non passant
{
  "err": 1,
  "err_desc": "",
}
h2. Enregistrement d'une demande (renouvellement/inscription) h3. Variables relatives au demandeur |_.Nom|_.Obligatoire|_.Valeurs possibles|_.Description| |applicant_title|O|1 ou 2|Civilité du demandeur. _1_ pour _Monsieur_, 2 pour _Madame_| |applicant_lastname|O||Nom du demandeur| |applicant_firstnames|O||Prénoms du demandeur| |applicant_phone|||Téléphone fixe du demandeur| |applicant_mobilephone|||Téléphone mobile du demandeur| |applicant_email|O||Courriel du demandeur| h3. Variables relatives à l'adresse du demandeur |_.Nom|_.Obligatoire|_.Valeurs possibles|_.Description| |address_complement1|||Etage, escalier ou numero d'appartement| |address_complement2|||Immeuble, batiment ou residence| |address_streetno|||Numero de voie| |address_streetext||1,2,3,4|Extension de rue avec 1 pour Vide, 2 pour BIS, 3 pour TER et 4 pour QUATER| |address_streetname|||Nom de la voie| |address_sticode|O||Code STI de l'adresse| |address_place|||Boite postale, lieu-dit| |address_zipcode|O||Code postal| |address_locality|O||Localité| |address_district|O||Quartier| h3. Variables relatives à la demande |_.Nom|_.Obligatoire|_.Valeurs possibles|_.Description| |application_id|O||Numero de la demande| |application_type|O|1,2|Type de demande avec 1 pour Badge et 2 pour Carte| |filenumber|||Numéro de dossier Dpark. Si renseigné, la demande est un renouvellement| |application_car1_exemption|O||Cas d'éligibilité du véhicule 1 ([[DPark#Cas-déligibilité|cf cas éligibilité]])| |application_car1_model|O||Modele du véhicule 1| |application_car1_brand|O||Marque du véhicule 1| |application_car1_plate|O||Immatriculation du véhicule 1| |application_car2_exemption|||Cas d'éligibilité du véhicule 2 ([[DPark#Cas-déligibilité|cf cas éligibilité]])| |application_car2_model|||Modele du véhicule 2| |application_car2_brand|||Marque du véhicule 2| |application_car2_plate|||Immatriculation du véhicule 2| |application_thirdparty_subscription|O|un *booléen*|Abonnement tiers, ne pas envoyer de chaîne "True" ou "true" ou "False" ou "false"| |application_payment_type|O|1,5,10|Type de paiement, avec 1 pour chèque, 5 pour prélèvement mensualisé et 10 pour carte bancaire via internet| |application_bank_name|||Nom de la banque du demandeur| |application_bank_address1|||Ligne 1 de l'adresse de la banque| |application_bank_address2|||Ligne 2 de l'adresse de la banque| |application_bank_zipcode|||Code postal de la banque| |application_bank_city|||Ville ou se situe l'agence bancaire| |application_bank_iban|||Numéro IBAN du compte bancaire| |application_bank_bic|||Numéro d'identification de la banque| h4. Cas d'éligibilité |_.Code|_.Description| |2|Cas 2: Véhicule location longue durée| |6|Cas 1: Vehicule de fonction| |8|Cas 0: Normal| |10|Cas 5: véhicule préte longue durée| |11|Cas 6: meme foyer fiscal + parents| |17|Cas 7 : Plaisanciers Port St Sauveur| h3. Requête * POST /dpark//register/ Exemple de payload
{
    "address_complement1": "",
    "address_complement2": "",
    "address_district": "PERI",
    "address_locality": "Toulouse",
    "address_sticode": "315553609651",
    "address_streetext": "1",
    "address_streetname": "",
    "address_streetno": "16",
    "address_zipcode": "31000",
    "applicant_email": "sh@eggs.org",
    "applicant_firstnames": "Spam Ham",
    "applicant_lastname": "EGGS",
    "applicant_mobilephone": "0655443322",
    "applicant_phone": "",
    "applicant_title": "1",
    "application_car1_brand": "Peugeot",
    "application_car1_exemption": "8",
    "application_car1_model": "206",
    "application_car1_plate": "AA777ZZ",
    "application_id": "12-4",
    "application_payment_type": "10",
    "application_thirdparty_subscription": false,
    "application_type": 1
}
h3. Réponse h4. Cas passant
{
  "data": {
     "numerodossier": "22334",
     "numerodemande": "59492"
  },
 "err": 0
}
h4. Cas non passant
{
  "err": 1,
  "err_desc": "Dossier incomplet"
}
h2. Recuperation des infos de paiement h3. Requête * GET /dpark//payment-info// Il est possible de filtrer les données remontées par @numero de dossier@.
GET /dpark//payment-info//?filenumber=123456
h3. Réponse h4. Cas passant
{
 "data": [
   {
     "typepaiement_text": "Carte Bancaire via Internet",
     "numerodemande": 61718,
     "montant": 135,
     "numeroteledossierphase1": "E-8-N5UTAK6P",
     "typepaiement": 10
   }
 ],
 "err": 0
}
h4. Cas non passant
{
  "data": [],
  "err": 0
}
h2. Notification de paiement h3. Requête |_.Nom|_.Obligatoire|_.Valeurs possible|_.Description| |application_external_id|O||Numero de teledossier| |application_id|O||Numero de demande| |filenumer|O||Numero de dossier| |nameid|O||Identifiant de l'utilisateur| |total_amount|O||Montant total| |transaction_datetime|O||Date et heure de la transaction| |transaction_id|O||Numero de transaction| exemple de payload
{
 'application_external_id': 'E-8-N5UTAK6P',
 'application_id': '61718',
 'filenumber': '23644',
 'nameid': '6ec77aa7b2a04acf9339da553f16d91c',
 'total_amount': '135',
 'transaction_datetime': '2018-07-16T10:23',
 'transaction_id': '987654321'
}
h3. Réponse h4. Cas passant
{
  "data": True,
  "err": 0
}
h4. Cas non passant
{
  "err_class": "passerelle.utils.jsonresponse.APIError", 
  "err_desc": "Deja paye", 
  "data": null, 
  "err": 1
}
h2. Envoi de fichiers h4. Codification des pièces justificatives |_.Identifiant|_.Code|_.Description| |justif_domicile|2|Justificatif de domicile (<3 mois)| |assurance|4|Attestation d'assurance (Conducteur principal)| |cartegrise|6|Carte grise| |carte_medecin|8|Carte d'ordre des medecins| |immat_artisanat_d1|9|Immatriculation Chambre Métiers et de l'Artisanat ( D1 )| |agrement|10|Agrément : Assoc ou Entreprise| |attest_employeur|11|Attestation employeur (Usage privé et pro )| |taxe_habitat|13|Taxe d'Habitation ou Bail ou Acte notarié| |abt_transport|14|Abt Annuel transport en commun ( Tisséo, SNCF actif pro)| |contrat_locvehicule|16|Contrat de location (Véhicule)| |impot_revenu|17|Impôt sur le revenu| |carteverte|18|Attestation d'Assurance (Carte Verte)| |decla_impot|19|Déclaration Impôt revenu (Enfant rattaché)| |assurance_pro|20|Attestation d'Assurance (Usage Professionnel)| |cotis_urssaf|21|Cotisation à l’URSSAF| |ordonnance|22|Ordonnance (Attest sur l'honneur Médecin)| |attest_employeurpro|25|Attestation Employeur (Usage Pro du Véhicule Perso)| |attest_honneur|26|Attestation sur l'honneur (Professionnel de l’Urgence)| |attest_cpam|27|Attestation CPAM avec le numéro de conventionnement (TAP)| |cartegrise_qe|28|Carte grise avec mention de la qualité électrique| |contrat_livraison|29|Contrat de livraison entre le pro et le commerce ou attest livraison régulière (signature du pro et du commerçant)| |immat_artisanat|30|Immatriculation au registre des métiers et de l'artisanat ou au registre du commerce| |immat_artisanat_ape|31|Immatriculation au registre des métiers et de l'artisanat ou au registre du commerce (avec mention code APE)| |contrat_amarrage|32|Le contrat de location d'un poste d'amarrage| |facture_amarrage|33|Facture de paiement pour l'amarrage et charge| h4. Explication sur la nomenclature des variables Les variables de fichiers se construisent comme tel: * [,]: avec comme contenu le raw de la variable de fichier. Avec @identifiant@ déterminant le type de fichier. La @,@ est optionnel et permet de différencier les fichiers d'un même type et peut être n'importe quoi, la virgule est importante, elle sépare le type du suffixe. Cela signifie que si l'on veut envoyer un @justificatif de domicile@ et plusieurs @carte grise@, on aura la configuration suivante dans le workflow: |_.Nom|_.Valeur|_.Type| |cartegrise,vehicule1|form_var_vehicule1_carte_grise_raw|python| |cartegrise,vehicule2|form_var_vehicule2_carte_grise_raw|python| |justif_domicile|form_var_justif_domicile_raw|python| h3. Requête |_.Nom|_.Obligatoire|_.Valeurs possibles|_.Description| |application_external_id|O||Numéro de télédossier reçu lors de l'enregistrement de la demande e.g @E-8-0AA666BB@| |application_id|O||Numéro de demande e.g @59492@| |doctype,whatever|||variable raw du champ fichier| |anotherdoctype,whatever|||variable raw du champ fichier| *NB*: _*Le nombre de fichier à envoyer est calculé par le connecteur*_. * POST /dpark//send-files/
{
  "application_external_id": "E-8-0AA666BB",
  "application_id": "59492",
  "justif_domicile,whocares": {
      "content": "dGhpcyBpcyBteSBzZWNvbmQgcHJvb2Ygb2YgYWRkcmVzcw==", 
      "content_type": "application/pdf", 
      "filename": "address_proof.pdf"
  }
}
h3. Réponse h4. Cas passant
{
  "data": {
    "result": True, 
  },
  "err": 0
}
h4. Cas non passant
{
  "data": null,
  "err": 1, 
  "err_desc": "Numéro de demande introuvable"
}