openapi: 3.0.3
info:
  title: 'MLI API'
  description: ''
  version: 1.0.0
servers:
  -
    url: 'https://api.mli.immo'
paths:
  /third-party-api/agencies:
    get:
      summary: Agences
      operationId: agences
      description: 'Liste des agences mise à votre disposition'
      parameters: []
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "[\n  {\n    \"id\" : uuid \"43430adf-cd54-4a30-9566-29c98683ad77\",\n    \"name\" : string \"Nom de l'agence\",\n    \"email\" : string \"E-mail de l'agence\",\n    \"phone\" : string \"Téléphone de l'agence\",\n    \"website\" : string \"Site internet\",\n    \"logo\" : string \"Url du logo\",\n    \"addr\" : string \"Adresse de l'agence\",\n    \"city\" : string \"Ville de l'agence\",\n    \"zip_code\" : string \"Code postal\",\n  }\n]"
      tags:
        - Endpoints
  /third-party-api/properties:
    get:
      summary: Annonces
      operationId: annonces
      description: "Liste des annonces, il est conseillé de restreindre la liste via un ID d'agence.<br>\nTous les champs peuvent être `null` à l'exception de `id`, `category`"
      parameters:
        -
          in: query
          name: Page
          description: 'La page en cours. Example : 1'
          example: 17
          required: false
          schema:
            type: integer
            description: 'La page en cours. Example : 1'
            example: 17
        -
          in: query
          name: Limit
          description: "Nombre d'annonces par page (max 100). Example : 100"
          example: 17
          required: false
          schema:
            type: integer
            description: "Nombre d'annonces par page (max 100). Example : 100"
            example: 17
        -
          in: query
          name: websites
          description: 'uuid du site contenant les annonces. Example : uuid'
          example:
            - consequatur
          required: false
          schema:
            type: array
            description: 'uuid du site contenant les annonces. Example : uuid'
            example:
              - consequatur
            items:
              type: string
        -
          in: query
          name: agencies
          description: "uuid de l'agence possédant les annonces. Example : uuid, uuid"
          example:
            - consequatur
          required: false
          schema:
            type: array
            description: "uuid de l'agence possédant les annonces. Example : uuid, uuid"
            example:
              - consequatur
            items:
              type: string
        -
          in: query
          name: 'filters[reference]'
          description: "Filtrer par la référence d'une annonce. Example : AZ123"
          example: consequatur
          required: false
          schema:
            type: string
            description: "Filtrer par la référence d'une annonce. Example : AZ123"
            example: consequatur
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n \"total\": 25, // nombre d'annonce au total\n \"page\": 1, // page actuelle\n \"per_page\": 100, // nombre d'annonce par page\n \"properties\" : [\n   {\n     \"id\": int 1234,\n     \"reference\": string,\n     \"category\": enum \"vente|location|location saisonnière|viager\",\n     \"sub_category\": enum \"Viager libre|Viager occupé|Nue-propriété|Vente à terme|Viager semi-occupé|Vente à terme libre|Vente à terme semi-occupée|Vente à terme occupée|Viager sans rente|Programme|Programme neuf|Vente à l'unité|Vente en bloc|Vide|Meublée|Colocation|Étudiant|Vacances|Événementiel|Vendu loué\",\n     \"type\": string \"Maison\",\n     \"mandate\": string \"AZ 123\", // Numéro de mandat\n     \"price\": int 123000, // Prix (Bouquet pour viager) en euro\n     \"title\": string \"Titre de l'annonce\",\n     \"description\": string \"Description de l'annonce\",\n     \"rooms\": int 2, // Nombre de pièces\n     \"surface\": int 34,\n     \"surface_carrez\": float 34.25, // Surface loi carrez\n     \"garbage_tax\": int|float 32, // Ordures ménagères\n     \"housing_tax\": int|float 32.56, // Taxe d'habitation\n     \"property_tax\": int|float 32, // Taxe foncière\n     \"commission_buyer\": int|float 24610, // Honoraires acheteur\n     \"commission_buyer_rate\": int|float 10.23, // Honoraires acheteur en %\n     \"cellar\": int 2, // Nombre de cave\n     \"floor\": string \"3ème\", // étage dans le batiment\n     \"levels\": int 2, // nombre d'étages dans l'annonce\n     \"bathroom\": int 1, // nombre de salle de bain\n     \"shower_room\": int 2, // nombre de salle d'eau\n     \"toilet\": int 2, // nombre de WC\n     \"bedroom\": int 3, // nombre de chambres\n     \"parking\": int 1, // nombre de parking\n     \"land\": int|float 456.52, // surface terrain en m²\n     \"elevator\": bool true, // ascenseur\n     \"heating\": string \"Pompe à chaleur avec plancher chauffant\", // chauffage\n     \"dpe_status\": enum \"Vierge|Réalisé|En attente|Non applicable\", // Status du DPE\n     \"dpe_value\": string \"16\", // score DPE en kWhEP/m².an\n     \"dpe_letter\": string \"B\", // lettre du DPE\n     \"dpe_date\": string \"2021-03-25\", // date de réalisation du DPE\n     \"dpe_annual_expenses_min\": float, // Dépenses annuelles d'énergie\n     \"dpe_annual_expenses_max\": float, // Dépenses annuelles d'énergie max. (pour les nouveaux DPE)\n     \"dpe_annual_expenses_date\":string \"2021-03-25\", // date de l'indexation du prix des dépenses annuelles\n     \"ges_status\": enum \"Vierge|Réalisé|En attente|Non applicable\", // Status du DPE\n     \"ges_value\": string \"6\", // score GES en kg éq CO₂/m²/an\n     \"ges_letter\": string \"A\", // lettre GES\n     \"ges_date\": string \"2021-03-25\", // date de réalisation du GES\n     \"construction_year\": int 1999, // année de construction\n     \"balcony\": int 2, // nombre de balcon\n     \"terrace\": int 2, // nombre de terrasse\n     \"pool\": bool true, // piscine\n     \"favorite\": bool true, // annonce marqué comme favoris\n     \"exclusive\": bool false, // exclusivité\n     \"prestige\": bool true, // annonce marqué comme prestige\n     \"sold\": bool false, // annonce vendu par l'agence\n     \"under_offer\": bool false, // Sous offre ou réservation\n     \"orientation\": string \"Nord Est\",\n     \"is_co_ownership\": bool true, // cette annonce fait partie d'une co-propriété\n     \"co_ownership_lots\": int 54, // nombre de lots dans la co-propriété\n     \"co_ownership_annual_share\": int|float 123.45, // montant annuel de la quote-part de la co-propriété\n     \"is_co_ownership_troubled\": bool false, // co-propriété en difficulté\n     \"annuities\": int|float 125.35, // montant de la rente\n     \"annuities_duration\": int 48, // durée de la rente en mois\n     \"market_value\": int 480000, // valeur vénale\n     \"life_capita_1_gender\": enum \"Homme|Femme\", // sexe tête 1\n     \"life_capita_1_age\": int 77, // age tête 1\n     \"life_capita_2_gender\": enum \"Homme|Femme\", // sexe tête 2\n     \"life_capita_2_age\": int 77, // age tête 2\n     \"inventory_of_fixtures\": int|float 12.34, // montant état des lieux\n     \"tenant_fees\": int|float 12, // honoraire locataire\n     \"security_deposit\": int|float 12.34, // dépot de garantie\n     \"state\": enum \"À rafraîchir|À rénover|Bon état|Excellent état|Neuf\", // état\n     \"digicode\": bool false,\n     \"intercom\": bool false, // interphone\n     \"keeper\": bool false, // gardien\n     \"handicapped\": bool false, // accès handicapé\n     \"youtube\": string \"https://...\", // Url video youtube\n     \"visit_3d\": string \"https://...\", // Url visite 3D\n     \"photos\": array|null [\n       {\n         \"id\": uuid \"d2530c39-a166-45f8-8581-263c1a01e59f\",\n         \"src\": string \"https://....jpg\",\n       }\n     ],\n     \"city\": object|null {\n         \"zip_code\": string \"26600\",\n         \"fullname\": string \"Mercurol\",\n      },\n     \"longitude\": float|null, // longitude\n     \"latitude\": float|null, // latitude\n     \"agency\": object {\n         \"id\": uuid \"78feaa4c-6df7-4ae7-a471-8a862b5ff4ae\",\n         \"name\": string \"Agence de test\",\n         \"phone\": string \"+33 (0)5 67 09 75 76\",\n         \"website\": string \"example.com\",\n      },\n     \"fees_pdf\": string|null \"https://mli.ams3.digitaloceanspaces.com/agency/fees-pdf/demo.pdf\", // PDF avec les honnoraires de l'agence\n     \"contact\": object { // informations de contact préférées par l'agence pour l'annonce\n         \"name\": string \"Jean Dupont\",\n         \"phone\": string \"05 00 00 00 00\",\n         \"email\": string \"test@example.com\",\n      },\n     \"created_at\": int 1641286094, // timestamp date de création\n     \"updated_at\": int 1641286094, // timestamp date de mise à jour\n    }\n  ]\n}"
      tags:
        - Endpoints
tags:
  -
    name: Endpoints
    description: ''
components:
  securitySchemes:
    default:
      type: http
      scheme: bearer
      description: ''
security:
  -
    default: []
