{
  "openapi": "3.0.4",
  "info": {
    "title": "Webservice INIES",
    "description": "<p>This Webservice is used to Import/Export products from the Inies Database</p>\n                                    <p>Access to this API is restricted to authenticated users</p>\n                                    <p>For usage information and changelogs, please refer to the <a href='https://base-inies.fr/docs/'>INIES Public API documentation page</a></p>\n                                    <p>For more information, please refer to the <a href='https://www.inies.fr/le-webservice/demander-un-acces/'>INIES Website</a></p>",
    "version": "WS 6.3.0"
  },
  "paths": {
    "/ws/Login": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Authenticate a user",
        "description": "Authenticate a user with an email and an API Key, this method returns :<br>\n                        - A <b>JWT access token</b> that must be used in the <b>Authorization header</b> of all requests, valid for 30 minutes<br />\n                        - A <b>Refresh token</b> that can be used to refresh the access token using the <a href='#operations-Auth-post_ws_RefreshToken'>RefreshToken</a> method, valid for 35 minutes<br />\n                        - A <b>Token type</b> that is always 'bearer'",
        "operationId": "AuthenticateWebserviceUser",
        "requestBody": {
          "description": "The user credentials (email and API key) for authentication.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Inies.Webservice.Dto.Auth.WSLoginModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Inies.Webservice.Dto.Auth.WSAuthenticationResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/ws/RefreshToken": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Refresh the access token",
        "description": "Refresh the access token using a refresh token, a new access token and refresh token are returned",
        "operationId": "RefreshWebserviceToken",
        "requestBody": {
          "description": "The expired access token and the refresh token to use for refreshing.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Inies.Webservice.Dto.Auth.WSTokenRefreshModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Inies.Webservice.Dto.Auth.WSAuthenticationResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/ws/Revoke": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Revoke the refresh token",
        "description": "Revoke the refresh token, the user will have to authenticate\n                        again using the <a href='#operations-Auth-post_ws_Login'>Login</a> method after token expiration<br />\n                        This is useful if the user wants to logout",
        "operationId": "RevokeWebserviceRefreshToken",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      }
    },
    "/ws/Norme": {
      "get": {
        "tags": [
          "Export"
        ],
        "summary": "Available standards list",
        "description": "Retrieves all standards and their names",
        "operationId": "GetAllStandards",
        "responses": {
          "200": {
            "description": "List of standards",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Inies.Webservice.Dto.Standard.StandardForListingDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing permissions to read standards",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      }
    },
    "/ws/Norme/{id}": {
      "get": {
        "tags": [
          "Export"
        ],
        "summary": "Get standard details",
        "description": "Retrieves a standard by its ID, includes Indicators and Phases",
        "operationId": "GetStandardById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Standard identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Standard details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Inies.Webservice.Dto.Standard.StandardDto"
                }
              }
            }
          },
          "401": {
            "description": "Missing permissions to read standards",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Standard not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      }
    },
    "/ws/Nomenclature": {
      "get": {
        "tags": [
          "Export"
        ],
        "summary": "Get classification nomenclature",
        "description": "Retrieves informations about classification nomenclature (EPD Classification/Category)",
        "operationId": "GetNomenclatureItems",
        "responses": {
          "200": {
            "description": "Classification nomenclature items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.NomenclatureItemDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing permissions to read nomenclature",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      }
    },
    "/ws/Unit": {
      "get": {
        "tags": [
          "Export"
        ],
        "summary": "Get units list",
        "description": "Retrieves all units available in the database",
        "operationId": "GetUnits",
        "responses": {
          "200": {
            "description": "Unit list",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.UnitDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing permissions to read units",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      }
    },
    "/ws/Epd": {
      "get": {
        "tags": [
          "Export"
        ],
        "summary": "Get all EPDs short data",
        "description": "Retrieves a list of all EPDs with minimal data, this also retrieves archived products",
        "operationId": "GetEpdShortData",
        "parameters": [
          {
            "name": "referenceDateTime",
            "in": "query",
            "description": "Return only the products modified or archived since de date provided, ISO Format",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "serialIdentifier",
            "in": "query",
            "description": "Filter returned products by serial identifier (National Key)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "showArchivedProducts",
            "in": "query",
            "description": "Show archived products [Default: true]",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "declarationTypes",
            "in": "query",
            "description": "Filter returned products by declaration types",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Inies.Webservice.Enums.EpdDeclarationType"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of EPDs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.EpdShortDataDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing permissions to read products",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      },
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Import or update an EPD",
        "description": "Imports an EPD into the database. If an EPD with the same RegNumber already exists, a new version is created and the previous one is archived.",
        "operationId": "ImportEpd",
        "requestBody": {
          "description": "The EPD data to import or update.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.EpdForImportDto"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.EpdForImportDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The imported EPD full data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.EpdFullDataDto"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token"
          },
          "403": {
            "description": "User does not have write access"
          },
          "422": {
            "description": "Validation errors in payload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      }
    },
    "/ws/Epd/{id}": {
      "get": {
        "tags": [
          "Export"
        ],
        "summary": "Retrieves full EPD data by product identifier.",
        "description": "Retrieves the Full Data of a product by its ID",
        "operationId": "GetEpdFullDataById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "EPD identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The EPD",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.EpdFullDataDto"
                }
              }
            }
          },
          "401": {
            "description": "The product is archived and your account does not have access to archived products",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "EPD not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      }
    },
    "/ws/Epd/{epdId}/Document": {
      "get": {
        "tags": [
          "Export"
        ],
        "summary": "Get Epd files",
        "description": "Retrieves the list of files for a product by its ID",
        "operationId": "GetEpdDocumentList",
        "parameters": [
          {
            "name": "epdId",
            "in": "path",
            "description": "EPD identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Document metadata list",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.EpdDocumentDto"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing permissions to read products",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      },
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Create or replace EPD document metadata",
        "description": "Creates or replaces metadata for a document linked to an EPD. File bytes can then be uploaded with PUT /ws/Epd/{epdId}/Document/{documentId}.",
        "operationId": "CreateOrReplaceEpdDocumentMetadata",
        "parameters": [
          {
            "name": "epdId",
            "in": "path",
            "description": "EPD identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The document metadata.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.ProductDocument.EpdDocumentForCreateDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The document metadata that was created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.EpdDocumentDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid product state or document cannot be associated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token"
          },
          "403": {
            "description": "User does not have write access"
          },
          "404": {
            "description": "Product not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Validation errors in payload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      }
    },
    "/ws/Epd/{epdId}/Document/{fileId}": {
      "get": {
        "tags": [
          "Export"
        ],
        "summary": "Get document content",
        "description": "Retrieves the content of a file by its ID",
        "operationId": "GetEpdDocumentContent",
        "parameters": [
          {
            "name": "epdId",
            "in": "path",
            "description": "EPD identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fileId",
            "in": "path",
            "description": "Document identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Document binary content",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "401": {
            "description": "Missing permissions to read products",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Access to the file is forbidden"
          },
          "404": {
            "description": "EPD or document not found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      }
    },
    "/ws/HealthCheck": {
      "get": {
        "tags": [
          "HealthCheck"
        ],
        "summary": "Webservice health check",
        "description": "Checks database connectivity and returns service availability status.",
        "operationId": "WebserviceHealthCheck",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable"
          }
        }
      }
    },
    "/ws/Epd/{epdId}/DocumentMultipart": {
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Create or replace EPD document (multipart)",
        "description": "Creates or replaces an EPD document using multipart/form-data (metadata + file). If a document with the same name and type already exists, it is replaced.",
        "operationId": "CreateOrReplaceEpdDocumentMultipart",
        "parameters": [
          {
            "name": "epdId",
            "in": "path",
            "description": "EPD identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "File",
                  "Name",
                  "Type"
                ],
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "description": "Binary file content to upload.",
                    "format": "binary"
                  },
                  "Name": {
                    "type": "string",
                    "description": "Document name as displayed in INIES."
                  },
                  "Type": {
                    "$ref": "#/components/schemas/Inies.Webservice.Enums.EpdDocumentType"
                  }
                }
              },
              "encoding": {
                "File": {
                  "style": "form"
                },
                "Name": {
                  "style": "form"
                },
                "Type": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The document metadata that was created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.EpdDocumentDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid product state or document cannot be associated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token"
          },
          "403": {
            "description": "User does not have write access"
          },
          "404": {
            "description": "Product not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Validation errors in payload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      }
    },
    "/ws/Epd/{epdId}/Document/{documentId}": {
      "put": {
        "tags": [
          "Import"
        ],
        "summary": "Upload EPD document binary content",
        "description": "Uploads binary content for an existing document metadata entry previously created with POST /ws/Epd/{epdId}/Document.",
        "operationId": "UploadEpdDocumentBinary",
        "parameters": [
          {
            "name": "epdId",
            "in": "path",
            "description": "EPD identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "Document identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The document metadata after upload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.EpdDocumentDto"
                }
              }
            }
          },
          "400": {
            "description": "Document is not associated with the specified product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token"
          },
          "403": {
            "description": "User does not have write access"
          },
          "404": {
            "description": "Document not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Import"
        ],
        "summary": "Delete EPD document",
        "description": "Deletes an existing EPD document metadata entry from the database for a non-archived product updated within the last day.",
        "operationId": "DeleteEpdDocument",
        "parameters": [
          {
            "name": "epdId",
            "in": "path",
            "description": "EPD identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "Document identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Document deleted"
          },
          "400": {
            "description": "Invalid product state or document is not associated with the specified product",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid authentication token"
          },
          "403": {
            "description": "User does not have write access"
          },
          "404": {
            "description": "Document not found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      }
    },
    "/ws/Epd/{serialIdentifier}": {
      "delete": {
        "tags": [
          "Import"
        ],
        "summary": "Archive EPD by serial identifier",
        "description": "Archives all validated EPD versions matching the provided serial identifier.",
        "operationId": "ArchiveEpdBySerialIdentifier",
        "parameters": [
          {
            "name": "serialIdentifier",
            "in": "path",
            "description": "EPD registration number (NationalKey)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "EPD archived"
          },
          "401": {
            "description": "Missing or invalid authentication token"
          },
          "403": {
            "description": "User does not have write access"
          },
          "404": {
            "description": "No validated EPD found with this serial identifier",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": [ ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "Inies.Webservice.Dto.Auth.WSAuthenticationResult": {
        "required": [
          "access_token",
          "refresh_token",
          "token_type"
        ],
        "type": "object",
        "properties": {
          "access_token": {
            "type": "string",
            "description": "JWT access token to send in Authorization header using Bearer scheme.",
            "nullable": true,
            "xml": { }
          },
          "token_type": {
            "type": "string",
            "description": "Token type for the access token, usually \"Bearer\".",
            "nullable": true,
            "xml": { }
          },
          "refresh_token": {
            "type": "string",
            "description": "Refresh token used to obtain a new access token.",
            "nullable": true,
            "xml": { }
          }
        },
        "additionalProperties": false,
        "description": "Return for successful authentication on the inies webservice, containing the access token and refresh token."
      },
      "Inies.Webservice.Dto.Auth.WSLoginModel": {
        "required": [
          "apiKey",
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "Webservice user login email.",
            "xml": {
              "name": "Email"
            }
          },
          "apiKey": {
            "minLength": 1,
            "type": "string",
            "description": "Webservice API key associated with the account.",
            "xml": {
              "name": "ApiKey"
            }
          }
        },
        "additionalProperties": false,
        "description": "Entrée utilisateur pour l'authentication sur le webservice inies"
      },
      "Inies.Webservice.Dto.Auth.WSTokenRefreshModel": {
        "required": [
          "accessToken",
          "refreshToken"
        ],
        "type": "object",
        "properties": {
          "accessToken": {
            "minLength": 1,
            "type": "string",
            "description": "Expired access token to refresh.",
            "xml": {
              "name": "AccessToken"
            }
          },
          "refreshToken": {
            "minLength": 1,
            "type": "string",
            "description": "Refresh token previously issued with the access token.",
            "xml": {
              "name": "RefreshToken"
            }
          }
        },
        "additionalProperties": false,
        "description": "Entrée utilisateur pour l'authentication sur le webservice inies"
      },
      "Inies.Webservice.Dto.Epd.ComfortInfoDto": {
        "required": [
          "comfortAcoustic",
          "comfortHygrothermal",
          "comfortOlfactory",
          "comfortVisual",
          "otherComfortInfo"
        ],
        "type": "object",
        "properties": {
          "comfortHygrothermal": {
            "type": "string",
            "description": "Hygrothermal comfort information.",
            "nullable": true,
            "xml": {
              "name": "ComfortHygrothermal"
            }
          },
          "comfortAcoustic": {
            "type": "string",
            "description": "Acoustic comfort information.",
            "nullable": true,
            "xml": {
              "name": "ComfortAcoustic"
            }
          },
          "comfortVisual": {
            "type": "string",
            "description": "Visual comfort information.",
            "nullable": true,
            "xml": {
              "name": "ComfortVisual"
            }
          },
          "comfortOlfactory": {
            "type": "string",
            "description": "Olfactory comfort information.",
            "nullable": true,
            "xml": {
              "name": "ComfortOlfactory"
            }
          },
          "otherComfortInfo": {
            "type": "string",
            "description": "Additional comfort information.",
            "nullable": true,
            "xml": {
              "name": "OtherComfortInfo"
            }
          }
        },
        "additionalProperties": false,
        "description": "Comfort-related information for a product."
      },
      "Inies.Webservice.Dto.Epd.CompanyForEpdImportDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Company name.",
            "nullable": true,
            "xml": {
              "name": "Name"
            }
          },
          "address": {
            "type": "string",
            "description": "Company address.",
            "nullable": true,
            "xml": {
              "name": "Address"
            }
          },
          "zipCode": {
            "type": "string",
            "description": "Company zip code.",
            "nullable": true,
            "xml": {
              "name": "ZipCode"
            }
          },
          "city": {
            "type": "string",
            "description": "Company city.",
            "nullable": true,
            "xml": {
              "name": "City"
            }
          },
          "country": {
            "type": "string",
            "description": "Company country.",
            "nullable": true,
            "xml": {
              "name": "Country"
            }
          }
        },
        "additionalProperties": false,
        "description": "Company information used in EPD import."
      },
      "Inies.Webservice.Dto.Epd.CompanyInfoDto": {
        "required": [
          "acronym",
          "address",
          "country",
          "name",
          "website"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Company legal name.",
            "nullable": true,
            "xml": {
              "name": "Name"
            }
          },
          "acronym": {
            "type": "string",
            "description": "Company acronym.",
            "nullable": true,
            "xml": {
              "name": "Acronym"
            }
          },
          "country": {
            "type": "string",
            "description": "Company country.",
            "nullable": true,
            "xml": {
              "name": "Country"
            }
          },
          "address": {
            "type": "string",
            "description": "Company postal address.",
            "nullable": true,
            "xml": {
              "name": "Address"
            }
          },
          "website": {
            "type": "string",
            "description": "Company website URL.",
            "nullable": true,
            "xml": {
              "name": "Website"
            }
          }
        },
        "additionalProperties": false,
        "description": "Company information for the organism responsible for the product."
      },
      "Inies.Webservice.Dto.Epd.ContactForEpdImportDto": {
        "type": "object",
        "properties": {
          "mail": {
            "type": "string",
            "description": "Contact email.",
            "nullable": true,
            "xml": {
              "name": "Mail"
            }
          },
          "firstName": {
            "type": "string",
            "description": "Contact first name.",
            "nullable": true,
            "xml": {
              "name": "FirstName"
            }
          },
          "lastName": {
            "type": "string",
            "description": "Contact last name.",
            "nullable": true,
            "xml": {
              "name": "LastName"
            }
          },
          "tel": {
            "type": "string",
            "description": "Contact phone number.",
            "nullable": true,
            "xml": {
              "name": "Tel"
            }
          }
        },
        "additionalProperties": false,
        "description": "Contact information used in EPD import."
      },
      "Inies.Webservice.Dto.Epd.ContactInfoDto": {
        "required": [
          "email",
          "fax",
          "firstName",
          "lastName",
          "phone"
        ],
        "type": "object",
        "properties": {
          "lastName": {
            "type": "string",
            "description": "Contact last name.",
            "nullable": true,
            "xml": {
              "name": "LastName"
            }
          },
          "firstName": {
            "type": "string",
            "description": "Contact first name.",
            "nullable": true,
            "xml": {
              "name": "FirstName"
            }
          },
          "phone": {
            "type": "string",
            "description": "Contact phone number.",
            "nullable": true,
            "xml": {
              "name": "Phone"
            }
          },
          "fax": {
            "type": "string",
            "description": "Contact fax number.",
            "nullable": true,
            "xml": {
              "name": "Fax"
            }
          },
          "email": {
            "type": "string",
            "description": "Contact email address.",
            "nullable": true,
            "xml": {
              "name": "Email"
            }
          }
        },
        "additionalProperties": false,
        "description": "Contact information for the responsible person."
      },
      "Inies.Webservice.Dto.Epd.EpdDocumentDto": {
        "required": [
          "id",
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Document unique identifier.",
            "format": "int32",
            "xml": {
              "name": "Id"
            }
          },
          "name": {
            "type": "string",
            "description": "Document display name.",
            "nullable": true,
            "xml": {
              "name": "Name"
            }
          },
          "type": {
            "type": "string",
            "description": "Document type label.",
            "nullable": true,
            "xml": {
              "name": "Type"
            }
          }
        },
        "additionalProperties": false,
        "description": "Metadata of an EPD document."
      },
      "Inies.Webservice.Dto.Epd.EpdForImportDto": {
        "required": [
          "regNumber"
        ],
        "type": "object",
        "properties": {
          "regNumber": {
            "minLength": 1,
            "type": "string",
            "description": "Registration number (NationalKey) used to identify the product across versions.",
            "xml": {
              "name": "RegNumber"
            }
          },
          "name": {
            "type": "string",
            "description": "Product name.",
            "nullable": true,
            "xml": {
              "name": "Name"
            }
          },
          "btoB": {
            "type": "boolean",
            "description": "Indicates whether the product is business-to-business.",
            "nullable": true,
            "xml": {
              "name": "BtoB"
            }
          },
          "nomenclatureId": {
            "type": "integer",
            "description": "Primary nomenclature identifier.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "NomenclatureId"
            }
          },
          "nomenclatureId2": {
            "type": "integer",
            "description": "Secondary nomenclature identifier.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "NomenclatureId2"
            }
          },
          "nomenclatureId3": {
            "type": "integer",
            "description": "Tertiary nomenclature identifier.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "NomenclatureId3"
            }
          },
          "isEquipementRT": {
            "type": "boolean",
            "description": "Indicates whether the product is an RT equipment.",
            "nullable": true,
            "xml": {
              "name": "IsEquipementRT"
            }
          },
          "standard": {
            "type": "integer",
            "description": "Standard identifier.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "Standard"
            }
          },
          "commercialDescription": {
            "type": "string",
            "description": "Commercial description.",
            "nullable": true,
            "xml": {
              "name": "CommercialDescription"
            }
          },
          "tld": {
            "type": "integer",
            "description": "Product service life (DVT).",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "TLD"
            }
          },
          "quantity": {
            "maximum": 1.7976931348623157E+308,
            "minimum": 0,
            "type": "number",
            "description": "The quantity of the functional unit of the EPD",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "Quantity"
            }
          },
          "unitId": {
            "type": "integer",
            "description": "The unit of the functional unit of the EPD",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "UnitId"
            }
          },
          "functionalUnit": {
            "type": "string",
            "description": "Functional unit description.",
            "nullable": true,
            "xml": {
              "name": "FunctionalUnit"
            }
          },
          "lcaDate": {
            "type": "string",
            "description": "LCA issue date.",
            "format": "date-time",
            "nullable": true,
            "xml": {
              "name": "LCADate"
            }
          },
          "verificationDate": {
            "type": "string",
            "description": "Verification date.",
            "format": "date-time",
            "nullable": true,
            "xml": {
              "name": "VerificationDate"
            }
          },
          "verifiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.EpdVerifierForImportDto"
            },
            "description": "Product verifiers.",
            "nullable": true,
            "xml": {
              "name": "Verifiers"
            }
          },
          "extrapolationRules": {
            "type": "string",
            "description": "Extrapolation rules.",
            "nullable": true,
            "xml": {
              "name": "ExtrapolationRules"
            }
          },
          "declarationType": {
            "type": "integer",
            "description": "Declaration type identifier.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "DeclarationType"
            }
          },
          "isDeclaredProduct": {
            "type": "boolean",
            "description": "Indicates whether this is a declared product.",
            "nullable": true,
            "xml": {
              "name": "IsDeclaredProduct"
            }
          },
          "company": {
            "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.CompanyForEpdImportDto"
          },
          "contact": {
            "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.ContactForEpdImportDto"
          },
          "productFUs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.ProductFuForEpdImportDto"
            },
            "description": "Functional unit constituent products.",
            "nullable": true,
            "xml": {
              "name": "ProductFUs"
            }
          },
          "indicators": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.IndicatorForEpdImportDto"
            },
            "description": "Environmental indicators and phase values.",
            "nullable": true,
            "xml": {
              "name": "Indicators"
            }
          },
          "productBiogenicCarbonContent": {
            "type": "number",
            "description": "Product biogenic carbon content.",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "ProductBiogenicCarbonContent"
            }
          },
          "packagingBiogenicCarbonContent": {
            "type": "number",
            "description": "Packaging biogenic carbon content.",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "PackagingBiogenicCarbonContent"
            }
          },
          "performanceUf": {
            "type": "integer",
            "description": "Performance functional unit type.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "PerformanceUf"
            }
          },
          "performanceUfQuantity": {
            "type": "number",
            "description": "Performance functional unit quantity.",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "PerformanceUfQuantity"
            }
          },
          "performanceUfUnitId": {
            "type": "integer",
            "description": "Unit identifier for performance functional unit.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "PerformanceUfUnitId"
            }
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object for importing an EPD.\nThis is the same Object used for Create and Update operations."
      },
      "Inies.Webservice.Dto.Epd.EpdFullDataDto": {
        "required": [
          "characteristicsNotInUf",
          "comfortData",
          "commercialReferences",
          "contentDeclaration",
          "fuConstituantProducts",
          "healthData",
          "indicatorSet",
          "name",
          "performanceUf",
          "performanceUfUnit",
          "productionPlace",
          "productionRegionFr",
          "responsibleContact",
          "responsibleOrganism",
          "serialIdentifier",
          "ufDescription",
          "ufUnit",
          "usageAbility",
          "version"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique identifier of the EPD and it's version",
            "format": "int32",
            "xml": {
              "name": "Id"
            }
          },
          "serialIdentifier": {
            "type": "string",
            "description": "Shared identifier of the EPD, all versions of the same product have the same serial identifier",
            "nullable": true,
            "xml": {
              "name": "SerialIdentifier"
            }
          },
          "statut": {
            "type": "integer",
            "description": "Status of the EPD, see StatutName for possible values",
            "format": "int32",
            "xml": {
              "name": "Statut"
            }
          },
          "statutName": {
            "$ref": "#/components/schemas/Inies.Webservice.Enums.EpdStatut"
          },
          "version": {
            "type": "string",
            "description": "Version of the EPD (x.y)",
            "nullable": true,
            "xml": {
              "name": "Version"
            }
          },
          "onlineDate": {
            "type": "string",
            "description": "Date of the EPD publication",
            "format": "date-time",
            "nullable": true,
            "xml": {
              "name": "OnlineDate"
            }
          },
          "lastUpdateDate": {
            "type": "string",
            "description": "Date of the last update of the EPD",
            "format": "date-time",
            "nullable": true,
            "xml": {
              "name": "LastUpdateDate"
            }
          },
          "archivedDate": {
            "type": "string",
            "description": "Archiving date of the product",
            "format": "date-time",
            "nullable": true,
            "xml": {
              "name": "ArchivedDate"
            }
          },
          "expirationDate": {
            "type": "string",
            "description": "Date of the EPD expiration",
            "format": "date-time",
            "nullable": true,
            "xml": {
              "name": "ExpirationDate"
            }
          },
          "name": {
            "type": "string",
            "description": "Name of the EPD",
            "nullable": true,
            "xml": {
              "name": "Name"
            }
          },
          "isPep": {
            "type": "boolean",
            "description": "Is the EPD a PEP",
            "xml": {
              "name": "IsPep"
            }
          },
          "declarationType": {
            "type": "integer",
            "description": "Type of the declaration as an integer, see DeclarationTypeName for possible values",
            "format": "int32",
            "xml": {
              "name": "DeclarationType"
            }
          },
          "declarationTypeName": {
            "$ref": "#/components/schemas/Inies.Webservice.Enums.EpdDeclarationType"
          },
          "classificationId": {
            "type": "integer",
            "description": "Classification of the product, aka Nomenclature id",
            "format": "int32",
            "xml": {
              "name": "ClassificationId"
            }
          },
          "classificationId2": {
            "type": "integer",
            "description": "Secondary classification of the product, aka Nomenclature id",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "ClassificationId2"
            }
          },
          "classificationId3": {
            "type": "integer",
            "description": "Tertiary classification of the product, aka Nomenclature id",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "ClassificationId3"
            }
          },
          "issueDate": {
            "type": "string",
            "description": "Date the ACV was edited",
            "format": "date-time",
            "nullable": true,
            "xml": {
              "name": "IssueDate"
            }
          },
          "isVerified": {
            "type": "boolean",
            "description": "Is the EPD verified",
            "xml": {
              "name": "IsVerified"
            }
          },
          "verificationDate": {
            "type": "string",
            "description": "Date of the verification",
            "format": "date-time",
            "nullable": true,
            "xml": {
              "name": "VerificationDate"
            }
          },
          "commercialReferences": {
            "type": "string",
            "description": "Commercial references of the product",
            "nullable": true,
            "xml": {
              "name": "CommercialReferences"
            }
          },
          "commercialBrands": {
            "type": "string",
            "description": "Commercial brands of the product",
            "nullable": true,
            "xml": {
              "name": "CommercialBrands"
            }
          },
          "commercialReferencesNumber": {
            "type": "integer",
            "description": "Number of commercial references",
            "format": "int32",
            "xml": {
              "name": "CommercialReferencesNumber"
            }
          },
          "usageAbility": {
            "type": "string",
            "description": "Usage ability of the product (proof of fitness for use)",
            "nullable": true,
            "xml": {
              "name": "UsageAbility"
            }
          },
          "dvt": {
            "type": "integer",
            "description": "Lifetime of the product",
            "format": "int32",
            "xml": {
              "name": "Dvt"
            }
          },
          "ufQuantity": {
            "type": "number",
            "description": "Quantity of the functional unit",
            "format": "double",
            "xml": {
              "name": "UfQuantity"
            }
          },
          "ufUnit": {
            "type": "string",
            "description": "Unit of the functional unit",
            "nullable": true,
            "xml": {
              "name": "UfUnit"
            }
          },
          "ufUnitId": {
            "type": "integer",
            "description": "Id of the unit of the functional unit",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "UfUnitId"
            }
          },
          "implementationFallRate": {
            "type": "number",
            "description": "Drop rate during implementation of the product",
            "format": "double",
            "xml": {
              "name": "ImplementationFallRate"
            }
          },
          "maintenanceFrequency": {
            "type": "number",
            "description": "Maintenance frequency of the product (in years)",
            "format": "double",
            "xml": {
              "name": "MaintenanceFrequency"
            }
          },
          "contentDeclaration": {
            "type": "string",
            "description": "Content declaration of the product",
            "nullable": true,
            "xml": {
              "name": "ContentDeclaration"
            }
          },
          "ufDescription": {
            "type": "string",
            "description": "Description of the functional unit",
            "nullable": true,
            "xml": {
              "name": "UfDescription"
            }
          },
          "characteristicsNotInUf": {
            "type": "string",
            "description": "Characteristics not included in the functional unit",
            "nullable": true,
            "xml": {
              "name": "CharacteristicsNotInUf"
            }
          },
          "fuConstituantProducts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.FuConstituantProductDto"
            },
            "description": "List of the constituant products of the functional unit",
            "nullable": true,
            "xml": {
              "name": "FuConstituantProducts"
            }
          },
          "healthData": {
            "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.HealthInfoDto"
          },
          "comfortData": {
            "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.ComfortInfoDto"
          },
          "responsibleOrganism": {
            "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.CompanyInfoDto"
          },
          "responsibleContact": {
            "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.ContactInfoDto"
          },
          "indicatorSet": {
            "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.IndicatorValuesDto"
          },
          "productionPlace": {
            "type": "string",
            "description": "Production place of the product (Hors Europe/Europe/France)",
            "nullable": true,
            "xml": {
              "name": "ProductionPlace"
            }
          },
          "productionRegionFr": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Production region of the product (France only)",
            "nullable": true,
            "xml": {
              "name": "ProductionRegionFr"
            }
          },
          "isBtoB": {
            "type": "boolean",
            "description": "Is the product BtoB or BtoC",
            "xml": {
              "name": "IsBtoB"
            }
          },
          "performanceUf": {
            "type": "string",
            "description": "Performance of the functional unit",
            "nullable": true,
            "xml": {
              "name": "PerformanceUf"
            }
          },
          "performanceUfQuantity": {
            "type": "number",
            "description": "Performance quantity of the functional unit",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "PerformanceUfQuantity"
            }
          },
          "performanceUfUnit": {
            "type": "string",
            "description": "Performance unit of the functional unit",
            "nullable": true,
            "xml": {
              "name": "PerformanceUfUnit"
            }
          },
          "performanceUfUnitId": {
            "type": "integer",
            "description": "Id of the performance unit of the functional unit",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "PerformanceUfUnitId"
            }
          },
          "distanceTransportA4Km": {
            "type": "number",
            "description": "Distance of transport A4 (km)",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "DistanceTransportA4Km"
            }
          },
          "distanceTransportC2DechetsRecyclesKm": {
            "type": "number",
            "description": "Distance of transport for C2 recycled wastes (km)",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "DistanceTransportC2DechetsRecyclesKm"
            }
          },
          "distanceTransportC2DechetsValorisesKm": {
            "type": "number",
            "description": "Distance of transport for C2 valorized wastes (km)",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "DistanceTransportC2DechetsValorisesKm"
            }
          },
          "distanceTransportC2DechetsEliminesKm": {
            "type": "number",
            "description": "Distance of transport for C2 eliminated wastes (km)",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "DistanceTransportC2DechetsEliminesKm"
            }
          },
          "registrationDate": {
            "type": "string",
            "description": "Registration date of the product",
            "format": "date-time",
            "nullable": true,
            "xml": {
              "name": "RegistrationDate"
            }
          },
          "carbonBiogenicStorage": {
            "type": "number",
            "description": "Carbon biogenic storage of the product",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "CarbonBiogenicStorage"
            }
          },
          "packagingCarbonBiogenicStorage": {
            "type": "number",
            "description": "Packaging carbon biogenic storage of the product",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "PackagingCarbonBiogenicStorage"
            }
          },
          "verifiers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of product verifier full names",
            "nullable": true,
            "xml": {
              "name": "Verifiers"
            }
          }
        },
        "additionalProperties": false,
        "description": "Full representation of an EPD for detailed view operations."
      },
      "Inies.Webservice.Dto.Epd.EpdShortDataDto": {
        "required": [
          "classificationIds",
          "name",
          "serialIdentifier",
          "version"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique identifier of the EPD version.",
            "format": "int32",
            "xml": {
              "name": "Id"
            }
          },
          "serialIdentifier": {
            "type": "string",
            "description": "Identifiant unique du produit\nCorrespond à la clé nationale du produit (NationalKey)",
            "nullable": true,
            "xml": {
              "name": "SerialIdentifier"
            }
          },
          "name": {
            "type": "string",
            "description": "Product display name.",
            "nullable": true,
            "xml": {
              "name": "Name"
            }
          },
          "classificationIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Product classification identifiers (nomenclature item ids).",
            "nullable": true,
            "xml": {
              "name": "ClassificationIds"
            }
          },
          "lastUpdate": {
            "type": "string",
            "description": "Last update timestamp of the EPD.",
            "format": "date-time",
            "nullable": true,
            "xml": {
              "name": "LastUpdate"
            }
          },
          "archivedDate": {
            "type": "string",
            "description": "Date when the EPD was archived.\nNote: This is null if the EPD is not archived.",
            "format": "date-time",
            "nullable": true,
            "xml": {
              "name": "ArchivedDate"
            }
          },
          "isArchived": {
            "type": "boolean",
            "description": "Indicates whether the EPD is archived.",
            "xml": {
              "name": "IsArchived"
            }
          },
          "version": {
            "type": "string",
            "description": "EPD version.",
            "nullable": true,
            "xml": {
              "name": "Version"
            }
          }
        },
        "additionalProperties": false,
        "description": "Short representation of an EPD for listing operations."
      },
      "Inies.Webservice.Dto.Epd.EpdVerifierForImportDto": {
        "required": [
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "nullable": true,
            "xml": {
              "name": "FirstName"
            }
          },
          "lastName": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string",
            "nullable": true,
            "xml": {
              "name": "LastName"
            }
          },
          "fullName": {
            "type": "string",
            "description": "The full name of the verifier, combining first and last names.\nThis property is used for display purposes and is not part of the XML serialization.",
            "nullable": true,
            "readOnly": true,
            "xml": {
              "name": "FullName"
            }
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object for importing an EPD.\nThis is the same Object used for Create and Update operations."
      },
      "Inies.Webservice.Dto.Epd.FuConstituantProductDto": {
        "required": [
          "name",
          "unit"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Constituent product name.",
            "nullable": true,
            "xml": {
              "name": "Name"
            }
          },
          "quantity": {
            "type": "number",
            "description": "Constituent quantity.",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "Quantity"
            }
          },
          "unit": {
            "type": "string",
            "description": "Unit name.",
            "nullable": true,
            "xml": {
              "name": "Unit"
            }
          },
          "unitId": {
            "type": "integer",
            "description": "Unit identifier.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "UnitId"
            }
          },
          "constituantType": {
            "type": "integer",
            "description": "Constituent declaration type identifier.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "ConstituantType"
            }
          }
        },
        "additionalProperties": false,
        "description": "Constituent product of the functional unit."
      },
      "Inies.Webservice.Dto.Epd.HealthInfoDto": {
        "required": [
          "airRating",
          "eCovFormaldehyde",
          "eRadioactive",
          "healthNumber",
          "infosDrinkingWater",
          "infosNotDrinkingWater",
          "otherHealthInfo"
        ],
        "type": "object",
        "properties": {
          "airRating": {
            "type": "string",
            "description": "Indoor air quality rating label.",
            "nullable": true,
            "xml": {
              "name": "AirRating"
            }
          },
          "eCovFormaldehyde": {
            "type": "string",
            "description": "ECOV and formaldehyde information.",
            "nullable": true,
            "xml": {
              "name": "ECovFormaldehyde"
            }
          },
          "eRadioactive": {
            "type": "string",
            "description": "Radioactivity information.",
            "nullable": true,
            "xml": {
              "name": "ERadioactive"
            }
          },
          "otherHealthInfo": {
            "type": "string",
            "description": "Additional health information.",
            "nullable": true,
            "xml": {
              "name": "OtherHealthInfo"
            }
          },
          "isContactDrinkingWater": {
            "type": "boolean",
            "description": "Indicates whether product is in contact with drinking water.",
            "xml": {
              "name": "IsContactDrinkingWater"
            }
          },
          "isContactNotDrinkingWater": {
            "type": "boolean",
            "description": "Indicates whether product is in contact with non-drinking water.",
            "xml": {
              "name": "IsContactNotDrinkingWater"
            }
          },
          "healthNumber": {
            "type": "string",
            "description": "Health conformity number.",
            "nullable": true,
            "xml": {
              "name": "HealthNumber"
            }
          },
          "infosDrinkingWater": {
            "type": "string",
            "description": "Information related to drinking water usage.",
            "nullable": true,
            "xml": {
              "name": "InfosDrinkingWater"
            }
          },
          "infosNotDrinkingWater": {
            "type": "string",
            "description": "Information related to non-drinking water usage.",
            "nullable": true,
            "xml": {
              "name": "InfosNotDrinkingWater"
            }
          }
        },
        "additionalProperties": false,
        "description": "Health and indoor environment information for a product."
      },
      "Inies.Webservice.Dto.Epd.IndicatorForEpdImportDto": {
        "required": [
          "indicatorCode",
          "phases"
        ],
        "type": "object",
        "properties": {
          "indicatorCode": {
            "type": "string",
            "description": "Indicator code.",
            "nullable": true,
            "xml": {
              "name": "IndicatorCode"
            }
          },
          "phases": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.PhaseForEpdImportDto"
            },
            "description": "Indicator values by phase.",
            "nullable": true,
            "xml": {
              "name": "Phases"
            }
          }
        },
        "additionalProperties": false,
        "description": "Indicator and phase values used in EPD import."
      },
      "Inies.Webservice.Dto.Epd.IndicatorQuantityDto": {
        "type": "object",
        "properties": {
          "indicatorId": {
            "type": "integer",
            "description": "Indicator identifier.",
            "format": "int32",
            "xml": {
              "name": "IndicatorId"
            }
          },
          "phaseId": {
            "type": "integer",
            "description": "Phase identifier.",
            "format": "int32",
            "xml": {
              "name": "PhaseId"
            }
          },
          "quantity": {
            "type": "number",
            "description": "Numeric quantity value.",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "Quantity"
            }
          }
        },
        "additionalProperties": false,
        "description": "Indicator value for a specific phase."
      },
      "Inies.Webservice.Dto.Epd.IndicatorValuesDto": {
        "required": [
          "indicatorQuantities"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Standard identifier associated with the indicator set.",
            "format": "int32",
            "xml": {
              "name": "Id"
            }
          },
          "indicatorQuantities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Inies.Webservice.Dto.Epd.IndicatorQuantityDto"
            },
            "description": "Indicator quantities grouped by indicator and phase.",
            "nullable": true,
            "xml": {
              "name": "IndicatorQuantities"
            }
          }
        },
        "additionalProperties": false,
        "description": "Set of indicator quantities for a product and a standard."
      },
      "Inies.Webservice.Dto.Epd.NomenclatureItemDto": {
        "required": [
          "code",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Nomenclature item identifier.",
            "format": "int32",
            "xml": {
              "name": "Id"
            }
          },
          "name": {
            "type": "string",
            "description": "Nomenclature item display name.",
            "nullable": true,
            "xml": {
              "name": "Name"
            }
          },
          "parentId": {
            "type": "integer",
            "description": "Parent item identifier when nested, otherwise null.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "ParentId"
            }
          },
          "treeLevel": {
            "type": "integer",
            "description": "Hierarchy level of the item in the nomenclature tree.",
            "format": "int32",
            "xml": {
              "name": "TreeLevel"
            }
          },
          "hasChildren": {
            "type": "boolean",
            "description": "Indicates whether the item has child items.",
            "xml": {
              "name": "HasChildren"
            }
          },
          "unitId": {
            "type": "integer",
            "description": "Functional unit identifier associated with this item when relevant.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "UnitId"
            }
          },
          "code": {
            "type": "string",
            "description": "Business code of the nomenclature item.",
            "nullable": true,
            "xml": {
              "name": "Code"
            }
          }
        },
        "additionalProperties": false,
        "description": "Classification nomenclature item."
      },
      "Inies.Webservice.Dto.Epd.PhaseForEpdImportDto": {
        "required": [
          "phaseCode"
        ],
        "type": "object",
        "properties": {
          "phaseCode": {
            "type": "string",
            "description": "Phase code.",
            "nullable": true,
            "xml": {
              "name": "PhaseCode"
            }
          },
          "value": {
            "type": "number",
            "description": "Phase indicator value.",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "Value"
            }
          }
        },
        "additionalProperties": false,
        "description": "Phase value for an indicator used in EPD import."
      },
      "Inies.Webservice.Dto.Epd.ProductDocument.EpdDocumentForCreateDto": {
        "required": [
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Document name as displayed in INIES.",
            "xml": {
              "name": "Name"
            }
          },
          "type": {
            "$ref": "#/components/schemas/Inies.Webservice.Enums.EpdDocumentType"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object for creating a product document."
      },
      "Inies.Webservice.Dto.Epd.ProductFuForEpdImportDto": {
        "type": "object",
        "properties": {
          "productName": {
            "type": "string",
            "description": "Constituent product name.",
            "nullable": true,
            "xml": {
              "name": "ProductName"
            }
          },
          "productQuantity": {
            "type": "number",
            "description": "Constituent product quantity.",
            "format": "double",
            "nullable": true,
            "xml": {
              "name": "ProductQuantity"
            }
          },
          "productUnitId": {
            "type": "integer",
            "description": "Unit identifier of the constituent product.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "ProductUnitId"
            }
          },
          "productTypeId": {
            "type": "integer",
            "description": "Constituent product type identifier.",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "ProductTypeId"
            }
          }
        },
        "additionalProperties": false,
        "description": "Functional unit constituent product used in EPD import."
      },
      "Inies.Webservice.Dto.Epd.UnitDto": {
        "required": [
          "description",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unit identifier.",
            "format": "int32",
            "xml": {
              "name": "Id"
            }
          },
          "name": {
            "type": "string",
            "description": "Unit short name.",
            "nullable": true,
            "xml": {
              "name": "Name"
            }
          },
          "description": {
            "type": "string",
            "description": "Unit description.",
            "nullable": true,
            "xml": {
              "name": "Description"
            }
          }
        },
        "additionalProperties": false,
        "description": "Functional unit metadata."
      },
      "Inies.Webservice.Dto.Standard.IndicatorDto": {
        "required": [
          "code",
          "id",
          "nameEn",
          "nameFr",
          "typeEn",
          "typeFr",
          "unitName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Indicator ID",
            "format": "int32",
            "xml": {
              "name": "Id"
            }
          },
          "nameFr": {
            "type": "string",
            "description": "Indicator Name in French",
            "nullable": true,
            "xml": {
              "name": "NameFr"
            }
          },
          "nameEn": {
            "type": "string",
            "description": "Indicator Name in English (May be empty)",
            "nullable": true,
            "xml": {
              "name": "NameEn"
            }
          },
          "typeId": {
            "type": "integer",
            "description": "Type ID",
            "format": "int32",
            "readOnly": true,
            "xml": {
              "name": "TypeId"
            }
          },
          "typeFr": {
            "type": "string",
            "description": "Indicator Type in French",
            "nullable": true,
            "xml": {
              "name": "TypeFr"
            }
          },
          "typeEn": {
            "type": "string",
            "description": "Indicator Type in English (May be empty)",
            "nullable": true,
            "xml": {
              "name": "TypeEn"
            }
          },
          "code": {
            "type": "string",
            "description": "Indicator Code in format IND{Id}",
            "nullable": true,
            "xml": {
              "name": "Code"
            }
          },
          "isOptional": {
            "type": "boolean",
            "description": "Is this indicator optional",
            "nullable": true,
            "xml": {
              "name": "IsOptional"
            }
          },
          "unitId": {
            "type": "integer",
            "description": "Unit ID",
            "format": "int32",
            "xml": {
              "name": "UnitId"
            }
          },
          "unitName": {
            "type": "string",
            "description": "Unit Name",
            "nullable": true,
            "xml": {
              "name": "UnitName"
            }
          }
        },
        "additionalProperties": false,
        "description": "Indicator Details"
      },
      "Inies.Webservice.Dto.Standard.PhaseDto": {
        "required": [
          "code",
          "id",
          "isOptional",
          "nameEn",
          "nameFr"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Phase identifier.",
            "format": "int32",
            "xml": {
              "name": "Id"
            }
          },
          "nameFr": {
            "type": "string",
            "description": "French phase name.",
            "nullable": true,
            "xml": {
              "name": "NameFr"
            }
          },
          "nameEn": {
            "type": "string",
            "description": "English phase name.",
            "nullable": true,
            "xml": {
              "name": "NameEn"
            }
          },
          "code": {
            "type": "string",
            "description": "Phase short code.",
            "nullable": true,
            "xml": {
              "name": "Code"
            }
          },
          "isOptional": {
            "type": "boolean",
            "description": "Indicates whether this phase is optional.",
            "xml": {
              "name": "IsOptional"
            }
          }
        },
        "additionalProperties": false,
        "description": "Standard phase details."
      },
      "Inies.Webservice.Dto.Standard.StandardDto": {
        "required": [
          "id",
          "indicators",
          "name",
          "phases"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Standard ID",
            "format": "int32",
            "xml": {
              "name": "Id"
            }
          },
          "name": {
            "type": "string",
            "description": "Standard Name",
            "nullable": true,
            "xml": {
              "name": "Name"
            }
          },
          "indicators": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Inies.Webservice.Dto.Standard.IndicatorDto"
            },
            "description": "List of Indicators",
            "nullable": true,
            "xml": {
              "name": "Indicators"
            }
          },
          "phases": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Inies.Webservice.Dto.Standard.PhaseDto"
            },
            "description": "List of Phases",
            "nullable": true,
            "xml": {
              "name": "Phases"
            }
          }
        },
        "additionalProperties": false,
        "description": "Standard Details"
      },
      "Inies.Webservice.Dto.Standard.StandardForListingDto": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Standard identifier.",
            "format": "int32",
            "xml": {
              "name": "Id"
            }
          },
          "name": {
            "type": "string",
            "description": "Standard name.",
            "nullable": true,
            "xml": {
              "name": "Name"
            }
          }
        },
        "additionalProperties": false,
        "description": "Standard DTO\nUsed for listing all standards, doesn't include Indicators and Phases"
      },
      "Inies.Webservice.Enums.EpdDeclarationType": {
        "enum": [
          "Undefined",
          "Individual",
          "Collective",
          "DefaultEnvironmentalData",
          "DefaultConventionalData",
          "EmptyComponent",
          "ReUseComponent"
        ],
        "type": "string",
        "description": "DeclarationType of the constituant product of the functional unit\n- Unknown (0): This type should not be used\n- Individual (1): Individual\n- Collective (2): Collective\n- DefaultEnvironmentalData (3): Default environmental data\n- DefaultConventionalData (4): Default conventional data\n- EmptyComponent (5): Empty component\n- ReUseComponent (6): Re-use component"
      },
      "Inies.Webservice.Enums.EpdDocumentType": {
        "enum": [
          "Unknown",
          "FDES_PEP",
          "ImageFile",
          "VerificationCertificate",
          "VerificationReport",
          "DefaultEnvironmentalData",
          "OtherDocument"
        ],
        "type": "string",
        "description": "Enum for the type of document."
      },
      "Inies.Webservice.Enums.EpdStatut": {
        "enum": [
          "Unknown",
          "Creation",
          "ValidationPending",
          "Validated",
          "Archived"
        ],
        "type": "string",
        "description": "Possible status types of the EPD\n- Unknown (0): This status should not be used\n- Creation (1): Currently being edited\n- ValidationPending (2): Validation pending\n- Validated (3): Validated and online\n- Archived (4): Archived"
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true,
            "xml": {
              "name": "Type"
            }
          },
          "title": {
            "type": "string",
            "nullable": true,
            "xml": {
              "name": "Title"
            }
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "Status"
            }
          },
          "detail": {
            "type": "string",
            "nullable": true,
            "xml": {
              "name": "Detail"
            }
          },
          "instance": {
            "type": "string",
            "nullable": true,
            "xml": {
              "name": "Instance"
            }
          }
        },
        "additionalProperties": { }
      },
      "ValidationProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true,
            "xml": {
              "name": "Type"
            }
          },
          "title": {
            "type": "string",
            "nullable": true,
            "xml": {
              "name": "Title"
            }
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "xml": {
              "name": "Status"
            }
          },
          "detail": {
            "type": "string",
            "nullable": true,
            "xml": {
              "name": "Detail"
            }
          },
          "instance": {
            "type": "string",
            "nullable": true,
            "xml": {
              "name": "Instance"
            }
          },
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "nullable": true,
            "xml": {
              "name": "Errors"
            }
          }
        },
        "additionalProperties": { }
      }
    },
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "description": "<h5>Enter a valid authentication token</h5>\n                    <p>The token can be obtained via the API using the following method:</br>\n                    - <b>/ws/Login/</b> (user and API key)</br>",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "tags": [
    {
      "name": "Auth",
      "description": "Authentication and token management for INIES webservice users."
    },
    {
      "name": "Export",
      "description": "Exposes EPD data from INIES database"
    },
    {
      "name": "Import",
      "description": "Import and update EPDs and related data in the database."
    },
    {
      "name": "HealthCheck",
      "description": "Exposes health checks for webservice endpoints."
    }
  ]
}