2026-08-12 15:45:29 +02:00
openapi : 3.1 .0
info :
title : Arcadia API
description : |
Arcadia API in order to abstract corporate metamodel to a proper and stable implemented API.
2026-08-21 16:47:10 +02:00
### ⏱️ Gestion Temporelle & Fuseaux Horaires (RFC 3339 / UTC)
Tous les horodatages transmis en entrée (ex: paramètre de filtrage `since`) ou restitués dans les réponses JSON (ex: `created_at`, `updated_at`, `timestamp`) sont strictement normalisés au format standard **RFC 3339 / ISO-8601** en temps universel coordonné avec le suffixe `Z` (ex : `2026-08-21T14:30:00Z`).
2026-08-12 15:45:29 +02:00
contact :
name : Uwil Engineering Team
email : digital@ldc.fr
license :
name : MIT
url : https://opensource.org/licenses/MIT
version : 1.0 .0
servers :
- url : http://127.0.0.1:8000/api/v1
description : Serveur de développement local v1
security :
- HmacClientId : [ ]
HmacTimestamp : [ ]
2026-08-18 12:09:32 +02:00
HmacNonce : [ ]
2026-08-12 15:45:29 +02:00
HmacSignature : [ ]
tags :
2026-08-21 16:47:10 +02:00
- name : System
description : Points d'entrée système et sondes de disponibilité.
2026-08-12 15:45:29 +02:00
- name : Employees
description : Gestion et consultation du référentiel RH des employés.
2026-08-20 17:35:47 +02:00
- name : Brands
description : Consultation et référentiel des marques.
2026-08-14 11:33:05 +02:00
- name : IncoSheets
description : Consultation et recherche des fiches produits INCO.
- name : IncoComposition
description : Consultation des compositions nutritionnelles et détaillées des produits INCO.
2026-08-12 15:45:29 +02:00
paths :
2026-08-21 16:47:10 +02:00
/health :
get :
tags :
- System
summary : Sonde de santé et de disponibilité du système
description : |
Vérifie l'état de fonctionnement et la connectivité de l'ensemble des dépendances d'infrastructure (base de données par défaut, base de données Arcadia, cache et serveur SMTP).
operationId : checkHealth
security : [ ]
responses :
"200" :
description : Système opérationnel (tous les composants sont fonctionnels).
content :
application/json :
schema :
$ref : "#/components/schemas/HealthCheckResponse"
"503" :
description : Système dégradé ou indisponible (au moins un composant est en échec).
content :
application/json :
schema :
$ref : "#/components/schemas/HealthCheckResponse"
2026-08-12 15:45:29 +02:00
/employees :
get :
tags :
- Employees
summary : Liste paginée des employés
description : |
Retourne la liste paginée des employés du système Arcadia.
Prend en charge le filtrage par date de modification (`since`), code établissement (`establishment`),
code site (`siteId`), code service (`serviceId`), ainsi que le tri et la pagination HATEOAS.
operationId : listEmployees
parameters :
2026-08-14 12:32:22 +02:00
- $ref : "#/components/parameters/Page"
- $ref : "#/components/parameters/PageSize"
- $ref : "#/components/parameters/Offset"
- $ref : "#/components/parameters/Limit"
- $ref : "#/components/parameters/Since"
- $ref : "#/components/parameters/Establishment"
- $ref : "#/components/parameters/SiteId"
- $ref : "#/components/parameters/SiteIds"
- $ref : "#/components/parameters/ServiceId"
- $ref : "#/components/parameters/SortBy"
- $ref : "#/components/parameters/SortDirection"
2026-08-12 15:45:29 +02:00
responses :
2026-08-14 12:32:22 +02:00
"200" :
2026-08-12 15:45:29 +02:00
description : Page d'employés récupérée avec succès.
content :
application/json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/EmployeeListResponse"
"400" :
$ref : "#/components/responses/BadRequest"
"401" :
$ref : "#/components/responses/Unauthorized"
"403" :
$ref : "#/components/responses/Forbidden"
"422" :
$ref : "#/components/responses/UnprocessableEntity"
"429" :
$ref : "#/components/responses/TooManyRequests"
"500" :
$ref : "#/components/responses/InternalServerError"
"503" :
$ref : "#/components/responses/ServiceUnavailable"
2026-08-12 15:45:29 +02:00
/employees/{employeeId}:
get :
tags :
- Employees
summary : Détail d'un employé par son identifiant
description : |
Retourne la fiche détaillée d'un employé spécifié par son matricule public unique.
operationId : getEmployee
parameters :
2026-08-14 12:32:22 +02:00
- $ref : "#/components/parameters/EmployeeIdPath"
2026-08-12 15:45:29 +02:00
responses :
2026-08-14 12:32:22 +02:00
"200" :
2026-08-12 15:45:29 +02:00
description : Fiche employé trouvée.
content :
application/json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/EmployeeItemResponse"
"400" :
$ref : "#/components/responses/BadRequest"
"401" :
$ref : "#/components/responses/Unauthorized"
"403" :
$ref : "#/components/responses/Forbidden"
"404" :
$ref : "#/components/responses/NotFound"
"422" :
$ref : "#/components/responses/UnprocessableEntity"
"429" :
$ref : "#/components/responses/TooManyRequests"
"500" :
$ref : "#/components/responses/InternalServerError"
"503" :
$ref : "#/components/responses/ServiceUnavailable"
2026-08-12 15:45:29 +02:00
2026-08-14 11:33:05 +02:00
/inco-sheets :
get :
tags :
- IncoSheets
summary : Liste paginée des fiches produits INCO
description : |
Retourne la liste paginée des fiches produits INCO.
Prend en charge le filtrage par marques (`brands`), la date de modification (`since`), la projection au format court (`short=true`), ainsi que le tri et la pagination.
operationId : listIncoSheets
parameters :
2026-08-14 12:32:22 +02:00
- $ref : "#/components/parameters/Page"
- $ref : "#/components/parameters/PageSize"
- $ref : "#/components/parameters/Offset"
- $ref : "#/components/parameters/Limit"
- $ref : "#/components/parameters/Since"
- $ref : "#/components/parameters/Brands"
- $ref : "#/components/parameters/ShortProjection"
- $ref : "#/components/parameters/IncoSortBy"
- $ref : "#/components/parameters/SortDirection"
2026-08-14 11:33:05 +02:00
responses :
2026-08-14 12:32:22 +02:00
"200" :
2026-08-14 11:33:05 +02:00
description : Page de fiches INCO récupérée avec succès.
content :
application/json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoListResponse"
"400" :
$ref : "#/components/responses/BadRequest"
"401" :
$ref : "#/components/responses/Unauthorized"
"403" :
$ref : "#/components/responses/Forbidden"
"422" :
$ref : "#/components/responses/UnprocessableEntity"
"429" :
$ref : "#/components/responses/TooManyRequests"
"500" :
$ref : "#/components/responses/InternalServerError"
"503" :
$ref : "#/components/responses/ServiceUnavailable"
2026-08-14 11:33:05 +02:00
2026-08-20 17:35:47 +02:00
/brands :
get :
tags :
- Brands
summary : Liste de toutes les marques
description : |
Retourne la liste de toutes les marques connues du système Arcadia.
Les marques non encore enregistrées localement sont automatiquement initialisées
et pourvues d'un code public unique (trigramme + 2 chiffres).
operationId : listBrands
parameters :
- $ref : "#/components/parameters/Page"
- $ref : "#/components/parameters/PageSize"
- $ref : "#/components/parameters/Offset"
- $ref : "#/components/parameters/Limit"
responses :
"200" :
description : Liste des marques récupérée avec succès.
content :
application/json :
schema :
$ref : "#/components/schemas/BrandListResponse"
"400" :
$ref : "#/components/responses/BadRequest"
"401" :
$ref : "#/components/responses/Unauthorized"
"403" :
$ref : "#/components/responses/Forbidden"
"422" :
$ref : "#/components/responses/UnprocessableEntity"
"429" :
$ref : "#/components/responses/TooManyRequests"
"500" :
$ref : "#/components/responses/InternalServerError"
"503" :
$ref : "#/components/responses/ServiceUnavailable"
/brands/{identifier}:
get :
tags :
- Brands
summary : Détail d'une marque par son identifiant UUID ou code public
description : |
Retourne la fiche d'une marque spécifiée soit par son identifiant unique UUID v7,
soit par son code public (ex : LGL01).
operationId : getBrand
parameters :
- $ref : "#/components/parameters/BrandIdentifierPath"
responses :
"200" :
description : Fiche marque trouvée.
content :
application/json :
schema :
$ref : "#/components/schemas/BrandItemResponse"
"400" :
$ref : "#/components/responses/BadRequest"
"401" :
$ref : "#/components/responses/Unauthorized"
"403" :
$ref : "#/components/responses/Forbidden"
"404" :
$ref : "#/components/responses/NotFound"
"422" :
$ref : "#/components/responses/UnprocessableEntity"
"429" :
$ref : "#/components/responses/TooManyRequests"
"500" :
$ref : "#/components/responses/InternalServerError"
"503" :
$ref : "#/components/responses/ServiceUnavailable"
2026-08-14 11:33:05 +02:00
/inco-sheets/search :
get :
tags :
- IncoSheets
summary : Recherche de fiches INCO par identifiant (motif SQL LIKE)
description : |
2026-08-14 15:05:59 +02:00
Recherche des fiches INCO dont l'ID correspond à un motif (`incoIdLike`).
2026-08-14 11:33:05 +02:00
Prend également en charge la projection au format court (`short=true`).
operationId : searchIncoSheets
parameters :
2026-08-14 12:32:22 +02:00
- $ref : "#/components/parameters/IncoIdLike"
2026-08-14 15:05:59 +02:00
- $ref : "#/components/parameters/Brands"
2026-08-14 12:32:22 +02:00
- $ref : "#/components/parameters/ShortProjection"
2026-08-14 11:33:05 +02:00
responses :
2026-08-14 12:32:22 +02:00
"200" :
2026-08-14 11:33:05 +02:00
description : Résultats de recherche INCO.
content :
application/json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoListResponse"
"400" :
$ref : "#/components/responses/BadRequest"
"401" :
$ref : "#/components/responses/Unauthorized"
"403" :
$ref : "#/components/responses/Forbidden"
"422" :
$ref : "#/components/responses/UnprocessableEntity"
"429" :
$ref : "#/components/responses/TooManyRequests"
"500" :
$ref : "#/components/responses/InternalServerError"
"503" :
$ref : "#/components/responses/ServiceUnavailable"
2026-08-14 11:33:05 +02:00
/inco-sheets/{incoId}:
get :
tags :
- IncoSheets
summary : Détail d'une fiche produit INCO par son identifiant
description : |
Retourne la fiche produit INCO détaillée correspondant à l'identifiant spécifié.
operationId : getIncoSheet
parameters :
2026-08-14 12:32:22 +02:00
- $ref : "#/components/parameters/IncoIdPath"
2026-08-14 11:33:05 +02:00
responses :
2026-08-14 12:32:22 +02:00
"200" :
2026-08-14 11:33:05 +02:00
description : Fiche produit INCO trouvée.
content :
application/json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoItemResponse"
"400" :
$ref : "#/components/responses/BadRequest"
"401" :
$ref : "#/components/responses/Unauthorized"
"403" :
$ref : "#/components/responses/Forbidden"
"404" :
$ref : "#/components/responses/NotFound"
"422" :
$ref : "#/components/responses/UnprocessableEntity"
"429" :
$ref : "#/components/responses/TooManyRequests"
"500" :
$ref : "#/components/responses/InternalServerError"
"503" :
$ref : "#/components/responses/ServiceUnavailable"
2026-08-14 11:33:05 +02:00
/inco-sheets/{incoId}/composition:
get :
tags :
- IncoComposition
summary : Composition d'un produit par l'identifiant de sa fiche INCO
description : |
Retourne le détail de la composition nutritionnelle et des ingrédients liés à une fiche INCO.
operationId : getIncoCompositionByIncoId
parameters :
2026-08-14 12:32:22 +02:00
- $ref : "#/components/parameters/IncoIdPath"
2026-08-14 11:33:05 +02:00
responses :
2026-08-14 12:32:22 +02:00
"200" :
2026-08-14 11:33:05 +02:00
description : Composition INCO trouvée.
content :
application/json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoItemResponse"
"400" :
$ref : "#/components/responses/BadRequest"
"401" :
$ref : "#/components/responses/Unauthorized"
"403" :
$ref : "#/components/responses/Forbidden"
"404" :
$ref : "#/components/responses/NotFound"
"422" :
$ref : "#/components/responses/UnprocessableEntity"
"429" :
$ref : "#/components/responses/TooManyRequests"
"500" :
$ref : "#/components/responses/InternalServerError"
"503" :
$ref : "#/components/responses/ServiceUnavailable"
2026-08-14 11:33:05 +02:00
2026-08-12 15:45:29 +02:00
components :
securitySchemes :
HmacClientId :
type : apiKey
in : header
name : X-Client-Id
description : Identifiant public du client API autorisé.
HmacTimestamp :
type : apiKey
in : header
name : X-Timestamp
2026-08-21 10:41:07 +02:00
description : Horodatage au format RFC3339 (tolérance anti-replay +/-5 minutes).
2026-08-18 12:09:32 +02:00
HmacNonce :
type : apiKey
in : header
name : X-Nonce
description : Identifiant unique de requête au format UUID (v4 ou v7) pour protection anti-replay.
2026-08-12 15:45:29 +02:00
HmacSignature :
type : apiKey
in : header
name : X-Signature
description : Signature HMAC-SHA256 calculée avec la clé secrète partagée.
parameters :
2026-08-20 17:35:47 +02:00
BrandIdentifierPath :
name : identifier
in : path
required : true
description : Identifiant UUID v7 ou code public (ex. LGL01) de la marque.
schema :
type : string
example : "LGL01"
2026-08-12 15:45:29 +02:00
EmployeeIdPath :
name : employeeId
in : path
required : true
description : Matricule public unique de l'employé (7 ou 8 chiffres).
schema :
type : string
pattern : '^\d{7,8}$'
2026-08-14 12:32:22 +02:00
example : "01155902"
2026-08-12 15:45:29 +02:00
Page :
name : page
in : query
required : false
2026-08-25 08:26:50 +02:00
description : Numéro de page (1-based). Les valeurs hors bornes sont silencieusement corrigées par l'API.
2026-08-12 15:45:29 +02:00
schema :
type : integer
default : 1
example : 1
PageSize :
name : pageSize
in : query
required : false
2026-08-25 08:26:50 +02:00
description : Nombre d'éléments par page (max 10000). Les valeurs hors bornes sont silencieusement corrigées par l'API.
2026-08-12 15:45:29 +02:00
schema :
type : integer
maximum : 10000
default : 25
example : 25
Offset :
name : offset
in : query
required : false
2026-08-25 08:26:50 +02:00
description : Décalage d'index pour la pagination basée sur l'offset. Les valeurs négatives sont silencieusement corrigées à 0.
2026-08-12 15:45:29 +02:00
schema :
type : integer
minimum : 0
example : 0
Limit :
name : limit
in : query
required : false
2026-08-25 08:26:50 +02:00
description : Nombre maximal d'enregistrements pour la pagination par offset. Les valeurs hors bornes sont silencieusement corrigées par l'API.
2026-08-12 15:45:29 +02:00
schema :
type : integer
maximum : 10000
example : 25
Since :
name : since
in : query
required : false
description : Horodatage au format RFC3339 (borne inférieure sur updatedAt).
schema :
type : string
format : date-time
2026-08-14 12:32:22 +02:00
example : "2026-01-01T00:00:00Z"
2026-08-12 15:45:29 +02:00
Establishment :
name : establishment
in : query
required : false
description : "Filtrer par code établissement (ex: 01, PA, LY)."
schema :
type : string
pattern : '^[\dA-Z]{2,}$'
2026-08-14 12:32:22 +02:00
example : "01"
2026-08-12 15:45:29 +02:00
SiteId :
name : siteId
in : query
required : false
description : "Filtrer par code site (ex: LDCSER, SLELA)."
schema :
type : string
2026-08-14 12:32:22 +02:00
pattern : "^[A-Z]{2,}$"
example : "LDCSER"
2026-08-12 15:45:29 +02:00
2026-08-13 15:30:53 +02:00
SiteIds :
name : siteIds
in : query
required : false
description : "Filtrer par un ou plusieurs codes site (ex: siteIds[]=LDCSER&siteIds[]=SLELA)."
style : form
explode : true
schema :
type : array
minItems : 1
items :
type : string
2026-08-14 12:32:22 +02:00
pattern : "^[A-Z]{2,}$"
example : [ "LDCSER" , "SLELA" ]
2026-08-13 15:30:53 +02:00
2026-08-12 15:45:29 +02:00
ServiceId :
name : serviceId
in : query
required : false
description : "Filtrer par identifiant de service (ex: 097, 101)."
schema :
type : string
pattern : '^\d{1,}$'
2026-08-14 12:32:22 +02:00
example : "097"
2026-08-12 15:45:29 +02:00
SortBy :
name : sortBy
in : query
required : false
description : Champ d'ordonnancement des employés.
schema :
type : string
enum :
- arcadiaId
- startDate
- endDate
- plannedEndDate
- createdAt
- updatedAt
default : arcadiaId
example : arcadiaId
SortDirection :
name : sortDirection
in : query
required : false
description : Sens du tri.
schema :
type : string
enum :
- Ascending
- Descending
default : Ascending
example : Ascending
2026-08-14 11:33:05 +02:00
IncoIdPath :
name : incoId
in : path
required : true
description : Identifiant numérique unique de la fiche INCO.
schema :
type : string
pattern : '^\d{1,}$'
2026-08-14 12:32:22 +02:00
example : "12345"
2026-08-14 11:33:05 +02:00
IncoIdLike :
name : incoIdLike
in : query
required : true
description : Motif de recherche d'ID (SQL LIKE).
schema :
type : string
2026-08-14 12:32:22 +02:00
example : "123%"
2026-08-14 11:33:05 +02:00
Brands :
name : brands
in : query
required : false
description : Filtrer par un ou plusieurs codes marque.
style : form
explode : true
schema :
type : array
minItems : 1
items :
type : string
2026-08-20 18:16:31 +02:00
pattern : '^[A-Z]{3}\d{2}$'
example : [ "LGL01" , "MCQ01" ]
2026-08-14 11:33:05 +02:00
ShortProjection :
name : short
in : query
required : false
description : Retourne la projection courte si true.
schema :
type : boolean
default : false
IncoSortBy :
name : sortBy
in : query
required : false
description : Champ d'ordonnancement des fiches INCO.
schema :
type : string
enum :
- incoSheetId
- createdAt
- updatedAt
default : incoSheetId
example : incoSheetId
2026-08-12 15:45:29 +02:00
responses :
BadRequest :
2026-08-12 17:00:23 +02:00
description : Erreurs de forme de la requête HTTP (validation FormRequest) (400 Bad Request).
2026-08-12 15:45:29 +02:00
content :
application/problem+json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/ProblemDetails"
2026-08-12 15:45:29 +02:00
Unauthorized :
description : Échec d'authentification HMAC ou signature invalide (401 Unauthorized).
content :
application/problem+json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/ProblemDetails"
2026-08-12 15:45:29 +02:00
Forbidden :
description : Client non autorisé à accéder à cette ressource (403 Forbidden).
content :
application/problem+json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/ProblemDetails"
2026-08-12 15:45:29 +02:00
NotFound :
description : Ressource introuvable (404 Not Found).
content :
application/problem+json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/ProblemDetails"
2026-08-12 15:45:29 +02:00
UnprocessableEntity :
2026-08-12 17:00:23 +02:00
description : Erreur sémantique ou violation des règles du domaine (422 Unprocessable Entity).
2026-08-12 15:45:29 +02:00
content :
application/problem+json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/ValidationErrorProblemDetails"
2026-08-12 15:45:29 +02:00
2026-08-12 17:26:17 +02:00
TooManyRequests :
description : Trop de requêtes envoyées dans un laps de temps donné (429 Too Many Requests).
content :
application/problem+json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/ProblemDetails"
2026-08-12 17:26:17 +02:00
headers :
Retry-After :
description : Le nombre de secondes avant de pouvoir réessayer.
schema :
type : integer
X-RateLimit-Limit :
description : La limite de requêtes par minute.
schema :
type : integer
X-RateLimit-Remaining :
description : Le nombre de requêtes restantes avant blocage.
schema :
type : integer
2026-08-12 15:45:29 +02:00
InternalServerError :
description : Erreur interne du serveur (500 Internal Server Error).
content :
application/problem+json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/ProblemDetails"
2026-08-12 15:45:29 +02:00
ServiceUnavailable :
description : Service temporairement indisponible (503 Service Unavailable).
content :
application/problem+json :
schema :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/ProblemDetails"
2026-08-12 15:45:29 +02:00
schemas :
2026-08-21 16:47:10 +02:00
HealthCheckResponse :
type : object
description : Résultat de la sonde d'état et de disponibilité des services.
required :
- status
- timestamp
- checks
properties :
status :
type : string
enum :
- healthy
- unhealthy
description : État de santé global du système.
example : "healthy"
timestamp :
type : string
format : date-time
description : Horodatage de la vérification au format RFC 3339 UTC.
example : "2026-08-21T14:30:00Z"
checks :
type : object
description : Détails des vérifications par composant.
additionalProperties :
type : object
required :
- status
properties :
status :
type : string
enum :
- up
- down
description : État du composant.
example : "up"
connection :
type : string
description : Nom de la connexion de base de données vérifiée.
example : "sqlite"
store :
type : string
description : Nom du magasin de cache vérifié.
example : "database"
transport :
type : string
description : Type de transport mail vérifié.
example : "smtp"
message :
type : string
nullable : true
description : Message d'erreur éventuel en cas d'échec.
2026-08-20 17:35:47 +02:00
Brand :
type : object
description : Représentation canonique d'une marque dans Arcadia API.
required :
- id
- code
- name
- arcadiaId
- createdAt
properties :
id :
type : string
format : uuid
description : Identifiant UUID v7 unique de la marque.
example : "01918a3c-1b77-7000-8000-000000000001"
code :
type : string
pattern : '^[A-Z]{3}\d{2}$'
description : Code public unique trigramme + 2 chiffres.
example : "LGL01"
name :
type : string
description : Nom / libellé de la marque.
example : "Le Gaulois"
arcadiaId :
2026-08-24 21:45:04 +02:00
type : string
pattern : '^[1-9]\d{0,2}$'
2026-08-20 17:35:47 +02:00
description : Identifiant numérique amont Arcadia.
2026-08-24 21:45:04 +02:00
example : "1"
2026-08-20 17:35:47 +02:00
createdAt :
type : string
format : date-time
description : Date et heure de création (ISO 8601).
example : "2024-01-15T08:00:00Z"
BrandListResponse :
type : object
description : Enveloppe de réponse pour la liste paginée des marques.
required :
- brands
- pagination
properties :
brands :
type : array
description : Collection des marques de la page.
items :
$ref : "#/components/schemas/Brand"
pagination :
$ref : "#/components/schemas/PaginationMeta"
BrandItemResponse :
type : object
description : Enveloppe de réponse pour le détail d'une marque.
required :
- brand
properties :
brand :
$ref : "#/components/schemas/Brand"
2026-08-12 15:45:29 +02:00
Employee :
type : object
description : Représentation canonique d'un employé dans le métamodèle Arcadia.
required :
- id
- firstName
- lastName
- establishment
- site
- service
- startDate
properties :
id :
type : string
pattern : '^\d{7,8}$'
description : Matricule public unique de l'employé.
2026-08-14 12:32:22 +02:00
example : "01155902"
2026-08-12 15:45:29 +02:00
firstName :
type : string
description : Prénom de l'employé.
example : John
lastName :
type : string
description : Nom de famille de l'employé.
example : DOE
establishment :
type : string
pattern : '^[\dA-Z]{2,}$'
description : Code de l'établissement d'affectation.
2026-08-14 12:32:22 +02:00
example : "01"
2026-08-12 15:45:29 +02:00
site :
type : string
2026-08-14 12:32:22 +02:00
pattern : "^[A-Z]{2,}$"
2026-08-12 15:45:29 +02:00
description : Code du site géographique.
example : LDCSER
service :
type : string
pattern : '^\d{1,}$'
description : Identifiant du service interne.
2026-08-14 12:32:22 +02:00
example : "097"
2026-08-12 15:45:29 +02:00
startDate :
type : string
format : date
description : Date de prise de poste (YYYY-MM-DD).
2026-08-14 12:32:22 +02:00
example : "2024-01-15"
2026-08-12 15:45:29 +02:00
endDate :
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-12 15:45:29 +02:00
format : date
description : Date de fin de contrat effective (optionnelle).
example : null
plannedEndDate :
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-12 15:45:29 +02:00
format : date
description : Date de fin de contrat prévue (optionnelle).
example : null
createdAt :
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-12 15:45:29 +02:00
format : date-time
description : Date d'enregistrement dans le système.
2026-08-14 12:32:22 +02:00
example : "2026-08-11T14:00:00Z"
2026-08-12 15:45:29 +02:00
updatedAt :
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-12 15:45:29 +02:00
format : date-time
description : Date de dernière mise à jour.
2026-08-14 12:32:22 +02:00
example : "2026-08-11T14:00:00Z"
2026-08-12 15:45:29 +02:00
PaginationLinks :
type : object
description : Liens de navigation HATEOAS pour la pagination.
required :
- self
- first
- last
properties :
self :
type : string
format : uri
description : Lien vers la page courante.
2026-08-14 12:32:22 +02:00
example : "http://127.0.0.1:8000/api/v1/employees?page=1&pageSize=25"
2026-08-12 15:45:29 +02:00
first :
type : string
format : uri
description : Lien vers la première page.
2026-08-14 12:32:22 +02:00
example : "http://127.0.0.1:8000/api/v1/employees?page=1&pageSize=25"
2026-08-12 15:45:29 +02:00
prev :
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-12 15:45:29 +02:00
format : uri
description : Lien vers la page précédente (null si première page).
example : null
next :
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-12 15:45:29 +02:00
format : uri
description : Lien vers la page suivante (null si dernière page).
2026-08-14 12:32:22 +02:00
example : "http://127.0.0.1:8000/api/v1/employees?page=2&pageSize=25"
2026-08-12 15:45:29 +02:00
last :
type : string
format : uri
description : Lien vers la dernière page.
2026-08-14 12:32:22 +02:00
example : "http://127.0.0.1:8000/api/v1/employees?page=2&pageSize=25"
2026-08-12 15:45:29 +02:00
PaginationMeta :
type : object
description : Métadonnées de pagination.
required :
- page
- pageSize
- totalItems
- totalPages
- links
properties :
page :
type : integer
minimum : 1
description : Index de la page courante (1-based).
example : 1
pageSize :
type : integer
minimum : 1
description : Nombre d'éléments par page.
example : 25
totalItems :
type : integer
minimum : 0
description : Nombre total d'éléments correspondant aux filtres.
example : 42
totalPages :
type : integer
minimum : 0
description : Nombre total de pages disponibles.
example : 2
links :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PaginationLinks"
2026-08-12 15:45:29 +02:00
EmployeeListResponse :
type : object
description : Enveloppe de réponse pour la liste paginée des employés.
required :
- employees
- pagination
properties :
employees :
type : array
description : Collection des employés de la page.
items :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/Employee"
2026-08-12 15:45:29 +02:00
pagination :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PaginationMeta"
2026-08-12 15:45:29 +02:00
EmployeeItemResponse :
type : object
description : Enveloppe de réponse pour le détail d'un employé.
required :
- employee
properties :
employee :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/Employee"
2026-08-12 15:45:29 +02:00
2026-08-14 11:33:05 +02:00
IncoBrand :
type : object
description : Marque associée à la fiche produit INCO.
required : [ code, label]
properties :
code :
type : string
2026-08-20 18:16:31 +02:00
pattern : '^[A-Z]{3}\d{2}$'
example : "LGL01"
2026-08-14 11:33:05 +02:00
label :
type : string
2026-08-20 18:16:31 +02:00
example : "Le Gaulois"
2026-08-14 11:33:05 +02:00
Inco :
type : object
description : Fiche produit INCO complète.
required :
- id
- name
- label
- description
- allegations
- sellArguments
- preparationAdvices
- ingredients
- allergens
- brand
- isSeasonal
- additives
properties :
id :
type : string
pattern : '^\d{1,}$'
2026-08-14 12:32:22 +02:00
example : "12345"
2026-08-14 11:33:05 +02:00
name :
type : string
example : Poulet Rôti 1kg
label :
type : string
example : Poulet Rôti Classe A
description :
type : string
example : Poulet prêt à cuire élevé en France
allegations :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoAllegations"
2026-08-14 11:33:05 +02:00
sellArguments :
type : string
preparationAdvices :
type : string
tips :
2026-08-14 12:31:40 +02:00
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-14 11:33:05 +02:00
example : Servir chaud
sellFamilly :
2026-08-14 12:31:40 +02:00
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-14 11:33:05 +02:00
example : Volaille
ingredients :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoIngredients"
2026-08-14 11:33:05 +02:00
portions :
2026-08-14 12:31:40 +02:00
oneOf :
2026-08-14 12:32:22 +02:00
- $ref : "#/components/schemas/IncoPortionAmount"
- type : "null"
2026-08-14 11:33:05 +02:00
allergens :
type : array
items :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoAllergen"
2026-08-14 11:33:05 +02:00
brand :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoBrand"
2026-08-14 11:33:05 +02:00
isSeasonal :
type : boolean
weight :
2026-08-14 12:31:40 +02:00
oneOf :
2026-08-14 12:32:22 +02:00
- $ref : "#/components/schemas/IncoWeight"
- type : "null"
2026-08-14 11:33:05 +02:00
nutriscore :
2026-08-14 12:31:40 +02:00
oneOf :
2026-08-14 12:32:22 +02:00
- $ref : "#/components/schemas/IncoNutriscore"
- type : "null"
2026-08-14 11:33:05 +02:00
storageCondition :
2026-08-14 12:31:40 +02:00
oneOf :
2026-08-14 12:32:22 +02:00
- $ref : "#/components/schemas/IncoStorageCondition"
- type : "null"
2026-08-14 11:33:05 +02:00
additives :
type : array
items :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoAdditive"
2026-08-14 11:33:05 +02:00
compo :
2026-08-14 12:31:40 +02:00
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-14 11:33:05 +02:00
pattern : '^\d{1,}$'
createdAt :
2026-08-14 12:31:40 +02:00
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-14 11:33:05 +02:00
format : date-time
updatedAt :
2026-08-14 12:31:40 +02:00
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-14 11:33:05 +02:00
format : date-time
IncoWeight :
type : object
description : Poids du produit en grammes.
required :
- netWeight
- grossWeight
- theoreticalAverage
properties :
netWeight :
type : integer
description : Poids net UVC (g).
example : 100
grossWeight :
type : integer
description : Poids brut UVC (g).
example : 120
theoreticalAverage :
type : integer
description : Moyenne théorique du poids (g).
example : 110
IncoAllegations :
type : object
description : Allégations associées au produit (santé, nutrition, etc.).
required :
- allegations
- health
- nutrition
- other
properties :
allegations :
type : array
items :
type : string
2026-08-14 12:32:22 +02:00
example : [ "Volaille française" ]
2026-08-14 11:33:05 +02:00
health :
type : array
items :
type : string
2026-08-14 12:32:22 +02:00
example : [ "Riche en protéines" ]
2026-08-14 11:33:05 +02:00
nutrition :
type : array
items :
type : string
2026-08-14 12:32:22 +02:00
example : [ "Faible en matière grasse" ]
2026-08-14 11:33:05 +02:00
other :
type : array
items :
type : string
example : [ ]
IncoIngredients :
type : object
description : Liste structurée des ingrédients groupés par section.
additionalProperties :
type : array
items :
type : string
example :
2026-08-14 12:32:22 +02:00
Ingrédients : [ "Viande de dinde (66%)" , "Gras de dinde" , "Persil" , "Sel" ]
Traces : [ "Aucun allergène" ]
2026-08-14 11:33:05 +02:00
IncoPortionAmount :
type : object
description : Informations de quantité par portion.
required :
- lowPart
- highPart
- approximative
properties :
lowPart :
type : integer
description : Valeur minimale ou exacte (en centièmes ou grammes).
example : 150
highPart :
type : integer
description : Valeur maximale.
example : 150
approximative :
type : boolean
description : Indique si la portion est approximative.
example : false
IncoAllergen :
type : object
description : Allergène présent ou en trace dans la recette.
required :
- code
- label
properties :
code :
type : integer
example : 21
label :
type : string
example : Aucun allergène
IncoNutriscore :
type : object
description : Note Nutri-Score affichée sur l'emballage.
required :
- grade
properties :
grade :
type : string
enum : [ A, B, C, D, E]
example : D
IncoStorageCondition :
type : object
description : Conditions de conservation du produit.
required :
- instructions
properties :
instructions :
type : string
example : A conserver entre 0°C et +4°C
IncoAdditive :
type : object
description : Additif alimentaire (code E-number et libellé).
required :
- code
- label
properties :
code :
type : string
example : E300
label :
type : string
example : Acide ascorbique
IncoShort :
type : object
description : Fiche produit INCO projetée en format court.
required :
- id
- name
- label
properties :
id :
type : string
pattern : '^\d{1,}$'
2026-08-14 12:32:22 +02:00
example : "12345"
2026-08-14 11:33:05 +02:00
name :
type : string
example : Poulet Rôti 1kg
label :
type : string
example : Poulet Rôti Classe A
createdAt :
2026-08-14 12:31:40 +02:00
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-14 11:33:05 +02:00
format : date-time
updatedAt :
2026-08-14 12:31:40 +02:00
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-14 11:33:05 +02:00
format : date-time
IncoCompo :
type : object
description : Composition nutritionnelle détaillée d'une fiche INCO.
required :
- id
- incoId
- identification
- energy
- referenceMacronutrients
- portionMacronutrients
- freshProduceAndNuts
- referenceIntakes
- nutriScore
- nutriScorePoints
- minerals
- vitamins
- carbohydratesDetail
- fattyAcids
- aminoAcids
- specialCompounds
properties :
id :
type : string
pattern : '^\d{1,}$'
2026-08-14 12:32:22 +02:00
example : "67890"
2026-08-14 11:33:05 +02:00
incoId :
type : string
pattern : '^\d{1,}$'
2026-08-14 12:32:22 +02:00
example : "12345"
2026-08-14 11:33:05 +02:00
identification :
2026-08-14 15:56:58 +02:00
$ref : "#/components/schemas/IncoCompositionIdentification"
2026-08-14 11:33:05 +02:00
energy :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoEnergy"
2026-08-14 11:33:05 +02:00
referenceMacronutrients :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoReferenceMacronutrients"
2026-08-14 11:33:05 +02:00
portionMacronutrients :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoPortionMacronutrients"
2026-08-14 11:33:05 +02:00
freshProduceAndNuts :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoFreshProduceAndNuts"
2026-08-14 11:33:05 +02:00
referenceIntakes :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoReferenceIntakes"
2026-08-14 11:33:05 +02:00
nutriScore :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoNutriScore"
2026-08-14 11:33:05 +02:00
nutriScorePoints :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoNutriScorePoints"
2026-08-14 11:33:05 +02:00
minerals :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoMinerals"
2026-08-14 11:33:05 +02:00
vitamins :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoVitamins"
2026-08-14 11:33:05 +02:00
carbohydratesDetail :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoCarbohydratesDetail"
2026-08-14 11:33:05 +02:00
fattyAcids :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoFattyAcids"
2026-08-14 11:33:05 +02:00
aminoAcids :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoAminoAcids"
2026-08-14 11:33:05 +02:00
specialCompounds :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompoSpecialCompounds"
2026-08-14 11:33:05 +02:00
NutrientValue :
type : object
description : Valeur d'un nutriment avec quantité et précision facultative.
properties :
amount :
type : string
2026-08-14 12:32:22 +02:00
example : "12.5"
2026-08-14 11:33:05 +02:00
precision :
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
example : "="
2026-08-14 11:33:05 +02:00
PercentageValue :
type : object
description : Valeur sous forme de pourcentage (0-100%).
properties :
value :
type : string
2026-08-14 12:32:22 +02:00
example : "45.5"
2026-08-14 11:33:05 +02:00
EnergyValues :
type : object
description : Quantités d'énergie (portion ou référence).
properties :
size :
type : string
2026-08-14 12:32:22 +02:00
example : "100"
2026-08-14 11:33:05 +02:00
energyKj :
type : string
2026-08-14 12:32:22 +02:00
example : "850"
2026-08-14 11:33:05 +02:00
energyKcal :
type : string
2026-08-14 12:32:22 +02:00
example : "203"
2026-08-14 11:33:05 +02:00
FruitAndNutAmount :
type : object
description : Quantités de fruits, noix et FNL.
properties :
fruits :
type : string
2026-08-14 12:32:22 +02:00
example : "0"
2026-08-14 11:33:05 +02:00
nuts :
type : string
2026-08-14 12:32:22 +02:00
example : "0"
2026-08-14 11:33:05 +02:00
freshFnl :
type : string
2026-08-14 12:32:22 +02:00
example : "0"
2026-08-14 11:33:05 +02:00
2026-08-14 15:56:58 +02:00
IncoCompositionIdentification :
2026-08-14 11:33:05 +02:00
type : object
description : Informations d'identification de la composition INCO.
properties :
name :
type : string
example : Poulet Rôti 1kg
number :
type : string
2026-08-14 12:32:22 +02:00
example : "12345"
2026-08-14 11:33:05 +02:00
source :
type : string
example : LDC
IncoCompoEnergy :
type : object
description : Valeurs énergétiques.
properties :
reference :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/EnergyValues"
2026-08-14 11:33:05 +02:00
portion :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/EnergyValues"
2026-08-14 11:33:05 +02:00
IncoCompoReferenceMacronutrients :
type : object
description : Macronutriments de référence pour 100g/ml.
properties :
fat :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
saturatedFat :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
carbohydrates :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
sugars :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
fiber :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
protein :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
salt :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
sodium :
type : string
2026-08-14 12:32:22 +02:00
example : "480"
2026-08-14 11:33:05 +02:00
IncoCompoPortionMacronutrients :
type : object
description : Macronutriments par portion.
properties :
fat :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
saturatedFat :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
carbohydrates :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
sugars :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
fiber :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
protein :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
salt :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/NutrientValue"
2026-08-14 11:33:05 +02:00
sodium :
type : string
2026-08-14 12:32:22 +02:00
example : "720"
2026-08-14 11:33:05 +02:00
IncoCompoFreshProduceAndNuts :
type : object
description : Teneur en fruits, légumes et noix (FNL).
properties :
reference :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/FruitAndNutAmount"
2026-08-14 11:33:05 +02:00
portion :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/FruitAndNutAmount"
2026-08-14 11:33:05 +02:00
freshFnlPercentage :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PercentageValue"
2026-08-14 11:33:05 +02:00
fruitsPercentage :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PercentageValue"
2026-08-14 11:33:05 +02:00
IncoCompoReferenceIntakes :
type : object
description : Pourcentages des apports de référence (AR / ARIC).
properties :
energyE14 :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PercentageValue"
2026-08-14 11:33:05 +02:00
energyKj :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PercentageValue"
2026-08-14 11:33:05 +02:00
fat :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PercentageValue"
2026-08-14 11:33:05 +02:00
saturatedFat :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PercentageValue"
2026-08-14 11:33:05 +02:00
carbohydrates :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PercentageValue"
2026-08-14 11:33:05 +02:00
sugars :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PercentageValue"
2026-08-14 11:33:05 +02:00
protein :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PercentageValue"
2026-08-14 11:33:05 +02:00
salt :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PercentageValue"
2026-08-14 11:33:05 +02:00
portionAmount :
type : string
2026-08-14 12:32:22 +02:00
example : "150"
2026-08-14 11:33:05 +02:00
proteinToLipidRatio :
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
example : "1.76"
2026-08-14 11:33:05 +02:00
IncoCompoNutriScore :
type : object
description : Détail des composantes et classement Nutri-Score.
properties :
negativeComponent :
type : string
2026-08-14 12:32:22 +02:00
example : "3"
2026-08-14 11:33:05 +02:00
negativeComponent2022 :
type : string
2026-08-14 12:32:22 +02:00
example : "3"
2026-08-14 11:33:05 +02:00
positiveComponent :
type : string
2026-08-14 12:32:22 +02:00
example : "5"
2026-08-14 11:33:05 +02:00
positiveComponent2022 :
type : string
2026-08-14 12:32:22 +02:00
example : "5"
2026-08-14 11:33:05 +02:00
score :
type : string
2026-08-14 12:32:22 +02:00
example : "-2"
2026-08-14 11:33:05 +02:00
score2022 :
type : string
2026-08-14 12:32:22 +02:00
example : "-2"
2026-08-14 11:33:05 +02:00
grade :
type : string
example : A
grade2022 :
type : string
example : A
isGradeAArticle :
type : string
2026-08-14 12:32:22 +02:00
example : "1"
2026-08-14 11:33:05 +02:00
isRedMeat :
type : string
2026-08-14 12:32:22 +02:00
example : "0"
2026-08-14 11:33:05 +02:00
IncoCompoNutriScorePoints :
type : object
description : Points élémentaires du calcul Nutri-Score.
properties :
energyPoints :
type : string
2026-08-14 12:32:22 +02:00
example : "2"
2026-08-14 11:33:05 +02:00
saturatedFatPoints :
type : string
2026-08-14 12:32:22 +02:00
example : "3"
2026-08-14 11:33:05 +02:00
sugarsPoints :
type : string
2026-08-14 12:32:22 +02:00
example : "0"
2026-08-14 11:33:05 +02:00
saltPoints :
type : string
2026-08-14 12:32:22 +02:00
example : "2"
2026-08-14 11:33:05 +02:00
fiberPoints :
type : string
2026-08-14 12:32:22 +02:00
example : "0"
2026-08-14 11:33:05 +02:00
proteinPoints :
type : string
2026-08-14 12:32:22 +02:00
example : "5"
2026-08-14 11:33:05 +02:00
freshFnlPoints :
type : string
2026-08-14 12:32:22 +02:00
example : "0"
2026-08-14 11:33:05 +02:00
IncoCompoMinerals :
type : object
description : Teneur détaillée en minéraux et oligo-éléments.
properties :
calcium :
type : string
2026-08-14 12:32:22 +02:00
example : "12.0"
2026-08-14 11:33:05 +02:00
magnesium :
type : string
2026-08-14 12:32:22 +02:00
example : "24.0"
2026-08-14 11:33:05 +02:00
potassium :
type : string
2026-08-14 12:32:22 +02:00
example : "350.0"
2026-08-14 11:33:05 +02:00
phosphorus :
type : string
2026-08-14 12:32:22 +02:00
example : "210.0"
2026-08-14 11:33:05 +02:00
chloride :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
iron :
type : string
2026-08-14 12:32:22 +02:00
example : "1.1"
2026-08-14 11:33:05 +02:00
zinc :
type : string
2026-08-14 12:32:22 +02:00
example : "1.8"
2026-08-14 11:33:05 +02:00
copper :
type : string
2026-08-14 12:32:22 +02:00
example : "0.08"
2026-08-14 11:33:05 +02:00
manganese :
type : string
2026-08-14 12:32:22 +02:00
example : "0.02"
2026-08-14 11:33:05 +02:00
selenium :
type : string
2026-08-14 12:32:22 +02:00
example : "18.5"
2026-08-14 11:33:05 +02:00
iodine :
type : string
2026-08-14 12:32:22 +02:00
example : "4.2"
2026-08-14 11:33:05 +02:00
chromium :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
molybdenum :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
sulfur :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nitrates :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
IncoCompoVitamins :
type : object
description : Teneur détaillée en vitamines.
properties :
vitaminA :
type : string
2026-08-14 12:32:22 +02:00
example : "30.0"
2026-08-14 11:33:05 +02:00
vitaminB6 :
type : string
2026-08-14 12:32:22 +02:00
example : "0.4"
2026-08-14 11:33:05 +02:00
vitaminB12 :
type : string
2026-08-14 12:32:22 +02:00
example : "0.3"
2026-08-14 11:33:05 +02:00
vitaminC :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
vitaminD :
type : string
2026-08-14 12:32:22 +02:00
example : "0.1"
2026-08-14 11:33:05 +02:00
vitaminE :
type : string
2026-08-14 12:32:22 +02:00
example : "0.3"
2026-08-14 11:33:05 +02:00
vitaminK :
type : string
2026-08-14 12:32:22 +02:00
example : "1.2"
2026-08-14 11:33:05 +02:00
cholecalciferol :
type : string
2026-08-14 12:32:22 +02:00
example : "0.1"
2026-08-14 11:33:05 +02:00
niacin :
type : string
2026-08-14 12:32:22 +02:00
example : "8.5"
2026-08-14 11:33:05 +02:00
IncoCompoCarbohydratesDetail :
type : object
description : Composition détaillée des glucides et fibres.
properties :
starch :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
maltodextrin :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
sucrose :
type : string
2026-08-14 12:32:22 +02:00
example : "0.2"
2026-08-14 11:33:05 +02:00
glucose :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
lactose :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
maltose :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
galactose :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
carbohydrateHydrates :
type : string
2026-08-14 12:32:22 +02:00
example : "0.5"
2026-08-14 11:33:05 +02:00
boundFructose :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
freeFructose :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
oligosaccharides :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
polyols :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
solubleFiber :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
inositol :
type : string
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
IncoCompoFattyAcids :
type : object
description : Teneur détaillée en acides gras (AGS, AGMI, AGPI).
properties :
nutFd :
type : string
description : Lipides totaux (g/100g).
2026-08-14 12:32:22 +02:00
example : "12.5"
2026-08-14 11:33:05 +02:00
nutChol :
type : string
description : Cholestérol (mg/100g).
2026-08-14 12:32:22 +02:00
example : "75.0"
2026-08-14 11:33:05 +02:00
nutAgt :
type : string
description : Acides gras trans (g/100g).
2026-08-14 12:32:22 +02:00
example : "0.1"
2026-08-14 11:33:05 +02:00
nutFformiq :
type : string
description : Acide formique (C1:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFacetiq :
type : string
description : Acide acétique (C2:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFpropioniq :
type : string
description : Acide propionique (C3:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFbutyriq :
type : string
description : Acide butyrique (C4:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFvaleriq :
type : string
description : Acide valérique (C5:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFcaproiq :
type : string
description : Acide caproïque (C6:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFenatiq :
type : string
description : Acide énanthique (C7:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFcapryliq :
type : string
description : Acide caprylique (C8:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFpelargoniq :
type : string
description : Acide pélargonique (C9:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFcapriq :
type : string
description : Acide caprique (C10:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFundecyliq :
type : string
description : Acide undécylique (C11:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFlauriq :
type : string
description : Acide laurique (C12:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFtridecyliq :
type : string
description : Acide tridécylique (C13:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFmyristiq :
type : string
description : Acide myristique (C14:0).
2026-08-14 12:32:22 +02:00
example : "0.1"
2026-08-14 11:33:05 +02:00
nutFpentadecyliq :
type : string
description : Acide pentadécylique (C15:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutF16d0 :
type : string
description : Acide palmitique (C16:0).
2026-08-14 12:32:22 +02:00
example : "2.5"
2026-08-14 11:33:05 +02:00
nutFmargariq :
type : string
description : Acide margarique (C17:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFsteariq :
type : string
description : Acide stéarique (C18:0).
2026-08-14 12:32:22 +02:00
example : "0.6"
2026-08-14 11:33:05 +02:00
nutFarachidiq :
type : string
description : Acide arachidique (C20:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFheneicosyliq :
type : string
description : Acide héneicosylique (C21:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFbeheniq :
type : string
description : Acide béhénique (C22:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFtricosiliq :
type : string
description : Acide tétracosanoïque (C23:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFlignoceriq :
type : string
description : Acide lignocérique (C24:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFcarboceriq :
type : string
description : Acide carbocérique (C26:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFcerotiq :
type : string
description : Acide cérotique (C26:0 alt.).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFceroplastiq :
type : string
description : Acide céroplastique.
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFmontaniq :
type : string
description : Acide montanique (C28:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFnonacosyliq :
type : string
description : Acide nonacosylique (C29:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFmelissiq :
type : string
description : Acide mélissique (C30:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFlaceroiq :
type : string
description : Acide lacéroïque (C32:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFhentriacontyliq :
type : string
description : Acide hentriacontylique (C31:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFhextriacontyliq :
type : string
description : Acide hexatriacontylique (C36:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFheptatriacontyliq :
type : string
description : Acide heptatriacontylique (C37:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFoctatriacontyliq :
type : string
description : Acide octariacontylique (C38:0).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFnonadylique :
type : string
description : Acide nonadylique.
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFpsylliq :
type : string
description : Acide psyllique.
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFpalm :
type : string
description : Acide palmitoléique (C16:1).
2026-08-14 12:32:22 +02:00
example : "0.8"
2026-08-14 11:33:05 +02:00
nutFoleiq :
type : string
description : Acide oléique (C18:1 ω-9).
2026-08-14 12:32:22 +02:00
example : "4.5"
2026-08-14 11:33:05 +02:00
nutF18d :
type : string
description : C18 insaturé (générique).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutF19d :
type : string
description : C19 insaturé.
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutF11eico :
type : string
description : Acide gondoïque (C20:1).
2026-08-14 12:32:22 +02:00
example : "0.1"
2026-08-14 11:33:05 +02:00
nutFgeddiq :
type : string
description : Acide geddique (C20:1 alt.).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFeruciq :
type : string
description : Acide érucique (C22:1).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFnervoniq :
type : string
description : Acide nervonique (C24:1).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFhyeniq :
type : string
description : Acide hyénique.
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFamscis :
type : string
description : AG monoinsaturés cis (total).
2026-08-14 12:32:22 +02:00
example : "5.4"
2026-08-14 11:33:05 +02:00
nutF18d2cn6 :
type : string
description : Acide linoléique (C18:2 ω-6).
2026-08-14 12:32:22 +02:00
example : "2.1"
2026-08-14 11:33:05 +02:00
nutF18d3n3 :
type : string
description : Acide α -linolénique (C18:3 ω-3).
2026-08-14 12:32:22 +02:00
example : "0.3"
2026-08-14 11:33:05 +02:00
nutF20d4 :
type : string
description : Acide arachidonique (C20:4).
2026-08-14 12:32:22 +02:00
example : "0.1"
2026-08-14 11:33:05 +02:00
nutF20d5n3 :
type : string
description : EPA (C20:5 ω-3).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutF22d6n3 :
type : string
description : DHA (C22:6 ω-3).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFapun3 :
type : string
description : AGPI ω-3 (total).
2026-08-14 12:32:22 +02:00
example : "0.3"
2026-08-14 11:33:05 +02:00
nutFapun6 :
type : string
description : AGPI ω-6 (total).
2026-08-14 12:32:22 +02:00
example : "2.2"
2026-08-14 11:33:05 +02:00
nutFapun9 :
type : string
description : AGPI ω-9 (total).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
nutFapucis :
type : string
description : AGPI cis (total).
2026-08-14 12:32:22 +02:00
example : "2.5"
2026-08-14 11:33:05 +02:00
nutFapulc :
type : string
description : AGPI longue chaîne (total).
2026-08-14 12:32:22 +02:00
example : "0.1"
2026-08-14 11:33:05 +02:00
IncoCompoAminoAcids :
type : object
description : Teneur en acides aminés et protéines de lait.
properties :
essentialAminoAcids :
type : string
description : Acides aminés essentiels (total g/100g).
2026-08-14 12:32:22 +02:00
example : "8.5"
2026-08-14 11:33:05 +02:00
caseins :
type : string
description : Caséines (g/100g).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
wheyProtein :
type : string
description : Protéines de lactosérum (g/100g).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
IncoCompoSpecialCompounds :
type : object
description : Composés spéciaux (Choline, Carnitine, Taurine, Nucléotides).
properties :
choline :
type : string
description : Choline (mg/100g).
2026-08-14 12:32:22 +02:00
example : "65.0"
2026-08-14 11:33:05 +02:00
carnitine :
type : string
description : Carnitine (mg/100g).
2026-08-14 12:32:22 +02:00
example : "8.2"
2026-08-14 11:33:05 +02:00
taurine :
type : string
description : Taurine (mg/100g).
2026-08-14 12:32:22 +02:00
example : "12.0"
2026-08-14 11:33:05 +02:00
nucleotides :
type : string
description : Nucléotides (mg/100g).
2026-08-14 12:32:22 +02:00
example : "0.0"
2026-08-14 11:33:05 +02:00
IncoListResponse :
type : object
description : Enveloppe de réponse pour la liste des fiches INCO.
required :
- incoSheets
- pagination
properties :
incoSheets :
type : array
description : Collection des fiches INCO (format complet ou court).
items :
anyOf :
2026-08-14 12:32:22 +02:00
- $ref : "#/components/schemas/Inco"
- $ref : "#/components/schemas/IncoShort"
2026-08-14 11:33:05 +02:00
pagination :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PaginationMeta"
2026-08-14 11:33:05 +02:00
IncoShortListResponse :
type : object
description : Enveloppe de réponse pour la liste courte des fiches INCO.
required :
- incoSheets
- pagination
properties :
incoSheets :
type : array
items :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoShort"
2026-08-14 11:33:05 +02:00
pagination :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/PaginationMeta"
2026-08-14 11:33:05 +02:00
IncoItemResponse :
type : object
description : Enveloppe de réponse pour le détail d'une fiche INCO.
required :
- incoSheet
properties :
incoSheet :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/Inco"
2026-08-14 11:33:05 +02:00
IncoCompoItemResponse :
type : object
description : Enveloppe de réponse pour le détail d'une composition INCO.
required :
- composition
properties :
composition :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/IncoCompo"
2026-08-14 11:33:05 +02:00
2026-08-12 15:45:29 +02:00
ProblemDetails :
type : object
description : Format d'erreur standardisé RFC 7807 (Problem Details for HTTP APIs).
required :
- type
- title
- status
- detail
properties :
type :
type : string
format : uri
description : URI identifiant le type de problème.
2026-08-14 12:32:22 +02:00
example : "http://127.0.0.1:8000/errors/not-found"
2026-08-12 15:45:29 +02:00
title :
type : string
description : Titre court lisible résumant le problème.
2026-08-14 12:32:22 +02:00
example : "Resource Not Found"
2026-08-12 15:45:29 +02:00
status :
type : integer
description : Code statut HTTP.
example : 404
detail :
type : string
description : Explication humaine détaillée de l'erreur.
example : "Employee '9999999' not found."
instance :
type :
- string
2026-08-14 12:32:22 +02:00
- "null"
2026-08-12 15:45:29 +02:00
format : uri-reference
description : URI de l'endpoint ayant généré l'erreur.
2026-08-14 12:32:22 +02:00
example : "/api/v1/employees/9999999"
2026-08-12 15:45:29 +02:00
InvalidParamItem :
type : object
description : Détail d'une erreur de validation sur un paramètre.
required :
- name
- reason
properties :
name :
type : string
description : Nom du champ ou paramètre invalide.
example : employeeId
reason :
type : string
description : Raison du rejet de validation.
2026-08-14 12:32:22 +02:00
example : "The employeeId pattern must be 7 or 8 digits."
2026-08-12 15:45:29 +02:00
ValidationErrorProblemDetails :
type : object
description : Format RFC 7807 pour les erreurs de validation HTTP (422 Unprocessable Entity).
required :
- type
- title
- status
- detail
- invalidParams
properties :
type :
type : string
format : uri
description : URI identifiant l'erreur de validation.
2026-08-14 12:32:22 +02:00
example : "http://127.0.0.1:8000/errors/validation-error"
2026-08-12 15:45:29 +02:00
title :
type : string
description : Titre de l'erreur.
2026-08-14 12:32:22 +02:00
example : "Unprocessable Entity"
2026-08-12 15:45:29 +02:00
status :
type : integer
description : Code HTTP (422).
example : 422
detail :
type : string
description : Message d'ensemble.
2026-08-14 12:32:22 +02:00
example : "The given data was invalid."
2026-08-12 15:45:29 +02:00
invalidParams :
type : array
description : Liste des paramètres invalides et motifs.
items :
2026-08-14 12:32:22 +02:00
$ref : "#/components/schemas/InvalidParamItem"