{"openapi":"3.0.1","info":{"title":"API Ecobalyse","description":"L'API HTTP Ecobalyse permet de calculer les impacts environnementaux des produits textiles et alimentaires.","version":"0.0.1-alpha"},"externalDocs":{"description":"Visiter le site","url":"https://ecobalyse.beta.gouv.fr"},"servers":[{"url":"https://ecobalyse.beta.gouv.fr/api"}],"tags":[{"name":"Commun","description":"Documentation de l'API multi-domaines au format OpenAPI","externalDocs":{"description":"À propos","url":"https://fabrique-numerique.gitbook.io/ecobalyse"}},{"name":"Textile","description":"Documentation de l'API pour le domaine textile au format OpenAPI","externalDocs":{"description":"À propos","url":"https://fabrique-numerique.gitbook.io/ecobalyse"}},{"name":"Alimentaire","description":"Documentation de l'API pour le domaine alimentaire au format OpenAPI\n\n**⚠️ En construction, les résultats fournis sont incomplets et probablement invalides.**\n","externalDocs":{"description":"À propos","url":"https://fabrique-numerique.gitbook.io/ecobalyse"}}],"security":[{"token":[]}],"paths":{"/":{"get":{"tags":["Commun"],"summary":"Documentation OpenAPI de l'API","description":"Sert la documentation de l'API au format [OpenAPI](https://swagger.io/specification/)","responses":{"200":{"description":"Documentation de l'API au format OpenAPI."}}}},"/textile/countries":{"get":{"tags":["Textile"],"summary":"Liste des pays utilisables pour les simulations textiles.","responses":{"200":{"description":"Opération réussie","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryListResponse"}}}}}}},"/textile/materials":{"get":{"tags":["Textile"],"summary":"Liste des matières textile","responses":{"200":{"description":"Opération réussie","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaterialListResponse"}}}}}}},"/textile/products":{"get":{"tags":["Textile"],"summary":"Liste des types de produits textiles","responses":{"200":{"description":"Opération réussie","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductListResponse"}}}}}}},"/textile/simulator":{"post":{"tags":["Textile"],"summary":"Calcul des impacts environnementaux d'un produit textile","requestBody":{"description":"Requête modélisant les paramètres du produit à évaluer. L'id des matières est invariable dans le temps.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextileQuery"},"examples":{"tShirtFrance":{"$ref":"#/components/examples/tShirtFrance"},"tShirtChina":{"$ref":"#/components/examples/tShirtChina"}}}}},"responses":{"200":{"description":"Opération réussie","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericImpactsResponse"}}}},"400":{"description":"Paramètres invalides","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParametersError"}}}}}}},"/textile/simulator/{impact}":{"post":{"tags":["Textile"],"summary":"Calcul des impacts environnementaux d'un produit textile","parameters":[{"$ref":"#/components/parameters/impactUrlParam"}],"requestBody":{"description":"Requête modélisant les paramètres du produit à évaluer. L'id des matières est invariable dans le temps.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextileQuery"},"examples":{"tShirtFrance":{"$ref":"#/components/examples/tShirtFrance"},"tShirtChina":{"$ref":"#/components/examples/tShirtChina"}}}}},"responses":{"200":{"description":"Opération réussie","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericImpactsResponse"}}}},"400":{"description":"Paramètres invalides","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParametersError"}}}}}}},"/textile/simulator/detailed":{"post":{"tags":["Textile"],"summary":"Calcul des impacts environnementaux d'un produit textile","requestBody":{"description":"Requête modélisant les paramètres du produit à évaluer. L'id des matières est invariable dans le temps.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextileQuery"},"examples":{"tShirtFrance":{"$ref":"#/components/examples/tShirtFrance"},"tShirtChina":{"$ref":"#/components/examples/tShirtChina"}}}}},"responses":{"200":{"description":"Opération réussie","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailedTextileResponse"}}}},"400":{"description":"Paramètres invalides","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidParametersError"}}}}}}},"/textile/trims":{"get":{"tags":["Textile"],"summary":"Liste des accessoires pour vêtements","responses":{"200":{"description":"Opération réussie","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrimListResponse"}}}}}}}},"components":{"securitySchemes":{"token":{"description":"Un jeton d'API (token) vous permet d'accéder aux impacts détaillés des calculs effectués. Il peut être passé dans les entêtes `Authorization: Bearer` ou `token` de la requête.\n","type":"apiKey","name":"token","in":"header"}},"examples":{"tShirtFrance":{"summary":"T-Shirt France 100% Coton","value":{"mass":0.17,"materials":[{"id":"62a4d6fb-3276-4ba5-93a3-889ecd3bff84","share":1,"country":"FR"}],"product":"tshirt","countrySpinning":"FR","countryFabric":"FR","countryDyeing":"FR","countryMaking":"FR","fabricProcess":"knitting-mix"}},"tShirtChina":{"summary":"T-Shirt Chine, low-cost, 100% Coton","value":{"mass":0.17,"materials":[{"id":"62a4d6fb-3276-4ba5-93a3-889ecd3bff84","share":1}],"product":"tshirt","countrySpinning":"CN","countryFabric":"CN","countryDyeing":"CN","countryMaking":"CN","airTransportRatio":0.33,"makingWaste":null,"makingDeadStock":null,"makingComplexity":null,"yarnSize":null,"surfaceMass":null,"fabricProcess":"knitting-mix","disabledSteps":["use"]}}},"parameters":{"impactUrlParam":{"name":"impact","in":"path","description":"Trigramme de l'impact étudié ([la liste est documenté ici](https://fabrique-numerique.gitbook.io/ecobalyse/methodologie/impacts-consideres))\n","required":true,"schema":{"type":"string","minLength":3,"maxLength":3,"default":"cch","enum":["acd","bvi","cch","ecs","etf","fru","fwe","htc","htn","ior","ldu","mru","ozd","pco","pma","swe","tre","wtu"]}}},"schemas":{"Impacts":{"type":"object","properties":{"acd":{"type":"number","description":"Acidification (mol éq. H+)"},"bvi":{"type":"number","description":"Biodiversité locale (BVI)"},"cch":{"type":"number","description":"Changement climatique (kg éq. CO2)"},"ecs":{"type":"number","description":"Score d'impacts (Pts d'impact)"},"etf":{"type":"number","description":"Écotoxicité de l'eau douce (CTUe)"},"fru":{"type":"number","description":"Utilisation de ressources fossiles (MJ)"},"fwe":{"type":"number","description":"Eutrophisation eaux douces (kg éq. P)"},"htc":{"type":"number","description":"Toxicité humaine - cancer (CTUh)"},"htn":{"type":"number","description":"Toxicité humaine - non-cancer (CTUh)"},"ior":{"type":"number","description":"Radiations ionisantes (éq. kBq U235)"},"ldu":{"type":"number","description":"Utilisation des sols (sans dimension (pt))"},"mru":{"type":"number","description":"Utilisation de ressources minérales et métalliques (kg éq. Sb)"},"ozd":{"type":"number","description":"Appauvrissement de la couche d'ozone (kg éq. CFC 11)"},"pco":{"type":"number","description":"Formation d'ozone photochimique (kg éq. COVNM)"},"pma":{"type":"number","description":"Particules (incidence de maladie)"},"swe":{"type":"number","description":"Eutrophisation marine (kg éq. N)"},"tre":{"type":"number","description":"Eutrophisation terrestre (mol éq. N)"},"wtu":{"type":"number","description":"Utilisation de ressources en eau (m³)"}}},"TextileQuery":{"type":"object","additionalProperties":false,"required":["mass","materials","product"],"properties":{"mass":{"type":"number","description":"Masse du produit fini, en kilogrammes","minimum":0.01,"example":0.17},"product":{"type":"string","description":"Identifiant du produit (liste disponible sur le point d'entrée `/textile/products`)\n","enum":["calecon","chaussettes","chemise","jean","jupe","maillot-de-bain","manteau","pantalon","pull","slip","tshirt"]},"materials":{"type":"array","description":"Liste des matières composant le vêtement","items":{"$ref":"#/components/schemas/TextileQueryMaterial"},"minItems":1},"airTransportRatio":{"type":"number","description":"Part de **transport aérien** entre l'étape de **Confection** et l'étape de **Distribution**, entre `0` et `1`\n","minimum":0,"maximum":1},"business":{"type":"string","description":"Type d'entreprise et d'offre de services :\n\n- `small-business`: PME/TPE\n- `large-business-with-services`: Grande entreprise avec service de réparation\n- `large-business-without-services` (par défaut): Grande entreprise sans service de réparation\n","enum":["small-business","large-business-with-services","large-business-without-services"]},"countryDyeing":{"type":"string","description":"Code pays pour l'étape de **Teinture** (liste disponible sur le point d'entrée `textile/countries`)\n","minLength":2,"maxLength":3},"countryFabric":{"type":"string","description":"Code pays pour l'étape de **Tissage/Tricotage** (liste disponible sur le point d'entrée `textile/countries`)\n","minLength":2,"maxLength":3},"countryMaking":{"type":"string","description":"Code pays pour l'étape de **Confection** (liste disponible sur le point d'entrée `textile/countries`)\n","minLength":2,"maxLength":3},"countrySpinning":{"type":"string","description":"Code pays pour l'étape de **Filature** (liste disponible sur le point d'entrée `textile/countries`).\nSi non spécifié, le pays de filature pris en considération est celui de production de\nla matière la plus représentée dans le mix.\n","minLength":2,"maxLength":3},"disabledSteps":{"type":"array","description":"Liste des étapes du cycle de vie à désactiver, séparée par des virgules. Chaque étape est identifiée par un code :\n\n- `material`: Matière\n- `spinning`: Filature\n- `fabric`: Tissage ou Tricotage\n- `ennobling`: Ennoblissement (incluant le pré-traitement, la teinture et la finition)\n- `making`: Confection\n- `distribution`: Distribution\n- `use`: Utilisation\n- `eol`: Fin de vie\n\nPar exemple, pour désactiver l'étape de filature ainsi que celle d'ennoblissement, on peut passer `disabledSteps=spinning,ennobling`.\n","enum":["material","spinning","fabric","making","ennobling","distribution","use","eol"]},"dyeingProcessType":{"type":"string","description":"Ce paramètre permet de préciser le type de procédé avec lequel est teint le produit; il peut prendre les valeurs suivantes :\n\n- `average`: Teinture moyenne\n- `continuous`: Teinture en continu\n- `discontinuous`: Teinture discontinue\n\n⚠️ En l’absence d’utilisation explicite du paramètre, le type de teinture utilisé sera teinture moyenne.\n","enum":["average","continuous","discontinuous"]},"fabricProcess":{"type":"string","description":"Le processus utilisé pour tisser ou tricoter le tissu, parmi la liste de choix suivants :\n- `knitting-mix` : Tricotage moyen (mix de métiers circulaire & rectiligne)\n- `knitting-fully-fashioned` : Tricotage fully-fashioned / seamless\n- `knitting-integral` : Tricotage intégral / whole garment\n- `knitting-circular` : Tricotage circulaire, inventaire désagrégé\n- `knitting-straight` : Tricotage rectiligne, inventaire désagrégé\n- `weaving`  : Tissage\n","enum":["knitting-mix","knitting-fully-fashioned","knitting-integral","knitting-circular","knitting-straight","weaving"]},"fading":{"type":"boolean","description":"Active l'application du **procédé de délavage** pour l'étape de confection d'un produit.\n"},"makingComplexity":{"type":"string","description":"Complexité de la confection, parmi la liste de choix suivants :\n\n- `very-high` : très élevée\n- `high` : élevée\n- `medium` : moyenne\n- `low` : faible\n- `very-low` : très faible\n\n**⚠️ Sur les produits tricotés en \"fully fashioned / seamless\", ce paramètre n'a aucun impact (valeur fixe: very-low).**\n\n**⚠️ Sur les produits tricotés en \"integral / whole garment\", ce paramètre n'a aucun impact (valeur fixe: vide, non applicable).**\n","enum":["very-high","high","medium","low","very-low","not-applicable"]},"makingDeadStock":{"type":"number","description":"Taux de stocks dormants lors de la confection, entre `0` et `0.3`.\n","minimum":0,"maximum":0.3},"makingWaste":{"type":"number","description":"Taux de perte en confection (incluant la découpe), entre `0` et `0.4`.\n\n**⚠️ Sur les produits tricotés en \"fully fashioned / seamless\", ce paramètre n'a aucun impact (valeur fixe: 0.02).**\n\n**⚠️ Sur les produits tricotés en \"integral / whole garment\", ce paramètre n'a aucun impact (valeur fixe: 0).**\n","minimum":0,"maximum":0.4},"numberOfReferences":{"description":"Nombre de références au catalogue de la marque.\n","type":"number","minimum":1,"maximum":999999},"physicalDurability":{"description":"La durabilité physique du produit.","type":"number","minimum":0.67,"maximum":1.45},"price":{"description":"Prix du produit, en Euros (€).\n","type":"number","minimum":1,"maximum":1000},"printing":{"type":"object","description":"Ce paramètre permet de préciser le type d'impression effectuée sur le produit.\nPar exemple, `{\"kind\": \"pigment\", \"ratio\": 0.1}` signifie impression pigmentaire sur 10%\nde la superficie du vêtement.\n","required":["kind"],"properties":{"kind":{"type":"string","description":"Type de procédé d'impression pouvant prendre les valeurs suivantes :\n- `pigment` pour une impression pigmentaire ;\n- `substantive` pour une impression fixé/lavé ;\n","enum":["pigment","substantive"]},"ratio":{"type":"number","description":"Pourcentage de surface imprimée, exprimé entre `0` et `0.8` (entre 0% et 80%)\n"}}},"surfaceMass":{"type":"number","description":"Le grammage de l'étoffe, exprimé en gr/m², représente sa masse surfacique.\n\n**⚠️ Sur les produits tricotés, ce paramètre n'impacte que l'impression.**\n","minimum":80,"maximum":500},"trims":{"description":"Liste des accessoires du vêtement (boutons, zip, etc).\nLa liste des accessoires disponibles est accessible sur le point d'entrée `/textile/trims`.\n","type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"quantity":{"type":"integer","minimum":0}}}},"upcycled":{"description":"Produit remanufacturé\n","type":"boolean"},"yarnSize":{"oneOf":[{"type":"string"},{"type":"integer"}],"description":"Titrage du fil exprimé en **numéro métrique** (`Nm`).\nIl est aussi possible de l'exprimer en décitex (`Dtex`) en spécifiant l'unité.\nExemples de saisie :\n  - `40` : 40Nm\n  - `\"40Nm\"` : 40Nm\n  - `\"250Dtex\"` : 250Dtex, équivalent à 40Nm\n","minimum":9,"maximum":200}}},"TextileQueryMaterial":{"type":"object","description":"Liste des matières composant le produit\n","additionalProperties":false,"required":["id","share"],"properties":{"id":{"type":"string","description":"Identifiant de la matière, la liste des matières disponibles est accessible sur le\npoint d'entrée `/textile/materials`\n"},"share":{"type":"number","description":"Part du produit que cette matière représente (entre `0` et `1`)\n","minimum":0.01,"maximum":1},"spinning":{"type":"string","description":"Procédé de filature ou de filage pour la matière, dont la valeur peut être :\n- `ConventionalSpinning` : filature conventionnelle (à anneaux : ring spun) pour les matières naturelles ou artificielles\n- `UnconventionalSpinning` : filature non conventionnelle (à bouts libérées : open-end) pour les matières naturelles ou artificielles\n- `SyntheticSpinning` : filage pour les matières synthétiques\n","enum":["ConventionalSpinning","UnconventionalSpinning","SyntheticSpinning"]},"country":{"type":"string","description":"Code du pays d'origine de la matière (liste disponible sur le point d'entrée `/textile/countries`).","minLength":2,"maxLength":3}}},"FoodQuery":{"type":"object","additionalProperties":false,"required":["ingredients"],"properties":{"ingredients":{"type":"array","items":{"$ref":"#/components/schemas/FoodQueryIngredient"},"minItems":1},"transform":{"$ref":"#/components/schemas/FoodQueryTransform"},"packaging":{"type":"array","items":{"$ref":"#/components/schemas/FoodQueryPackaging"}},"distribution":{"type":"string","description":"Choix du mode de stockage chez le distributeur, parmi ces valeurs possibles :\n\n- `ambient`: Température ambiante (valeur par défaut)\n- `fresh`: Réfrigéré\n- `frozen`: Congelé\n\nLa distribution inclut 450km de transport terrestre vers le site de stockage + 150km vers le site de distribution.\n","enum":["ambient","fresh","frozen"]},"preparation":{"type":"array","description":"Liste des techniques de préparation mobilisées **à l'étape de consommation** :\n\n- `frying`: Friture\n- `pan-cooking`: Cuisson à la poêle\n- `pan-warming`: Réchauffage à la poêle\n- `oven`: Cuisson au four\n- `microwave`: Cuisson au four micro-ondes\n- `refrigeration`: Réfrigération\n- `freezing`: Congélation\n\n**Un maximum de deux techniques de préparation est autorisé.**\n","items":{"type":"string","enum":["frying","pan-cooking","pan-warming","oven","microwave","refrigeration","freezing"]}}}},"FoodQueryIngredient":{"type":"object","description":"Liste des ingrédients composant la recette (liste disponible sur le point d'entrée `/food/ingredients`).\nLe format de chaque entrée est composé de :\n\n- l'identifiant de la matière (pour avoir la liste, utiliser l'API de liste d'ingrédients)\n- sa masse **exprimée en grammes**\n- un éventuel code de pays d'origine (ex: `BR` pour le Brésil)\n- un éventuel transport par avion *uniquement si c'est un [ingrédient de catégorie\n  \"HORS EUROPE-MAGHREB (AVION)\"](https://fabrique-numerique.gitbook.io/ecobalyse/alimentaire/transport#circuits-consideres)*\n  (valeurs possible: `<vide>`, `byPlane`, `noPlane`)\n","additionalProperties":false,"required":["id","mass"],"properties":{"id":{"type":"string","description":"Identifiant de l'ingrédient"},"mass":{"type":"number","description":"Masse de l'ingrédient, **en grammes**"},"country":{"type":"string","description":"Code du pays d'origine (liste disponible sur le point d'entrée `/food/countries`)."},"byPlane":{"type":"string","description":"Transport par avion","enum":["","byPlane","noPlane"]}}},"FoodQueryTransform":{"type":"object","description":"Précision du procédé de transformation et de la masse de produit à transformer.\n","additionalProperties":false,"required":["id","mass"],"properties":{"id":{"type":"string","description":"Identifiant du procédé de transformation (liste disponible sur le point d'entrée `/food/transforms`)"},"mass":{"type":"number","description":"Masse de produit à transformer, **en grammes**"}}},"FoodQueryPackaging":{"type":"object","description":"Liste des emballages composant la recette.\n","additionalProperties":false,"required":["id","mass"],"properties":{"id":{"type":"string","description":"Identifiant du procédé d'emballage (liste disponible sur le point d'entrée `/food/packaging`)"},"mass":{"type":"number","description":"Masse de cet emballage, **en grammes**"}}},"InvalidParametersError":{"type":"object","properties":{"error":{"type":"object","description":"Un dictionnaire dont la clé est le nom d'un champ en erreur et la valeur le message d'erreur.\n","properties":{"decoding":{"type":"string","description":"Une erreur de décodage JSON"},"general":{"type":"string","description":"Une erreur d'ordre général"}},"additionalProperties":{"type":"string","description":"Une erreur particulière pour un champ spécifique"}},"documentation":{"type":"string","description":"Lien hypertexte vers la documentation de l'API\n"}}},"CountryListResponse":{"type":"array","description":"Liste des pays.","items":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"}}}},"MaterialListResponse":{"type":"array","description":"Liste des matières","items":{"type":"object","properties":{"uuid":{"type":"string"},"name":{"type":"string"}}}},"ProductListResponse":{"type":"array","description":"Liste des types de produits","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"TrimListResponse":{"type":"array","description":"Liste des accessoires pour vêtements","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"RecipeResultsResponse":{"type":"object","description":"Recipe impact results.\n","properties":{"webUrl":{"type":"string","description":"URL vers la simulation dans l'interface web."},"results":{"type":"object","properties":{"impacts":{"$ref":"#/components/schemas/Impacts"}}},"description":{"type":"string","description":"Une description de la simulation."},"query":{"type":"object","description":"Le jeu de paramètres utilisé pour effectuer la simulation."}}},"GenericImpactsResponse":{"type":"object","description":"Impacts environnementaux exprimés dans leurs unités respectives, dont\n[la documentation est disponible ici](https://fabrique-numerique.gitbook.io/ecobalyse/methodologie/impacts-consideres).\n","properties":{"webUrl":{"type":"string","description":"URL vers la simulation dans l'interface web."},"impacts":{"$ref":"#/components/schemas/Impacts"},"description":{"type":"string","description":"Une description de la simulation."},"query":{"type":"object","description":"Le jeu de paramètres utilisé pour effectuer la simulation."}}},"SingleImpactResponse":{"type":"object","properties":{"webUrl":{"type":"string","description":"URL vers la simulation dans l'interface web."},"impacts":{"type":"object","properties":{"{impact}":{"type":"number","description":"Valeur de l'impact recherché"}}},"description":{"type":"string","description":"Une description de la simulation."},"query":{"type":"object","description":"Le jeu de paramètres utilisé pour effectuer la simulation."}}},"DetailedTextileResponse":{"type":"object","description":"Réponse détaillée contenant tous les calculs intermédiaires pour un produit textile.\n","properties":{"webUrl":{"type":"string","description":"URL vers la simulation dans l'interface web."},"impacts":{"$ref":"#/components/schemas/Impacts"},"impactsWithoutDurability":{"$ref":"#/components/schemas/Impacts"},"complementsImpacts":{"type":"object","description":"Impact des compléments avec application du coefficient de durabilité (microfibres, export hors europe, etc.)"},"daysOfWear":{"type":"integer","description":"Nombre de jours d'usage du produit"},"durability":{"type":"number","description":"Durabilité du produit"},"inputs":{"type":"object","description":"Paramètres d'entrée de la simulation"},"lifeCycle":{"type":"object","description":"Détails du cycle de vie du produit"},"transport":{"type":"object","description":"Détails du transport"},"trimsImpacts":{"type":"object","description":"Impacts des accessoires"},"useNbCycles":{"type":"integer","description":"Nombre de cycles d'usage"}}},"IngredientListResponse":{"type":"array","description":"Liste des ingrédients utilisables dans une recette","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"defaultOrigin":{"type":"string","description":"Lieu d'origine par défaut de cet ingrédient dont la liste est disponible dans [la documentation](https://fabrique-numerique.gitbook.io/ecobalyse/alimentaire/transport#circuits-consideres)"}}}},"PackagingListResponse":{"type":"array","description":"Liste des emballages utilisables pour conditionner une recette","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"TransformListResponse":{"type":"array","description":"Liste des procédés de transformation utilisables pour une recette","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}}}}},"version":"2.3.0"}