openapi: 3.2.0 info: title: Kelvin Simulateur API version: '1.0' description: 'Operations tagged Simulateur across 2 of this provider''s published API definitions: kelvin-api-openapi.yml, kelvin-api-v2-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: '{protocol}://{defaultHost}' variables: protocol: default: https defaultHost: default: app.go-kelvin.com security: - bearerAuth: [] tags: - name: Simulateur description: Endpoints disponibles dans l'offre Simulateur paths: /api/v3/simulations: post: summary: Créer une simulation tags: - Simulateur description: Endpoint pour créer une simulation à partir d'un ban_id et des coordonnées GPS. security: - bearerAuth: [] parameters: [] responses: '201': description: Created content: application/json: schema: type: object properties: simulation_id: type: string example: hjjcm1qp28 description: L'identifiant de la simulation créée. required: - simulation_id '400': description: Bad Request content: application/json: schema: type: object properties: error: type: string example: Latitude is missing, Longitude is missing description: Error message indicating the issue. '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: Unauthorized '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: Forbidden '422': description: Unprocessable Entity content: application/json: schema: type: object properties: error: type: string example: Could not find an address for the given GPS coordinates description: Error message indicating the issue. requestBody: content: application/json: schema: type: object properties: latitude: type: number example: 43.53718 longitude: type: number example: 1.337797 ban_id: type: string example: '31157_0790_00009' required: - latitude - longitude servers: - url: '{protocol}://{defaultHost}' variables: protocol: default: https defaultHost: default: app.go-kelvin.com /api/v3/simulations/{simulation_id}/housing: get: summary: Récupérer les informations de la propriété tags: - Simulateur description: Les informations de la propriété. security: - bearerAuth: [] parameters: - name: simulation_id in: path required: true example: hjjcm1qp28 description: L'identifiant de simulation renvoyé par l'appel au endpoint créer schema: type: string responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string enum: - pending - processing - completed - failed example: completed description: Le statut de l'opération de génération de résultat. housing: type: object properties: housing_type: type: - string - 'null' enum: - house - apartment - unknown example: apartment description: Le type de la propriété. epc_id: type: - string - 'null' example: 2331E2555868X description: Le numéro unique du DPE. surface: type: - integer - 'null' example: 100 description: La surface de la propriété en m2. floor_level: type: - string - 'null' enum: - ground - intermediate - last example: ground description: La position da le propriété dans l'immeuble. number_of_exterior_wall: type: - integer - 'null' example: 1 description: Le nombre de murs donnant sur l'extérieur. address: type: object properties: street_number: type: string example: '123' description: Le numéro de la rue. address_line_1: type: string example: Rue de la Paix description: Le nom de la rue. address_line_2: type: - string - 'null' example: Apt 4B description: Complément d'adresse. city: type: string example: Paris description: La ville. postal_code: type: string example: '75000' description: Le code postal. country_number: type: integer example: 250 description: Le numéro du pays, code ISO3166. France = 250 latitude: type: number example: 43.53718 description: La latitude. longitude: type: number example: 1.337797 description: La longitude. required: - housing - status - address '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: Unauthorized '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: Forbidden '404': description: Not Found content: application/json: schema: type: object properties: error: type: string example: Could not find the simulation description: Error message indicating the issue. put: summary: Mettre à jour les informations de la propriété tags: - Simulateur description: Endpoint pour mettre à jour les informations de la propriété security: - bearerAuth: [] parameters: - name: simulation_id in: path required: true example: hjjcm1qp28 description: L'identifiant de simulation renvoyé par l'appel au endpoint créer schema: type: string responses: '204': description: No Content '400': description: Bad Request content: application/json: schema: type: object properties: error: type: string example: Housing type is missing or invalid description: Error message indicating the issue. '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: Unauthorized '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: Forbidden requestBody: content: application/json: schema: type: object properties: epc_id: type: string example: 2331E2555868X description: Le numéro unique du DPE. housing_type: type: string enum: - house - apartment example: apartment description: Le type de propriété. surface: type: integer example: 100 description: La surface de la propriété en m2. Obligatoire si le housing_type est apartment. floor_level: type: string enum: - ground - intermediate - last example: ground description: La position da le propriété dans l'immeuble. Obligatoire si le housing_type est apartment. number_of_exterior_wall: type: integer example: 1 description: Le nombre de murs donnant sur l'extérieur. Obligatoire si le housing_type est apartment. required: - simulation_id - post_params servers: - url: '{protocol}://{defaultHost}' variables: protocol: default: https defaultHost: default: app.go-kelvin.com /api/v3/simulations/{simulation_id}/qualification: put: summary: Qualifier le profil de l'utilisateur tags: - Simulateur description: 'Enregistre les informations de qualification du profil utilisateur. **Comportement de `primary_residence` selon `profile` :** - `owner_resident` : `primary_residence` est automatiquement défini à `true` (la valeur fournie est ignorée). - `owner_non_resident` : `primary_residence` est automatiquement défini à `false` (la valeur fournie est ignorée). - `renter` ou `lessor` : `primary_residence` est **obligatoire** ; son absence retourne une erreur `400`. **Effet sur la simulation :** Après une mise à jour réussie, les résultats de simulation existants ne sont plus à jour. Appelez `POST /api/v3/simulations/{simulation_id}/run` pour obtenir des résultats recalculés. ' security: - bearerAuth: [] parameters: - name: simulation_id in: path required: true example: hjjcm1qp28 description: L'identifiant de la simulation. schema: type: string responses: '204': description: Qualification enregistrée avec succès. '400': description: Bad Request - code département fiscal invalide content: application/json: schema: type: object properties: error: type: string example: Tax residence department is invalid description: Le code département ne correspond à aucun département connu. '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: Unauthorized '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: Forbidden '404': description: Not Found content: application/json: schema: type: object properties: error: type: string example: Could not find the simulation description: La simulation n'existe pas ou n'appartient pas à cette équipe. requestBody: content: application/json: schema: type: object properties: profile: type: string enum: - owner_resident - owner_non_resident - renter - lessor example: owner_resident description: 'Le profil de l''utilisateur. `owner_resident` : propriétaire occupant (primary_residence forcé à true). `owner_non_resident` : propriétaire non-occupant (primary_residence forcé à false). `renter` : locataire (primary_residence requis). `lessor` : bailleur (primary_residence requis).' primary_residence: type: boolean example: true description: Indique si le logement est la résidence principale. Obligatoire pour les profils `renter` et `lessor`. Ignoré (auto-calculé) pour les profils `owner_resident` et `owner_non_resident`. household_size: type: integer minimum: 1 maximum: 12 example: 4 description: Nombre de personnes dans le foyer fiscal. tax_residence_department: type: string example: '75' description: 'Code du département de résidence fiscale (ex : "75", "13", "2A"). Doit correspondre à un code de département français valide. Utilisé pour calculer les plafonds de revenus ANAH.' income_range: type: string enum: - very_modest - modest - intermediate - superior example: modest description: 'Tranche de revenus du foyer selon le barème ANAH. `very_modest` : très modeste. `modest` : modeste. `intermediate` : intermédiaire. `superior` : supérieure aux plafonds ANAH.' project_maturity: type: string enum: - curious - searching - estimated - signed example: curious description: 'Maturité du projet de rénovation. `curious` : en phase de découverte. `searching` : en recherche active. `estimated` : devis reçu. `signed` : devis signé.' required: - profile - household_size - income_range required: true servers: - url: '{protocol}://{defaultHost}' variables: protocol: default: https defaultHost: default: app.go-kelvin.com /api/v3/simulations/{simulation_id}/run: post: summary: Lancer la simulation tags: - Simulateur description: Endpoint pour lancer la simulation. security: - bearerAuth: [] parameters: - name: simulation_id in: path required: true example: hjjcm1qp28 description: L'identifiant de simulation renvoyé par l'appel au endpoint créer schema: type: string responses: '201': description: Created '401': description: unauthorized content: application/json: schema: type: object properties: error: type: string example: Unauthorized '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: Forbidden '404': description: Not Found content: application/json: schema: type: object properties: error: type: string example: Could not find the simulation '422': description: Unprocessable Entity content: application/json: schema: type: object properties: error: type: string example: Apartment information is needed servers: - url: '{protocol}://{defaultHost}' variables: protocol: default: https defaultHost: default: app.go-kelvin.com /api/v3/simulations/{simulation_id}/projected-state: get: summary: Récupérer l'état projeté tags: - Simulateur description: Les informations de l'état projeté. security: - bearerAuth: [] parameters: - name: simulation_id in: path required: true example: hjjcm1qp28 description: L'identifiant de simulation renvoyé par l'appel au endpoint créer schema: type: string responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string enum: - pending - processing - completed - failed example: completed description: Le statut de l'opération de génération de résultat. projected_state: type: object properties: renovation_plans: type: array items: type: object description: Liste des plans de rénovation. properties: id: type: string example: hjjcm1qp28 description: L'identifiant du plan de rénovation. name: type: string example: Mon plan personnalisé description: Le nom du plan de rénovation. type: type: string enum: - normal - customized - optimized example: customized description: Le type de plan de rénovation. overall_rating: type: string enum: - A - B - C - D - E - F - G example: B description: La lettre DPE globale (la plus défavorable entre énergie et GES). energy_rating: type: string enum: - A - B - C - D - E - F - G example: B description: La lettre énergie après rénovation. energy_consumption: type: integer example: 201 description: La consommation énergétique après rénovation en kWh/m²/an. carbon_rating: type: string enum: - A - B - C - D - E - F - G example: C description: La lettre GES après rénovation. carbon_emissions: type: integer example: 40 description: Les émissions de gaz à effet de serre après rénovation en kg CO2/m²/an. yearly_energy_savings: type: number format: float description: Économies d'énergie annuelles estimées en Euros. example: 600 yearly_energy_cost: type: number format: float description: Coût énergétique annuel estimé en Euros. example: 12000 budget: type: number format: float description: Coût total estimé du plan de travaux en Euros. example: 12000 financial_support: $ref: '#/components/schemas/FinancialSupport' kpi: type: object description: Indicateurs clés de performance du plan de rénovation. properties: property_value_increase: type: object description: Valorisation immobilière estimée suite aux travaux. properties: percentage: type: number format: float description: Pourcentage d'augmentation de la valeur immobilière. example: 5 price_per_sqm: type: number format: float description: Valorisation estimée en €/m². example: 115 area_loss_sqm: type: number format: float description: Perte de surface en m² due aux travaux. example: 0 renovation_plan: type: object description: Liste des tâches du plan de rénovation. properties: ventilation: type: array items: type: object properties: technical_id: type: string enum: - dual_flow_ventilation - single_flow_ventilation_self_regulating - air_destratifier - mechanical_distributed_ventilation - dual_flow_ventilation_thermodynamic - single_flow_ventilation_humidity_controlled - ventilation_mechanical_insufflation name: type: string enum: - Installation d'une VMC double flux - Installation d'une VMC simple flux autoréglable - Installation d'un destratificateur d'air - Installation d'un système de ventilation mécanique répartie (VMR) - Installation d'une VMC double flux thermodynamique - Installation d'une VMC simple flux hygroréglable - Installation d'un système de ventilation mécanique par insufflation (VMI) quantity: type: integer description: Nombre d'unités budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' walls: type: array items: type: object properties: technical_id: type: string enum: - exterior_thermal_correction - interior_thermal_insulation - exterior_thermal_insulation - exterior_thermal_insulation_historic - interior_thermal_insulation_thin name: type: string enum: - Réalisation d'une correction thermique par l'extérieur - Isolation thermique des murs par l'intérieur (ITI) - Isolation thermique des murs par l'extérieur (ITE) - Isolation thermique des murs par l'extérieur (ITE) en zone historique - Isolation thermique des murs par l'intérieur (ITI) avec isolant mince quantity: type: integer description: Surface en m² budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' doors_windows: type: array items: type: object properties: technical_id: type: string enum: - windows_triple_glazed - doors_double_glazed - windows_double_glazed_historic - french_doors_double_glazed_historic - doors_full_historic - roof_windows_triple_glazed_historic - french_doors_triple_glazed - roof_windows_triple_glazed - doors_triple_glazed - roof_windows_double_glazed - windows_double_glazed - windows_triple_glazed_historic - french_doors_double_glazed - doors_full - roof_windows_double_glazed_historic - doors_double_glazed_historic - doors_triple_glazed_historic - french_doors_triple_glazed_historic name: type: string enum: - Pose de fenêtres à triple vitrage - Pose de portes à double vitrage - Pose de fenêtres à double vitrage en zone historique - Pose de portes-fenêtres à double vitrage en zone historique - Pose de portes pleines en zone historique - Pose de fenêtres de toit à triple vitrage en zone historique - Pose de portes-fenêtres à triple vitrage - Pose de fenêtres de toit à triple vitrage - Pose de portes à triple vitrage - Pose de fenêtres de toit à double vitrage - Pose de fenêtres à double vitrage - Pose de fenêtres à triple vitrage en zone historique - Pose de portes-fenêtres à double vitrage - Pose de portes pleines - Pose de fenêtres de toit à double vitrage en zone historique - Pose de portes à double vitrage en zone historique - Pose de portes à triple vitrage en zone historique - Pose de portes-fenêtres à triple vitrage en zone historique quantity: type: integer description: Nombre d'unités budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' low_floor: type: array items: type: object properties: technical_id: type: string enum: - crawl_space - underfloor - parcel name: type: string enum: - Isolation du plancher bas sur vide sanitaire - Isolation du plancher bas sur sous-sol - Isolation du plancher bas sur terre-plein quantity: type: integer description: Surface en m² budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' high_floor: type: array items: type: object properties: technical_id: type: string enum: - sloped_walls_nonreg - flat_roof - sloped_walls - lost_attic - flat_roof_nonreg name: type: string enum: - Isolation non réglementaire des rampants de toiture - Isolation de la toiture-terrasse - Isolation des rampants de toiture - Isolation du plancher haut sur combles perdus - Isolation non réglementaire de la toiture terrasse quantity: type: integer description: Surface en m² budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' heating: type: array items: type: object properties: technical_id: type: string enum: - wood_pellets_stove - wood_logs_boiler_simple_service - mass_stove - wood_pellets_boiler_simple_service - wood_logs_boiler_double_service - geothermal_heat_pump_double_service - wood_pellets_boiler_double_service - air_water_heat_pump_simple_service - gas_boiler_double_service - geothermal_heat_pump_simple_service - wood_logs_stove_double_service - gas_boiler_simple_service - air_water_heat_pump_double_service - air_air_heat_pump_with_external_unit_complete - hybrid_heat_pump_simple_service - wood_logs_stove - hybrid_heat_pump_double_service - electric_emitter_fluid_inertia - low_temperature_underfloor_heating - air_air_heat_pump_without_external_unit name: type: string enum: - Installation d'un poêle à granulés - Installation d'une chaudière bois à bûches simple service - Installation d'un poêle de masse - Installation d'une chaudière bois à granulés simple service - Installation d'une chaudière bois à bûches double service - Installation d'une pompe à chaleur géothermique double service - Installation d'une chaudière bois à granulés double service - Installation d'une pompe à chaleur air/eau simple service - Installation d'une chaudière gaz à condensation double service - Installation d'une pompe à chaleur géothermique simple service - Installation d'un poêle à bûches avec bouilleur - Installation d'une chaudière gaz à condensation simple service - Installation d'une pompe à chaleur air/eau double service - Installation d'une pompe à chaleur air/air avec groupe extérieur - Installation d'une pompe à chaleur hybride air/eau simple service - Installation d'un poêle à bûches - Installation d'une pompe à chaleur hybride air/eau double service - Installation d'un émetteur électrique performant - Installation d'un plancher chauffant basse température (PCBT) - Installation d'une pompe à chaleur air/air sans groupe extérieur quantity: type: integer description: Nombre d'unités energy: type: object description: Type d'énergie utilisé pour le chauffage. properties: technical_id: type: string enum: - electricity - fuel - gas - biomass_wood - district_heating - others name: type: string enum: - Électricité - Fioul - Gaz - Bois/biomasse - Réseau de chauffage urbain - Autres budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' recommended_power: type: number description: Puissance recommandée (en kW). Présent uniquement pour les pompes à chaleur. example: 6.2 recommended_water_tank_volume: type: integer description: Capacité du ballon recommandée (en litres). Présent uniquement pour les pompes à chaleur double service. example: 80 service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' hot_water: type: array items: type: object properties: technical_id: type: string enum: - solar_water_heater - electric_storage_tank - solar_system_combined - thermodynamic_water_heater name: type: string enum: - Installation d'un chauffe-eau solaire individuel - Installation d'un ballon d'eau chaude électrique à accumulation - Installation d'un système solaire combiné (SSC) - Installation d'un ballon d'eau chaude thermodynamique indépendant quantity: type: integer description: Nombre d'unités energy: type: object description: Type d'énergie utilisé pour l'eau chaude sanitaire. properties: technical_id: type: string enum: - electricity - fuel - gas - biomass_wood - district_heating - others name: type: string enum: - Électricité - Fioul - Gaz - Bois/biomasse - Réseau de chauffage urbain - Autres budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' renewable_energy: type: array items: type: object properties: technical_id: type: string enum: - hydroelectric_turbine - wind_turbine - photovoltaic_panels name: type: string enum: - Installation d'une micro-turbine hydroélectrique - Installation d'une éolienne domestique - Installation de panneaux photovoltaïques quantity: type: integer description: Nombre d'unités budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' summer_comfort: type: array items: type: object properties: technical_id: type: string enum: - sunshade - roller_shutters - vegetal_facade - solar_film - exterior_jalousies - vegetal_screens - awnings name: type: string enum: - Installation de brise-soleil - Installation de volets roulants - Mise en place d'une végétalisation de façade - Pose de films solaires sur vitrages - Installation de jalousies extérieures - Installation d'écrans végétaux mobiles - Installation de stores bannes quantity: type: integer description: Nombre d'unités budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' winter_comfort: type: array items: type: object properties: technical_id: type: string enum: - thermal_curtains - window_sealing - carpets - air_leak_detection - door_borders name: type: string enum: - Installation de rideaux thermiques - Pose de joints d'étanchéité sur menuiseries - Mise en place de moquettes ou de tapis - Réalisation d'une traque des infiltrations d'air - Installation de boudins de porte quantity: type: integer description: Nombre d'unités budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' thermal_bridge_treatment: type: array items: type: object properties: technical_id: type: string enum: - thermal_bridge_treatment_after_interior_insulation - thermal_bridge_treatment_after_high_floor_insulation - thermal_point_insulation_window - thermal_bridge_treatment_after_low_floor_insulation name: type: string enum: - Traitement d'une rupture de pont thermique suite à une isolation des murs par l'intérieur - Traitement d'une rupture de pont thermique suite à une isolation du plancher haut - Isolation thermique d'un pont thermique induit par une menuiserie - Traitement d'une rupture de pont thermique suite à une isolation du plancher bas quantity: type: integer description: Nombre d'unités budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' lighting: type: array items: type: object properties: technical_id: type: string enum: - led_low_consumption_bulbs - lighting_controller - solar_lighting_with_motion_detector name: type: string enum: - Remplacement d'ampoules existantes par des lampes LED à faible consommation - Installation d'un contrôleur d'éclairage connecté - Installation d'un éclairage solaire extérieur avec détecteur de mouvement quantity: type: integer description: Nombre d'unités budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' sobriety: type: array items: type: object properties: technical_id: type: string enum: - rainwater_watering_system - rainwater_downspout - gray_water_recovery_system - rainwater_recovery_tank_with_cistern - buried_water_recovery_tank - thermostat_valves - terminal_regulation name: type: string enum: - Installation d'un système d'arrosage utilisant l'eau de récupération - Installation d'une descente d'eau pluviale - Installation d'un récupérateur d'énergie sur les eaux grises - Installation d'un récupérateur d'eau de pluie avec citerne - Installation d'une cuve de récupération d'eau de pluie enterrée - Pose de robinets thermostatiques - Installation d'un système de régulation terminale quantity: type: integer description: Nombre d'unités budget: type: number format: float description: Coût estimé des travaux (en euros) financial_support: $ref: '#/components/schemas/GestureFinancialSupport' service_technical_id: type: string nullable: true description: L'identifiant technique de la prestation (service) du catalogue. reference_id: type: string nullable: true description: L'identifiant de la référence catalogue sélectionnée. price_per_unit: type: number format: float nullable: true description: Le prix unitaire hors taxes retenu. vat: type: number format: float nullable: true description: 'Le taux de TVA appliqué (en pourcentage, ex: 5.5).' required: - id - name - type - overall_rating - energy_rating - energy_consumption - carbon_rating - carbon_emissions - yearly_energy_savings - yearly_energy_cost - budget - financial_support - kpi - renovation_plan required: - renovation_plans required: - status '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: Unauthorized '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: Forbidden '404': description: Not Found content: application/json: schema: type: object properties: error: type: string example: Could not find the simulation description: Error message indicating the issue. '409': description: Conflit content: application/json: schema: type: object properties: error: type: string example: The simulation has not been run yet description: Error message indicating the issue. servers: - url: '{protocol}://{defaultHost}' variables: protocol: default: https defaultHost: default: app.go-kelvin.com /api/v2/simulations: post: summary: Créer une simulation description: Endpoint pour créer une simulation à partir d'un ban_id et des coordonnées GPS. tags: - Simulateur security: - bearerAuth: [] parameters: [] responses: '201': description: Created content: application/json: schema: type: object properties: simulation_id: type: string example: hjjcm1qp28 description: L'identifiant de la simulation créée. required: - simulation_id '400': description: Bad Request content: application/json: schema: type: object properties: error: type: string example: Latitude is missing, Longitude is missing description: Error message indicating the issue. '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: Unauthorized '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: Forbidden '422': description: Unprocessable Entity content: application/json: schema: type: object properties: error: type: string example: Could not find an address for the given GPS coordinates description: Error message indicating the issue. requestBody: content: application/json: schema: type: object properties: latitude: type: number example: 43.53718 longitude: type: number example: 1.337797 ban_id: type: string example: '31157_0790_00009' required: - latitude - longitude servers: - url: '{protocol}://{defaultHost}' variables: protocol: default: https defaultHost: default: app.go-kelvin.com /api/v2/simulations/{simulation_id}/housing: get: summary: Récupérer les informations de la propriété tags: - Simulateur description: Les informations de la propriété. security: - bearerAuth: [] parameters: - name: simulation_id in: path required: true example: hjjcm1qp28 description: L'identifiant de simulation renvoyé par l'appel au endpoint créer schema: type: string responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string enum: - pending - processing - completed - failed example: completed description: Le statut de l'opération de génération de résultat. housing: type: object properties: housing_type: type: string enum: - house - apartment - unknown example: apartment nullable: true description: Le type de la propriété. dpe_id: type: string nullable: true example: 2331E2555868X description: Le numéro unique du DPE. surface: type: integer nullable: true example: 100 description: La surface de la propriété en m2. floor_level: type: string nullable: true enum: - ground - intermediate - last example: ground description: La position da le propriété dans l'immeuble. number_of_exterior_wall: type: integer nullable: true example: 1 description: Le nombre de murs donnant sur l'extérieur. address: type: object properties: street_number: type: string example: '123' description: Le numéro de la rue. address_line_1: type: string example: Rue de la Paix description: Le nom de la rue. address_line_2: type: string nullable: true example: Apt 4B description: Complément d'adresse. city: type: string example: Paris description: La ville. postal_code: type: string example: '75000' description: Le code postal. country_number: type: integer example: 250 description: Le numéro du pays, code ISO3166. France = 250 latitude: type: number example: 43.53718 description: La latitude. longitude: type: number example: 1.337797 description: La longitude. required: - housing - status - address '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: Unauthorized '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: Forbidden '404': description: Not Found content: application/json: schema: type: object properties: error: type: string example: Could not find the simulation description: Error message indicating the issue. put: summary: Mettre à jour les informations de la propriété description: Endpoint pour mettre à jour les informations de la propriété tags: - Simulateur security: - bearerAuth: [] parameters: - name: simulation_id in: path required: true example: hjjcm1qp28 description: L'identifiant de simulation renvoyé par l'appel au endpoint créer schema: type: string responses: '204': description: No Content '400': description: Bad Request content: application/json: schema: type: object properties: error: type: string example: Housing type is missing or invalid description: Error message indicating the issue. '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: Unauthorized '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: Forbidden requestBody: content: application/json: schema: type: object properties: dpe_id: type: string example: 2331E2555868X description: Le numéro unique du DPE. housing_type: type: string enum: - house - apartment example: apartment description: Le type de propriété. surface: type: integer example: 100 description: La surface de la propriété en m2. Obligatoire si le housing_type est apartment. floor_level: type: string enum: - ground - intermediate - last example: ground description: La position da le propriété dans l'immeuble. Obligatoire si le housing_type est apartment. number_of_exterior_wall: type: integer example: 1 description: Le nombre de murs donnant sur l'extérieur. Obligatoire si le housing_type est apartment. required: - simulation_id - post_params servers: - url: '{protocol}://{defaultHost}' variables: protocol: default: https defaultHost: default: app.go-kelvin.com /api/v2/simulations/{simulation_id}/run: post: summary: Lancer la simulation description: Endpoint pour lancer la simulation. tags: - Simulateur security: - bearerAuth: [] parameters: - name: simulation_id in: path required: true example: hjjcm1qp28 description: L'identifiant de simulation renvoyé par l'appel au endpoint créer schema: type: string responses: '201': description: Created '401': description: unauthorized content: application/json: schema: type: object properties: error: type: string example: Unauthorized '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: Forbidden '422': description: Unprocessable Entity content: application/json: schema: type: object properties: error: type: string example: Apartment information is needed servers: - url: '{protocol}://{defaultHost}' variables: protocol: default: https defaultHost: default: app.go-kelvin.com /api/v2/simulations/{simulation_id}/projected-state: get: summary: Récupérer l'état projeté description: Les informations de l'état projeté. security: - bearerAuth: [] tags: - Simulateur parameters: - name: simulation_id in: path required: true example: hjjcm1qp28 description: L'identifiant de simulation renvoyé par l'appel au endpoint créer schema: type: string responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string enum: - pending - processing - completed - failed example: completed description: Le statut de l'opération de génération de résultat. projected_state: type: object properties: renovation_plans: type: array items: type: object description: Liste des plans de rénovation. properties: id: type: string example: hjjcm1qp28 description: L'identifiant du plan de rénovation. name: type: string example: Mon plan personnalisé description: Le nom du plan de rénovation. type: type: string enum: - normal - customized - optimized example: customized description: Le type de plan de rénovation. dpe_after_renovation: type: string enum: - A - B - C - D - E - F - G example: B yearly_energy_savings: type: number format: float description: Économies d'énergie annuelles estimées en Euros. example: 600 yearly_energy_cost: type: number format: float description: Coût énergétique annuel estimé en Euros. example: 12000 budget: type: number format: float description: Coût total estimé du plan de travaux en Euros. example: 12000 subsidies: type: number format: float description: Total des aides estimées en Euros. example: 1200 renovation_plan: type: object description: Liste des tâches du plan de rénovation. properties: vents: type: object properties: id: type: string enum: - vmc_sf_hygro_b simplified_id: type: string enum: - install_vmc_hygro_b label: type: string enum: - Installation d'une VMC hygro B quantity: type: integer description: Nombre d'unités walls: type: object properties: id: type: string enum: - ite_12cm_lm - ite_16cm_pse - add_10cm_th32_outside - concrete_18cm_pse_26cm_th32_coating_1_5cm_ite - iti_10cm_pur - iti_12cm_lm - iti_14cm_ldb - iti_16cm_pse - add_10cm_th32_inside - mob_22cm_lm_th35_8percent_wood_double_interior_10cm_th32 simplified_id: type: string enum: - wall_isolation_inside - wall_isolation_outside label: type: string enum: - ITE avec 12 cm LM - ITE avec 16 cm PSE - Rajouter équivalent 10 cm Th32 à l'extérieur - Béton 18 cm + PSE 26 cm Th32 + enduit 1,5 cm (ITE) - ITI avec 10 cm PUR - ITI avec 12 cm LM - ITI avec 14 cm LdB - ITI avec 16 cm PSE - Rajouter équivalent 10 cm Th32 à l'intérieur - MOB 22 cm LM Th35 (8% bois) + doublage intérieur 10 cm Th32 quantity: type: integer description: Surface en m² windows: type: object properties: id: type: string enum: - wood_or_pvc_windows_dv_4_20_4 - wood_or_pvc_windows_dv_4_20_4_mh_zone - passive_windows_tv_4_16_4_16_4_itr - passive_windows_tv_4_16_4_16_4_itr_mh_zone simplified_id: type: string enum: - install_double_glazed_windows - install_triple_glazed_windows label: type: string enum: - Menuiserie bois ou PVC avec DV 4/20/4 - Menuiserie bois ou PVC avec DV 4/20/4 - MH zone - Menuiserie passive avec TV, 4/16/4/16/4, ITR - Menuiserie passive avec TV, 4/16/4/16/4, ITR - MH zone quantity: type: integer description: Nombre d'unités low_floor: type: object properties: id: type: string enum: - underfloor_insulation_14cm_th35 - underfloor_insulation_16cm_fibrasyrène_th36 - under_screed_insulation_10cm_pur - 20cm_insulating_hollow_block_r4_5_on_crawl_space_8cm_pur simplified_id: type: string enum: - low_floor_isolation label: type: string enum: - Isolation en sous-face avec 14 cm Th35 - Isolation en sous-face avec 16 cm Fibrasyrène Th36 - Isolation sous chape avec 10 cm PUR - 20 cm entrevous isolant R=4,5 sur vide sanitaire + 8 cm PUR quantity: type: integer description: Surface en m² high_floor: type: object properties: id: type: string enum: - add_10cm_th32_outside_or_inside - insulation_rampants_12cm_lm_between_rafters_18cm_fdb - insulation_flat_roof_20cm_pur - insulation_30cm_lm_high_floor - add_8cm_th32_outside_or_inside - add_10cm_th32 - wooden_floor_to_attic_30cm_lm_th32_above - flat_roof_20cm_concrete_24cm_pur_th24 - iti_16cm_pse simplified_id: type: string enum: - roof_high_floor_isolation label: type: string enum: - Rajouter équivalent 10 cm Th32 à l'extérieur ou à l'intérieur - Isolation des rampants avec 12 cm LM entre chevrons + 18 cm FdB - Isolation sur toiture terrasse avec 20 cm PUR - Isolation 30 cm LM sur plancher haut - Rajouter équivalent 8 cm Th32 à l'extérieur ou à l'intérieur - Rajouter équivalent 10 cm Th32 - Plancher bois vers combles avec 30 cm LM Th32 au-dessus - Toiture terrasse 20 cm béton + 24 cm PUR Th24 - ITI avec 16 cm PSE quantity: type: integer description: Surface en m² generator_type: type: object properties: id: type: string enum: - pac_air_air - pac_other_than_air_air - double_service_heat_pump - electric_joule_effect_generators simplified_id: type: string enum: - install_electric_joule_effect_generators - install_heat_pump_air_water - install_heat_pump_air_air - install_double_service_heat_pump label: type: string enum: - Installation d'une pompe à chaleur (air/air) - Installation d'une pompe à chaleur (air/eau) - Installation d'une pompe à chaleur double service - Installation d'un générateur électrique à effet joule quantity: type: integer description: Nombre d'unités generator_energy: type: object properties: id: type: string enum: - electricity - gas - wood - fuel - urban_heating_or_biomass label: type: string enum: - Électricité - Gaz - Bois - Fioul - Chauffage urbain ou biomasse hot_water_type: type: object properties: id: type: string enum: - electric_water_heater - thermodynamic_water_heater simplified_id: type: string enum: - install_heat_pump - install_water_tank - install_thermodynamic_water_tank label: type: string enum: - Installation d'un ballon électrique - Installation d'un ballon thermodynamique hot_water_energy: type: object properties: id: type: string enum: - electricity - gas - wood - fuel - urban_heating_or_biomass label: type: string enum: - Électricité - Gaz - Bois - Fioul - Chauffage urbain ou biomasse required: - id - name - type - dpe_after_renovation - yearly_energy_savings - yearly_energy_cost - budget - subsidies - renovation_plan required: - renovation_plans required: - status '401': description: Unauthorized content: application/json: schema: type: object properties: error: type: string example: Unauthorized '403': description: Forbidden content: application/json: schema: type: object properties: error: type: string example: Forbidden '404': description: Not Found content: application/json: schema: type: object properties: error: type: string example: Could not find the simulation description: Error message indicating the issue. '409': description: Conflit content: application/json: schema: type: object properties: error: type: string example: The simulation has not been run yet description: Error message indicating the issue. servers: - url: '{protocol}://{defaultHost}' variables: protocol: default: https defaultHost: default: app.go-kelvin.com components: schemas: FinancialSupport: type: object description: Détail des aides financières properties: mpr: type: number format: float description: Montant de l'aide MaPrimeRénov' par geste (Aides par geste) en Euros mpr_ampleur: type: number format: float description: Montant de l'aide MaPrimeRénov' Ampleur (Aides d'ampleur) en Euros cee: type: number format: float description: Montant de l'aide des Certificats d'Économies d'Énergie en Euros ecoptz: type: number format: float description: Montant de l'aide Éco-PTZ en Euros local: type: array description: Détail des aides locales items: type: object properties: name: type: string description: Nom de l'aide locale amount: type: number format: float description: Montant de l'aide locale en Euros example: - name: Aide région Île-de-France amount: 1500 - name: Aide département Seine-Saint-Denis amount: 800 - name: Aide ville de Saint-Denis amount: 500 GestureFinancialSupport: type: object description: Détail des aides financières par geste properties: mpr: type: number format: float description: Montant de l'aide MaPrimeRénov' par geste (Aides par geste) en Euros cee: type: number format: float description: Montant de l'aide des Certificats d'Économies d'Énergie en Euros ecoptz: type: number format: float description: Montant de l'aide Éco-PTZ en Euros local: type: array description: Détail des aides locales items: type: object properties: name: type: string description: Nom de l'aide locale amount: type: number format: float description: Montant de l'aide locale en Euros example: - name: Aide région Île-de-France amount: 1500 - name: Aide département Seine-Saint-Denis amount: 800 - name: Aide ville de Saint-Denis amount: 500 securitySchemes: bearerAuth: type: http scheme: bearer description: Le token commence par 'team-api-key-' x-refined-from: - kelvin-api-openapi.yml - kelvin-api-v2-openapi.yml