{"openapi":"3.1.0","info":{"title":"Circuits IFC","version":"0.1.0"},"paths":{"/api/comptes/inscription":{"post":{"tags":["comptes"],"summary":"Inscription","operationId":"inscription_api_comptes_inscription_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Identifiants"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comptes/confirmer":{"get":{"tags":["comptes"],"summary":"Confirmation","operationId":"confirmation_api_comptes_confirmer_get","parameters":[{"name":"jeton","in":"query","required":true,"schema":{"type":"string","title":"Jeton"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comptes/connexion":{"post":{"tags":["comptes"],"summary":"Connexion","operationId":"connexion_api_comptes_connexion_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Identifiants"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comptes/deconnexion":{"post":{"tags":["comptes"],"summary":"Deconnexion","operationId":"deconnexion_api_comptes_deconnexion_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/comptes/moi":{"get":{"tags":["comptes"],"summary":"Moi","description":"Etat de l'appelant. Un visiteur recoit son cookie d'espace au passage.","operationId":"moi_api_comptes_moi_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/comptes/mouvements":{"get":{"tags":["comptes"],"summary":"Mouvements","operationId":"mouvements_api_comptes_mouvements_get","parameters":[{"name":"limite","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limite"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comptes/mot-de-passe-oublie":{"post":{"tags":["comptes"],"summary":"Mot De Passe Oublie","operationId":"mot_de_passe_oublie_api_comptes_mot_de_passe_oublie_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeOubli"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/comptes/reinitialiser":{"get":{"tags":["comptes"],"summary":"Page De Reinitialisation","operationId":"page_de_reinitialisation_api_comptes_reinitialiser_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"tags":["comptes"],"summary":"Poser Le Nouveau Mot De Passe","operationId":"poser_le_nouveau_mot_de_passe_api_comptes_reinitialiser_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NouveauMotDePasse"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/prechauffage":{"get":{"summary":"Etat Prechauffage","description":"Ou en est la construction du graphe lancee en tache de fond.\n\nElle ne rend pas une part d'avancement : `modele.graphe` travaille d'un\nbloc et ne rapporte rien tant qu'il n'a pas fini. On expose donc l'etat et\nle temps ecoule, a charge de la page d'en faire une barre honnete.","operationId":"etat_prechauffage_api_models__model_id__prechauffage_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/graphes/{jeton}":{"get":{"summary":"Telecharger Graphe","description":"Sert le fichier de graphe designe par un lien de courriel.\n\nPas de session : le courriel n'en porte pas, et c'est voulu. Le jeton est\ntire au sort, il ne designe qu'un fichier, et il perime. C'est la meme\nlogique que le lien de confirmation d'inscription.","operationId":"telecharger_graphe_api_graphes__jeton__get","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/envois":{"post":{"summary":"Ouvrir Envoi","description":"Declare un envoi a venir, et rend l'identifiant de ses tranches.","operationId":"ouvrir_envoi_api_models_envois_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebutEnvoi"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/envois/{envoi_id}":{"put":{"summary":"Poser Tranche","description":"Ecrit une tranche a sa position. Rejouable : meme offset, meme resultat.","operationId":"poser_tranche_api_models_envois__envoi_id__put","parameters":[{"name":"envoi_id","in":"path","required":true,"schema":{"type":"string","title":"Envoi Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/envois/{envoi_id}/terminer":{"post":{"summary":"Terminer Envoi","description":"Clot l'envoi, verifie la taille, et lance la conversion.","operationId":"terminer_envoi_api_models_envois__envoi_id__terminer_post","parameters":[{"name":"envoi_id","in":"path","required":true,"schema":{"type":"string","title":"Envoi Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models":{"post":{"summary":"Televerser","description":"Recoit un IFC. `sans_3d` saute l'epuration et la tessellation.\n\nPOURQUOI CE DRAPEAU. Une IA qui demande les reseaux d'une maquette n'a\naucun besoin du fichier d'affichage : l'epuration et convert2xkt font\ntrente secondes de travail pour une vue que personne ne regardera. Le\ngraphe, lui, se construit sur l'IFC d'origine.\n\nLa 3D reste possible ensuite, a la demande : c'est `/api/models/{id}/3d`\nqui la lance, et elle n'est plus le passage oblige du depot.","operationId":"televerser_api_models_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_televerser_api_models_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}":{"get":{"summary":"Etat Modele","operationId":"etat_modele_api_models__model_id__get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/xkt":{"get":{"summary":"Fichier Xkt","operationId":"fichier_xkt_api_models__model_id__xkt_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/pertinents":{"get":{"summary":"Elements Pertinents","description":"GUID des elements que la 3D doit afficher, en deux listes.\n\n`guids`    ce qui s'affiche normalement : meme critere que le calcul,\n           puisque c'est `is_relevant_element` qui repond.\n`attenues` ce qui s'affiche en transparence : les proxies, devant lesquels\n           l'extension d'un reseau s'arrete. Visibles pour qu'on comprenne\n           pourquoi elle s'arrete la, transparents pour ne pas cacher la\n           gaine qui passe derriere.\n\nLe tri se fait ici plutot qu'a la conversion, ou la liste de types attendue\nvarie d'une version de convert2xkt a l'autre.","operationId":"elements_pertinents_api_models__model_id__pertinents_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bibliotheque":{"get":{"summary":"Bibliotheque","operationId":"bibliotheque_api_bibliotheque_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/bibliotheque/{model_id}/ouvrir":{"post":{"summary":"Ouvrir Maquette","operationId":"ouvrir_maquette_api_bibliotheque__model_id__ouvrir_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bibliotheque/{model_id}/nom":{"put":{"summary":"Renommer Maquette","operationId":"renommer_maquette_api_bibliotheque__model_id__nom_put","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeNom"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bibliotheque/{model_id}":{"delete":{"summary":"Supprimer Maquette","description":"Retire une maquette du catalogue et efface ses deux fichiers.","operationId":"supprimer_maquette_api_bibliotheque__model_id__delete","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/detecter":{"post":{"summary":"Detecter","operationId":"detecter_api_models__model_id__detecter_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/parametres":{"get":{"summary":"Schema Parametres","operationId":"schema_parametres_api_parametres_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/preferences":{"put":{"summary":"Enregistrer Preferences","operationId":"enregistrer_preferences_api_preferences_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandePreferences"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/circuits":{"post":{"summary":"Creer Circuit","operationId":"creer_circuit_api_models__model_id__circuits_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeCircuit"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Lister Circuits","operationId":"lister_circuits_api_models__model_id__circuits_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/circuits/{circuit_id}":{"get":{"summary":"Detail Circuit","operationId":"detail_circuit_api_models__model_id__circuits__circuit_id__get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"circuit_id","in":"path","required":true,"schema":{"type":"string","title":"Circuit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Supprimer Circuit","operationId":"supprimer_circuit_api_models__model_id__circuits__circuit_id__delete","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"circuit_id","in":"path","required":true,"schema":{"type":"string","title":"Circuit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/circuits/{circuit_id}/recalcul":{"post":{"summary":"Recalculer","operationId":"recalculer_api_models__model_id__circuits__circuit_id__recalcul_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"circuit_id","in":"path","required":true,"schema":{"type":"string","title":"Circuit Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeRecalcul"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/centrale/{guid}/debit":{"post":{"summary":"Fixer Le Debit De La Centrale","description":"Le debit d'un monobloc, saisi en cliquant dessus dans la 3D.\n\nIL VAUT POUR TOUS LES CIRCUITS QUI EN PARTENT OU Y ARRIVENT : soufflage,\nreprise, air neuf et rejet d'une centrale double flux portent le meme\ndebit. Chacun le recoit d'un coup, sans nouvelle analyse - le debit est\nun reglage hydraulique.\n\nET LE CLIC DIT DE QUEL COTE EST LA CENTRALE. Le terminal est donc a\nl'autre bout : plus besoin de le deviner sur les sections, ce qui\ntombait faux sur une gaine de section constante.","operationId":"fixer_le_debit_de_la_centrale_api_models__model_id__centrale__guid__debit_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"guid","in":"path","required":true,"schema":{"type":"string","title":"Guid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeDebitCentrale"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/circuits/{circuit_id}/annuler":{"post":{"summary":"Annuler","description":"Abandonne une analyse en cours.\n\nLe thread de calcul n'est pas tue : ifcopenshell ne s'interrompt pas au\nmilieu d'une creation de forme. Le resultat est marque comme abandonne et\nsera ignore a son arrivee.","operationId":"annuler_api_models__model_id__circuits__circuit_id__annuler_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"circuit_id","in":"path","required":true,"schema":{"type":"string","title":"Circuit Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/excel":{"get":{"summary":"Telecharger Excel","description":"Classeur complet. Seule tache fermee aux visiteurs non identifies.","operationId":"telecharger_excel_api_models__model_id__excel_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ia/{jeton}/classeur":{"get":{"summary":"Classeur Pour Ia","description":"LE CLASSEUR, PAR LE LIEN QUE DONNE L'IA (16 octobre 2026).\n\nC'est lui qui garde le calcul juste : la case soufflage / reprise et les\ndebits s'y corrigent, et tout se recalcule. L'IA ne donne pas de perte de\ncharge ; elle donne ce lien, ouvert dans le navigateur de l'utilisateur.\nMemes regles que le bouton de la page : un compte (gratuit) est demande,\net le telechargement debite ce que debite la page.","operationId":"classeur_pour_ia_api_ia__jeton__classeur_get","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/reseaux/{reseau_id}/pas":{"post":{"summary":"Pas Dans Le Metre","description":"Marche arriere ou marche avant d'un geste, et releve refait.","operationId":"pas_dans_le_metre_api_models__model_id__reseaux__reseau_id__pas_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeDePas"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/takeoff/parametres":{"get":{"summary":"Parametres Takeoff","description":"Reglages du metre, augmentes des noms de proprietes deja regles.\n\nLes deux outils lisent les memes proprietes de dimension : une maquette\nconfiguree pour le calcul de perte de charge l'est aussi pour le metre.","operationId":"parametres_takeoff_api_takeoff_parametres_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/models/{model_id}/reseaux":{"post":{"summary":"Creer Reseau","operationId":"creer_reseau_api_models__model_id__reseaux_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeReseau"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Lister Reseaux","description":"Les releves d'une page : ceux du metre par defaut, ceux de\nl'extension aeraulique avec `mode=air`. Chaque page ne voit que les\nsiens.","operationId":"lister_reseaux_api_models__model_id__reseaux_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"mode","in":"query","required":false,"schema":{"type":"string","default":"metre","title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/semblables/{guid}":{"get":{"summary":"Compter Semblables","description":"Ce qu'une regle fermerait, avant de la poser.\n\nFermer quarante pieces d'un clic sans savoir lesquelles serait un mauvais\nmarche : la page annonce le compte et le libelle, l'utilisateur tranche.","operationId":"compter_semblables_api_models__model_id__semblables__guid__get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"guid","in":"path","required":true,"schema":{"type":"string","title":"Guid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/reseaux/{reseau_id}/exclure-type":{"post":{"summary":"Exclure Type Du Metre","description":"Ferme toutes les pieces semblables a celle designee, dans un metre.","operationId":"exclure_type_du_metre_api_models__model_id__reseaux__reseau_id__exclure_type_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExclusionDeType"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/reseaux/{reseau_id}/exclure":{"post":{"summary":"Exclure Du Metre","description":"Bascule l'exclusion d'une piece dans un metre, et relance l'exploration.\n\nMeme mecanique que pour l'eau : le geste ferme et rouvre, l'exploration est\nrefaite en entier parce que retirer une piece peut detacher une branche\ncomplete, et le graphe reste en cache donc le recalcul suit le clic.","operationId":"exclure_du_metre_api_models__model_id__reseaux__reseau_id__exclure_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Exclusion"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/reseaux/{reseau_id}":{"get":{"summary":"Detail Reseau","operationId":"detail_reseau_api_models__model_id__reseaux__reseau_id__get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Supprimer Reseau","operationId":"supprimer_reseau_api_models__model_id__reseaux__reseau_id__delete","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/reseaux/{reseau_id}/ajouter":{"post":{"summary":"Ajouter Au Reseau","description":"Ajoute une branche au releve, sans repartir de zero.\n\nUn reseau se laisse rarement prendre d'un seul clic : une vanne fermee, un\nraccord non modelise, et le parcours s'arrete. Plutot que de recommencer,\non ajoute une graine et l'exploration repart de toutes a la fois. Les\nparties reliees se rejoignent, les parties isolees s'ajoutent.","operationId":"ajouter_au_reseau_api_models__model_id__reseaux__reseau_id__ajouter_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeAjout"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/reseaux/{reseau_id}/annuler":{"post":{"summary":"Annuler Reseau","description":"Abandonne une exploration en cours.\n\nLe thread n'est pas tue : ifcopenshell ne s'interrompt pas au milieu d'une\ncreation de forme. Le resultat est marque comme abandonne et sera ignore a\nson arrivee, comme pour les circuits.","operationId":"annuler_reseau_api_models__model_id__reseaux__reseau_id__annuler_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/takeoff/excel":{"get":{"summary":"Telecharger Takeoff","description":"Classeur du metre. Reserve aux comptes, comme celui du calcul.","operationId":"telecharger_takeoff_api_models__model_id__takeoff_excel_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/water/parametres":{"get":{"summary":"Parametres Eau","operationId":"parametres_eau_api_water_parametres_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/models/{model_id}/eau":{"post":{"summary":"Creer Reseau Eau","operationId":"creer_reseau_eau_api_models__model_id__eau_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeEau"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Lister Reseaux Eau","operationId":"lister_reseaux_eau_api_models__model_id__eau_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/eau/{reseau_id}/exclure-type":{"post":{"summary":"Exclure Type Du Reseau","description":"Ferme toutes les pieces semblables a celle designee, dans un releve.","operationId":"exclure_type_du_reseau_api_models__model_id__eau__reseau_id__exclure_type_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExclusionDeType"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/eau/{reseau_id}/exclure":{"post":{"summary":"Exclure Du Reseau","description":"Bascule l'exclusion d'une piece, et relance l'exploration.\n\nBascule et non ajout : le meme geste ferme et rouvre. L'exploration est\nrefaite en entier plutot que rattrapee, parce que retirer une piece peut\ndetacher une branche complete et que seul un nouveau parcours dit laquelle.\n\nLe graphe reste en cache, donc ce recalcul ne coute que le parcours et la\nmesure. C'est ce qui permet de le declencher a chaque clic sans demander de\nconfirmation.","operationId":"exclure_du_reseau_api_models__model_id__eau__reseau_id__exclure_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Exclusion"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/eau/{reseau_id}":{"get":{"summary":"Detail Reseau Eau","operationId":"detail_reseau_eau_api_models__model_id__eau__reseau_id__get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Supprimer Reseau Eau","operationId":"supprimer_reseau_eau_api_models__model_id__eau__reseau_id__delete","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/eau/{reseau_id}/ajouter":{"post":{"summary":"Ajouter Au Reseau Eau","description":"Ajoute une branche au releve de volume. Voir la route jumelle du metre.","operationId":"ajouter_au_reseau_eau_api_models__model_id__eau__reseau_id__ajouter_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeAjout"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/eau/{reseau_id}/annuler":{"post":{"summary":"Annuler Reseau Eau","operationId":"annuler_reseau_eau_api_models__model_id__eau__reseau_id__annuler_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"reseau_id","in":"path","required":true,"schema":{"type":"string","title":"Reseau Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/eau.xlsx":{"get":{"summary":"Telecharger Eau","operationId":"telecharger_eau_api_models__model_id__eau_xlsx_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/systemes/parametres":{"get":{"summary":"Parametres Systemes","operationId":"parametres_systemes_api_systemes_parametres_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/models/{model_id}/systemes":{"post":{"summary":"Creer Systeme","operationId":"creer_systeme_api_models__model_id__systemes_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeSysteme"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Lister Systemes","operationId":"lister_systemes_api_models__model_id__systemes_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/maquettes":{"get":{"summary":"Lister Les Maquettes","description":"Tout ce qu'il faut pour afficher la liste des maquettes deposees.\n\nUne seule requete : la page ne doit pas en faire une par maquette, ni\nattendre dix reponses pour se dessiner.\n\nCe qui vient du CATALOGUE - nom, taille, date - est sur disque et survit\nau redemarrage. Ce qui vient de MODELES - prechauffage, nature, reseaux -\nne vit qu'en memoire : apres un redemarrage, une maquette est listee mais\nson pretraitement est annonce « a refaire », ce qui est la verite.","operationId":"lister_les_maquettes_api_maquettes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/maquettes/{model_id}/vignette":{"get":{"summary":"Servir La Vignette","description":"L'image de la maquette, telle que le prechauffage l'a dessinee.","operationId":"servir_la_vignette_api_maquettes__model_id__vignette_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/jeton":{"post":{"summary":"Creer Un Jeton","description":"Le lien que l'utilisateur colle dans sa conversation avec son IA.","operationId":"creer_un_jeton_api_models__model_id__jeton_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ia/depot":{"post":{"summary":"Ouvrir Un Depot","description":"Un jeton de depot, pour le serveur MCP de cette machine seulement.","operationId":"ouvrir_un_depot_api_ia_depot_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/ia/depot/{jeton}":{"options":{"summary":"Depot Prealable","operationId":"depot_prealable_api_ia_depot__jeton__options","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Etat Du Depot","description":"L'etat du depot pour un outil ; la PAGE de depot pour un navigateur.\n\nLA BOITE NE S'AFFICHAIT QUE DANS CLAUDE. C'est un cadre d'interface MCP,\net seuls quelques clients savent le dessiner : avec OpenClaw, avec tout\nautre, l'utilisateur recevait le lien en texte, l'ouvrait, et tombait sur\ndu JSON. Le parcours ne tenait donc que sur un client.\n\nUn navigateur annonce « text/html » dans son en-tete Accept ; un appel\nprogrammatique non. La distinction est sans ambiguite, et ne demande ni\nadresse separee ni reglage.","operationId":"etat_du_depot_api_ia_depot__jeton__get","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Deposer Par Jeton","description":"Le fichier venu de la boite de depot. Un envoi par jeton.","operationId":"deposer_par_jeton_api_ia_depot__jeton__post","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_deposer_par_jeton_api_ia_depot__jeton__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ia/depot/{jeton}/fin":{"options":{"summary":"Depot Prealable Tranches","operationId":"depot_prealable_tranches_api_ia_depot__jeton__fin_options","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Terminer Le Depot","operationId":"terminer_le_depot_api_ia_depot__jeton__fin_post","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ia/depot/{jeton}/tranche":{"options":{"summary":"Depot Prealable Tranches","operationId":"depot_prealable_tranches_api_ia_depot__jeton__tranche_options","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Deposer Une Tranche","operationId":"deposer_une_tranche_api_ia_depot__jeton__tranche_post","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}},{"name":"debut","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Debut"}},{"name":"total","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Total"}},{"name":"nom","in":"query","required":false,"schema":{"type":"string","default":"","title":"Nom"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ia/{jeton}/regles":{"post":{"summary":"Poser Les Regles","description":"Recoit les regles d'une IA, les rejoue sur l'apercu, rend le tableau.\n\nNE COUTE AUCUNE UNITE. C'est une boucle de mise au point : la facturer\npousserait l'IA a poser des regles approximatives du premier coup, ce qui\nest exactement ce qu'on veut eviter. Seul le calcul qui s'en sert est\nfacture.","operationId":"poser_les_regles_api_ia__jeton__regles_post","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeDeRegles"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Regles Posees","description":"Les regles en vigueur sur cette maquette, ou rien.","operationId":"regles_posees_api_ia__jeton__regles_get","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ia/{jeton}/apercu":{"get":{"summary":"Apercu Pour Ia","description":"L'apercu d'une maquette, pour une IA : ses TYPES, avec de quoi ecrire\ndes regles. Disponible des que le modele est lu, avant le graphe.\n\nC'est la premiere salve. Pendant que l'IA classe les types - registre,\npiege a son, centrale, ventilateur, zone d'acces a ecarter - et designe les\nproprietes qui portent les cotes, le graphe se construit. On ne fait pas\nattendre l'IA : on l'occupe.","operationId":"apercu_pour_ia_api_ia__jeton__apercu_get","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ia/{jeton}/circuits":{"post":{"summary":"Circuits Pour Ia","description":"Les circuits determinants depuis une piece, et leur perte de charge.\n\nLA PIECE QUI MANQUAIT POUR QUE L'IA SE PASSE DE CLICS. `analyser_circuit`\ndemande un depart ET une arrivee, que l'utilisateur designe a la souris.\nIci, l'IA ne donne qu'un depart - le monobloc, le ventilateur, la gaine\nqu'elle a reconnue - et l'outil trouve le reste.\n\nCE QU'ON NE REFAIT PAS, ET C'EST L'ESSENTIEL. L'extension sait deja ce\nqui se traverse et ce qui ne se traverse pas, elle reconnait un proxy de\nmeme section comme faisant partie du reseau, et elle rend l'ARBRE du\nparcours. On la laisse travailler et l'on remonte son arbre : refaire un\nparcours a cote serait recommencer ce travail, et se tromper la ou elle a\nraison. Le calcul de perte de charge SUIT ensuite ce chemin-la, au lieu\nd'en chercher un : voir `analyser_circuit`.\n\nET LE GRAPHE VIENT DU CACHE. Tout le travail d'optimisation - empreinte\ndu fichier, prechauffage pendant que l'IA lit l'apercu, axes en fond - ne\nsert qu'a cela : repondre en secondes. L'extension consulte le cache\nd'elle-meme ; ce qu'il ne faut surtout pas faire ici, c'est rouvrir\nl'IFC.\n\nCE QUE L'APPEL LAISSE DERRIERE LUI. Les circuits retenus deviennent des\ncircuits de la maquette, au meme titre que ceux qu'on trace a la main sur\nla page des pertes de charge : chacun a sa couleur et son onglet, le lien\nrendu les montre tous, et l'utilisateur en retire ou en ajoute. Le\nclasseur en porte une feuille par circuit, sans rien de plus a ecrire.","operationId":"circuits_pour_ia_api_ia__jeton__circuits_post","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeDeCircuits"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ia/{jeton}/reseaux":{"get":{"summary":"Reseaux Pour Ia","description":"Le rapport des reseaux, pour une IA, sans session ni cookie.\n\nCE QU'IL CONTIENT, ET CE QU'IL N'A PAS.\n\nNi geometrie, ni coordonnees, ni maillage : rien de ce qu'une IA ne\nsaurait lire. Des reseaux, leur etat, ce que portent leurs pieces, et de\nquoi les nommer - les equipements voisins, les systemes deja presents.\n\nMille pieces tiennent dans quelques dizaines de kilooctets : l'IA lit\ntout d'un coup, et c'est ce qui lui permet de reconnaitre qu'une antenne\npartant d'une centrale nommee « AHU-Supply-L2 » ne peut pas etre de\nl'extraction.","operationId":"reseaux_pour_ia_api_ia__jeton__reseaux_get","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ia/{jeton}/nommer":{"post":{"summary":"Nommer Pour Ia","description":"Ce que l'IA propose : un nom par reseau, et rien d'autre.\n\nL'IA NE TOUCHE PAS A LA GEOMETRIE. Elle nomme, elle conteste un nom\ndominant qui jure avec l'equipement voisin - mais les reseaux, les\ndissidents et les corrections restent ceux du graphe. C'est la frontiere\nqui rend l'outil defendable : ce qui est mesure ne se discute pas, ce qui\nest propose se discute toujours.","operationId":"nommer_pour_ia_api_ia__jeton__nommer_post","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Corps"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ia/{jeton}/dynamo":{"get":{"summary":"Dynamo Pour Ia","description":"Le script correctif, telechargeable sans session.","operationId":"dynamo_pour_ia_api_ia__jeton__dynamo_get","parameters":[{"name":"jeton","in":"path","required":true,"schema":{"type":"string","title":"Jeton"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/reseaux-detectes":{"get":{"summary":"Lister Reseaux Detectes","description":"La route du site : elle prend l'espace sur la session, puis calcule.","operationId":"lister_reseaux_detectes_api_models__model_id__reseaux_detectes_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"minimum","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Minimum"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/reseaux-detectes/decisions":{"post":{"summary":"Decider Des Reseaux","description":"Renommer un reseau, ou le rattacher a un autre.\n\nDeux gestes, depuis la legende de la vue 3D :\n  {\"renommer\": {\"3\": \"SOUFFLAGE-R+2\"}}     le reseau 3 s'appellera ainsi\n  {\"rattacher\": {\"5\": 3}}                  le reseau 5 fait partie du 3\n  {\"detacher\": [5]}                        et l'inverse\n\nLes decisions vivent dans l'entree du modele, donc jusqu'a son retrait :\non ne demande pas a l'utilisateur de refaire ses choix a chaque visite.","operationId":"decider_des_reseaux_api_models__model_id__reseaux_detectes_decisions_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Corps"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/reseaux-detectes/annuler":{"post":{"summary":"Annuler Une Decision","description":"Un pas en arriere, ou en avant.\n\nL'etat courant passe de l'autre cote de la pile : annuler puis refaire\nramene exactement ou l'on etait, sans recalculer quoi que ce soit.","operationId":"annuler_une_decision_api_models__model_id__reseaux_detectes_annuler_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"sens","in":"query","required":false,"schema":{"type":"string","default":"arriere","title":"Sens"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/reseaux-detectes/dynamo":{"get":{"summary":"Dynamo Des Reseaux","description":"La route du site. Le travail est dans `construire_le_dynamo`.","operationId":"dynamo_des_reseaux_api_models__model_id__reseaux_detectes_dynamo_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"minimum","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Minimum"}},{"name":"ecriture","in":"query","required":false,"schema":{"type":"string","default":"systeme","title":"Ecriture"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/systemes/{systeme_id}":{"get":{"summary":"Detail Systeme","operationId":"detail_systeme_api_models__model_id__systemes__systeme_id__get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"systeme_id","in":"path","required":true,"schema":{"type":"string","title":"Systeme Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Supprimer Systeme","description":"Retire un systeme. Le script Dynamo etant reconstruit a chaque\ntelechargement, la partie correspondante disparait d'elle-meme.","operationId":"supprimer_systeme_api_models__model_id__systemes__systeme_id__delete","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"systeme_id","in":"path","required":true,"schema":{"type":"string","title":"Systeme Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/systemes/{systeme_id}/ajouter":{"post":{"summary":"Ajouter Au Systeme","description":"Ajoute une branche a la selection. Voir la route jumelle du metre.","operationId":"ajouter_au_systeme_api_models__model_id__systemes__systeme_id__ajouter_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"systeme_id","in":"path","required":true,"schema":{"type":"string","title":"Systeme Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeAjout"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/systemes/{systeme_id}/annuler":{"post":{"summary":"Annuler Systeme","operationId":"annuler_systeme_api_models__model_id__systemes__systeme_id__annuler_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"systeme_id","in":"path","required":true,"schema":{"type":"string","title":"Systeme Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/systemes.dyn":{"get":{"summary":"Telecharger Dynamo","description":"Script Dynamo portant tous les systemes definis sur cette maquette.","operationId":"telecharger_dynamo_api_models__model_id__systemes_dyn_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/expansion/parametres":{"get":{"summary":"Parametres Expansion","operationId":"parametres_expansion_api_expansion_parametres_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/models/{model_id}/expansion":{"post":{"summary":"Creer Expansion","operationId":"creer_expansion_api_models__model_id__expansion_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeExpansion"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Lister Expansions","operationId":"lister_expansions_api_models__model_id__expansion_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/expansion/{etude_id}":{"get":{"summary":"Detail Expansion","operationId":"detail_expansion_api_models__model_id__expansion__etude_id__get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"etude_id","in":"path","required":true,"schema":{"type":"string","title":"Etude Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Supprimer Expansion","operationId":"supprimer_expansion_api_models__model_id__expansion__etude_id__delete","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"etude_id","in":"path","required":true,"schema":{"type":"string","title":"Etude Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/expansion/{etude_id}/ajouter":{"post":{"summary":"Ajouter A Expansion","operationId":"ajouter_a_expansion_api_models__model_id__expansion__etude_id__ajouter_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"etude_id","in":"path","required":true,"schema":{"type":"string","title":"Etude Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeAjout"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/expansion/{etude_id}/reperes":{"post":{"summary":"Poser Reperes","description":"Emplacement du vase et de la soupape, pointes dans la 3D.\n\nLe recalcul est immediat : le reseau est deja parcouru, seules les\naltitudes changent.","operationId":"poser_reperes_api_models__model_id__expansion__etude_id__reperes_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"etude_id","in":"path","required":true,"schema":{"type":"string","title":"Etude Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeReperes"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/expansion/{etude_id}/contenus":{"post":{"summary":"Saisir Contenus","description":"Contenu en eau des equipements, en litres par piece et par type.","operationId":"saisir_contenus_api_models__model_id__expansion__etude_id__contenus_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"etude_id","in":"path","required":true,"schema":{"type":"string","title":"Etude Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeContenus"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/expansion/{etude_id}/parametres":{"post":{"summary":"Modifier Parametres Expansion","description":"Change un reglage sans perdre l'etude.\n\nL'ancienne voie supprimait l'etude et la recreait, ce qui effacait les\nreperes, les composants et les contenus saisis : changer une temperature\nfaisait disparaitre le dimensionnement.","operationId":"modifier_parametres_expansion_api_models__model_id__expansion__etude_id__parametres_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"etude_id","in":"path","required":true,"schema":{"type":"string","title":"Etude Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeContenus"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/expansion/{etude_id}/composants":{"post":{"summary":"Saisir Composants","description":"Production, emetteurs : tout ce dont le contenu ne se lit nulle part.\n\nLa liste est libre - un nom, un volume unitaire, une quantite - et son\ntotal s'ajoute au volume d'eau de l'installation.","operationId":"saisir_composants_api_models__model_id__expansion__etude_id__composants_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"etude_id","in":"path","required":true,"schema":{"type":"string","title":"Etude Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeComposants"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/expansion/{etude_id}/tarage":{"post":{"summary":"Choisir Tarage","description":"Tarage de la soupape : conseille par defaut, choisi a la main ensuite.","operationId":"choisir_tarage_api_models__model_id__expansion__etude_id__tarage_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"etude_id","in":"path","required":true,"schema":{"type":"string","title":"Etude Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeTarage"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/expansion/{etude_id}/annuler":{"post":{"summary":"Annuler Expansion","operationId":"annuler_expansion_api_models__model_id__expansion__etude_id__annuler_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"etude_id","in":"path","required":true,"schema":{"type":"string","title":"Etude Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/ifc/{model_id}":{"get":{"summary":"Telecharger Ifc Signe","description":"Rend l'IFC d'origine a qui presente une signature valable.\n\nPas de session, pas de cookie : le lien se suffit a lui-meme, puisqu'il\narrive par courriel. C'est la signature qui fait foi, et elle expire.","operationId":"telecharger_ifc_signe_api_admin_ifc__model_id__get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"expire","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Expire"}},{"name":"signature","in":"query","required":false,"schema":{"type":"string","default":"","title":"Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/interne/mcp-appel":{"post":{"summary":"Signal Appel Mcp","description":"Recoit le signal du serveur MCP, sur la meme machine.\n\nCette route ne doit etre joignable QUE depuis la machine elle-meme. Le\ntunnel Cloudflare y mene pourtant, comme a tout le site : on reconnait une\nrequete venue d'Internet a ses en-tetes Cloudflare, et a son adresse, que\nuvicorn remplace par celle du visiteur. Une telle requete recoit un 404,\ncomme si la route n'existait pas.","operationId":"signal_appel_mcp_api_interne_mcp_appel_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/assistance":{"get":{"summary":"Assistance Du Compte","description":"Lien d'invitation et code d'identification, pour le panneau d'aide.","operationId":"assistance_du_compte_api_assistance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/assistance/{code}":{"get":{"summary":"Compte Derriere Le Code","description":"Qui se cache derriere « NE-4K7QPX ».\n\nC'est l'entree de l'administration quand quelqu'un ecrit sur Discord :\nle code donne le compte, le compte donne l'espace et les fichiers.","operationId":"compte_derriere_le_code_api_admin_assistance__code__get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/region":{"get":{"summary":"Region","description":"Pays du visiteur, pour ecrire les nombres a sa maniere.\n\nMille s'ecrit 1'000 a Geneve, 1 000 a Lyon, 1,000 a Londres et 1.000 a\nBerlin. Ni la langue ni le navigateur ne le disent : c'est le pays. Le\ntunnel Cloudflare le pose dans `CF-IPCountry`, et lui seul le sait.\n\n« XX » et « T1 » signalent un pays inconnu ou un reseau anonymisant : on\nne rend rien plutot qu'une supposition, et la page retombe sur la langue\ndu navigateur.","operationId":"region_api_region_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/paiement/offres":{"get":{"summary":"Paiement Offres","description":"Lots et prix, dans la monnaie du visiteur.","operationId":"paiement_offres_api_paiement_offres_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/paiement/session":{"post":{"summary":"Paiement Session","description":"Ouvre une session de paiement et rend l'adresse ou envoyer le visiteur.","operationId":"paiement_session_api_paiement_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeAchat"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/paiement/webhook":{"post":{"summary":"Paiement Webhook","description":"Le seul endroit qui credite. Ce que le navigateur raconte au retour\nn'est qu'un affichage : l'argent, c'est Polar qui le confirme, ici.\n\nLe corps est lu brut : la signature porte sur les octets envoyes, et un\nJSON relu puis reserialise ne les redonne pas.","operationId":"paiement_webhook_api_paiement_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin":{"get":{"summary":"Page Admin","operationId":"page_admin_admin_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/charge":{"get":{"summary":"Page Charge","description":"Ce que fait la machine, en direct. Reserve a l'administrateur.","operationId":"page_charge_charge_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/charge/releve":{"get":{"summary":"Api Charge Releve","description":"Le journal de charge, en texte : a lire, et a transmettre.","operationId":"api_charge_releve_api_admin_charge_releve_get","parameters":[{"name":"secondes","in":"query","required":false,"schema":{"type":"integer","default":900,"title":"Secondes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/charge":{"get":{"summary":"Api Charge","operationId":"api_charge_api_admin_charge_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/recette":{"get":{"summary":"Page Recette","operationId":"page_recette_recette_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/recette/cas":{"get":{"summary":"Recette Cas","operationId":"recette_cas_api_recette_cas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Recette Enregistrer","description":"Fige l'arbre affiche, et met la maquette de cote avec lui.\n\nL'IFC est COPIE dans le dossier de recette : un cas de reference qui\nrenverrait au fichier de l'utilisateur ne vaudrait rien - celui-ci sera\nefface, remplace, ou simplement modifie, et la reference deviendrait\nfausse sans que personne le voie.","operationId":"recette_enregistrer_api_recette_cas_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/recette/cas/{identifiant}":{"delete":{"summary":"Recette Oublier","description":"Retire un cas, son arbre et sa maquette.","operationId":"recette_oublier_api_recette_cas__identifiant__delete","parameters":[{"name":"identifiant","in":"path","required":true,"schema":{"type":"string","title":"Identifiant"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recette/journal":{"get":{"summary":"Recette Journal","description":"L'historique des recettes : c'est le banc d'essai du moteur.","operationId":"recette_journal_api_recette_journal_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/recette/executer/{travail}":{"get":{"summary":"Recette Suivre","description":"L'avancement d'une recette lancee, et ses resultats deja connus.","operationId":"recette_suivre_api_recette_executer__travail__get","parameters":[{"name":"travail","in":"path","required":true,"schema":{"type":"string","title":"Travail"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recette/executer":{"post":{"summary":"Recette Executer","description":"Lance la recette EN TACHE DE FOND et rend de quoi la suivre.\n\nLe calcul dure des minutes : le mener dans la requete bloquait la boucle\nd'uvicorn, donc tout le site, le temps de la recette. Il part maintenant\ndans un fil, et la page interroge l'avancement.","operationId":"recette_executer_api_recette_executer_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/recette/refiger/preparer":{"post":{"summary":"Recette Refiger Preparer","description":"Premiere etape : ce qui serait refige. Ne modifie rien.","operationId":"recette_refiger_preparer_api_recette_refiger_preparer_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/recette/refiger":{"post":{"summary":"Recette Refiger","description":"Seconde etape : le jeton de `preparer` et la phrase tapee.","operationId":"recette_refiger_api_recette_refiger_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/recette/refiger/{travail}":{"get":{"summary":"Recette Refiger Suivre","operationId":"recette_refiger_suivre_api_recette_refiger__travail__get","parameters":[{"name":"travail","in":"path","required":true,"schema":{"type":"string","title":"Travail"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/comptes":{"get":{"summary":"Admin Lister","operationId":"admin_lister_api_admin_comptes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/comptes/{compte_id}/confirmer":{"post":{"summary":"Admin Confirmer","operationId":"admin_confirmer_api_admin_comptes__compte_id__confirmer_post","parameters":[{"name":"compte_id","in":"path","required":true,"schema":{"type":"integer","title":"Compte Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/comptes/{compte_id}/crediter":{"post":{"summary":"Admin Crediter","operationId":"admin_crediter_api_admin_comptes__compte_id__crediter_post","parameters":[{"name":"compte_id","in":"path","required":true,"schema":{"type":"integer","title":"Compte Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credit"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/comptes/{compte_id}/fichiers":{"get":{"summary":"Fichiers Du Compte","description":"Les maquettes d'un compte, sous les noms que leur proprietaire voit.\n\nSur le disque, un modele s'appelle 3f7a1c….ifc : le nom d'origine ne vit\nque dans le catalogue de l'espace. C'est lui qu'on lit, et non le dossier,\nsinon l'administration ne montrerait que des empreintes.\n\nLa lecture est directe et non par `lire_catalogue` : celle-la purge au\npassage les maquettes perimees, et consulter l'espace de quelqu'un ne doit\nrien y effacer.","operationId":"fichiers_du_compte_api_admin_comptes__compte_id__fichiers_get","parameters":[{"name":"compte_id","in":"path","required":true,"schema":{"type":"integer","title":"Compte Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/comptes/{compte_id}/fichiers/{model_id}/ifc":{"get":{"summary":"Telecharger Ifc Du Compte","description":"La maquette d'origine, sous son vrai nom.","operationId":"telecharger_ifc_du_compte_api_admin_comptes__compte_id__fichiers__model_id__ifc_get","parameters":[{"name":"compte_id","in":"path","required":true,"schema":{"type":"integer","title":"Compte Id"}},{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/comptes/{compte_id}/fichiers/{model_id}/bac-a-sable":{"post":{"summary":"Copier Dans Mon Espace","description":"Recopie la maquette dans l'espace de l'administrateur.\n\nUne copie, et non un acces direct : ouvrir le modele de quelqu'un en l'etat\nferait apparaitre dans SA bibliotheque les etudes qu'on y lance. Avec une\ncopie, on refait ses gestes sans rien changer chez lui - et le XKT est\nrepris tel quel, ce qui evite de reconvertir.","operationId":"copier_dans_mon_espace_api_admin_comptes__compte_id__fichiers__model_id__bac_a_sable_post","parameters":[{"name":"compte_id","in":"path","required":true,"schema":{"type":"integer","title":"Compte Id"}},{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/comptes/{compte_id}":{"delete":{"summary":"Admin Supprimer","operationId":"admin_supprimer_api_admin_comptes__compte_id__delete","parameters":[{"name":"compte_id","in":"path","required":true,"schema":{"type":"integer","title":"Compte Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Page Accueil","operationId":"page_accueil__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/pdc":{"get":{"summary":"Page Pdc","operationId":"page_pdc_pdc_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/centrales":{"get":{"summary":"Page Centrales","operationId":"page_centrales_centrales_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/models/{model_id}/raccords-forces":{"post":{"summary":"Forcer Un Raccordement","description":"Raccorde deux pieces a la main. Rend ce que rend la page des\ncentrales, apres un nouveau parcours.","operationId":"forcer_un_raccordement_api_models__model_id__raccords_forces_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeRaccordForce"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Oublier Un Raccordement","description":"Retire un raccordement force.","operationId":"oublier_un_raccordement_api_models__model_id__raccords_forces_delete","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"a","in":"query","required":true,"schema":{"type":"string","title":"A"}},{"name":"b","in":"query","required":true,"schema":{"type":"string","title":"B"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/monoblocs":{"post":{"summary":"Designer Un Monobloc","description":"« Identifier un equipement de ventilation » : la piece cliquee devient\nune centrale ou un ventilateur de la maquette (16 octobre 2026).\n\nGratuit : ni calcul de perte de charge, ni unite. La piece doit etre un\nequipement - pas une gaine, un raccord ou une bouche : ce sont des\npieces du reseau, jamais ce qui le pousse. Rend ce que rend la page des\ncentrales, la machine designee en plus, pour que la page repeigne.","operationId":"designer_un_monobloc_api_models__model_id__monoblocs_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeMonobloc"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/monoblocs/{guid}":{"delete":{"summary":"Oublier Un Monobloc","description":"Cette piece n'est pas une centrale : designee a la main, elle cesse de\nl'etre ; venue des regles de l'IA, elle est RETIREE - gardee dans les\nexclues, jusqu'a ce qu'on la designe de nouveau. Une batterie prise pour\nune centrale par une regle trop large se corrige ainsi sur la page.","operationId":"oublier_un_monobloc_api_models__model_id__monoblocs__guid__delete","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"guid","in":"path","required":true,"schema":{"type":"string","title":"Guid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/models/{model_id}/centrales-reseaux":{"get":{"summary":"Centrales Et Reseaux","description":"Les centrales et les ventilateurs de la maquette, et les pieces que\nl'extension atteint depuis chacun : ce que la page des centrales colore.\n\nLes memes parcours que le volet MCP - `_raccordement_des_centrales`, en\ncache sur la maquette : la page ouverte apres l'appel de l'IA ne refait\nrien. Gratuit : on ne calcule aucune perte de charge.","operationId":"centrales_et_reseaux_api_models__model_id__centrales_reseaux_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/takeoff":{"get":{"summary":"Page Takeoff","operationId":"page_takeoff_takeoff_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/water":{"get":{"summary":"Page Eau","operationId":"page_eau_water_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/notes-pieces":{"get":{"summary":"Notes Lister","operationId":"notes_lister_api_notes_pieces_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Notes Ajouter","description":"Une note : une piece, ou un passage (plusieurs GUID).","operationId":"notes_ajouter_api_notes_pieces_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/notes-pieces/{note_id}":{"post":{"summary":"Notes Modifier","description":"Ajoute une piece a la note (un passage), ou change son commentaire.","operationId":"notes_modifier_api_notes_pieces__note_id__post","parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Notes Supprimer","operationId":"notes_supprimer_api_notes_pieces__note_id__delete","parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/nettoyage/{model_id}/reseau":{"post":{"summary":"Nettoyage Reseau","description":"Le reseau tenant a une piece, avec l'extension habituelle, en\ns'arretant a tous les proxys (la nature « eau » le demande a l'extension ;\nle reseau lui-meme peut etre d'air ou d'eau).","operationId":"nettoyage_reseau_api_admin_nettoyage__model_id__reseau_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeNettoyageReseau"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/nettoyage/{model_id}/proprietes/{guid}":{"get":{"summary":"Nettoyage Proprietes","description":"L'identite et les jeux de proprietes d'une piece : de quoi choisir\nla propriete qui designera ses semblables.","operationId":"nettoyage_proprietes_api_admin_nettoyage__model_id__proprietes__guid__get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"guid","in":"path","required":true,"schema":{"type":"string","title":"Guid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/nettoyage/{model_id}/memes":{"post":{"summary":"Nettoyage Memes","description":"Toutes les pieces de la maquette qui portent la meme valeur pour cette\npropriete. Par les relations inverses quand le schema les offre (vite),\nsinon en balayant les produits.","operationId":"nettoyage_memes_api_admin_nettoyage__model_id__memes_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeNettoyageMemes"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/nettoyage/{model_id}/ifc":{"post":{"summary":"Nettoyage Ifc","operationId":"nettoyage_ifc_api_admin_nettoyage__model_id__ifc_post","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandeNettoyageIfc"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/nettoyage/{model_id}/ifc/{travail}":{"get":{"summary":"Nettoyage Ifc Etat","operationId":"nettoyage_ifc_etat_api_admin_nettoyage__model_id__ifc__travail__get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"travail","in":"path","required":true,"schema":{"type":"string","title":"Travail"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/nettoyage/{model_id}/ifc/{travail}/fichier":{"get":{"summary":"Nettoyage Ifc Fichier","operationId":"nettoyage_ifc_fichier_api_admin_nettoyage__model_id__ifc__travail__fichier_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"travail","in":"path","required":true,"schema":{"type":"string","title":"Travail"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/nettoyage":{"get":{"summary":"Page Nettoyage","description":"Le nettoyage d'un IFC, pour l'administrateur (16 octobre 2026).","operationId":"page_nettoyage_nettoyage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/extension-aeraulique":{"get":{"summary":"Page Extension Aeraulique","description":"L'extension aeraulique seule : un clic, le reseau trace avec les\nregles du calcul de perte de charge, et son deroule pas a pas. Pour\ntester les maquettes d'air (14 octobre 2026). Le nom dit le fluide,\nexpres : la page ne traite que l'air.","operationId":"page_extension_aeraulique_extension_aeraulique_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/systems":{"get":{"summary":"Page Systemes","operationId":"page_systemes_systems_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reseaux":{"get":{"summary":"Page Reseaux","description":"Les reseaux independants, en couleurs, et le Dynamo qui les nomme.\n\nBatie sur la page des systemes - meme depot, meme 3D, meme cadrage -,\navec un panneau different : la legende des reseaux, les deux gestes de\nl'utilisateur, et la case Dynamo. Un module a part entiere, accessible\ncomme les autres, et aussi la destination des liens rendus par MCP.","operationId":"page_reseaux_reseaux_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/expansion":{"get":{"summary":"Page Expansion","operationId":"page_expansion_expansion_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/maquettes":{"get":{"summary":"Page Maquettes","description":"Deposer ses IFC et les retrouver, prepares.\n\nUne page a part, et non l'accueil : on y revient, on y depose plusieurs\nfichiers, on y prend les liens. L'accueil, lui, s'adresse a quelqu'un qui\nne connait pas encore le site.","operationId":"page_maquettes_maquettes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ai":{"get":{"summary":"Page Ia","description":"Brancher Claude ou OpenClaw sur les calculs de la plateforme.","operationId":"page_ia_ai_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/documentation":{"get":{"summary":"Page Documentation","description":"Ce que font les trois outils MCP, et ou ils s'arretent.\n\nExigee par l'annuaire des connecteurs, et utile a qui branche le\nconnecteur sans passer par la page /ai.","operationId":"page_documentation_documentation_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/confidentialite":{"get":{"summary":"Page Confidentialite","description":"Ce que le connecteur recoit, ce qui est conserve, ce qui ne l'est pas.","operationId":"page_confidentialite_confidentialite_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"Body_deposer_par_jeton_api_ia_depot__jeton__post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_deposer_par_jeton_api_ia_depot__jeton__post"},"Body_televerser_api_models_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"service":{"type":"string","title":"Service","default":"pdc"},"sans_3d":{"type":"boolean","title":"Sans 3D","default":false},"depot_ia":{"type":"string","title":"Depot Ia","default":""}},"type":"object","required":["file"],"title":"Body_televerser_api_models_post"},"Credit":{"properties":{"unites":{"type":"integer","title":"Unites"},"motif":{"type":"string","title":"Motif","default":"ajustement manuel"}},"type":"object","required":["unites"],"title":"Credit"},"DebutEnvoi":{"properties":{"nom":{"type":"string","title":"Nom"},"octets":{"type":"integer","title":"Octets"},"service":{"type":"string","title":"Service","default":"pdc"}},"type":"object","required":["nom","octets"],"title":"DebutEnvoi"},"DemandeAchat":{"properties":{"lot":{"type":"string","title":"Lot"},"retour":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retour"}},"type":"object","required":["lot"],"title":"DemandeAchat"},"DemandeAjout":{"properties":{"guid":{"type":"string","title":"Guid"}},"type":"object","required":["guid"],"title":"DemandeAjout"},"DemandeCircuit":{"properties":{"nom":{"type":"string","title":"Nom"},"depart":{"type":"string","title":"Depart"},"arrivee":{"type":"string","title":"Arrivee"},"params":{"additionalProperties":true,"type":"object","title":"Params","default":{}}},"type":"object","required":["nom","depart","arrivee"],"title":"DemandeCircuit"},"DemandeComposants":{"properties":{"composants":{"items":{},"type":"array","title":"Composants","default":[]}},"type":"object","title":"DemandeComposants"},"DemandeContenus":{"properties":{"contenus":{"additionalProperties":true,"type":"object","title":"Contenus","default":{}},"params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Params"}},"type":"object","title":"DemandeContenus"},"DemandeDeCircuits":{"properties":{"depart":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Depart"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"exclus":{"items":{"type":"string"},"type":"array","title":"Exclus","default":[]},"vitesse_max_m_s":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vitesse Max M S"},"debit_m3h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Debit M3H"},"nom":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom"},"systemes":{"items":{"type":"string"},"type":"array","title":"Systemes","default":[]},"centrales":{"items":{"type":"string"},"type":"array","title":"Centrales","default":[]},"tout":{"type":"boolean","title":"Tout","default":false},"arrivee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Arrivee"},"piece":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Piece"},"preliminaire":{"type":"boolean","title":"Preliminaire","default":false}},"type":"object","title":"DemandeDeCircuits"},"DemandeDePas":{"properties":{"sens":{"type":"string","title":"Sens","default":"arriere"}},"type":"object","title":"DemandeDePas"},"DemandeDeRegles":{"properties":{"regles":{"additionalProperties":true,"type":"object","title":"Regles"}},"type":"object","required":["regles"],"title":"DemandeDeRegles"},"DemandeDebitCentrale":{"properties":{"debit_m3h":{"type":"number","title":"Debit M3H"}},"type":"object","required":["debit_m3h"],"title":"DemandeDebitCentrale"},"DemandeEau":{"properties":{"nom":{"type":"string","title":"Nom"},"depart":{"type":"string","title":"Depart"},"params":{"additionalProperties":true,"type":"object","title":"Params","default":{}}},"type":"object","required":["nom","depart"],"title":"DemandeEau"},"DemandeExpansion":{"properties":{"nom":{"type":"string","title":"Nom"},"depart":{"type":"string","title":"Depart"},"params":{"additionalProperties":true,"type":"object","title":"Params","default":{}}},"type":"object","required":["nom","depart"],"title":"DemandeExpansion"},"DemandeMonobloc":{"properties":{"guid":{"type":"string","title":"Guid"}},"type":"object","required":["guid"],"title":"DemandeMonobloc"},"DemandeNettoyageIfc":{"properties":{"guids":{"items":{"type":"string"},"type":"array","title":"Guids"}},"type":"object","required":["guids"],"title":"DemandeNettoyageIfc"},"DemandeNettoyageMemes":{"properties":{"jeu":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jeu"},"propriete":{"type":"string","title":"Propriete"},"valeur":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valeur"}},"type":"object","required":["propriete"],"title":"DemandeNettoyageMemes"},"DemandeNettoyageReseau":{"properties":{"guid":{"type":"string","title":"Guid"}},"type":"object","required":["guid"],"title":"DemandeNettoyageReseau"},"DemandeNom":{"properties":{"nom":{"type":"string","title":"Nom"}},"type":"object","required":["nom"],"title":"DemandeNom"},"DemandeOubli":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"DemandeOubli"},"DemandePreferences":{"properties":{"params":{"additionalProperties":true,"type":"object","title":"Params","default":{}}},"type":"object","title":"DemandePreferences"},"DemandeRaccordForce":{"properties":{"a":{"type":"string","title":"A"},"b":{"type":"string","title":"B"}},"type":"object","required":["a","b"],"title":"DemandeRaccordForce"},"DemandeRecalcul":{"properties":{"params":{"additionalProperties":true,"type":"object","title":"Params","default":{}},"surcharges":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Surcharges"}},"type":"object","title":"DemandeRecalcul"},"DemandeReperes":{"properties":{"vase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vase"},"soupape":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Soupape"},"fraction_vase":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fraction Vase"},"fraction_soupape":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fraction Soupape"},"z_vase":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Z Vase"},"z_soupape":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Z Soupape"},"z_vase_saisi":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Z Vase Saisi"},"dz_soupape_saisi":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dz Soupape Saisi"},"haut_saisi":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Haut Saisi"},"bas_saisi":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bas Saisi"},"effacer_saisie":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Effacer Saisie"}},"type":"object","title":"DemandeReperes"},"DemandeReseau":{"properties":{"nom":{"type":"string","title":"Nom"},"depart":{"type":"string","title":"Depart"},"params":{"additionalProperties":true,"type":"object","title":"Params","default":{}},"mode":{"type":"string","title":"Mode","default":"metre"}},"type":"object","required":["nom","depart"],"title":"DemandeReseau"},"DemandeSysteme":{"properties":{"nom":{"type":"string","title":"Nom"},"depart":{"type":"string","title":"Depart"},"params":{"additionalProperties":true,"type":"object","title":"Params","default":{}}},"type":"object","required":["nom","depart"],"title":"DemandeSysteme"},"DemandeTarage":{"properties":{"tarage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tarage"},"automatique":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Automatique"}},"type":"object","title":"DemandeTarage"},"Exclusion":{"properties":{"guid":{"type":"string","title":"Guid"}},"type":"object","required":["guid"],"title":"Exclusion"},"ExclusionDeType":{"properties":{"guid":{"type":"string","title":"Guid"},"par_famille":{"type":"boolean","title":"Par Famille","default":false}},"type":"object","required":["guid"],"title":"ExclusionDeType"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Identifiants":{"properties":{"email":{"type":"string","title":"Email"},"mot_de_passe":{"type":"string","title":"Mot De Passe"}},"type":"object","required":["email","mot_de_passe"],"title":"Identifiants"},"NouveauMotDePasse":{"properties":{"jeton":{"type":"string","title":"Jeton"},"mot_de_passe":{"type":"string","title":"Mot De Passe"}},"type":"object","required":["jeton","mot_de_passe"],"title":"NouveauMotDePasse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}