API FLATBAY

Divers

  • l'organisme de gli doit fournir url afin que flatbay lui communique des informations.
    (il doit etre stockée dans le champs gliUrl dans la table etablissement de flatbay)

  • A l'inverse, afin que l'organisme de gli puisse communiquer a flatbay des informations de façon authentifiée, flatbay doit lui fournir une clé d'api. (elle doit etre générée et stockée dans la table etablissement.gliKey de flatbay)

  • Pour convertir les exemple curl fourni en php ce site peut etre utilisé : https://incarnate.github.io/curl-to-php/

1. Envoi du dossier de candidature à l'Assurance des Loyers Impayés (GLI)

Dans un premier temps l'agent immobilier envoie le dossier à l'organisme de GLI en cliquant sur un bouton sur flatbay.fr.

une popup apparait pour lui demander les informations qui pourraient être manquantes :

  • 3 revenus mensuels net perçus (pour chaque locataire)
  • Dérogation

Une fois validé, en interne cela appelle cette url :

https://flatbay.fr/fr/candidate/gli/:id

Cette url envoie un JSON en POST sur l'url convenue avec l'organisme de GLI.
Tout se passe comme si l'appel était fait ainsi :

curl -X POST https://xxxxxx \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
--data '{...}'

Exemple de JSON envoyé.

{
  "etablissement": {
    "id": 1,
    "type": "etablissement.type.immo",
    "name": "FlatnYou",
    "phone": "+33975213639",
    "email": "contact@flatnyou.com",
    "description": "Depuis 2015, FlatnYou démocratise l'habitat partagé pour faciliter l’accès des jeunes au logement. \r\n\r\nLa société aménage puis gère des espaces de vie à Paris, en 1ère couronne et à Lyon.",
    "web": "http://www.flatnyou.com",
    "address": "46 Rue René Clair",
    "cp": "75018",
    "city": "Paris",
    "lng": "2.3543054",
    "lat": "48.89371419999999",
    "siegeAddress": "21 Rue Berzélius",
    "siegeCp": "75017",
    "siegeCity": "Paris",
    "activity": "etablissement.activity.gestion_and_transaction",
    "siret": "80376072700039",
    "ape": "6832A"
  },
  "property": {
    "id": 69,
    "address": "xxxxxxxxx",
    "cp": "93400",
    "city": "Saint-Ouen",
    "loyer": 1547.19,
    "charge": 345.99,
    "etablissementId": 1,
    "userId": 46,
  },
  "candidate": {
    "id": 13687,
    "type": "candidate.type.seul",
    "propertyId": 69
  },
  "gestionnaire": {
    "firstname": "Léa",
    "lastName": "L.",
    "phone": "+333333"
  },
  "commercial": {
    "firstname": "Léa",
    "lastName": "L.",
    "phone": "+333333"
  },
  "users": [
    {
      "id": 23145,
      "type": "user.type.user",
      "civility": "user.civility.m",
      "firstName": "xxxxxxxxxx",
      "lastName": "xxxxxx",
      "email": "xxxxxxxxxx@yahoo.com",
      "phone": "+3333333",
      "birthDate": "1995-05-22T22:00:00.000Z",
      "revenu": 633,
      "proprietaire": null,
      "locataire": null,
      "situation": "user.situation.salarieCDIValidee",
      "situationEtudiant": null,
      "situationSalarie": "user.situationSalarie.cdd",
      "situationAutre": null,
      "groupe": "user.groupe.seul",
      "nationality": "Italie",
      "fonction": "Stagiaire",
      "profession": null,
      "activiteDebut": "2021-04-05T22:00:00.000Z",
      "activiteFin": "2021-10-05T22:00:00.000Z",
      "essaiFin": null,
      "debut": null,
      "revenu1": 633,
      "revenuName1": "user.revenu.gratification",
      "revenu2": null,
      "revenuName2": null,
      "revenu3": null,
      "revenuName3": null,
      "revenu4": null,
      "revenuName4": null,
      "address": null,
      "cp": null,
      "city": null,
      "referentId": null,
      "referentType": null,
      "referentStructure": null,
      "organismeName": null,
      "n2": null,
      "actuellement": "user.actuellement.heberge",
      "deleteAlertAt": null,
      "situationSansEmploi": null,
      "sansemploiFin": null,
      "documents": [
        {
          "id": 160800,
          "type": "document.type.identite",
          "url": "https://flatbay.fr/fr/xxxxxxxxx"
        },
        {
          "id": 163743,
          "type": "document.type.employeur",
          "url": "https://flatbay.fr/fr/xxxxxxxxx"
        },
        {
          "id": 163747,
          "type": "document.type.contrat",
          "url": "https://flatbay.fr/fr/xxxxxxxxx"
        },
        {
          "id": 163748,
          "type": "document.type.contrat",
          "url": "https://flatbay.fr/fr/xxxxxxxxx"
        },
        {
          "id": 163749,
          "type": "document.type.contrat",
          "url": "https://flatbay.fr/fr/xxxxxxxxx"
        },
        {
          "id": 164809,
          "type": "document.type.domicile",
          "url": "https://flatbay.fr/fr/xxxxxxxxx"
        },
        {
          "id": 164810,
          "type": "document.type.domicile",
          "url": "https://flatbay.fr/fr/xxxxxxxxx"
        },
        {
          "id": 164811,
          "type": "document.type.domicile",
          "url": "https://flatbay.fr/fr/xxxxxxxxx"
        },
        {
          "id": 164812,
          "type": "document.type.domicile",
          "url": "https://flatbay.fr/fr/xxxxxxxxx"
        }
      ],
      "garants": [
        {
          "id": 23894,
          "address": "xxxxxxxxxxxxx",
          "cp": "06800",
          "city": "Cagnes-sur-Mer",
          "type": "user.type.pro",
          "civility": "user.civility.m",
          "firstName": "xxxx",
          "lastName": "xxxxxx",
          "email": "xxxxxxxxxx@wanadoo.fr",
          "phone": "+3333333333",
          "birthDate": null,
          "revenu": 1400,
          "proprietaire": null,
          "locataire": null,
          "situation": "user.situation.retraite",
          "situationEtudiant": null,
          "situationSalarie": null,
          "situationAutre": null,
          "groupe": null,
          "parente": null,
          "nationality": "France",
          "fonction": null,
          "profession": null,
          "activiteDebut": null,
          "activiteFin": null,
          "essaiFin": null,
          "debut": null,
          "revenu1": 1400,
          "revenuName1": "user.revenu.retraite",
          "revenu2": null,
          "revenuName2": null,
          "revenu3": null,
          "revenuName3": null,
          "revenu4": null,
          "revenuName4": null,
          "referentId": null,
          "referentType": null,
          "referentStructure": null,
          "organismeName": null,
          "n2": null,
          "actuellement": null,
          "deleteAlertAt": null,
          "situationSansEmploi": null,
          "sansemploiFin": null,
          "documents": [
            {
              "id": 164759,
              "type": "document.type.identite",
              "url": "https://flatbay.fr/fr/xxxxxxx"
            },
            {
              "id": 164767,
              "type": "document.type.impot",
              "url": "https://flatbay.fr/fr/xxxxxxx"
            },
            {
              "id": 164770,
              "type": "document.type.impot",
              "url": "https://flatbay.fr/fr/xxxxxxx"
            },
            {
              "id": 164799,
              "type": "document.type.retraite",
              "url": "https://flatbay.fr/fr/xxxxxxx"
            },
            {
              "id": 164838,
              "type": "document.type.foncier",
              "url": "https://flatbay.fr/fr/xxxxxxx"
            },
            {
              "id": 164839,
              "type": "document.type.foncier",
              "url": "https://flatbay.fr/fr/xxxxxxx"
            },
            {
              "id": 164872,
              "type": "document.type.domicile",
              "url": "https://flatbay.fr/fr/xxxxxxx"
            }
          ]
        }
      ]
    }
  ]
}

2. Retour d'information sur le dossier

l'organisme de gli peut appeller cette url afin de notifier flatbay du status du dossier.

  • X-API-KEY (header) : la clé d'api devra etre tranmise via un header HTTP.
  • candidateId (body) : L'id est censé etre l'id de candidature récupéré précedement dans le json.
  • status (body) : Les status acceptés sont "ok" ou "ko" ou "need_data"
  • message (body) : En cas de status == need_data, cela permet de rédiger un texte dans lequel sera detaillé les pièces et/ou la personne pour laquelle il faut des precisions.
  • files (body) : tableau de fichiers. un fichier est un objet avec un champs "content" qui contient le contenu du fichier en base64, et un champs "name" contenant le nom du fichier avec l'extension. On peut spécifier plusieurs fichiers. ils seront tous visibles dans l'interface de flatbay.

Exemple de demande d'information :

curl -X POST https://flatbay.fr/fr/glihook \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-API-KEY: xxxxxxx" \
--data '{"candidateId": 12345, "status":"need_data", "message": "piece d'identité de Raphaël Piccolo illisible"}'

Exemple d'accord avec fichiers :

curl -X POST https://flatbay.fr/fr/glihook \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-API-KEY: xxxxxxx" \
--data '{"candidateId": 12345, "status":"ok", "files": [{"content":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==", "name":"file.pdf"}]}'

Dictionnaire

Clef Traduction
document.type.chomage Attestation de paiement (Pôle emploi)
document.type.edl État des lieux
document.type.chomage2 Attestation de situation (Pôle emploi)
document.type.fonctionnaire Attestation de titularisation
document.type.rsa RSA
document.type.caf Attestation CAF
document.type.rib RIB
document.type.assurance Attestation d'assurance
document.type.bail Bail
document.type.bailavenant Avenant au bail
document.type.in Etat des lieux d'entrée
document.type.out Etat des lieux de sortie
document.type.out_in Etat des lieux de sortie et d'entrée
document.type.etatavenant Avenant à l'état des lieux
document.type.diagnostics Diagnostics
document.type.inventaire Inventaire mobilier
document.type.devis Devis
document.type.facture Facture
document.type.contratentretien Contrat d'entretien chaudière
document.type.reglement Règlement de copropriété
document.type.charges Relevé de charges annuelles
document.type.caution Acte de cautionnement
document.type.autorisation Autorisation de prélèvement SEPA
document.type.identite Pièce d'identité
document.type.retraite Pension de retraite
document.type.foncier Taxe foncière
document.type.carteEtudiante Carte etudiante
document.type.convention Convention
document.type.alternant Contrat d'alternance
document.type.bourse Justificatif d'attribution de bourse
document.type.salaire 3 derniers bulletins de salaire
document.type.impot Derniers avis d'imposition
document.type.contrat Contrat de travail
document.type.domicile Justificatif de domicile
document.type.dossier Dossier de candidature
document.type.garantie Justificatif de garantie
document.type.mandat Mandat de gestion
document.type.mandatvente Mandat de vente
document.type.mandatlocation Mandat de location
document.type.autre Autres sources de revenus
document.type.autre2 Autre document
document.type.loyer 3 dernières quittances de loyer
document.type.hebergement Attestation d'hébergement
document.type.reference Lettre de référence
document.type.comptable Attestation comptable
document.type.bilan Deux derniers bilans
document.type.kbis Extrait KBIS
document.type.sejour Titre de séjour
document.type.employeur Attestation de l'employeur
document.type.newsletter document de Newsletter
document.type.property Photo de l'appartement
document.type.propertyPrincipal Photo Principale de l'appartement
document.type.assuranceloc Assurances locataire (MRH)
document.type.offre Offres d'achat
document.type.assurancepro Assurances propriétaire (PNO)
user.garantSituation Activité
user.garant.famille Famille
user.garant.ami Ami(e)
user.garant.employeur Employeur
user.garant.banque Banque
user.garant.organisme Organisme (Visale, Garant me, Cautioneo...)
user.organismeName Nom de l'organisme
user.garantType Lien avec le garant
user.actuellement Vous êtes actuellement
user.actuellement.locataire Locataire de votre logement
user.actuellement.proprietaire Propriétaire de votre logement
user.actuellement.heberge Hébergé par un tiers (famille, ami(e), autre...)
user.type Type
user.firstName Prénom
user.lastName Nom
user.email Adresse e-mail
user.civility Civilité
user.birthDate Date de naissance
user.address Adresse
user.cp Code Postal
user.city Ville
user.nationality Nationalité
user.situation Situation
user.situation.etudiant Étudiant(e)
user.situation.interimaire Intérimaire
user.situation.intermittent Intermittent(e)
user.situationEtudiant Situation étudiant
user.situationEtudiant.simple Simple étudiant(e)
user.situationEtudiant.stage Stagiaire
user.situationEtudiant.alternant Alternant(e)
user.situation.salarieCDIValidee Salarié(e) CDI (période d'essai validée)
user.situation.salarieCDINonValidee Salarié(e) CDI (en période d'essai)
user.situation.salarieCDDValidee Salarié(e) CDD (période d'essai validée)
user.situation.salarieCDDNonValidee Salarié(e) CDD (en période d'essai)
user.situation.fonctionnaire Fonctionnaire
user.situationSalarie Type de contrat
user.situationSalarie.cdd CDD
user.situationSalarie.cdi CDI
user.situationSansEmploi Situation sans emploi
user.sansemploiFin Date de fin des droits
user.situationSansEmploi.indemnite Avec indemnités
user.situationSansEmploi.nonindemnite Sans indemnités
user.situationAutre Type de structure
user.situationAutre.ei EI
user.situationAutre.eirl EIRL
user.situationAutre.eurl EURL
user.situationAutre.sarl SARL
user.situationAutre.sa SA
user.situationAutre.sas SAS
user.situationAutre.sasu SASU
user.situationAutre.sca SCA
user.situationAutre.sc SC
user.situationAutre.sci SCI
user.situationAutre.scic SCIC
user.situationAutre.scm SCM
user.situationAutre.scop SCOP
user.situationAutre.scp SCP
user.situationAutre.scs SCS
user.situationAutre.selarl SELARL
user.situationAutre.selarluni SELARL unipersonnelle
user.situationAutre.selafa SELAFA
user.situationAutre.selas SELAS
user.situationAutre.selca SELCA
user.situationAutre.snc SNC
user.localisation Localisation de la recherche
user.loyerMax Budget maximum
user.dateEmmenagement Date d'emménagement souhaitée
user.situation.independant Indépendant(e)
user.situation.retraite Retraité(e)
user.situation.autre Autre
user.situation.sansemploi Sans emploi
user.type.user Locataire
user.type.pro Propriétaire
user.type.userregister Je souhaite Louer/acheter un bien
user.type.proregister Je souhaite vendre/louer mon bien
user.type.agence Agence
user.type.admin Admin
user.garant.type Votre garant est ?
user.civility.m M
user.civility.mme Mme
user.civility.other Autre
user.fonction Fonction
user.profession Profession
user.activite Activite
user.activiteDebut Debut d'activité
user.activiteFin Fin d'activité
user.essaiFin Fin de période d'essai
user.description Informations complémentaires que vous souhaitez communiquer sur vos revenus :
user.revenu Total des revenus mensuels net
user.revenu.gratification Gratification de stage
user.revenu.salaire Salaire mensuel net
user.revenu.caf Allocations familliales
user.revenu.logement Aides au logement
user.revenu.aide Aides familliales
user.revenu.loc Revenus locatifs
user.revenu.bourse Bourse
user.revenu.chomage Allocation chômage
user.revenu.rsa RSA
user.revenu.autre Autres sources de revenus
user.revenu.retraite Pension de retraite
user.groupe Je cherche
user.groupe.seul Seul(e)
user.groupe.couple En couple
user.groupe.groupe En groupe
user.bio Présentation
user.phone Numéro de mobile
user.picture Image de profil
user.siret N° SIRET
user.kabis KABIS
user.nbEmployee Nombre d'employés
user.categoryName Catégories de l'entreprise
user.picturecover Image couverture
user.proSituation Situation professionnelle
user.ecosystem Ecosystem
user.area Secteurs d'activité
user.skill Compétences
user.kbis KBIS
user.slug Url personalisée
user.parente Lien de parenté
user.parente.famille Famille
user.parente.ami Ami(e)
user.parente.employeur Employeur
user.parente.banque Banque
user.parente.organisme Organisme
user.revenuAutreType Type de revenu
user.referent.proprio Ancien bailleur
user.referent.organisme Société, organisme
user.referent.agence Agence immobilière
user.notifCandidate Offres & Candidatures
user.notifVisite Visites
user.notifChat Chats
user.notifNewsletter Newsletter
user.iban IBAN
user.bic BIC
user.percent Pourcentage
user.isNew Nouveau propriétaire / Propriétaire existant
user.isNew.yes Nouveau propriétaire
user.isNew.no Propriétaire existant
user.categorie.charges Charges
user.categorie.depot Dépôt de garantie
user.categorie.huissier Frais d'huissier / Procédure
user.categorie.location Honoraires location
user.categorie.leasing Leasing mobilier
user.categorie.gestion Hororaires gestion
user.categorie.horsCharges Loyer hors charges
user.categorie.ordures Ordures ménagères
user.categorie.travaux Travaux locatifs / Entretien
user.categorie.leasing Leasing mobilier
candidate.type.seul seul(e)
candidate.type.couple couple
candidate.type.groupe groupe