{
    "openapi": "3.0.0",
    "info": {
        "title": "API FORD GOURMANDE",
        "description": "API de gestion de la boulangerie-gâterie FORD GOURMANDE (base panitou).",
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "https://test.gourmande.lelarbin.com/api_gourmande/public",
            "description": "Serveur de l'API"
        }
    ],
    "paths": {
        "/api/approvisionnements": {
            "get": {
                "tags": [
                    "Approvisionnements"
                ],
                "summary": "Liste des Approvisionnements",
                "description": "Approvisionnements avec lignes. Exemple : etat=0 pour ceux à réceptionner.",
                "operationId": "537688f93eb56d77e49e42af9149fa48",
                "parameters": [
                    {
                        "name": "idappro",
                        "in": "query",
                        "description": "Numéro de l'approvisionnement",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1785174110188"
                        }
                    },
                    {
                        "name": "numfrs",
                        "in": "query",
                        "description": "Identifiant du fournisseur",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "10"
                        }
                    },
                    {
                        "name": "etat",
                        "in": "query",
                        "description": "Etat de l'enregistrement",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    },
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "idappro": {
                                                "description": "Numéro de l'approvisionnement",
                                                "type": "string",
                                                "example": "1785174110188"
                                            },
                                            "dateappro": {
                                                "description": "Date de l'approvisionnement",
                                                "type": "string",
                                                "example": "2026-07-27 18:39:11"
                                            },
                                            "daterecept": {
                                                "description": "Date de réception",
                                                "type": "string",
                                                "example": "2026-07-28 20:46:04"
                                            },
                                            "numfrs": {
                                                "description": "Identifiant du fournisseur",
                                                "type": "string",
                                                "example": "10"
                                            },
                                            "typappro": {
                                                "description": "Type d'approvisionnement",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "ttc": {
                                                "description": "Montant TTC",
                                                "type": "string",
                                                "example": "6090000"
                                            },
                                            "mtpaye": {
                                                "description": "Montant payé",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "user": {
                                                "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "signature": {
                                                "description": "Signature (facture normalisée)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "nim": {
                                                "description": "NIM (facture normalisée)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "dateheure": {
                                                "description": "Date et heure (facture)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "etat": {
                                                "description": "Etat de l'enregistrement",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "remarque": {
                                                "description": "Remarque",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "motif": {
                                                "description": "Motif",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "datemodif": {
                                                "description": "Date de modification",
                                                "type": "string",
                                                "example": "2026-09-23 10:00:00"
                                            },
                                            "idpointvente": {
                                                "description": "Identifiant du point de vente / site",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "uservalid": {
                                                "description": "Utilisateur qui a réceptionné",
                                                "type": "string",
                                                "example": "admin"
                                            },
                                            "lignes": {
                                                "description": "Lignes de détail",
                                                "type": "array",
                                                "items": {
                                                    "properties": {
                                                        "idappro": {
                                                            "description": "Numéro de l'approvisionnement",
                                                            "type": "string",
                                                            "example": "1785174002966"
                                                        },
                                                        "codmat": {
                                                            "description": "Code de la matière première",
                                                            "type": "string",
                                                            "example": "BEU-GAT"
                                                        },
                                                        "montant": {
                                                            "description": "Montant",
                                                            "type": "string",
                                                            "example": "76800"
                                                        },
                                                        "qteappro": {
                                                            "description": "Quantité approvisionnée",
                                                            "type": "string",
                                                            "example": "60"
                                                        },
                                                        "prixachat": {
                                                            "description": "Prix d'achat",
                                                            "type": "string",
                                                            "example": "1280"
                                                        },
                                                        "prixachata": {
                                                            "description": "Prix d'achat A",
                                                            "type": "string",
                                                            "example": "1280"
                                                        },
                                                        "prixachatb": {
                                                            "description": "Prix d'achat B",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "vtva": {
                                                            "description": "Taux de TVA",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "mhta": {
                                                            "description": "Montant HT A",
                                                            "type": "string",
                                                            "example": "1280"
                                                        },
                                                        "mhtb": {
                                                            "description": "Montant HT B",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "mtva": {
                                                            "description": "Montant TVA",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "dateperem": {
                                                            "description": "Date de péremption",
                                                            "type": "string",
                                                            "example": "2026-07-27"
                                                        },
                                                        "observation": {
                                                            "description": "Observation",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "etat": {
                                                            "description": "Etat de l'enregistrement",
                                                            "type": "string",
                                                            "example": "1"
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/approvisionnements/create": {
            "post": {
                "tags": [
                    "Approvisionnements"
                ],
                "summary": "Ajouter un approvisionnement",
                "description": "Ajouter un nouvel enregistrement dans la table tbdappro",
                "operationId": "d7392ad8e87e926e87a51ea7499217a6",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "dateappro": {
                                        "description": "Date de l'approvisionnement",
                                        "type": "string",
                                        "example": "2026-07-27 18:39:11"
                                    },
                                    "daterecept": {
                                        "description": "Date de réception",
                                        "type": "string",
                                        "example": "2026-07-28 20:46:04"
                                    },
                                    "numfrs": {
                                        "description": "Identifiant du fournisseur",
                                        "type": "string",
                                        "example": "10"
                                    },
                                    "typappro": {
                                        "description": "Type d'approvisionnement",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "ttc": {
                                        "description": "Montant TTC",
                                        "type": "string",
                                        "example": "6090000"
                                    },
                                    "mtpaye": {
                                        "description": "Montant payé",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "user": {
                                        "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "signature": {
                                        "description": "Signature (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "nim": {
                                        "description": "NIM (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "dateheure": {
                                        "description": "Date et heure (facture)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "etat": {
                                        "description": "Etat de l'enregistrement",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "remarque": {
                                        "description": "Remarque",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "motif": {
                                        "description": "Motif",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "datemodif": {
                                        "description": "Date de modification",
                                        "type": "string",
                                        "example": "2026-09-23 10:00:00"
                                    },
                                    "idpointvente": {
                                        "description": "Identifiant du point de vente / site",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "uservalid": {
                                        "description": "Utilisateur qui a réceptionné",
                                        "type": "string",
                                        "example": "admin"
                                    },
                                    "lignes": {
                                        "description": "Lignes de détail",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codmat": {
                                                    "description": "Code de la matière première",
                                                    "type": "string",
                                                    "example": "BEU-GAT"
                                                },
                                                "montant": {
                                                    "description": "Montant",
                                                    "type": "string",
                                                    "example": "76800"
                                                },
                                                "qteappro": {
                                                    "description": "Quantité approvisionnée",
                                                    "type": "string",
                                                    "example": "60"
                                                },
                                                "prixachat": {
                                                    "description": "Prix d'achat",
                                                    "type": "string",
                                                    "example": "1280"
                                                },
                                                "prixachata": {
                                                    "description": "Prix d'achat A",
                                                    "type": "string",
                                                    "example": "1280"
                                                },
                                                "prixachatb": {
                                                    "description": "Prix d'achat B",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "vtva": {
                                                    "description": "Taux de TVA",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "mhta": {
                                                    "description": "Montant HT A",
                                                    "type": "string",
                                                    "example": "1280"
                                                },
                                                "mhtb": {
                                                    "description": "Montant HT B",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "mtva": {
                                                    "description": "Montant TVA",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "dateperem": {
                                                    "description": "Date de péremption",
                                                    "type": "string",
                                                    "example": "2026-07-27"
                                                },
                                                "observation": {
                                                    "description": "Observation",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "etat": {
                                                    "description": "Etat de l'enregistrement",
                                                    "type": "string",
                                                    "example": "1"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/approvisionnements/update": {
            "put": {
                "tags": [
                    "Approvisionnements"
                ],
                "summary": "Modifier un approvisionnement",
                "description": "Modifier un approvisionnement en attente (etat 0). Rejet : etat = 2.",
                "operationId": "d4790b7e3e271d117cdc07035a52e6f8",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "idappro": {
                                        "description": "Numéro de l'approvisionnement",
                                        "type": "string",
                                        "example": "1785174110188"
                                    },
                                    "dateappro": {
                                        "description": "Date de l'approvisionnement",
                                        "type": "string",
                                        "example": "2026-07-27 18:39:11"
                                    },
                                    "daterecept": {
                                        "description": "Date de réception",
                                        "type": "string",
                                        "example": "2026-07-28 20:46:04"
                                    },
                                    "numfrs": {
                                        "description": "Identifiant du fournisseur",
                                        "type": "string",
                                        "example": "10"
                                    },
                                    "typappro": {
                                        "description": "Type d'approvisionnement",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "ttc": {
                                        "description": "Montant TTC",
                                        "type": "string",
                                        "example": "6090000"
                                    },
                                    "mtpaye": {
                                        "description": "Montant payé",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "user": {
                                        "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "signature": {
                                        "description": "Signature (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "nim": {
                                        "description": "NIM (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "dateheure": {
                                        "description": "Date et heure (facture)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "etat": {
                                        "description": "Etat de l'enregistrement",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "remarque": {
                                        "description": "Remarque",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "motif": {
                                        "description": "Motif",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "datemodif": {
                                        "description": "Date de modification",
                                        "type": "string",
                                        "example": "2026-09-23 10:00:00"
                                    },
                                    "idpointvente": {
                                        "description": "Identifiant du point de vente / site",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "uservalid": {
                                        "description": "Utilisateur qui a réceptionné",
                                        "type": "string",
                                        "example": "admin"
                                    },
                                    "lignes": {
                                        "description": "Lignes (facultatif) : si fourni, remplace toutes les lignes",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codmat": {
                                                    "description": "Code de la matière première",
                                                    "type": "string",
                                                    "example": "BEU-GAT"
                                                },
                                                "montant": {
                                                    "description": "Montant",
                                                    "type": "string",
                                                    "example": "76800"
                                                },
                                                "qteappro": {
                                                    "description": "Quantité approvisionnée",
                                                    "type": "string",
                                                    "example": "60"
                                                },
                                                "prixachat": {
                                                    "description": "Prix d'achat",
                                                    "type": "string",
                                                    "example": "1280"
                                                },
                                                "prixachata": {
                                                    "description": "Prix d'achat A",
                                                    "type": "string",
                                                    "example": "1280"
                                                },
                                                "prixachatb": {
                                                    "description": "Prix d'achat B",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "vtva": {
                                                    "description": "Taux de TVA",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "mhta": {
                                                    "description": "Montant HT A",
                                                    "type": "string",
                                                    "example": "1280"
                                                },
                                                "mhtb": {
                                                    "description": "Montant HT B",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "mtva": {
                                                    "description": "Montant TVA",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "dateperem": {
                                                    "description": "Date de péremption",
                                                    "type": "string",
                                                    "example": "2026-07-27"
                                                },
                                                "observation": {
                                                    "description": "Observation",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "etat": {
                                                    "description": "Etat de l'enregistrement",
                                                    "type": "string",
                                                    "example": "1"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/approvisionnements/delete": {
            "delete": {
                "tags": [
                    "Approvisionnements"
                ],
                "summary": "Supprimer un approvisionnement",
                "description": "Supprime un approvisionnement en attente (etat 0).",
                "operationId": "ad462f32ab51bd0c3112aa6b4e1889a0",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "idappro": {
                                        "description": "Numéro de l'approvisionnement",
                                        "type": "string",
                                        "example": "1785174110188"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/approvisionnements/reception": {
            "post": {
                "tags": [
                    "Approvisionnements"
                ],
                "summary": "Réceptionner un approvisionnement",
                "description": "Pour chaque matière : etat 1 = acceptée (entre en stock), 2 = litige. L'approvisionnement passe à etat 1.",
                "operationId": "ba768b87a4b9403cc967a95a0f68e629",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "idappro": {
                                        "description": "Numéro de l'approvisionnement",
                                        "type": "string",
                                        "example": "1785174110188"
                                    },
                                    "lignes": {
                                        "description": "Lignes de détail",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codmat": {
                                                    "description": "Code de la matière première",
                                                    "type": "string",
                                                    "example": "BEU-GAT"
                                                },
                                                "etat": {
                                                    "description": "Etat de l'enregistrement",
                                                    "type": "string",
                                                    "example": "1"
                                                },
                                                "observation": {
                                                    "description": "Observation",
                                                    "type": "string",
                                                    "example": ""
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/approvisionnements/cloturer": {
            "put": {
                "tags": [
                    "Approvisionnements"
                ],
                "summary": "Clôturer les litiges",
                "description": "Passe les lignes en litige (etat 2) à etat 3 (clôturé) et enregistre la remarque.",
                "operationId": "39aefe9ac0dae1d86f09dd9f8668a767",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "idappro": {
                                        "description": "Numéro de l'approvisionnement",
                                        "type": "string",
                                        "example": "1785174110188"
                                    },
                                    "remarque": {
                                        "description": "Remarque",
                                        "type": "string",
                                        "example": "Avoir fournisseur reçu"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/auth/login": {
            "post": {
                "tags": [
                    "Authentification"
                ],
                "summary": "Connexion",
                "description": "Renvoie un jeton à envoyer ensuite dans l'en-tête Authorization: Bearer <token>. Les anciens mots de passe en clair sont hachés à la première connexion.",
                "operationId": "1fdc3d7a679070e5022d2a234663f70b",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "pseudo": {
                                        "description": "Pseudo",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "mot": {
                                        "description": "Mot de passe",
                                        "type": "string",
                                        "example": "motdepasse"
                                    },
                                    "appareil": {
                                        "description": "Nom de l'appareil (facultatif)",
                                        "type": "string",
                                        "example": "Tablette caisse"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/auth/logout": {
            "post": {
                "tags": [
                    "Authentification"
                ],
                "summary": "Déconnexion",
                "description": "Révoque le jeton utilisé.",
                "operationId": "6e7674f03975844d2dacfb8acb96fc6b",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "-": {
                                        "description": "Aucun paramètre",
                                        "type": "string",
                                        "example": ""
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/auth/me": {
            "get": {
                "tags": [
                    "Authentification"
                ],
                "summary": "Utilisateur connecté",
                "description": "Informations du compte lié au jeton.",
                "operationId": "100fc817ab8d63547c994499b9547c9a",
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "pseudo": {
                                            "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                            "type": "string",
                                            "example": "vin"
                                        },
                                        "nom": {
                                            "description": "Nom",
                                            "type": "string",
                                            "example": "DETONDJI"
                                        },
                                        "prenom": {
                                            "description": "Prénom",
                                            "type": "string",
                                            "example": "Vincent"
                                        },
                                        "fonction": {
                                            "description": "Fonction (Administrateur, Caisse, Ventes, DE, Logistique, Pétrisseur...)",
                                            "type": "string",
                                            "example": ""
                                        },
                                        "idpointvente": {
                                            "description": "Identifiant du point de vente / site",
                                            "type": "string",
                                            "example": "0"
                                        },
                                        "etatpseudo": {
                                            "description": "Etat du compte (0 actif, 1 bloqué)",
                                            "type": "string",
                                            "example": ""
                                        },
                                        "frmimp": {
                                            "description": "Format d'impression (58 / 80 mm)",
                                            "type": "string",
                                            "example": ""
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/auth/motdepasse": {
            "put": {
                "tags": [
                    "Authentification"
                ],
                "summary": "Changer son mot de passe",
                "description": "Vérifie l'ancien mot de passe et déconnecte les autres appareils.",
                "operationId": "d41fdf423e31f743701d63b48906f1a5",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "ancien": {
                                        "description": "Ancien mot de passe",
                                        "type": "string",
                                        "example": "ancien123"
                                    },
                                    "nouveau": {
                                        "description": "Nouveau mot de passe (6 caractères min.)",
                                        "type": "string",
                                        "example": "nouveau123"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/categories": {
            "get": {
                "tags": [
                    "Catégories"
                ],
                "summary": "Liste des Catégories",
                "description": "Récupérer les Catégories (filtres facultatifs sur chaque colonne)",
                "operationId": "92e5c4b9a7f59b08e35d1564f25b0fba",
                "parameters": [
                    {
                        "name": "numcateg",
                        "in": "query",
                        "description": "Identifiant de la catégorie",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "numcateg": {
                                                "description": "Identifiant de la catégorie",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "libcateg": {
                                                "description": "Libellé de la catégorie",
                                                "type": "string",
                                                "example": "Ordinaire"
                                            },
                                            "numfam": {
                                                "description": "Identifiant de la famille",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "datecreation": {
                                                "description": "Date de création",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "derndateModif": {
                                                "description": "Date de dernière modification",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/categories/create": {
            "post": {
                "tags": [
                    "Catégories"
                ],
                "summary": "Ajouter une catégorie",
                "description": "Ajouter un nouvel enregistrement dans la table tblcategorie",
                "operationId": "537913a5122e48401c53618f50360e21",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "libcateg": {
                                        "description": "Libellé de la catégorie",
                                        "type": "string",
                                        "example": "Ordinaire"
                                    },
                                    "numfam": {
                                        "description": "Identifiant de la famille",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "derndateModif": {
                                        "description": "Date de dernière modification",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/categories/update": {
            "put": {
                "tags": [
                    "Catégories"
                ],
                "summary": "Modifier une catégorie",
                "description": "Modifier les attributs fournis (numcateg obligatoire)",
                "operationId": "75a9987d97f741bffeb4656c9e828c8d",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numcateg": {
                                        "description": "Identifiant de la catégorie",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "libcateg": {
                                        "description": "Libellé de la catégorie",
                                        "type": "string",
                                        "example": "Ordinaire"
                                    },
                                    "numfam": {
                                        "description": "Identifiant de la famille",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "derndateModif": {
                                        "description": "Date de dernière modification",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/categories/delete": {
            "delete": {
                "tags": [
                    "Catégories"
                ],
                "summary": "Supprimer une catégorie",
                "description": "Supprime une catégorie sans produit.",
                "operationId": "7254fb04353b6b38f4ced06ed6f3e219",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numcateg": {
                                        "description": "Identifiant de la catégorie",
                                        "type": "string",
                                        "example": "1"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/clients": {
            "get": {
                "tags": [
                    "Clients"
                ],
                "summary": "Liste des Clients",
                "description": "Récupérer les Clients (filtres facultatifs sur chaque colonne)",
                "operationId": "e536087cf9c1c54734194161e3821328",
                "parameters": [
                    {
                        "name": "numcli",
                        "in": "query",
                        "description": "Identifiant du client",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "0"
                        }
                    },
                    {
                        "name": "type_cli",
                        "in": "query",
                        "description": "Type de client (0, 1, 2)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": ""
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "numcli": {
                                                "description": "Identifiant du client",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "nomcli": {
                                                "description": "Nom du client",
                                                "type": "string",
                                                "example": "KOFFI Jean"
                                            },
                                            "nomstruc": {
                                                "description": "Nom de la structure",
                                                "type": "string",
                                                "example": "STRUCTURE SARL"
                                            },
                                            "adresscli": {
                                                "description": "Adresse du client",
                                                "type": "string",
                                                "example": "Abomey-Calavi"
                                            },
                                            "email": {
                                                "description": "Email",
                                                "type": "string",
                                                "example": "client@exemple.com"
                                            },
                                            "telph": {
                                                "description": "Téléphone",
                                                "type": "string",
                                                "example": "22997000000"
                                            },
                                            "rccm": {
                                                "description": "RCCM",
                                                "type": "string",
                                                "example": "RB/COT/00 A 0000"
                                            },
                                            "ifu": {
                                                "description": "IFU",
                                                "type": "string",
                                                "example": "3200000000000"
                                            },
                                            "type_cli": {
                                                "description": "Type de client (0, 1, 2)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "typreduc": {
                                                "description": "Type de réduction",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "reduc": {
                                                "description": "Réduction",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "numagent": {
                                                "description": "Identifiant de l'agent commercial",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "numcpte_cli": {
                                                "description": "Numéro de compte client",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "derndateacht": {
                                                "description": "Date du dernier achat",
                                                "type": "string",
                                                "example": "2026-09-23"
                                            },
                                            "motif": {
                                                "description": "Motif",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "etatcli": {
                                                "description": "Etat du client",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "daterelance": {
                                                "description": "Date de relance",
                                                "type": "string",
                                                "example": "2026-09-23"
                                            },
                                            "datecreation": {
                                                "description": "Date de création",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "derndatemodif": {
                                                "description": "Date de dernière modification",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/clients/create": {
            "post": {
                "tags": [
                    "Clients"
                ],
                "summary": "Ajouter un client",
                "description": "Ajouter un nouvel enregistrement dans la table clients",
                "operationId": "c56b6370966a0e2e0aebfdbfd760f791",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "nomcli": {
                                        "description": "Nom du client",
                                        "type": "string",
                                        "example": "KOFFI Jean"
                                    },
                                    "nomstruc": {
                                        "description": "Nom de la structure",
                                        "type": "string",
                                        "example": "STRUCTURE SARL"
                                    },
                                    "adresscli": {
                                        "description": "Adresse du client",
                                        "type": "string",
                                        "example": "Abomey-Calavi"
                                    },
                                    "email": {
                                        "description": "Email",
                                        "type": "string",
                                        "example": "client@exemple.com"
                                    },
                                    "telph": {
                                        "description": "Téléphone",
                                        "type": "string",
                                        "example": "22997000000"
                                    },
                                    "rccm": {
                                        "description": "RCCM",
                                        "type": "string",
                                        "example": "RB/COT/00 A 0000"
                                    },
                                    "ifu": {
                                        "description": "IFU",
                                        "type": "string",
                                        "example": "3200000000000"
                                    },
                                    "type_cli": {
                                        "description": "Type de client (0, 1, 2)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "typreduc": {
                                        "description": "Type de réduction",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "reduc": {
                                        "description": "Réduction",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "numagent": {
                                        "description": "Identifiant de l'agent commercial",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "numcpte_cli": {
                                        "description": "Numéro de compte client",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "derndateacht": {
                                        "description": "Date du dernier achat",
                                        "type": "string",
                                        "example": "2026-09-23"
                                    },
                                    "motif": {
                                        "description": "Motif",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "etatcli": {
                                        "description": "Etat du client",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "daterelance": {
                                        "description": "Date de relance",
                                        "type": "string",
                                        "example": "2026-09-23"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "derndatemodif": {
                                        "description": "Date de dernière modification",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/clients/update": {
            "put": {
                "tags": [
                    "Clients"
                ],
                "summary": "Modifier un client",
                "description": "Modifier les attributs fournis (numcli obligatoire)",
                "operationId": "68a86a9a87aaf30bbc7995dcd5c0a868",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numcli": {
                                        "description": "Identifiant du client",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "nomcli": {
                                        "description": "Nom du client",
                                        "type": "string",
                                        "example": "KOFFI Jean"
                                    },
                                    "nomstruc": {
                                        "description": "Nom de la structure",
                                        "type": "string",
                                        "example": "STRUCTURE SARL"
                                    },
                                    "adresscli": {
                                        "description": "Adresse du client",
                                        "type": "string",
                                        "example": "Abomey-Calavi"
                                    },
                                    "email": {
                                        "description": "Email",
                                        "type": "string",
                                        "example": "client@exemple.com"
                                    },
                                    "telph": {
                                        "description": "Téléphone",
                                        "type": "string",
                                        "example": "22997000000"
                                    },
                                    "rccm": {
                                        "description": "RCCM",
                                        "type": "string",
                                        "example": "RB/COT/00 A 0000"
                                    },
                                    "ifu": {
                                        "description": "IFU",
                                        "type": "string",
                                        "example": "3200000000000"
                                    },
                                    "type_cli": {
                                        "description": "Type de client (0, 1, 2)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "typreduc": {
                                        "description": "Type de réduction",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "reduc": {
                                        "description": "Réduction",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "numagent": {
                                        "description": "Identifiant de l'agent commercial",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "numcpte_cli": {
                                        "description": "Numéro de compte client",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "derndateacht": {
                                        "description": "Date du dernier achat",
                                        "type": "string",
                                        "example": "2026-09-23"
                                    },
                                    "motif": {
                                        "description": "Motif",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "etatcli": {
                                        "description": "Etat du client",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "daterelance": {
                                        "description": "Date de relance",
                                        "type": "string",
                                        "example": "2026-09-23"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "derndatemodif": {
                                        "description": "Date de dernière modification",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/clients/delete": {
            "delete": {
                "tags": [
                    "Clients"
                ],
                "summary": "Supprimer un client",
                "description": "Supprime un client jamais utilisé (refusé s'il a des ventes ou des commandes).",
                "operationId": "d289c3ddaf79e9e68c792821667f72ee",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numcli": {
                                        "description": "Identifiant du client",
                                        "type": "string",
                                        "example": "0"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/commandes": {
            "get": {
                "tags": [
                    "Commandes"
                ],
                "summary": "Liste des Commandes",
                "description": "Récupérer les Commandes (filtres facultatifs sur chaque colonne)",
                "operationId": "3e3391daee95cfc69fab222639f13090",
                "parameters": [
                    {
                        "name": "numcde",
                        "in": "query",
                        "description": "Numéro de la commande",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1785267334453057"
                        }
                    },
                    {
                        "name": "numcli",
                        "in": "query",
                        "description": "Identifiant du client",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "734"
                        }
                    },
                    {
                        "name": "is_active",
                        "in": "query",
                        "description": "Commande active (1) ou clôturée (0)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "0"
                        }
                    },
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "numcde": {
                                                "description": "Numéro de la commande",
                                                "type": "string",
                                                "example": "1785267334453057"
                                            },
                                            "numcli": {
                                                "description": "Identifiant du client",
                                                "type": "string",
                                                "example": "734"
                                            },
                                            "periode": {
                                                "description": "Périodicité de la commande",
                                                "type": "string",
                                                "example": "3"
                                            },
                                            "jrs": {
                                                "description": "Jours de livraison",
                                                "type": "string",
                                                "example": "N"
                                            },
                                            "jrs_mois": {
                                                "description": "Jour du mois",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "once_date": {
                                                "description": "Date (commande unique)",
                                                "type": "string",
                                                "example": "2026-07-28"
                                            },
                                            "notes": {
                                                "description": "Notes",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "is_active": {
                                                "description": "Commande active (1) ou clôturée (0)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "mtavance": {
                                                "description": "Avance versée",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "ttc": {
                                                "description": "Montant TTC",
                                                "type": "string",
                                                "example": "20000"
                                            },
                                            "etat": {
                                                "description": "Etat de l'enregistrement",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "user": {
                                                "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "created_at": {
                                                "description": "Date de création",
                                                "type": "string",
                                                "example": "2026-07-28 20:35:34"
                                            },
                                            "updated_at": {
                                                "description": "Date de modification",
                                                "type": "string",
                                                "example": "2026-07-29 09:59:20"
                                            },
                                            "lignes": {
                                                "description": "Lignes de détail",
                                                "type": "array",
                                                "items": {
                                                    "properties": {
                                                        "numcde": {
                                                            "description": "Numéro de la commande",
                                                            "type": "string",
                                                            "example": "1785267334453057"
                                                        },
                                                        "codprod": {
                                                            "description": "Code du produit",
                                                            "type": "string",
                                                            "example": "1735126885937735"
                                                        },
                                                        "lot": {
                                                            "description": "Nombre d'unités par lot",
                                                            "type": "string",
                                                            "example": "1"
                                                        },
                                                        "qtelot": {
                                                            "description": "Quantité de lots",
                                                            "type": "string",
                                                            "example": "1"
                                                        },
                                                        "prixlot": {
                                                            "description": "Prix du lot",
                                                            "type": "string",
                                                            "example": "100"
                                                        },
                                                        "prixvente": {
                                                            "description": "Prix de vente unitaire",
                                                            "type": "string",
                                                            "example": "100"
                                                        },
                                                        "qtecde": {
                                                            "description": "Quantité commandée",
                                                            "type": "string",
                                                            "example": "200"
                                                        },
                                                        "montprod": {
                                                            "description": "Montant de la ligne",
                                                            "type": "string",
                                                            "example": "20000"
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/commandes/create": {
            "post": {
                "tags": [
                    "Commandes"
                ],
                "summary": "Ajouter une commande",
                "description": "Ajouter un nouvel enregistrement dans la table commande",
                "operationId": "346c6c6211ef32511d45da19c55c9c8d",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numcli": {
                                        "description": "Identifiant du client",
                                        "type": "string",
                                        "example": "734"
                                    },
                                    "periode": {
                                        "description": "Périodicité de la commande",
                                        "type": "string",
                                        "example": "3"
                                    },
                                    "jrs": {
                                        "description": "Jours de livraison",
                                        "type": "string",
                                        "example": "N"
                                    },
                                    "jrs_mois": {
                                        "description": "Jour du mois",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "once_date": {
                                        "description": "Date (commande unique)",
                                        "type": "string",
                                        "example": "2026-07-28"
                                    },
                                    "notes": {
                                        "description": "Notes",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "is_active": {
                                        "description": "Commande active (1) ou clôturée (0)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "mtavance": {
                                        "description": "Avance versée",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "ttc": {
                                        "description": "Montant TTC",
                                        "type": "string",
                                        "example": "20000"
                                    },
                                    "etat": {
                                        "description": "Etat de l'enregistrement",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "user": {
                                        "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "lignes": {
                                        "description": "Lignes de détail",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codprod": {
                                                    "description": "Code du produit",
                                                    "type": "string",
                                                    "example": "1735126885937735"
                                                },
                                                "lot": {
                                                    "description": "Nombre d'unités par lot",
                                                    "type": "string",
                                                    "example": "1"
                                                },
                                                "qtelot": {
                                                    "description": "Quantité de lots",
                                                    "type": "string",
                                                    "example": "1"
                                                },
                                                "prixlot": {
                                                    "description": "Prix du lot",
                                                    "type": "string",
                                                    "example": "100"
                                                },
                                                "prixvente": {
                                                    "description": "Prix de vente unitaire",
                                                    "type": "string",
                                                    "example": "100"
                                                },
                                                "qtecde": {
                                                    "description": "Quantité commandée",
                                                    "type": "string",
                                                    "example": "200"
                                                },
                                                "montprod": {
                                                    "description": "Montant de la ligne",
                                                    "type": "string",
                                                    "example": "20000"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/commandes/update": {
            "put": {
                "tags": [
                    "Commandes"
                ],
                "summary": "Modifier une commande",
                "description": "Modifier les attributs fournis (numcde obligatoire)",
                "operationId": "070a49c803eccba3a298ed4b42de021e",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numcde": {
                                        "description": "Numéro de la commande",
                                        "type": "string",
                                        "example": "1785267334453057"
                                    },
                                    "numcli": {
                                        "description": "Identifiant du client",
                                        "type": "string",
                                        "example": "734"
                                    },
                                    "periode": {
                                        "description": "Périodicité de la commande",
                                        "type": "string",
                                        "example": "3"
                                    },
                                    "jrs": {
                                        "description": "Jours de livraison",
                                        "type": "string",
                                        "example": "N"
                                    },
                                    "jrs_mois": {
                                        "description": "Jour du mois",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "once_date": {
                                        "description": "Date (commande unique)",
                                        "type": "string",
                                        "example": "2026-07-28"
                                    },
                                    "notes": {
                                        "description": "Notes",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "is_active": {
                                        "description": "Commande active (1) ou clôturée (0)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "ttc": {
                                        "description": "Montant TTC",
                                        "type": "string",
                                        "example": "20000"
                                    },
                                    "etat": {
                                        "description": "Etat de l'enregistrement",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "user": {
                                        "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "lignes": {
                                        "description": "Lignes (facultatif) : si fourni, remplace toutes les lignes",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codprod": {
                                                    "description": "Code du produit",
                                                    "type": "string",
                                                    "example": "1735126885937735"
                                                },
                                                "lot": {
                                                    "description": "Nombre d'unités par lot",
                                                    "type": "string",
                                                    "example": "1"
                                                },
                                                "qtelot": {
                                                    "description": "Quantité de lots",
                                                    "type": "string",
                                                    "example": "1"
                                                },
                                                "prixlot": {
                                                    "description": "Prix du lot",
                                                    "type": "string",
                                                    "example": "100"
                                                },
                                                "prixvente": {
                                                    "description": "Prix de vente unitaire",
                                                    "type": "string",
                                                    "example": "100"
                                                },
                                                "qtecde": {
                                                    "description": "Quantité commandée",
                                                    "type": "string",
                                                    "example": "200"
                                                },
                                                "montprod": {
                                                    "description": "Montant de la ligne",
                                                    "type": "string",
                                                    "example": "20000"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/commandes/delete": {
            "delete": {
                "tags": [
                    "Commandes"
                ],
                "summary": "Clôturer une commande",
                "description": "Clôture / annule la commande (is_active = 0).",
                "operationId": "60bdde367c96ff846f388a43afb3ac03",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numcde": {
                                        "description": "Numéro de la commande",
                                        "type": "string",
                                        "example": "1785267334453057"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/commandes/reglement": {
            "post": {
                "tags": [
                    "Commandes"
                ],
                "summary": "Verser une avance sur une commande",
                "description": "Ajoute le montant à l'avance de la commande et l'enregistre dans remboursement.",
                "operationId": "4690344dc4e737a69458d242b54ea897",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numcde": {
                                        "description": "Numéro de la commande",
                                        "type": "string",
                                        "example": "1785267334453057"
                                    },
                                    "montant": {
                                        "description": "Montant versé",
                                        "type": "string",
                                        "example": "5000"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/depenses": {
            "get": {
                "tags": [
                    "Dépenses"
                ],
                "summary": "Liste des Dépenses",
                "description": "Récupérer les Dépenses (filtres facultatifs sur chaque colonne)",
                "operationId": "02efeddf1f61c8fb05bd470632346945",
                "parameters": [
                    {
                        "name": "iduser",
                        "in": "query",
                        "description": "Bénéficiaire",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "Arman"
                        }
                    },
                    {
                        "name": "pseudo",
                        "in": "query",
                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "vin"
                        }
                    },
                    {
                        "name": "etat",
                        "in": "query",
                        "description": "Etat de l'enregistrement",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    },
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "iddepense": {
                                                "description": "Numéro de la dépense",
                                                "type": "string",
                                                "example": "1784319884057795"
                                            },
                                            "datedepenses": {
                                                "description": "Date de la dépense",
                                                "type": "string",
                                                "example": "2026-07-17 21:24:46"
                                            },
                                            "typedep": {
                                                "description": "Type de dépense",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "codvente": {
                                                "description": "Numéro de la vente",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "tdepense": {
                                                "description": "Total de la dépense",
                                                "type": "string",
                                                "example": "190000"
                                            },
                                            "ttva": {
                                                "description": "Total TVA",
                                                "type": "string",
                                                "example": "13728"
                                            },
                                            "iduser": {
                                                "description": "Bénéficiaire",
                                                "type": "string",
                                                "example": "Arman"
                                            },
                                            "etat": {
                                                "description": "Etat de l'enregistrement",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "lignes": {
                                                "description": "Lignes de détail",
                                                "type": "array",
                                                "items": {
                                                    "properties": {
                                                        "iddepense": {
                                                            "description": "Numéro de la dépense",
                                                            "type": "string",
                                                            "example": "1784319884057795"
                                                        },
                                                        "iddep": {
                                                            "description": "Rubrique de dépense (tbldep.numdep)",
                                                            "type": "string",
                                                            "example": "6"
                                                        },
                                                        "mtdep": {
                                                            "description": "Montant",
                                                            "type": "string",
                                                            "example": "100000"
                                                        },
                                                        "mttva": {
                                                            "description": "Montant TVA",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "observation": {
                                                            "description": "Observation",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "qr": {
                                                            "description": "Code QR (facture normalisée)",
                                                            "type": "string",
                                                            "example": ";;;"
                                                        },
                                                        "signature": {
                                                            "description": "Signature (facture normalisée)",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "nim": {
                                                            "description": "NIM (facture normalisée)",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "compteur": {
                                                            "description": "Compteur (facture normalisée)",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "heure": {
                                                            "description": "Heure (facture normalisée)",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "etat": {
                                                            "description": "Etat de l'enregistrement",
                                                            "type": "string",
                                                            "example": "1"
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/depenses/create": {
            "post": {
                "tags": [
                    "Dépenses"
                ],
                "summary": "Ajouter une dépense",
                "description": "Ajouter un nouvel enregistrement dans la table depenses",
                "operationId": "39157cff7d63424067536f1edc441b4d",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "datedepenses": {
                                        "description": "Date de la dépense",
                                        "type": "string",
                                        "example": "2026-07-17 21:24:46"
                                    },
                                    "typedep": {
                                        "description": "Type de dépense",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "codvente": {
                                        "description": "Numéro de la vente",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "tdepense": {
                                        "description": "Total de la dépense",
                                        "type": "string",
                                        "example": "190000"
                                    },
                                    "ttva": {
                                        "description": "Total TVA",
                                        "type": "string",
                                        "example": "13728"
                                    },
                                    "iduser": {
                                        "description": "Bénéficiaire",
                                        "type": "string",
                                        "example": "Arman"
                                    },
                                    "etat": {
                                        "description": "Etat de l'enregistrement",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "lignes": {
                                        "description": "Lignes de détail",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "iddep": {
                                                    "description": "Rubrique de dépense (tbldep.numdep)",
                                                    "type": "string",
                                                    "example": "6"
                                                },
                                                "mtdep": {
                                                    "description": "Montant",
                                                    "type": "string",
                                                    "example": "100000"
                                                },
                                                "mttva": {
                                                    "description": "Montant TVA",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "observation": {
                                                    "description": "Observation",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "qr": {
                                                    "description": "Code QR (facture normalisée)",
                                                    "type": "string",
                                                    "example": ";;;"
                                                },
                                                "signature": {
                                                    "description": "Signature (facture normalisée)",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "nim": {
                                                    "description": "NIM (facture normalisée)",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "compteur": {
                                                    "description": "Compteur (facture normalisée)",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "heure": {
                                                    "description": "Heure (facture normalisée)",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "etat": {
                                                    "description": "Etat de l'enregistrement",
                                                    "type": "string",
                                                    "example": "1"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/depenses/update": {
            "put": {
                "tags": [
                    "Dépenses"
                ],
                "summary": "Modifier une dépense",
                "description": "Modifier les attributs fournis (iddepense obligatoire)",
                "operationId": "dba832242b99cbd440840aa7af6b9c3f",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "iddepense": {
                                        "description": "Numéro de la dépense",
                                        "type": "string",
                                        "example": "1784319884057795"
                                    },
                                    "datedepenses": {
                                        "description": "Date de la dépense",
                                        "type": "string",
                                        "example": "2026-07-17 21:24:46"
                                    },
                                    "typedep": {
                                        "description": "Type de dépense",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "codvente": {
                                        "description": "Numéro de la vente",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "tdepense": {
                                        "description": "Total de la dépense",
                                        "type": "string",
                                        "example": "190000"
                                    },
                                    "ttva": {
                                        "description": "Total TVA",
                                        "type": "string",
                                        "example": "13728"
                                    },
                                    "iduser": {
                                        "description": "Bénéficiaire",
                                        "type": "string",
                                        "example": "Arman"
                                    },
                                    "etat": {
                                        "description": "Etat de l'enregistrement",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "lignes": {
                                        "description": "Lignes (facultatif) : si fourni, remplace toutes les lignes",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "iddep": {
                                                    "description": "Rubrique de dépense (tbldep.numdep)",
                                                    "type": "string",
                                                    "example": "6"
                                                },
                                                "mtdep": {
                                                    "description": "Montant",
                                                    "type": "string",
                                                    "example": "100000"
                                                },
                                                "mttva": {
                                                    "description": "Montant TVA",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "observation": {
                                                    "description": "Observation",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "qr": {
                                                    "description": "Code QR (facture normalisée)",
                                                    "type": "string",
                                                    "example": ";;;"
                                                },
                                                "signature": {
                                                    "description": "Signature (facture normalisée)",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "nim": {
                                                    "description": "NIM (facture normalisée)",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "compteur": {
                                                    "description": "Compteur (facture normalisée)",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "heure": {
                                                    "description": "Heure (facture normalisée)",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "etat": {
                                                    "description": "Etat de l'enregistrement",
                                                    "type": "string",
                                                    "example": "1"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/depenses/delete": {
            "delete": {
                "tags": [
                    "Dépenses"
                ],
                "summary": "Annuler une dépense",
                "description": "Annule la dépense (etat = 0) : elle n'est plus comptée dans les rapports.",
                "operationId": "b84765b21416e11f49b39c5d5d857702",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "iddepense": {
                                        "description": "Numéro de la dépense",
                                        "type": "string",
                                        "example": "1784319884057795"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/familles": {
            "get": {
                "tags": [
                    "Familles"
                ],
                "summary": "Liste des Familles",
                "description": "Récupérer les Familles (filtres facultatifs sur chaque colonne)",
                "operationId": "ac8227766c3f12f47d8a3404248c2366",
                "parameters": [
                    {
                        "name": "numfam",
                        "in": "query",
                        "description": "Identifiant de la famille",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "numfam": {
                                                "description": "Identifiant de la famille",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "libfam": {
                                                "description": "Libellé de la famille",
                                                "type": "string",
                                                "example": "xxxxxxxx"
                                            },
                                            "datecreation": {
                                                "description": "Date de création",
                                                "type": "string",
                                                "example": "2023-11-17"
                                            },
                                            "derndatemodif": {
                                                "description": "Date de dernière modification",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/familles/create": {
            "post": {
                "tags": [
                    "Familles"
                ],
                "summary": "Ajouter une famille",
                "description": "Ajouter un nouvel enregistrement dans la table tblfamille",
                "operationId": "3fdf9779b6179f1837d7bb05976d56de",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "libfam": {
                                        "description": "Libellé de la famille",
                                        "type": "string",
                                        "example": "xxxxxxxx"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": "2023-11-17"
                                    },
                                    "derndatemodif": {
                                        "description": "Date de dernière modification",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/familles/update": {
            "put": {
                "tags": [
                    "Familles"
                ],
                "summary": "Modifier une famille",
                "description": "Modifier les attributs fournis (numfam obligatoire)",
                "operationId": "0ace38f058b978dfdb24b6ab8c776ab4",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numfam": {
                                        "description": "Identifiant de la famille",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "libfam": {
                                        "description": "Libellé de la famille",
                                        "type": "string",
                                        "example": "xxxxxxxx"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": "2023-11-17"
                                    },
                                    "derndatemodif": {
                                        "description": "Date de dernière modification",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/familles/delete": {
            "delete": {
                "tags": [
                    "Familles"
                ],
                "summary": "Supprimer une famille",
                "description": "Supprime une famille sans catégorie.",
                "operationId": "d4a564302c5bb4a86ad1266346dbc14f",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numfam": {
                                        "description": "Identifiant de la famille",
                                        "type": "string",
                                        "example": "1"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/fournisseurs": {
            "get": {
                "tags": [
                    "Fournisseurs"
                ],
                "summary": "Liste des Fournisseurs",
                "description": "Récupérer les Fournisseurs (filtres facultatifs sur chaque colonne)",
                "operationId": "94a07132e8eb20139fbf8fff1d2cd2e5",
                "parameters": [
                    {
                        "name": "numfrs",
                        "in": "query",
                        "description": "Identifiant du fournisseur",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "0"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "numfrs": {
                                                "description": "Identifiant du fournisseur",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "nomfrs": {
                                                "description": "Nom du fournisseur",
                                                "type": "string",
                                                "example": "Minoterie du Bénin"
                                            },
                                            "adressfrs": {
                                                "description": "Adresse du fournisseur",
                                                "type": "string",
                                                "example": "Cotonou"
                                            },
                                            "emailfrs": {
                                                "description": "Email du fournisseur",
                                                "type": "string",
                                                "example": "contact@fournisseur.bj"
                                            },
                                            "telphfrs": {
                                                "description": "Téléphone du fournisseur",
                                                "type": "string",
                                                "example": "22997111111"
                                            },
                                            "ifufrs": {
                                                "description": "IFU du fournisseur",
                                                "type": "string",
                                                "example": "3200000000001"
                                            },
                                            "datecreation": {
                                                "description": "Date de création",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "derndatemodif": {
                                                "description": "Date de dernière modification",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/fournisseurs/create": {
            "post": {
                "tags": [
                    "Fournisseurs"
                ],
                "summary": "Ajouter un fournisseur",
                "description": "Ajouter un nouvel enregistrement dans la table fournisseurs",
                "operationId": "54362d4582756a8c0952626e0ac747d3",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "nomfrs": {
                                        "description": "Nom du fournisseur",
                                        "type": "string",
                                        "example": "Minoterie du Bénin"
                                    },
                                    "adressfrs": {
                                        "description": "Adresse du fournisseur",
                                        "type": "string",
                                        "example": "Cotonou"
                                    },
                                    "emailfrs": {
                                        "description": "Email du fournisseur",
                                        "type": "string",
                                        "example": "contact@fournisseur.bj"
                                    },
                                    "telphfrs": {
                                        "description": "Téléphone du fournisseur",
                                        "type": "string",
                                        "example": "22997111111"
                                    },
                                    "ifufrs": {
                                        "description": "IFU du fournisseur",
                                        "type": "string",
                                        "example": "3200000000001"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "derndatemodif": {
                                        "description": "Date de dernière modification",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/fournisseurs/update": {
            "put": {
                "tags": [
                    "Fournisseurs"
                ],
                "summary": "Modifier un fournisseur",
                "description": "Modifier les attributs fournis (numfrs obligatoire)",
                "operationId": "0fbfd4f9341be22aadd976174d4da98b",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numfrs": {
                                        "description": "Identifiant du fournisseur",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "nomfrs": {
                                        "description": "Nom du fournisseur",
                                        "type": "string",
                                        "example": "Minoterie du Bénin"
                                    },
                                    "adressfrs": {
                                        "description": "Adresse du fournisseur",
                                        "type": "string",
                                        "example": "Cotonou"
                                    },
                                    "emailfrs": {
                                        "description": "Email du fournisseur",
                                        "type": "string",
                                        "example": "contact@fournisseur.bj"
                                    },
                                    "telphfrs": {
                                        "description": "Téléphone du fournisseur",
                                        "type": "string",
                                        "example": "22997111111"
                                    },
                                    "ifufrs": {
                                        "description": "IFU du fournisseur",
                                        "type": "string",
                                        "example": "3200000000001"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "derndatemodif": {
                                        "description": "Date de dernière modification",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/fournisseurs/delete": {
            "delete": {
                "tags": [
                    "Fournisseurs"
                ],
                "summary": "Supprimer un fournisseur",
                "description": "Supprime un fournisseur sans approvisionnement.",
                "operationId": "f76331dddbbddafce48f5ac5632a1842",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numfrs": {
                                        "description": "Identifiant du fournisseur",
                                        "type": "string",
                                        "example": "0"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/inventaires": {
            "get": {
                "tags": [
                    "Inventaires"
                ],
                "summary": "Liste des Inventaires",
                "description": "Récupérer les Inventaires (filtres facultatifs sur chaque colonne)",
                "operationId": "ba057f4b6cff5888adb08410d17ca36b",
                "parameters": [
                    {
                        "name": "type",
                        "in": "query",
                        "description": "Type (0 produits finis, 1 matières)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "0"
                        }
                    },
                    {
                        "name": "idpointvente",
                        "in": "query",
                        "description": "Identifiant du point de vente / site",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    },
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "codinventaire": {
                                                "description": "Numéro de l'inventaire",
                                                "type": "string",
                                                "example": "1783955484417262"
                                            },
                                            "type": {
                                                "description": "Type (0 produits finis, 1 matières)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "idpointvente": {
                                                "description": "Identifiant du point de vente / site",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "boutique": {
                                                "description": "Boutique",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "typvente": {
                                                "description": "Type de vente (0 comptant, 1 crédit)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "designation": {
                                                "description": "Désignation",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "datedeb": {
                                                "description": "Date de début",
                                                "type": "string",
                                                "example": "2026-07-13 16:09:28"
                                            },
                                            "datefin": {
                                                "description": "Date de fin",
                                                "type": "string",
                                                "example": "2026-09-23 10:00:00"
                                            },
                                            "ifustructure": {
                                                "description": "IFU",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "acheve": {
                                                "description": "Achevé (1) ou non (0)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "saisie": {
                                                "description": "Saisie",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "user": {
                                                "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "lignes": {
                                                "description": "Lignes de détail",
                                                "type": "array",
                                                "items": {
                                                    "properties": {
                                                        "codinventaire": {
                                                            "description": "Numéro de l'inventaire",
                                                            "type": "string",
                                                            "example": "1783955484417262"
                                                        },
                                                        "codprod": {
                                                            "description": "Code du produit",
                                                            "type": "string",
                                                            "example": "1735126815957735"
                                                        },
                                                        "libprod": {
                                                            "description": "Désignation du produit",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "numcateg": {
                                                            "description": "Identifiant de la catégorie",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "libcateg": {
                                                            "description": "Libellé de la catégorie",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "numfam": {
                                                            "description": "Identifiant de la famille",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "libfam": {
                                                            "description": "Libellé de la famille",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "numempl": {
                                                            "description": "Emplacement",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "nomempl": {
                                                            "description": "Emplacement",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "codbarre": {
                                                            "description": "Code-barres",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "qteth": {
                                                            "description": "Stock théorique",
                                                            "type": "string",
                                                            "example": "-16683"
                                                        },
                                                        "prixvente": {
                                                            "description": "Prix de vente unitaire",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "prixachat": {
                                                            "description": "Prix d'achat",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "saisie1": {
                                                            "description": "Quantité comptée",
                                                            "type": "string",
                                                            "example": "11"
                                                        },
                                                        "saisie2": {
                                                            "description": "Ecart (valeur absolue)",
                                                            "type": "string",
                                                            "example": "16694"
                                                        },
                                                        "mj": {
                                                            "description": "Mise à jour",
                                                            "type": "string",
                                                            "example": "0"
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/inventaires/create": {
            "post": {
                "tags": [
                    "Inventaires"
                ],
                "summary": "Enregistrer un inventaire",
                "description": "type 0 : produits finis d'un site (idpointvente obligatoire), type 1 : matières premières. Pour chaque article : qte = stock théorique affiché, saisie = quantité comptée. L'écart (saisie - qte) est passé en régularisation de stock.",
                "operationId": "185f5bf0477db9a7a00f5d1464359c1a",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "type": {
                                        "description": "0 produits finis, 1 matières",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "idpointvente": {
                                        "description": "Site inventorié (type 0)",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "lignes": {
                                        "description": "codprod = code produit (type 0) ou code matière (type 1)",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codprod": {
                                                    "description": "Code du produit",
                                                    "type": "string",
                                                    "example": "1735126815957735"
                                                },
                                                "qte": {
                                                    "description": "Quantité",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "saisie": {
                                                    "description": "Saisie",
                                                    "type": "string",
                                                    "example": ""
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/matieres": {
            "get": {
                "tags": [
                    "Matières premières"
                ],
                "summary": "Liste des Matières premières",
                "description": "Récupérer les Matières premières (filtres facultatifs sur chaque colonne)",
                "operationId": "43b7c01b936927598c2733c8a764b3b9",
                "parameters": [
                    {
                        "name": "codmat",
                        "in": "query",
                        "description": "Code de la matière première",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1780752925642"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "codmat": {
                                                "description": "Code de la matière première",
                                                "type": "string",
                                                "example": "1780752925642"
                                            },
                                            "libmat": {
                                                "description": "Désignation de la matière",
                                                "type": "string",
                                                "example": "Blé"
                                            },
                                            "codunite": {
                                                "description": "Code de l'unité (4 caractères max)",
                                                "type": "string",
                                                "example": "KG"
                                            },
                                            "alerte": {
                                                "description": "Seuil d'alerte de stock",
                                                "type": "string",
                                                "example": "100"
                                            },
                                            "etat": {
                                                "description": "Etat de l'enregistrement",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "remarque": {
                                                "description": "Remarque",
                                                "type": "string",
                                                "example": ""
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/matieres/create": {
            "post": {
                "tags": [
                    "Matières premières"
                ],
                "summary": "Ajouter une matière",
                "description": "Ajouter un nouvel enregistrement dans la table produit_matiere",
                "operationId": "ea91c90f4163d2e104f0ef2b2027da1a",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codmat": {
                                        "description": "Code de la matière première",
                                        "type": "string",
                                        "example": "1780752925642"
                                    },
                                    "libmat": {
                                        "description": "Désignation de la matière",
                                        "type": "string",
                                        "example": "Blé"
                                    },
                                    "codunite": {
                                        "description": "Code de l'unité (4 caractères max)",
                                        "type": "string",
                                        "example": "KG"
                                    },
                                    "alerte": {
                                        "description": "Seuil d'alerte de stock",
                                        "type": "string",
                                        "example": "100"
                                    },
                                    "etat": {
                                        "description": "Etat de l'enregistrement",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "remarque": {
                                        "description": "Remarque",
                                        "type": "string",
                                        "example": ""
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/matieres/update": {
            "put": {
                "tags": [
                    "Matières premières"
                ],
                "summary": "Modifier une matière",
                "description": "Modifier les attributs fournis (codmat obligatoire)",
                "operationId": "e9dfd5a6fdf3ce670877c3733db337be",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codmat": {
                                        "description": "Code de la matière première",
                                        "type": "string",
                                        "example": "1780752925642"
                                    },
                                    "libmat": {
                                        "description": "Désignation de la matière",
                                        "type": "string",
                                        "example": "Blé"
                                    },
                                    "codunite": {
                                        "description": "Code de l'unité (4 caractères max)",
                                        "type": "string",
                                        "example": "KG"
                                    },
                                    "alerte": {
                                        "description": "Seuil d'alerte de stock",
                                        "type": "string",
                                        "example": "100"
                                    },
                                    "etat": {
                                        "description": "Etat de l'enregistrement",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "remarque": {
                                        "description": "Remarque",
                                        "type": "string",
                                        "example": ""
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/matieres/delete": {
            "delete": {
                "tags": [
                    "Matières premières"
                ],
                "summary": "Supprimer une matière",
                "description": "Supprime définitivement une matière. Refusé si elle a déjà fait l'objet d'un approvisionnement, si elle figure dans une recette ou si elle a été consommée par une fournée.",
                "operationId": "beecaaa9b215d3f5650ba162256d33f4",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codmat": {
                                        "description": "Code de la matière première",
                                        "type": "string",
                                        "example": "ARO-ROY"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/matieres/desactiver": {
            "put": {
                "tags": [
                    "Matières premières"
                ],
                "summary": "Désactiver une matière",
                "description": "Passe la matière à etat = 0 : elle n'est plus proposée, mais son historique (appros, recettes, production) et son stock sont conservés. Réactivation : /api/matieres/update avec etat = 1.",
                "operationId": "a801fc6f5e81d378d9d839bad2852468",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codmat": {
                                        "description": "Code de la matière première",
                                        "type": "string",
                                        "example": "ARO-ROY"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/paniers": {
            "get": {
                "tags": [
                    "Paniers"
                ],
                "summary": "Liste des Paniers",
                "description": "Récupérer les Paniers (filtres facultatifs sur chaque colonne)",
                "operationId": "6d25476b770d04254ef80eb1ba4bcb55",
                "parameters": [
                    {
                        "name": "numcli",
                        "in": "query",
                        "description": "Identifiant du client",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "478"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "numcli": {
                                                "description": "Identifiant du client",
                                                "type": "string",
                                                "example": "478"
                                            },
                                            "codprod": {
                                                "description": "Code du produit",
                                                "type": "string",
                                                "example": "1735127294439805"
                                            },
                                            "qte": {
                                                "description": "Quantité",
                                                "type": "string",
                                                "example": "200"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/paniers/delete": {
            "delete": {
                "tags": [
                    "Paniers"
                ],
                "summary": "Vider le panier d'un client",
                "description": "Supprime toutes les lignes en attente du client.",
                "operationId": "a2dc446e1ac9ca24b6bfd8a7fc960c7a",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numcli": {
                                        "description": "Identifiant du client",
                                        "type": "string",
                                        "example": "478"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/paniers/create": {
            "post": {
                "tags": [
                    "Paniers"
                ],
                "summary": "Enregistrer le panier d'un client",
                "description": "Remplace tout le panier en attente du client par les lignes fournies.",
                "operationId": "21cc4ed69a6395bbd92e9ae4d5866f96",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numcli": {
                                        "description": "Identifiant du client",
                                        "type": "string",
                                        "example": "478"
                                    },
                                    "lignes": {
                                        "description": "Lignes de détail",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codprod": {
                                                    "description": "Code du produit",
                                                    "type": "string",
                                                    "example": "1735127294439805"
                                                },
                                                "qte": {
                                                    "description": "Quantité",
                                                    "type": "string",
                                                    "example": "200"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/pointsvente": {
            "get": {
                "tags": [
                    "Points de vente"
                ],
                "summary": "Liste des Points de vente",
                "description": "Récupérer les Points de vente (filtres facultatifs sur chaque colonne)",
                "operationId": "aa0f1993ec6fc9c463917a56c4c0573a",
                "parameters": [
                    {
                        "name": "idpointvente",
                        "in": "query",
                        "description": "Identifiant du point de vente / site",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "0"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "idpointvente": {
                                                "description": "Identifiant du point de vente / site",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "libptvente": {
                                                "description": "Libellé du point de vente",
                                                "type": "string",
                                                "example": "Magasin principal"
                                            },
                                            "typesite": {
                                                "description": "Type de site",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "etatptventte": {
                                                "description": "Etat du point de vente (0 actif, 1 désactivé)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "datecreation": {
                                                "description": "Date de création",
                                                "type": "string",
                                                "example": "2026-09-23"
                                            },
                                            "user": {
                                                "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/pointsvente/create": {
            "post": {
                "tags": [
                    "Points de vente"
                ],
                "summary": "Ajouter un point de vente",
                "description": "Ajouter un nouvel enregistrement dans la table tblpointdevente",
                "operationId": "73c533c9c36e3c3e340dd6f533d48bf3",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "idpointvente": {
                                        "description": "Identifiant du point de vente / site",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "libptvente": {
                                        "description": "Libellé du point de vente",
                                        "type": "string",
                                        "example": "Magasin principal"
                                    },
                                    "typesite": {
                                        "description": "Type de site",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "etatptventte": {
                                        "description": "Etat du point de vente (0 actif, 1 désactivé)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": "2026-09-23"
                                    },
                                    "user": {
                                        "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/pointsvente/update": {
            "put": {
                "tags": [
                    "Points de vente"
                ],
                "summary": "Modifier un point de vente",
                "description": "Modifier les attributs fournis (idpointvente obligatoire)",
                "operationId": "da6849ff0b676902a8cf2cb32a568772",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "idpointvente": {
                                        "description": "Identifiant du point de vente / site",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "libptvente": {
                                        "description": "Libellé du point de vente",
                                        "type": "string",
                                        "example": "Magasin principal"
                                    },
                                    "typesite": {
                                        "description": "Type de site",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "etatptventte": {
                                        "description": "Etat du point de vente (0 actif, 1 désactivé)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": "2026-09-23"
                                    },
                                    "user": {
                                        "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/pointsvente/delete": {
            "delete": {
                "tags": [
                    "Points de vente"
                ],
                "summary": "Désactiver un point de vente",
                "description": "Désactive le point de vente (etatptventte = 1).",
                "operationId": "3dbe0c8c9db4409fd54166fa5fd8797a",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "idpointvente": {
                                        "description": "Identifiant du point de vente / site",
                                        "type": "string",
                                        "example": "0"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/prix": {
            "get": {
                "tags": [
                    "Prix"
                ],
                "summary": "Liste des Prix",
                "description": "Récupérer les Prix (filtres facultatifs sur chaque colonne)",
                "operationId": "f136209d8927aee104cd6c77cd1d9118",
                "parameters": [
                    {
                        "name": "codprod",
                        "in": "query",
                        "description": "Code du produit",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1735127326022802"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "codprix": {
                                                "description": "Identifiant du prix",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "codprod": {
                                                "description": "Code du produit",
                                                "type": "string",
                                                "example": "1735127326022802"
                                            },
                                            "dateprix": {
                                                "description": "Date du prix",
                                                "type": "string",
                                                "example": "2025-04-07"
                                            },
                                            "varindice": {
                                                "description": "Indice de prix (1 = prix courant)",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "prixdetail": {
                                                "description": "Prix de détail",
                                                "type": "string",
                                                "example": "150"
                                            },
                                            "prixgros": {
                                                "description": "Prix de gros",
                                                "type": "string",
                                                "example": "125"
                                            },
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/prix/create": {
            "post": {
                "tags": [
                    "Prix"
                ],
                "summary": "Ajouter un prix",
                "description": "Ajouter un nouvel enregistrement dans la table prix",
                "operationId": "13b9411a383811916cbcb1abceb975b5",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codprod": {
                                        "description": "Code du produit",
                                        "type": "string",
                                        "example": "1735127326022802"
                                    },
                                    "dateprix": {
                                        "description": "Date du prix",
                                        "type": "string",
                                        "example": "2025-04-07"
                                    },
                                    "varindice": {
                                        "description": "Indice de prix (1 = prix courant)",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "prixdetail": {
                                        "description": "Prix de détail",
                                        "type": "string",
                                        "example": "150"
                                    },
                                    "prixgros": {
                                        "description": "Prix de gros",
                                        "type": "string",
                                        "example": "125"
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/prix/update": {
            "put": {
                "tags": [
                    "Prix"
                ],
                "summary": "Modifier un prix",
                "description": "Modifier les attributs fournis (codprix obligatoire)",
                "operationId": "1148633c5e3f4fe1a1b298069613e227",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codprix": {
                                        "description": "Identifiant du prix",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "codprod": {
                                        "description": "Code du produit",
                                        "type": "string",
                                        "example": "1735127326022802"
                                    },
                                    "dateprix": {
                                        "description": "Date du prix",
                                        "type": "string",
                                        "example": "2025-04-07"
                                    },
                                    "varindice": {
                                        "description": "Indice de prix (1 = prix courant)",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "prixdetail": {
                                        "description": "Prix de détail",
                                        "type": "string",
                                        "example": "150"
                                    },
                                    "prixgros": {
                                        "description": "Prix de gros",
                                        "type": "string",
                                        "example": "125"
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/prix/delete": {
            "delete": {
                "tags": [
                    "Prix"
                ],
                "summary": "Supprimer un prix",
                "description": "Supprime une ligne de prix (le prix précédent redevient le prix courant).",
                "operationId": "2502eb4ae78ebd4fa35ec6008fa525fb",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codprix": {
                                        "description": "Identifiant du prix",
                                        "type": "string",
                                        "example": "1"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/productions": {
            "get": {
                "tags": [
                    "Productions"
                ],
                "summary": "Liste des Productions",
                "description": "Récupérer les Productions (filtres facultatifs sur chaque colonne)",
                "operationId": "36727687b04c44044f88377a86e0a1d7",
                "parameters": [
                    {
                        "name": "numprod",
                        "in": "query",
                        "description": "Numéro de la fournée",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "0"
                        }
                    },
                    {
                        "name": "codprod",
                        "in": "query",
                        "description": "Code du produit",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": ""
                        }
                    },
                    {
                        "name": "statut",
                        "in": "query",
                        "description": "Statut (0 lancée, 1 terminée, 2 validée)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "0"
                        }
                    },
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "numprod": {
                                                "description": "Numéro de la fournée",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "dateprod": {
                                                "description": "Date de la fournée",
                                                "type": "string",
                                                "example": "2026-09-23 10:00:00"
                                            },
                                            "codprod": {
                                                "description": "Code du produit",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "heuredeb": {
                                                "description": "Heure de début",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "heurefin": {
                                                "description": "Heure de fin",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "qteatt": {
                                                "description": "Quantité attendue",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "qteprec": {
                                                "description": "Quantité précédente",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "qteprod0": {
                                                "description": "Quantité produite (fin de fournée)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "qteprod": {
                                                "description": "Quantité validée (entrée en stock)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "qteprodn": {
                                                "description": "Quantité N",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "qteproda": {
                                                "description": "Quantité A",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "coutprod": {
                                                "description": "Coût de production",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "nbresac": {
                                                "description": "Nombre de sacs",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "statut": {
                                                "description": "Statut (0 lancée, 1 terminée, 2 validée)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "user": {
                                                "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "observation": {
                                                "description": "Observation",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "observationv": {
                                                "description": "Observation de validation",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "pseudov": {
                                                "description": "Utilisateur qui a validé",
                                                "type": "string",
                                                "example": "admin"
                                            },
                                            "lignes": {
                                                "description": "Lignes de détail",
                                                "type": "array",
                                                "items": {
                                                    "properties": {
                                                        "numprod": {
                                                            "description": "Numéro de la fournée",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "codmat": {
                                                            "description": "Code de la matière première",
                                                            "type": "string",
                                                            "example": ""
                                                        },
                                                        "qterecettestd": {
                                                            "description": "Quantité standard de la recette",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "qterecetteatt": {
                                                            "description": "Quantité attendue",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "qterecettepre": {
                                                            "description": "Quantité prévue",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "qterecetteliv": {
                                                            "description": "Quantité livrée (consommée)",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "coutmat": {
                                                            "description": "Coût de la matière",
                                                            "type": "string",
                                                            "example": "0"
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/productions/create": {
            "post": {
                "tags": [
                    "Productions"
                ],
                "summary": "Ajouter une fournée",
                "description": "Lance une fournée avec les matières prévues (lignes).",
                "operationId": "f2350b6c884c32d3a90d8e9fd4f7c527",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "dateprod": {
                                        "description": "Date de la fournée",
                                        "type": "string",
                                        "example": "2026-09-23 10:00:00"
                                    },
                                    "codprod": {
                                        "description": "Code du produit",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "heuredeb": {
                                        "description": "Heure de début",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "heurefin": {
                                        "description": "Heure de fin",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "qteatt": {
                                        "description": "Quantité attendue",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qteprec": {
                                        "description": "Quantité précédente",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qteprod0": {
                                        "description": "Quantité produite (fin de fournée)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qteprod": {
                                        "description": "Quantité validée (entrée en stock)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qteprodn": {
                                        "description": "Quantité N",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qteproda": {
                                        "description": "Quantité A",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "coutprod": {
                                        "description": "Coût de production",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "nbresac": {
                                        "description": "Nombre de sacs",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "statut": {
                                        "description": "Statut (0 lancée, 1 terminée, 2 validée)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "user": {
                                        "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "observation": {
                                        "description": "Observation",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "observationv": {
                                        "description": "Observation de validation",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudov": {
                                        "description": "Utilisateur qui a validé",
                                        "type": "string",
                                        "example": "admin"
                                    },
                                    "lignes": {
                                        "description": "Lignes de détail",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codmat": {
                                                    "description": "Code de la matière première",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "qterecettestd": {
                                                    "description": "Quantité standard de la recette",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "qterecetteatt": {
                                                    "description": "Quantité attendue",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "qterecettepre": {
                                                    "description": "Quantité prévue",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "qterecetteliv": {
                                                    "description": "Quantité livrée (consommée)",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "coutmat": {
                                                    "description": "Coût de la matière",
                                                    "type": "string",
                                                    "example": "0"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/productions/update": {
            "put": {
                "tags": [
                    "Productions"
                ],
                "summary": "Modifier une fournée",
                "description": "Modifier les attributs fournis (numprod obligatoire)",
                "operationId": "c0c7454aad633b98b6af6b833dbb6153",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numprod": {
                                        "description": "Numéro de la fournée",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "dateprod": {
                                        "description": "Date de la fournée",
                                        "type": "string",
                                        "example": "2026-09-23 10:00:00"
                                    },
                                    "codprod": {
                                        "description": "Code du produit",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "heuredeb": {
                                        "description": "Heure de début",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "heurefin": {
                                        "description": "Heure de fin",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "qteatt": {
                                        "description": "Quantité attendue",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qteprec": {
                                        "description": "Quantité précédente",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qteprod0": {
                                        "description": "Quantité produite (fin de fournée)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qteprod": {
                                        "description": "Quantité validée (entrée en stock)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qteprodn": {
                                        "description": "Quantité N",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qteproda": {
                                        "description": "Quantité A",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "coutprod": {
                                        "description": "Coût de production",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "nbresac": {
                                        "description": "Nombre de sacs",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "statut": {
                                        "description": "Statut (0 lancée, 1 terminée, 2 validée)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "user": {
                                        "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "observation": {
                                        "description": "Observation",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "observationv": {
                                        "description": "Observation de validation",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudov": {
                                        "description": "Utilisateur qui a validé",
                                        "type": "string",
                                        "example": "admin"
                                    },
                                    "lignes": {
                                        "description": "Lignes (facultatif) : si fourni, remplace toutes les lignes",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codmat": {
                                                    "description": "Code de la matière première",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "qterecettestd": {
                                                    "description": "Quantité standard de la recette",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "qterecetteatt": {
                                                    "description": "Quantité attendue",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "qterecettepre": {
                                                    "description": "Quantité prévue",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "qterecetteliv": {
                                                    "description": "Quantité livrée (consommée)",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "coutmat": {
                                                    "description": "Coût de la matière",
                                                    "type": "string",
                                                    "example": "0"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/productions/delete": {
            "delete": {
                "tags": [
                    "Productions"
                ],
                "summary": "Supprimer une fournée",
                "description": "Supprime une fournée encore au statut « lancée ».",
                "operationId": "89da9ef0bc27591b2e167ad076e27745",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numprod": {
                                        "description": "Numéro de la fournée",
                                        "type": "string",
                                        "example": "0"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/productions/terminer": {
            "put": {
                "tags": [
                    "Productions"
                ],
                "summary": "Terminer une fournée",
                "description": "Enregistre la quantité sortie du four et l'heure de fin (statut 0 -> 1).",
                "operationId": "d426b916a8520d472b3b8b4b4ccca577",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numprod": {
                                        "description": "Numéro de la fournée",
                                        "type": "string",
                                        "example": "1790154530000000"
                                    },
                                    "qteprod0": {
                                        "description": "Quantité produite",
                                        "type": "string",
                                        "example": "95"
                                    },
                                    "observation": {
                                        "description": "Observation",
                                        "type": "string",
                                        "example": "RAS"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/productions/valider": {
            "put": {
                "tags": [
                    "Productions"
                ],
                "summary": "Valider une fournée",
                "description": "Statut 2 : la quantité validée entre en stock au magasin principal (tbdreception) et les matières (qterecetteliv) sortent du stock.",
                "operationId": "fc9a27787250e44ccb772d9f4113ed59",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numprod": {
                                        "description": "Numéro de la fournée",
                                        "type": "string",
                                        "example": "1790154530000000"
                                    },
                                    "qteprod": {
                                        "description": "Quantité validée",
                                        "type": "string",
                                        "example": "95"
                                    },
                                    "observation": {
                                        "description": "Observation de validation",
                                        "type": "string",
                                        "example": "RAS"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/productions/encours": {
            "get": {
                "tags": [
                    "Productions"
                ],
                "summary": "Quantité en cours de production",
                "description": "Somme des quantités attendues des fournées lancées (statut 0) pour un produit.",
                "operationId": "a20c31c36c210be48ff1a9567b98f392",
                "parameters": [
                    {
                        "name": "codprod",
                        "in": "query",
                        "description": "Code du produit",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1735126885937735"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "qteatt": {
                                            "description": "Quantité attendue",
                                            "type": "string",
                                            "example": "200"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/produits": {
            "get": {
                "tags": [
                    "Produits"
                ],
                "summary": "Liste des Produits",
                "description": "Produits avec libcateg et prix courant (prixdetail, prixgros). Filtre utile : prodclasse=0 pour les actifs.",
                "operationId": "e17a42c72e0070bf419decf50c1783e8",
                "parameters": [
                    {
                        "name": "codprod",
                        "in": "query",
                        "description": "Code du produit",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1735127108803470"
                        }
                    },
                    {
                        "name": "prodclasse",
                        "in": "query",
                        "description": "Classe (0 actif, 1 archivé)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "0"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "codprod": {
                                                "description": "Code du produit",
                                                "type": "string",
                                                "example": "1735127108803470"
                                            },
                                            "libprod": {
                                                "description": "Désignation du produit",
                                                "type": "string",
                                                "example": "Grand rond 250"
                                            },
                                            "numcateg": {
                                                "description": "Identifiant de la catégorie",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "numempl": {
                                                "description": "Emplacement",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "codbarre": {
                                                "description": "Code-barres",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "qtebase": {
                                                "description": "Seuil d'alerte de stock",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "qteref": {
                                                "description": "Quantité produite avec la recette de référence",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "reduc": {
                                                "description": "Réduction",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "qtemaxi": {
                                                "description": "Quantité maximale",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "prodclasse": {
                                                "description": "Classe (0 actif, 1 archivé)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "qtep": {
                                                "description": "Quantité P",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "qtec": {
                                                "description": "Quantité C",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "coutprod": {
                                                "description": "Coût de production",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "datecreation": {
                                                "description": "Date de création",
                                                "type": "string",
                                                "example": "2024-12-25"
                                            },
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "libcateg": {
                                                "description": "Libellé de la catégorie",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "prixdetail": {
                                                "description": "Prix de détail",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "prixgros": {
                                                "description": "Prix de gros",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "dateprix": {
                                                "description": "Date du prix",
                                                "type": "string",
                                                "example": ""
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/produits/create": {
            "post": {
                "tags": [
                    "Produits"
                ],
                "summary": "Ajouter un produit avec son prix",
                "description": "Crée le produit et son prix de vente en une seule opération. prixdetail est obligatoire ; prixgros prend la valeur de prixdetail s'il est absent. codprod est généré automatiquement s'il n'est pas fourni.",
                "operationId": "3b0b29782bb4c866e6343f42c83071b2",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "libprod": {
                                        "description": "Désignation du produit",
                                        "type": "string",
                                        "example": "Pain au chocolat"
                                    },
                                    "numcateg": {
                                        "description": "Identifiant de la catégorie",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "prixdetail": {
                                        "description": "Prix de détail (obligatoire)",
                                        "type": "string",
                                        "example": "200"
                                    },
                                    "prixgros": {
                                        "description": "Prix de gros (facultatif)",
                                        "type": "string",
                                        "example": "175"
                                    },
                                    "codprod": {
                                        "description": "Code du produit (facultatif, généré sinon)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "codbarre": {
                                        "description": "Code-barres",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "numempl": {
                                        "description": "Emplacement",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "qtebase": {
                                        "description": "Seuil d'alerte de stock",
                                        "type": "string",
                                        "example": "20"
                                    },
                                    "qteref": {
                                        "description": "Quantité produite avec la recette de référence",
                                        "type": "string",
                                        "example": "100"
                                    },
                                    "reduc": {
                                        "description": "Réduction autorisée (1) ou non (0)",
                                        "type": "string",
                                        "example": "1"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/produits/update": {
            "put": {
                "tags": [
                    "Produits"
                ],
                "summary": "Modifier un produit",
                "description": "Modifier les attributs fournis (codprod obligatoire)",
                "operationId": "0e676af17038a8b8243851f9ff18fc99",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codprod": {
                                        "description": "Code du produit",
                                        "type": "string",
                                        "example": "1735127108803470"
                                    },
                                    "libprod": {
                                        "description": "Désignation du produit",
                                        "type": "string",
                                        "example": "Grand rond 250"
                                    },
                                    "numcateg": {
                                        "description": "Identifiant de la catégorie",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "numempl": {
                                        "description": "Emplacement",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "codbarre": {
                                        "description": "Code-barres",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "qtebase": {
                                        "description": "Seuil d'alerte de stock",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qteref": {
                                        "description": "Quantité produite avec la recette de référence",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "reduc": {
                                        "description": "Réduction",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "qtemaxi": {
                                        "description": "Quantité maximale",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "prodclasse": {
                                        "description": "Classe (0 actif, 1 archivé)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qtep": {
                                        "description": "Quantité P",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qtec": {
                                        "description": "Quantité C",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "coutprod": {
                                        "description": "Coût de production",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": "2024-12-25"
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/produits/delete": {
            "delete": {
                "tags": [
                    "Produits"
                ],
                "summary": "Supprimer un produit",
                "description": "Supprime définitivement un produit (avec ses prix et sa recette). Refusé s'il a fait l'objet d'une commande, d'une vente, d'une livraison, d'une fournée ou d'une réception : désactivez-le plutôt avec /api/produits/desactiver.",
                "operationId": "2b1a93868744cfa970031d406580dfa6",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codprod": {
                                        "description": "Code du produit",
                                        "type": "string",
                                        "example": "1735126885937735"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/produits/desactiver": {
            "put": {
                "tags": [
                    "Produits"
                ],
                "summary": "Désactiver un produit",
                "description": "Passe le produit à prodclasse = 1 : il n'est plus proposé à la vente, mais son historique et son stock sont conservés. Réactivation : /api/produits/update avec prodclasse = 0.",
                "operationId": "0a7de2e6361fce2063f671cdf6edc1e3",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codprod": {
                                        "description": "Code du produit",
                                        "type": "string",
                                        "example": "1735126885937735"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rapports/chiffres": {
            "get": {
                "tags": [
                    "Rapports"
                ],
                "summary": "Chiffres clés",
                "description": "Total des ventes du jour, du mois et de l'année (ventes non annulées).",
                "operationId": "b91905c20055c334a521a6e5df5600fe",
                "parameters": [
                    {
                        "name": "idpointvente",
                        "in": "query",
                        "description": "Site (facultatif)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "vente_jour": {
                                            "description": "Ventes du jour",
                                            "type": "string",
                                            "example": "125000"
                                        },
                                        "vente_mois": {
                                            "description": "Ventes du mois",
                                            "type": "string",
                                            "example": "3450000"
                                        },
                                        "vente_annee": {
                                            "description": "Ventes de l'année",
                                            "type": "string",
                                            "example": "41000000"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rapports/journalier": {
            "get": {
                "tags": [
                    "Rapports"
                ],
                "summary": "Rapport journalier",
                "description": "Ventes du jour (avec lignes et nom du client) et règlements du jour.",
                "operationId": "61b55de3489677bf173e18e7658a7bfe",
                "parameters": [
                    {
                        "name": "date",
                        "in": "query",
                        "description": "Date (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-08-01"
                        }
                    },
                    {
                        "name": "idpointvente",
                        "in": "query",
                        "description": "Site (facultatif)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "ventes": {
                                            "description": "Ventes du jour avec leurs lignes",
                                            "type": "string",
                                            "example": "[...]"
                                        },
                                        "reglements": {
                                            "description": "Règlements du jour",
                                            "type": "string",
                                            "example": "[...]"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rapports/tableaubord": {
            "get": {
                "tags": [
                    "Rapports"
                ],
                "summary": "Tableau de bord",
                "description": "Totaux de la période : achats, dépenses, coût de production, ventes, ventes à crédit, bonus, créance totale, top 10 des produits.",
                "operationId": "16a0cca693b09870b7bce765c4def7be",
                "parameters": [
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    },
                    {
                        "name": "idpointvente",
                        "in": "query",
                        "description": "Site (facultatif ; 0 = ancien tableau de bord du magasin principal)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "0"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "ttachat": {
                                            "description": "Total des achats de matières",
                                            "type": "string",
                                            "example": "6166800"
                                        },
                                        "ttdepenses": {
                                            "description": "Total des dépenses",
                                            "type": "string",
                                            "example": "195000"
                                        },
                                        "ttcoutprod": {
                                            "description": "Coût des productions validées",
                                            "type": "string",
                                            "example": "0"
                                        },
                                        "ttvente": {
                                            "description": "Total des ventes",
                                            "type": "string",
                                            "example": "12500000"
                                        },
                                        "ttventeCred": {
                                            "description": "Ventes à crédit",
                                            "type": "string",
                                            "example": "850000"
                                        },
                                        "ttbonus": {
                                            "description": "Valeur des produits offerts",
                                            "type": "string",
                                            "example": "45000"
                                        },
                                        "creance": {
                                            "description": "Créance totale (ventes à crédit non payées)",
                                            "type": "string",
                                            "example": "320000"
                                        },
                                        "top_produits": {
                                            "description": "10 produits les plus vendus (montant)",
                                            "type": "string",
                                            "example": "[...]"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rapports/creances": {
            "get": {
                "tags": [
                    "Rapports"
                ],
                "summary": "Créances clients",
                "description": "Par client : total des ventes à crédit, montant payé et reste dû (clients avec un reste dû uniquement).",
                "operationId": "928873c46115a43f720cd081a36c795f",
                "parameters": [
                    {
                        "name": "numcli",
                        "in": "query",
                        "description": "Client (facultatif)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "444"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "numcli": {
                                                "description": "Client",
                                                "type": "string",
                                                "example": "444"
                                            },
                                            "nomcli": {
                                                "description": "Nom du client",
                                                "type": "string",
                                                "example": "KOFFI Jean"
                                            },
                                            "ttc": {
                                                "description": "Total des ventes à crédit",
                                                "type": "string",
                                                "example": "85000"
                                            },
                                            "paiement": {
                                                "description": "Déjà payé",
                                                "type": "string",
                                                "example": "60000"
                                            },
                                            "creance": {
                                                "description": "Reste dû",
                                                "type": "string",
                                                "example": "25000"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rapports/ventes": {
            "get": {
                "tags": [
                    "Rapports"
                ],
                "summary": "Ventes par produit",
                "description": "Quantités et montants vendus par produit sur la période.",
                "operationId": "ebaae24cc730e3415b8e670e1758e366",
                "parameters": [
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    },
                    {
                        "name": "idpointvente",
                        "in": "query",
                        "description": "Site (facultatif)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "codprod": {
                                                "description": "Produit",
                                                "type": "string",
                                                "example": "1735126885937735"
                                            },
                                            "libprod": {
                                                "description": "Désignation",
                                                "type": "string",
                                                "example": "Carré"
                                            },
                                            "qte": {
                                                "description": "Quantité vendue",
                                                "type": "string",
                                                "example": "1520"
                                            },
                                            "ttc": {
                                                "description": "Montant",
                                                "type": "string",
                                                "example": "152000"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rapports/vendeurs": {
            "get": {
                "tags": [
                    "Rapports"
                ],
                "summary": "Ventes par vendeur",
                "description": "Nombre de ventes et montant par vendeur sur la période.",
                "operationId": "74d9092483c232a31bff25fcfb67e665",
                "parameters": [
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "pseudo": {
                                                "description": "Vendeur",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "prenom": {
                                                "description": "Prénom",
                                                "type": "string",
                                                "example": "Vincent"
                                            },
                                            "nom": {
                                                "description": "Nom",
                                                "type": "string",
                                                "example": "DETONDJI"
                                            },
                                            "nb_ventes": {
                                                "description": "Nombre de ventes",
                                                "type": "string",
                                                "example": "320"
                                            },
                                            "montant": {
                                                "description": "Montant",
                                                "type": "string",
                                                "example": "480000"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rapports/achats": {
            "get": {
                "tags": [
                    "Rapports"
                ],
                "summary": "Achats de matières",
                "description": "Quantités et montants achetés (lignes acceptées, fournisseurs réels) par matière ; par_jour=1 pour le détail par date.",
                "operationId": "d17d91e03ad8c2dac74cbd4e8466abea",
                "parameters": [
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    },
                    {
                        "name": "par_jour",
                        "in": "query",
                        "description": "1 pour grouper aussi par date",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "dateappro": {
                                                "description": "Date (si par_jour=1)",
                                                "type": "string",
                                                "example": "2026-07-27"
                                            },
                                            "codmat": {
                                                "description": "Matière",
                                                "type": "string",
                                                "example": "FAR-BLE"
                                            },
                                            "libmat": {
                                                "description": "Désignation",
                                                "type": "string",
                                                "example": "Farine de blé"
                                            },
                                            "qteappro": {
                                                "description": "Quantité",
                                                "type": "string",
                                                "example": "15000"
                                            },
                                            "ttachat": {
                                                "description": "Montant",
                                                "type": "string",
                                                "example": "6090000"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rapports/depenses": {
            "get": {
                "tags": [
                    "Rapports"
                ],
                "summary": "Dépenses par rubrique",
                "description": "Montant des dépenses actives par rubrique ; par_jour=1 pour le détail par date.",
                "operationId": "f921b02c52c3053b8b3bd07ee01c70ef",
                "parameters": [
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    },
                    {
                        "name": "par_jour",
                        "in": "query",
                        "description": "1 pour grouper aussi par date",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "datedepenses": {
                                                "description": "Date (si par_jour=1)",
                                                "type": "string",
                                                "example": "2026-07-17"
                                            },
                                            "iddep": {
                                                "description": "Rubrique",
                                                "type": "string",
                                                "example": "8"
                                            },
                                            "libdep": {
                                                "description": "Libellé",
                                                "type": "string",
                                                "example": "Fourniture de bureau"
                                            },
                                            "montant": {
                                                "description": "Montant",
                                                "type": "string",
                                                "example": "95000"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rapports/productions": {
            "get": {
                "tags": [
                    "Rapports"
                ],
                "summary": "Productions par produit",
                "description": "Fournées validées sur la période : nombre, quantités attendue et produite, coût.",
                "operationId": "ebe0f3dcccc7192b0ec1f507b9efb846",
                "parameters": [
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "codprod": {
                                                "description": "Produit",
                                                "type": "string",
                                                "example": "1735126885937735"
                                            },
                                            "libprod": {
                                                "description": "Désignation",
                                                "type": "string",
                                                "example": "Carré"
                                            },
                                            "fournees": {
                                                "description": "Nombre de fournées",
                                                "type": "string",
                                                "example": "12"
                                            },
                                            "qteatt": {
                                                "description": "Quantité attendue",
                                                "type": "string",
                                                "example": "2400"
                                            },
                                            "qte": {
                                                "description": "Quantité produite",
                                                "type": "string",
                                                "example": "2350"
                                            },
                                            "ttc": {
                                                "description": "Coût",
                                                "type": "string",
                                                "example": "360000"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/receptions": {
            "get": {
                "tags": [
                    "Réceptions"
                ],
                "summary": "Liste des Réceptions",
                "description": "Récupérer les Réceptions (filtres facultatifs sur chaque colonne)",
                "operationId": "f21face9eee01a86748a434721e90e55",
                "parameters": [
                    {
                        "name": "idpointvente",
                        "in": "query",
                        "description": "Identifiant du point de vente / site",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    },
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "idreception": {
                                                "description": "Numéro de la réception",
                                                "type": "string",
                                                "example": "1780348391940902"
                                            },
                                            "idtransfert": {
                                                "description": "Numéro du transfert",
                                                "type": "string",
                                                "example": "1780348070585418"
                                            },
                                            "datereception": {
                                                "description": "Date de réception",
                                                "type": "string",
                                                "example": "2026-06-01 22:13:06"
                                            },
                                            "source": {
                                                "description": "Site source",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "idpointvente": {
                                                "description": "Identifiant du point de vente / site",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "user": {
                                                "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "typop": {
                                                "description": "Type d'opération",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "lignes": {
                                                "description": "Lignes de détail",
                                                "type": "array",
                                                "items": {
                                                    "properties": {
                                                        "idreception": {
                                                            "description": "Numéro de la réception",
                                                            "type": "string",
                                                            "example": "1780348391940902"
                                                        },
                                                        "codprod": {
                                                            "description": "Code du produit",
                                                            "type": "string",
                                                            "example": "1735127141065467"
                                                        },
                                                        "qtereception": {
                                                            "description": "Quantité reçue",
                                                            "type": "string",
                                                            "example": "10"
                                                        },
                                                        "qtereceptiona": {
                                                            "description": "Quantité reçue A",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "dateperem": {
                                                            "description": "Date de péremption",
                                                            "type": "string",
                                                            "example": "2000-01-01"
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/recettes": {
            "get": {
                "tags": [
                    "Recettes"
                ],
                "summary": "Liste des Recettes",
                "description": "Récupérer les Recettes (filtres facultatifs sur chaque colonne)",
                "operationId": "375a6e90667a901f7980bb67b36bd4a5",
                "parameters": [
                    {
                        "name": "codprod",
                        "in": "query",
                        "description": "Code du produit",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1735126815957735"
                        }
                    },
                    {
                        "name": "codmat",
                        "in": "query",
                        "description": "Code de la matière première",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "FAR-BLE"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "codprod": {
                                                "description": "Code du produit",
                                                "type": "string",
                                                "example": "1735126815957735"
                                            },
                                            "codmat": {
                                                "description": "Code de la matière première",
                                                "type": "string",
                                                "example": "FAR-BLE"
                                            },
                                            "qterecette": {
                                                "description": "Quantité de matière pour la recette",
                                                "type": "string",
                                                "example": "50"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/recettes/create": {
            "post": {
                "tags": [
                    "Recettes"
                ],
                "summary": "Ajouter une ligne de recette",
                "description": "Ajouter un nouvel enregistrement dans la table produit_recettes",
                "operationId": "dcfea8e63e27a9b5c19195b2b3cf8b9b",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codprod": {
                                        "description": "Code du produit",
                                        "type": "string",
                                        "example": "1735126815957735"
                                    },
                                    "codmat": {
                                        "description": "Code de la matière première",
                                        "type": "string",
                                        "example": "FAR-BLE"
                                    },
                                    "qterecette": {
                                        "description": "Quantité de matière pour la recette",
                                        "type": "string",
                                        "example": "50"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/recettes/update": {
            "put": {
                "tags": [
                    "Recettes"
                ],
                "summary": "Modifier une ligne de recette",
                "description": "Modifier les attributs fournis (codprod, codmat obligatoire)",
                "operationId": "879cd6e5f4ea8f254c9711f572f42190",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codprod": {
                                        "description": "Code du produit",
                                        "type": "string",
                                        "example": "1735126815957735"
                                    },
                                    "codmat": {
                                        "description": "Code de la matière première",
                                        "type": "string",
                                        "example": "FAR-BLE"
                                    },
                                    "qterecette": {
                                        "description": "Quantité de matière pour la recette",
                                        "type": "string",
                                        "example": "50"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/recettes/delete": {
            "delete": {
                "tags": [
                    "Recettes"
                ],
                "summary": "Supprimer une ligne de recette",
                "description": "Retire une matière de la recette.",
                "operationId": "010f67476bac91985d5418a21acc5cc8",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codprod": {
                                        "description": "Code du produit",
                                        "type": "string",
                                        "example": "1735126815957735"
                                    },
                                    "codmat": {
                                        "description": "Code de la matière première",
                                        "type": "string",
                                        "example": "FAR-BLE"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/recettes/definir": {
            "put": {
                "tags": [
                    "Recettes"
                ],
                "summary": "Définir la recette d'un produit",
                "description": "Remplace toute la recette du produit par les lignes fournies (et met à jour qteref si fourni).",
                "operationId": "4cc2a33e964970b47ffe809027343091",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codprod": {
                                        "description": "Code du produit",
                                        "type": "string",
                                        "example": "1735126815957735"
                                    },
                                    "qteref": {
                                        "description": "Quantité produite avec cette recette",
                                        "type": "string",
                                        "example": "100"
                                    },
                                    "lignes": {
                                        "description": "Lignes de détail",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codmat": {
                                                    "description": "Code de la matière première",
                                                    "type": "string",
                                                    "example": "FAR-BLE"
                                                },
                                                "qterecette": {
                                                    "description": "Quantité de matière pour la recette",
                                                    "type": "string",
                                                    "example": "50"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/reglements": {
            "get": {
                "tags": [
                    "Règlements"
                ],
                "summary": "Liste des Règlements",
                "description": "Récupérer les Règlements (filtres facultatifs sur chaque colonne)",
                "operationId": "9354405001f7f5371b0b602dc1e59367",
                "parameters": [
                    {
                        "name": "codvente",
                        "in": "query",
                        "description": "Numéro de la vente",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1780151399826271"
                        }
                    },
                    {
                        "name": "pseudo",
                        "in": "query",
                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "vin"
                        }
                    },
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "id": {
                                                "description": "Identifiant",
                                                "type": "string",
                                                "example": "24"
                                            },
                                            "codvente": {
                                                "description": "Numéro de la vente",
                                                "type": "string",
                                                "example": "1780151399826271"
                                            },
                                            "dateremb": {
                                                "description": "Date du règlement",
                                                "type": "string",
                                                "example": "2026-05-30 16:40:00"
                                            },
                                            "montant": {
                                                "description": "Montant",
                                                "type": "string",
                                                "example": "33100"
                                            },
                                            "observation": {
                                                "description": "Observation",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "sup": {
                                                "description": "Annulation (0 normale, 1 demandée, 2 annulée)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/reglements/create": {
            "post": {
                "tags": [
                    "Règlements"
                ],
                "summary": "Ajouter un règlement",
                "description": "Enregistre un encaissement. Si codvente est une vente, son paiement et son état (etatfact) sont mis à jour.",
                "operationId": "7a7124e9fd76a686af7a3033d12a9f09",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codvente": {
                                        "description": "Numéro de la vente",
                                        "type": "string",
                                        "example": "1780151399826271"
                                    },
                                    "dateremb": {
                                        "description": "Date du règlement",
                                        "type": "string",
                                        "example": "2026-05-30 16:40:00"
                                    },
                                    "montant": {
                                        "description": "Montant",
                                        "type": "string",
                                        "example": "33100"
                                    },
                                    "observation": {
                                        "description": "Observation",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/reglements/delete": {
            "delete": {
                "tags": [
                    "Règlements"
                ],
                "summary": "Annuler un règlement",
                "description": "Annule le règlement (sup = 1) et le retire du paiement de la vente.",
                "operationId": "0a65a996e0dc91de4c1eed7a6beacdb6",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "id": {
                                        "description": "Identifiant",
                                        "type": "string",
                                        "example": "24"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/retours": {
            "get": {
                "tags": [
                    "Retours"
                ],
                "summary": "Liste des Retours",
                "description": "Récupérer les Retours (filtres facultatifs sur chaque colonne)",
                "operationId": "7d900538b7281d36c8a00e61c0a1b4ec",
                "parameters": [
                    {
                        "name": "codvente",
                        "in": "query",
                        "description": "Numéro de la vente",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1780151399826271"
                        }
                    },
                    {
                        "name": "numcli",
                        "in": "query",
                        "description": "Identifiant du client",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "476"
                        }
                    },
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "codretour": {
                                                "description": "Numéro du retour",
                                                "type": "string",
                                                "example": "1780159095842101"
                                            },
                                            "dateretour": {
                                                "description": "Date du retour",
                                                "type": "string",
                                                "example": "2026-05-30 17:38:12"
                                            },
                                            "codvente": {
                                                "description": "Numéro de la vente",
                                                "type": "string",
                                                "example": "1780151399826271"
                                            },
                                            "numcli": {
                                                "description": "Identifiant du client",
                                                "type": "string",
                                                "example": "476"
                                            },
                                            "ttc": {
                                                "description": "Montant TTC",
                                                "type": "string",
                                                "example": "1000"
                                            },
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "valid": {
                                                "description": "Validée (1) ou non (0)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "pseudov": {
                                                "description": "Utilisateur qui a validé",
                                                "type": "string",
                                                "example": "admin"
                                            },
                                            "lignes": {
                                                "description": "Lignes de détail",
                                                "type": "array",
                                                "items": {
                                                    "properties": {
                                                        "idcodretour": {
                                                            "description": "Numéro de la ligne de retour",
                                                            "type": "string",
                                                            "example": "17801513998262710"
                                                        },
                                                        "codretour": {
                                                            "description": "Numéro du retour",
                                                            "type": "string",
                                                            "example": "1780159095842101"
                                                        },
                                                        "codprod": {
                                                            "description": "Code du produit",
                                                            "type": "string",
                                                            "example": "1735126815957735"
                                                        },
                                                        "lot": {
                                                            "description": "Nombre d'unités par lot",
                                                            "type": "string",
                                                            "example": "10"
                                                        },
                                                        "qtelot": {
                                                            "description": "Quantité de lots",
                                                            "type": "string",
                                                            "example": "10"
                                                        },
                                                        "prixlot": {
                                                            "description": "Prix du lot",
                                                            "type": "string",
                                                            "example": "50"
                                                        },
                                                        "prixvente": {
                                                            "description": "Prix de vente unitaire",
                                                            "type": "string",
                                                            "example": "50"
                                                        },
                                                        "qteretour": {
                                                            "description": "Quantité retournée",
                                                            "type": "string",
                                                            "example": "20"
                                                        },
                                                        "montprod": {
                                                            "description": "Montant de la ligne",
                                                            "type": "string",
                                                            "example": "1000"
                                                        },
                                                        "mtacht": {
                                                            "description": "Montant d'achat",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "sortir": {
                                                            "description": "Sortie",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "observation": {
                                                            "description": "Observation",
                                                            "type": "string",
                                                            "example": ""
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/retours/create": {
            "post": {
                "tags": [
                    "Retours"
                ],
                "summary": "Enregistrer un retour",
                "description": "Retour de produits sur une vente. Chaque ligne est ventilée entre destinations : bt (renvoi vers la boutique idpointvente : transfert à réceptionner), prod (recyclage : appro de la matière codmat à réceptionner), avar (avarié). mode=boutique : les produits sortent aussi du stock du site idpointvente.",
                "operationId": "4e6958ab55d895ceec5d03f060b3f20e",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codvente": {
                                        "description": "Numéro de la vente",
                                        "type": "string",
                                        "example": "1785595302908388"
                                    },
                                    "numcli": {
                                        "description": "Client (défaut : celui de la vente)",
                                        "type": "string",
                                        "example": "444"
                                    },
                                    "mode": {
                                        "description": "client (défaut) ou boutique",
                                        "type": "string",
                                        "example": "client"
                                    },
                                    "idpointvente": {
                                        "description": "Site (obligatoire en mode boutique)",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "lignes": {
                                        "description": "Lignes de détail",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codprod": {
                                                    "description": "Code du produit",
                                                    "type": "string",
                                                    "example": "1735126815957735"
                                                },
                                                "qteretour": {
                                                    "description": "Quantité retournée",
                                                    "type": "string",
                                                    "example": "20"
                                                },
                                                "prixvente": {
                                                    "description": "Prix de vente unitaire",
                                                    "type": "string",
                                                    "example": "50"
                                                },
                                                "lot": {
                                                    "description": "Nombre d'unités par lot",
                                                    "type": "string",
                                                    "example": "10"
                                                },
                                                "qtelot": {
                                                    "description": "Quantité de lots",
                                                    "type": "string",
                                                    "example": "10"
                                                },
                                                "prixlot": {
                                                    "description": "Prix du lot",
                                                    "type": "string",
                                                    "example": "50"
                                                },
                                                "montprod": {
                                                    "description": "Montant de la ligne",
                                                    "type": "string",
                                                    "example": "1000"
                                                },
                                                "observation": {
                                                    "description": "Observation",
                                                    "type": "string",
                                                    "example": ""
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "destinations": {
                                        "description": "Dans chaque ligne : liste de { iddest (bt|prod|avar), qteretourdest, idpointvente, codmat }",
                                        "type": "string",
                                        "example": "[...]"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rubriquesdepenses": {
            "get": {
                "tags": [
                    "Rubriques de dépenses"
                ],
                "summary": "Liste des Rubriques de dépenses",
                "description": "Récupérer les Rubriques de dépenses (filtres facultatifs sur chaque colonne)",
                "operationId": "cac7016978752d3aa1d8ec309cc313f3",
                "parameters": [
                    {
                        "name": "numdep",
                        "in": "query",
                        "description": "Identifiant de la rubrique",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "numdep": {
                                                "description": "Identifiant de la rubrique",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "libdep": {
                                                "description": "Libellé de la rubrique",
                                                "type": "string",
                                                "example": "Essence"
                                            },
                                            "datecreation": {
                                                "description": "Date de création",
                                                "type": "string",
                                                "example": "2026-07-17 13:52:07"
                                            },
                                            "derndatemodif": {
                                                "description": "Date de dernière modification",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rubriquesdepenses/create": {
            "post": {
                "tags": [
                    "Rubriques de dépenses"
                ],
                "summary": "Ajouter une rubrique",
                "description": "Ajouter un nouvel enregistrement dans la table tbldep",
                "operationId": "824bb365ab2a4c0a318876db4d4bd460",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "libdep": {
                                        "description": "Libellé de la rubrique",
                                        "type": "string",
                                        "example": "Essence"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": "2026-07-17 13:52:07"
                                    },
                                    "derndatemodif": {
                                        "description": "Date de dernière modification",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rubriquesdepenses/update": {
            "put": {
                "tags": [
                    "Rubriques de dépenses"
                ],
                "summary": "Modifier une rubrique",
                "description": "Modifier les attributs fournis (numdep obligatoire)",
                "operationId": "3fe69664925ffb722c15fa78b75f6762",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numdep": {
                                        "description": "Identifiant de la rubrique",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "libdep": {
                                        "description": "Libellé de la rubrique",
                                        "type": "string",
                                        "example": "Essence"
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": "2026-07-17 13:52:07"
                                    },
                                    "derndatemodif": {
                                        "description": "Date de dernière modification",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/rubriquesdepenses/delete": {
            "delete": {
                "tags": [
                    "Rubriques de dépenses"
                ],
                "summary": "Supprimer une rubrique",
                "description": "Supprime une rubrique jamais utilisée.",
                "operationId": "dab5be783e34234a96ebc75f14de308a",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "numdep": {
                                        "description": "Identifiant de la rubrique",
                                        "type": "string",
                                        "example": "1"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/stocks/produits": {
            "get": {
                "tags": [
                    "Stocks"
                ],
                "summary": "Stock des produits finis",
                "description": "Stock par site et par produit = réceptions - ventes (les ventes annulées ne comptent pas).",
                "operationId": "dd3520fbe6d8f1ed01d962f0711718f4",
                "parameters": [
                    {
                        "name": "idpointvente",
                        "in": "query",
                        "description": "Site (facultatif)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    },
                    {
                        "name": "codprod",
                        "in": "query",
                        "description": "Produit (facultatif)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1735126885937735"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "idpointvente": {
                                                "description": "Site",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "codprod": {
                                                "description": "Code du produit",
                                                "type": "string",
                                                "example": "1735126885937735"
                                            },
                                            "libprod": {
                                                "description": "Désignation",
                                                "type": "string",
                                                "example": "Carré"
                                            },
                                            "stock": {
                                                "description": "Quantité en stock",
                                                "type": "string",
                                                "example": "120"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/stocks/matieres": {
            "get": {
                "tags": [
                    "Stocks"
                ],
                "summary": "Stock des matières premières",
                "description": "Stock = approvisionnements acceptés (etat 1) - consommations des fournées validées (statut 2).",
                "operationId": "3746cb7f1dc20656223b5fd36d1c8fd4",
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "codmat": {
                                                "description": "Code matière",
                                                "type": "string",
                                                "example": "FAR-BLE"
                                            },
                                            "libmat": {
                                                "description": "Désignation",
                                                "type": "string",
                                                "example": "Farine de blé"
                                            },
                                            "codunite": {
                                                "description": "Unité",
                                                "type": "string",
                                                "example": "KG"
                                            },
                                            "alerte": {
                                                "description": "Seuil d'alerte",
                                                "type": "string",
                                                "example": "100"
                                            },
                                            "stock": {
                                                "description": "Quantité en stock",
                                                "type": "string",
                                                "example": "850"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/stocks/alertes": {
            "get": {
                "tags": [
                    "Stocks"
                ],
                "summary": "Alertes de stock",
                "description": "matieres : matières dont le stock est sous le seuil (alerte). produits : produits dont le stock d'un site est sous qtebase.",
                "operationId": "26af19605f2bb7d3d3e205d69831bb50",
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "matieres": {
                                            "description": "Liste des matières en alerte",
                                            "type": "string",
                                            "example": "[...]"
                                        },
                                        "produits": {
                                            "description": "Liste des produits en alerte",
                                            "type": "string",
                                            "example": "[...]"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/transferts": {
            "get": {
                "tags": [
                    "Transferts"
                ],
                "summary": "Liste des Transferts",
                "description": "Transferts avec lignes. Exemple : idpointvente=1&etat=0 pour ceux à réceptionner sur le site 1. Les bons de livraison des ventes sont exclus sauf avec inclure_ventes=1.",
                "operationId": "d82fc7e1d1073f607d5581ce7803700c",
                "parameters": [
                    {
                        "name": "idpointvente",
                        "in": "query",
                        "description": "Identifiant du point de vente / site",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    },
                    {
                        "name": "etat",
                        "in": "query",
                        "description": "Etat de l'enregistrement",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2"
                        }
                    },
                    {
                        "name": "user",
                        "in": "query",
                        "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "vin"
                        }
                    },
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "idtransfert": {
                                                "description": "Numéro du transfert",
                                                "type": "string",
                                                "example": "1780147546174024"
                                            },
                                            "datetransfert": {
                                                "description": "Date du transfert",
                                                "type": "string",
                                                "example": "2026-05-30 14:25:43"
                                            },
                                            "source": {
                                                "description": "Site source",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "idpointvente": {
                                                "description": "Identifiant du point de vente / site",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "idcde": {
                                                "description": "Numéro de commande",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "etat": {
                                                "description": "Etat de l'enregistrement",
                                                "type": "string",
                                                "example": "2"
                                            },
                                            "motif": {
                                                "description": "Motif",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "remarque": {
                                                "description": "Remarque",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "user": {
                                                "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "datemodif": {
                                                "description": "Date de modification",
                                                "type": "string",
                                                "example": "2026-09-23 10:00:00"
                                            },
                                            "lignes": {
                                                "description": "Lignes de détail",
                                                "type": "array",
                                                "items": {
                                                    "properties": {
                                                        "idtransfert": {
                                                            "description": "Numéro du transfert",
                                                            "type": "string",
                                                            "example": "1780147546174024"
                                                        },
                                                        "codprod": {
                                                            "description": "Code du produit",
                                                            "type": "string",
                                                            "example": "1735127326022802"
                                                        },
                                                        "qtetransfert": {
                                                            "description": "Quantité transférée",
                                                            "type": "string",
                                                            "example": "100"
                                                        },
                                                        "dateperem": {
                                                            "description": "Date de péremption",
                                                            "type": "string",
                                                            "example": "2026-09-23"
                                                        },
                                                        "etat": {
                                                            "description": "Etat de l'enregistrement",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "observation": {
                                                            "description": "Observation",
                                                            "type": "string",
                                                            "example": ""
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/transferts/create": {
            "post": {
                "tags": [
                    "Transferts"
                ],
                "summary": "Ajouter un transfert",
                "description": "Ajouter un nouvel enregistrement dans la table tbdtransfert",
                "operationId": "0c75650f2f45ec1d5da51919fc4dde39",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "datetransfert": {
                                        "description": "Date du transfert",
                                        "type": "string",
                                        "example": "2026-05-30 14:25:43"
                                    },
                                    "source": {
                                        "description": "Site source",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "idpointvente": {
                                        "description": "Identifiant du point de vente / site",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "idcde": {
                                        "description": "Numéro de commande",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "etat": {
                                        "description": "Etat de l'enregistrement",
                                        "type": "string",
                                        "example": "2"
                                    },
                                    "motif": {
                                        "description": "Motif",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "remarque": {
                                        "description": "Remarque",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "user": {
                                        "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "datemodif": {
                                        "description": "Date de modification",
                                        "type": "string",
                                        "example": "2026-09-23 10:00:00"
                                    },
                                    "lignes": {
                                        "description": "Lignes de détail",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codprod": {
                                                    "description": "Code du produit",
                                                    "type": "string",
                                                    "example": "1735127326022802"
                                                },
                                                "qtetransfert": {
                                                    "description": "Quantité transférée",
                                                    "type": "string",
                                                    "example": "100"
                                                },
                                                "dateperem": {
                                                    "description": "Date de péremption",
                                                    "type": "string",
                                                    "example": "2026-09-23"
                                                },
                                                "etat": {
                                                    "description": "Etat de l'enregistrement",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "observation": {
                                                    "description": "Observation",
                                                    "type": "string",
                                                    "example": ""
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/transferts/update": {
            "put": {
                "tags": [
                    "Transferts"
                ],
                "summary": "Modifier un transfert",
                "description": "Modifier un transfert en attente. Rejet : etat = 2 (avec motif).",
                "operationId": "52581b3a0f13a0440496fe4e95ac1059",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "idtransfert": {
                                        "description": "Numéro du transfert",
                                        "type": "string",
                                        "example": "1780147546174024"
                                    },
                                    "datetransfert": {
                                        "description": "Date du transfert",
                                        "type": "string",
                                        "example": "2026-05-30 14:25:43"
                                    },
                                    "source": {
                                        "description": "Site source",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "idpointvente": {
                                        "description": "Identifiant du point de vente / site",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "idcde": {
                                        "description": "Numéro de commande",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "etat": {
                                        "description": "Etat de l'enregistrement",
                                        "type": "string",
                                        "example": "2"
                                    },
                                    "motif": {
                                        "description": "Motif",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "remarque": {
                                        "description": "Remarque",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "user": {
                                        "description": "Utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "datemodif": {
                                        "description": "Date de modification",
                                        "type": "string",
                                        "example": "2026-09-23 10:00:00"
                                    },
                                    "lignes": {
                                        "description": "Lignes (facultatif) : si fourni, remplace toutes les lignes",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codprod": {
                                                    "description": "Code du produit",
                                                    "type": "string",
                                                    "example": "1735127326022802"
                                                },
                                                "qtetransfert": {
                                                    "description": "Quantité transférée",
                                                    "type": "string",
                                                    "example": "100"
                                                },
                                                "dateperem": {
                                                    "description": "Date de péremption",
                                                    "type": "string",
                                                    "example": "2026-09-23"
                                                },
                                                "etat": {
                                                    "description": "Etat de l'enregistrement",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "observation": {
                                                    "description": "Observation",
                                                    "type": "string",
                                                    "example": ""
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/transferts/delete": {
            "delete": {
                "tags": [
                    "Transferts"
                ],
                "summary": "Supprimer un transfert",
                "description": "Supprime un transfert en attente (etat 0).",
                "operationId": "7c86a0042c02770984af007720b1b8f3",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "idtransfert": {
                                        "description": "Numéro du transfert",
                                        "type": "string",
                                        "example": "1780147546174024"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/transferts/reception": {
            "post": {
                "tags": [
                    "Transferts"
                ],
                "summary": "Réceptionner un transfert",
                "description": "Crée la réception (entrée en stock sur le site destinataire) avec les lignes acceptées (etat 1). etat 2 = refusée.",
                "operationId": "19774231efadd15a14b5904ded497829",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "idtransfert": {
                                        "description": "Numéro du transfert",
                                        "type": "string",
                                        "example": "1780348070585418"
                                    },
                                    "lignes": {
                                        "description": "Lignes de détail",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codprod": {
                                                    "description": "Code du produit",
                                                    "type": "string",
                                                    "example": "1735127326022802"
                                                },
                                                "qtereception": {
                                                    "description": "Quantité reçue",
                                                    "type": "string",
                                                    "example": ""
                                                },
                                                "etat": {
                                                    "description": "Etat de l'enregistrement",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "observation": {
                                                    "description": "Observation",
                                                    "type": "string",
                                                    "example": ""
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/unites": {
            "get": {
                "tags": [
                    "Unités"
                ],
                "summary": "Liste des Unités",
                "description": "Récupérer les Unités (filtres facultatifs sur chaque colonne)",
                "operationId": "3bfafa779fc59731259fcd5a309ea56b",
                "parameters": [
                    {
                        "name": "codunite",
                        "in": "query",
                        "description": "Code de l'unité (4 caractères max)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "KG"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "codunite": {
                                                "description": "Code de l'unité (4 caractères max)",
                                                "type": "string",
                                                "example": "KG"
                                            },
                                            "libunite": {
                                                "description": "Libellé de l'unité",
                                                "type": "string",
                                                "example": "Kilogramme"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/unites/create": {
            "post": {
                "tags": [
                    "Unités"
                ],
                "summary": "Ajouter une unité",
                "description": "Ajouter un nouvel enregistrement dans la table unite",
                "operationId": "f6c99952cee2ad0daef647e236fa0087",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codunite": {
                                        "description": "Code de l'unité (4 caractères max)",
                                        "type": "string",
                                        "example": "KG"
                                    },
                                    "libunite": {
                                        "description": "Libellé de l'unité",
                                        "type": "string",
                                        "example": "Kilogramme"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/unites/update": {
            "put": {
                "tags": [
                    "Unités"
                ],
                "summary": "Modifier une unité",
                "description": "Modifier les attributs fournis (codunite obligatoire)",
                "operationId": "8f95dce1a4ef234f58555c5f3e905df8",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codunite": {
                                        "description": "Code de l'unité (4 caractères max)",
                                        "type": "string",
                                        "example": "KG"
                                    },
                                    "libunite": {
                                        "description": "Libellé de l'unité",
                                        "type": "string",
                                        "example": "Kilogramme"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/unites/delete": {
            "delete": {
                "tags": [
                    "Unités"
                ],
                "summary": "Supprimer une unité",
                "description": "Supprime une unité non utilisée par une matière.",
                "operationId": "6152ec083f69304d4ae6d95f30d668d9",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codunite": {
                                        "description": "Code de l'unité (4 caractères max)",
                                        "type": "string",
                                        "example": "KG"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/utilisateurs": {
            "get": {
                "tags": [
                    "Utilisateurs"
                ],
                "summary": "Liste des Utilisateurs",
                "description": "Récupérer les Utilisateurs (filtres facultatifs sur chaque colonne)",
                "operationId": "f43c3e8079cd162d31c1d8fdfc4d77ef",
                "parameters": [
                    {
                        "name": "pseudo",
                        "in": "query",
                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "vin"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "nom": {
                                                "description": "Nom",
                                                "type": "string",
                                                "example": "DETONDJI"
                                            },
                                            "prenom": {
                                                "description": "Prénom",
                                                "type": "string",
                                                "example": "Vincent"
                                            },
                                            "fonction": {
                                                "description": "Fonction (Administrateur, Caisse, Ventes, DE, Logistique, Pétrisseur...)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "idpointvente": {
                                                "description": "Identifiant du point de vente / site",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "etatpseudo": {
                                                "description": "Etat du compte (0 actif, 1 bloqué)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "datecreation": {
                                                "description": "Date de création",
                                                "type": "string",
                                                "example": "2026-09-23"
                                            },
                                            "frmimp": {
                                                "description": "Format d'impression (58 / 80 mm)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "id": {
                                                "description": "Identifiant",
                                                "type": "string",
                                                "example": "0"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/utilisateurs/create": {
            "post": {
                "tags": [
                    "Utilisateurs"
                ],
                "summary": "Ajouter un utilisateur",
                "description": "Ajouter un nouvel enregistrement dans la table utilisateurs",
                "operationId": "ba1ea5078b412b35f1bb85c7dbc05da3",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "nom": {
                                        "description": "Nom",
                                        "type": "string",
                                        "example": "DETONDJI"
                                    },
                                    "prenom": {
                                        "description": "Prénom",
                                        "type": "string",
                                        "example": "Vincent"
                                    },
                                    "mot": {
                                        "description": "Mot de passe",
                                        "type": "string",
                                        "example": "motdepasse"
                                    },
                                    "fonction": {
                                        "description": "Fonction (Administrateur, Caisse, Ventes, DE, Logistique, Pétrisseur...)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "idpointvente": {
                                        "description": "Identifiant du point de vente / site",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "etatpseudo": {
                                        "description": "Etat du compte (0 actif, 1 bloqué)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": "2026-09-23"
                                    },
                                    "frmimp": {
                                        "description": "Format d'impression (58 / 80 mm)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "id": {
                                        "description": "Identifiant",
                                        "type": "string",
                                        "example": "0"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/utilisateurs/update": {
            "put": {
                "tags": [
                    "Utilisateurs"
                ],
                "summary": "Modifier un utilisateur",
                "description": "Modifier les attributs fournis (pseudo obligatoire)",
                "operationId": "692faad65bc442d8a61f2f1d81120be4",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "nom": {
                                        "description": "Nom",
                                        "type": "string",
                                        "example": "DETONDJI"
                                    },
                                    "prenom": {
                                        "description": "Prénom",
                                        "type": "string",
                                        "example": "Vincent"
                                    },
                                    "mot": {
                                        "description": "Mot de passe",
                                        "type": "string",
                                        "example": "motdepasse"
                                    },
                                    "fonction": {
                                        "description": "Fonction (Administrateur, Caisse, Ventes, DE, Logistique, Pétrisseur...)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "idpointvente": {
                                        "description": "Identifiant du point de vente / site",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "etatpseudo": {
                                        "description": "Etat du compte (0 actif, 1 bloqué)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "datecreation": {
                                        "description": "Date de création",
                                        "type": "string",
                                        "example": "2026-09-23"
                                    },
                                    "frmimp": {
                                        "description": "Format d'impression (58 / 80 mm)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "id": {
                                        "description": "Identifiant",
                                        "type": "string",
                                        "example": "0"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/utilisateurs/delete": {
            "delete": {
                "tags": [
                    "Utilisateurs"
                ],
                "summary": "Bloquer un utilisateur",
                "description": "Bloque le compte (etatpseudo = 1) et le déconnecte. Réactivation : update avec etatpseudo = 0.",
                "operationId": "f1754a00e5e1e05534a783eb92bbf394",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/ventes": {
            "get": {
                "tags": [
                    "Ventes"
                ],
                "summary": "Liste des Ventes",
                "description": "Ventes avec leurs lignes. Sans filtre : ventes du jour. Les régularisations d'inventaire (typvente R) et sorties (S) sont exclues sauf si typvente est fourni.",
                "operationId": "c082d6a91cb1bdab66b675e2a298a47d",
                "parameters": [
                    {
                        "name": "codvente",
                        "in": "query",
                        "description": "Numéro de la vente",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1778687357548523"
                        }
                    },
                    {
                        "name": "numcli",
                        "in": "query",
                        "description": "Identifiant du client",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    },
                    {
                        "name": "idpointvente",
                        "in": "query",
                        "description": "Identifiant du point de vente / site",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    },
                    {
                        "name": "pseudo",
                        "in": "query",
                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "vin"
                        }
                    },
                    {
                        "name": "typvente",
                        "in": "query",
                        "description": "Type de vente (0 comptant, 1 crédit)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "0"
                        }
                    },
                    {
                        "name": "etatfact",
                        "in": "query",
                        "description": "Etat de la facture (0 non soldée, 1 soldée)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "1"
                        }
                    },
                    {
                        "name": "sup",
                        "in": "query",
                        "description": "Annulation (0 normale, 1 demandée, 2 annulée)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "0"
                        }
                    },
                    {
                        "name": "date_debut",
                        "in": "query",
                        "description": "Date de début (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-01"
                        }
                    },
                    {
                        "name": "date_fin",
                        "in": "query",
                        "description": "Date de fin (AAAA-MM-JJ)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "2026-09-30"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "codvente": {
                                                "description": "Numéro de la vente",
                                                "type": "string",
                                                "example": "1778687357548523"
                                            },
                                            "datevente": {
                                                "description": "Date et heure de la vente",
                                                "type": "string",
                                                "example": "2026-05-13 15:49:17"
                                            },
                                            "numcli": {
                                                "description": "Identifiant du client",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "montapayer": {
                                                "description": "Montant à payer (somme des lignes)",
                                                "type": "string",
                                                "example": "5000"
                                            },
                                            "typvente": {
                                                "description": "Type de vente (0 comptant, 1 crédit)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "reduc": {
                                                "description": "Réduction",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "montapayer_reduc": {
                                                "description": "Montant après réduction",
                                                "type": "string",
                                                "example": "5000"
                                            },
                                            "tva": {
                                                "description": "TVA",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "ttc": {
                                                "description": "Montant TTC",
                                                "type": "string",
                                                "example": "5000"
                                            },
                                            "montremis": {
                                                "description": "Montant remis par le client",
                                                "type": "string",
                                                "example": "5000"
                                            },
                                            "monnaie": {
                                                "description": "Monnaie rendue",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "modepaie": {
                                                "description": "Mode de paiement",
                                                "type": "string",
                                                "example": "Esp?ces"
                                            },
                                            "avance": {
                                                "description": "Avance",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "paiement": {
                                                "description": "Montant déjà payé",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "qr": {
                                                "description": "Code QR (facture normalisée)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "signature": {
                                                "description": "Signature (facture normalisée)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "nim": {
                                                "description": "NIM (facture normalisée)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "compteur": {
                                                "description": "Compteur (facture normalisée)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "Heure": {
                                                "description": "Heure (facture normalisée)",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "tc": {
                                                "description": "TC",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "etatfact": {
                                                "description": "Etat de la facture (0 non soldée, 1 soldée)",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "numagent": {
                                                "description": "Identifiant de l'agent commercial",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "idpointvente": {
                                                "description": "Identifiant du point de vente / site",
                                                "type": "string",
                                                "example": "1"
                                            },
                                            "pseudo": {
                                                "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                                "type": "string",
                                                "example": "vin"
                                            },
                                            "sup": {
                                                "description": "Annulation (0 normale, 1 demandée, 2 annulée)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "valid": {
                                                "description": "Validée (1) ou non (0)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "pseudov": {
                                                "description": "Utilisateur qui a validé",
                                                "type": "string",
                                                "example": "admin"
                                            },
                                            "retour": {
                                                "description": "Retour enregistré (1) ou non (0)",
                                                "type": "string",
                                                "example": "0"
                                            },
                                            "pseudor": {
                                                "description": "Utilisateur qui a enregistré le retour",
                                                "type": "string",
                                                "example": "admin"
                                            },
                                            "typop": {
                                                "description": "Type d'opération",
                                                "type": "string",
                                                "example": ""
                                            },
                                            "lignes": {
                                                "description": "Lignes de détail",
                                                "type": "array",
                                                "items": {
                                                    "properties": {
                                                        "codvente": {
                                                            "description": "Numéro de la vente",
                                                            "type": "string",
                                                            "example": "1778832288288051"
                                                        },
                                                        "codprod": {
                                                            "description": "Code du produit",
                                                            "type": "string",
                                                            "example": "1735127054117736"
                                                        },
                                                        "lot": {
                                                            "description": "Nombre d'unités par lot",
                                                            "type": "string",
                                                            "example": "1"
                                                        },
                                                        "qtelot": {
                                                            "description": "Quantité de lots",
                                                            "type": "string",
                                                            "example": "1"
                                                        },
                                                        "prixlot": {
                                                            "description": "Prix du lot",
                                                            "type": "string",
                                                            "example": "300"
                                                        },
                                                        "prixvente": {
                                                            "description": "Prix de vente unitaire",
                                                            "type": "string",
                                                            "example": "300"
                                                        },
                                                        "qtevente": {
                                                            "description": "Quantité vendue",
                                                            "type": "string",
                                                            "example": "5"
                                                        },
                                                        "montprod": {
                                                            "description": "Montant de la ligne",
                                                            "type": "string",
                                                            "example": "1500"
                                                        },
                                                        "mtacht": {
                                                            "description": "Montant d'achat",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "sortir": {
                                                            "description": "Sortie",
                                                            "type": "string",
                                                            "example": "0"
                                                        },
                                                        "bonus": {
                                                            "description": "Produit offert (1) ou non (0)",
                                                            "type": "string",
                                                            "example": "0"
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/ventes/create": {
            "post": {
                "tags": [
                    "Ventes"
                ],
                "summary": "Ajouter une vente",
                "description": "Enregistre une vente et ses lignes. Les totaux absents sont calculés à partir des lignes. Crée aussi le bon de livraison (tbdtransfert), vide le panier du client et clôture la commande numcde si fournie.",
                "operationId": "24ec3c7458b665c405a66b409967fa55",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "datevente": {
                                        "description": "Date et heure de la vente",
                                        "type": "string",
                                        "example": "2026-05-13 15:49:17"
                                    },
                                    "numcli": {
                                        "description": "Identifiant du client",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "montapayer": {
                                        "description": "Montant à payer (somme des lignes)",
                                        "type": "string",
                                        "example": "5000"
                                    },
                                    "typvente": {
                                        "description": "Type de vente (0 comptant, 1 crédit)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "reduc": {
                                        "description": "Réduction",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "montapayer_reduc": {
                                        "description": "Montant après réduction",
                                        "type": "string",
                                        "example": "5000"
                                    },
                                    "tva": {
                                        "description": "TVA",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "ttc": {
                                        "description": "Montant TTC",
                                        "type": "string",
                                        "example": "5000"
                                    },
                                    "montremis": {
                                        "description": "Montant remis par le client",
                                        "type": "string",
                                        "example": "5000"
                                    },
                                    "monnaie": {
                                        "description": "Monnaie rendue",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "modepaie": {
                                        "description": "Mode de paiement",
                                        "type": "string",
                                        "example": "Esp?ces"
                                    },
                                    "avance": {
                                        "description": "Avance",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "paiement": {
                                        "description": "Montant déjà payé",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qr": {
                                        "description": "Code QR (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "signature": {
                                        "description": "Signature (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "nim": {
                                        "description": "NIM (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "compteur": {
                                        "description": "Compteur (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "Heure": {
                                        "description": "Heure (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "tc": {
                                        "description": "TC",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "etatfact": {
                                        "description": "Etat de la facture (0 non soldée, 1 soldée)",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "numagent": {
                                        "description": "Identifiant de l'agent commercial",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "idpointvente": {
                                        "description": "Identifiant du point de vente / site",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "sup": {
                                        "description": "Annulation (0 normale, 1 demandée, 2 annulée)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "valid": {
                                        "description": "Validée (1) ou non (0)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "pseudov": {
                                        "description": "Utilisateur qui a validé",
                                        "type": "string",
                                        "example": "admin"
                                    },
                                    "retour": {
                                        "description": "Retour enregistré (1) ou non (0)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "pseudor": {
                                        "description": "Utilisateur qui a enregistré le retour",
                                        "type": "string",
                                        "example": "admin"
                                    },
                                    "typop": {
                                        "description": "Type d'opération",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "lignes": {
                                        "description": "Lignes de détail",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codprod": {
                                                    "description": "Code du produit",
                                                    "type": "string",
                                                    "example": "1735127054117736"
                                                },
                                                "lot": {
                                                    "description": "Nombre d'unités par lot",
                                                    "type": "string",
                                                    "example": "1"
                                                },
                                                "qtelot": {
                                                    "description": "Quantité de lots",
                                                    "type": "string",
                                                    "example": "1"
                                                },
                                                "prixlot": {
                                                    "description": "Prix du lot",
                                                    "type": "string",
                                                    "example": "300"
                                                },
                                                "prixvente": {
                                                    "description": "Prix de vente unitaire",
                                                    "type": "string",
                                                    "example": "300"
                                                },
                                                "qtevente": {
                                                    "description": "Quantité vendue",
                                                    "type": "string",
                                                    "example": "5"
                                                },
                                                "montprod": {
                                                    "description": "Montant de la ligne",
                                                    "type": "string",
                                                    "example": "1500"
                                                },
                                                "mtacht": {
                                                    "description": "Montant d'achat",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "sortir": {
                                                    "description": "Sortie",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "bonus": {
                                                    "description": "Produit offert (1) ou non (0)",
                                                    "type": "string",
                                                    "example": "0"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/ventes/update": {
            "put": {
                "tags": [
                    "Ventes"
                ],
                "summary": "Modifier une vente",
                "description": "Modifier les attributs fournis (codvente obligatoire)",
                "operationId": "9c1e3e019338041d7cba21565fbdf878",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codvente": {
                                        "description": "Numéro de la vente",
                                        "type": "string",
                                        "example": "1778687357548523"
                                    },
                                    "datevente": {
                                        "description": "Date et heure de la vente",
                                        "type": "string",
                                        "example": "2026-05-13 15:49:17"
                                    },
                                    "numcli": {
                                        "description": "Identifiant du client",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "montapayer": {
                                        "description": "Montant à payer (somme des lignes)",
                                        "type": "string",
                                        "example": "5000"
                                    },
                                    "typvente": {
                                        "description": "Type de vente (0 comptant, 1 crédit)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "reduc": {
                                        "description": "Réduction",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "montapayer_reduc": {
                                        "description": "Montant après réduction",
                                        "type": "string",
                                        "example": "5000"
                                    },
                                    "tva": {
                                        "description": "TVA",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "ttc": {
                                        "description": "Montant TTC",
                                        "type": "string",
                                        "example": "5000"
                                    },
                                    "montremis": {
                                        "description": "Montant remis par le client",
                                        "type": "string",
                                        "example": "5000"
                                    },
                                    "monnaie": {
                                        "description": "Monnaie rendue",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "modepaie": {
                                        "description": "Mode de paiement",
                                        "type": "string",
                                        "example": "Esp?ces"
                                    },
                                    "avance": {
                                        "description": "Avance",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "paiement": {
                                        "description": "Montant déjà payé",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "qr": {
                                        "description": "Code QR (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "signature": {
                                        "description": "Signature (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "nim": {
                                        "description": "NIM (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "compteur": {
                                        "description": "Compteur (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "Heure": {
                                        "description": "Heure (facture normalisée)",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "tc": {
                                        "description": "TC",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "etatfact": {
                                        "description": "Etat de la facture (0 non soldée, 1 soldée)",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "numagent": {
                                        "description": "Identifiant de l'agent commercial",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "idpointvente": {
                                        "description": "Identifiant du point de vente / site",
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "pseudo": {
                                        "description": "Pseudo de l'utilisateur qui a enregistré (rempli automatiquement)",
                                        "type": "string",
                                        "example": "vin"
                                    },
                                    "sup": {
                                        "description": "Annulation (0 normale, 1 demandée, 2 annulée)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "valid": {
                                        "description": "Validée (1) ou non (0)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "pseudov": {
                                        "description": "Utilisateur qui a validé",
                                        "type": "string",
                                        "example": "admin"
                                    },
                                    "retour": {
                                        "description": "Retour enregistré (1) ou non (0)",
                                        "type": "string",
                                        "example": "0"
                                    },
                                    "pseudor": {
                                        "description": "Utilisateur qui a enregistré le retour",
                                        "type": "string",
                                        "example": "admin"
                                    },
                                    "typop": {
                                        "description": "Type d'opération",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "lignes": {
                                        "description": "Lignes (facultatif) : si fourni, remplace toutes les lignes",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "codprod": {
                                                    "description": "Code du produit",
                                                    "type": "string",
                                                    "example": "1735127054117736"
                                                },
                                                "lot": {
                                                    "description": "Nombre d'unités par lot",
                                                    "type": "string",
                                                    "example": "1"
                                                },
                                                "qtelot": {
                                                    "description": "Quantité de lots",
                                                    "type": "string",
                                                    "example": "1"
                                                },
                                                "prixlot": {
                                                    "description": "Prix du lot",
                                                    "type": "string",
                                                    "example": "300"
                                                },
                                                "prixvente": {
                                                    "description": "Prix de vente unitaire",
                                                    "type": "string",
                                                    "example": "300"
                                                },
                                                "qtevente": {
                                                    "description": "Quantité vendue",
                                                    "type": "string",
                                                    "example": "5"
                                                },
                                                "montprod": {
                                                    "description": "Montant de la ligne",
                                                    "type": "string",
                                                    "example": "1500"
                                                },
                                                "mtacht": {
                                                    "description": "Montant d'achat",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "sortir": {
                                                    "description": "Sortie",
                                                    "type": "string",
                                                    "example": "0"
                                                },
                                                "bonus": {
                                                    "description": "Produit offert (1) ou non (0)",
                                                    "type": "string",
                                                    "example": "0"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/ventes/delete": {
            "delete": {
                "tags": [
                    "Ventes"
                ],
                "summary": "Annuler une vente",
                "description": "Annulation définitive (sup = 2) : la vente ne compte plus dans les stocks ni les rapports. Pour une simple demande d'annulation : update avec sup = 1.",
                "operationId": "5a8d588cfee8d74ac08383153d6f23c2",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codvente": {
                                        "description": "Numéro de la vente",
                                        "type": "string",
                                        "example": "1778687357548523"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        },
        "/api/ventes/valider": {
            "put": {
                "tags": [
                    "Ventes"
                ],
                "summary": "Valider une vente",
                "description": "Marque la vente comme validée (valid = 1).",
                "operationId": "7471e906b14ca3546a26986d306da89d",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "codvente": {
                                        "description": "Numéro de la vente",
                                        "type": "string",
                                        "example": "1786057885783618"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "succes"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Resource Not Found"
                    }
                },
                "security": [
                    {
                        "api_key": []
                    }
                ]
            }
        }
    },
    "components": {
        "securitySchemes": {
            "api_key": {
                "type": "http",
                "description": "Collez uniquement le token (sans le mot \"Bearer\")",
                "scheme": "bearer",
                "bearerFormat": "Sanctum"
            }
        }
    },
    "tags": [
        {
            "name": "Approvisionnements",
            "description": "Approvisionnements"
        },
        {
            "name": "Authentification",
            "description": "Authentification"
        },
        {
            "name": "Catégories",
            "description": "Catégories"
        },
        {
            "name": "Clients",
            "description": "Clients"
        },
        {
            "name": "Commandes",
            "description": "Commandes"
        },
        {
            "name": "Dépenses",
            "description": "Dépenses"
        },
        {
            "name": "Familles",
            "description": "Familles"
        },
        {
            "name": "Fournisseurs",
            "description": "Fournisseurs"
        },
        {
            "name": "Inventaires",
            "description": "Inventaires"
        },
        {
            "name": "Matières premières",
            "description": "Matières premières"
        },
        {
            "name": "Paniers",
            "description": "Paniers"
        },
        {
            "name": "Points de vente",
            "description": "Points de vente"
        },
        {
            "name": "Prix",
            "description": "Prix"
        },
        {
            "name": "Productions",
            "description": "Productions"
        },
        {
            "name": "Produits",
            "description": "Produits"
        },
        {
            "name": "Rapports",
            "description": "Rapports"
        },
        {
            "name": "Réceptions",
            "description": "Réceptions"
        },
        {
            "name": "Recettes",
            "description": "Recettes"
        },
        {
            "name": "Règlements",
            "description": "Règlements"
        },
        {
            "name": "Retours",
            "description": "Retours"
        },
        {
            "name": "Rubriques de dépenses",
            "description": "Rubriques de dépenses"
        },
        {
            "name": "Stocks",
            "description": "Stocks"
        },
        {
            "name": "Transferts",
            "description": "Transferts"
        },
        {
            "name": "Unités",
            "description": "Unités"
        },
        {
            "name": "Utilisateurs",
            "description": "Utilisateurs"
        },
        {
            "name": "Ventes",
            "description": "Ventes"
        }
    ],
    "security": [
        {
            "api_key": []
        }
    ]
}