{"openapi":"3.0.0","paths":{"/v1/api":{"get":{"operationId":"AppController_getHello","parameters":[],"responses":{"200":{"description":"Hello message"}},"summary":"Message de bienvenue","tags":["App"]}},"/v1/api/health":{"get":{"operationId":"AppController_getHealth","parameters":[],"responses":{"200":{"description":"API operationnelle"}},"summary":"Verifier la sante de l'API","tags":["App"]}},"/v1/api/categories":{"post":{"operationId":"CategoriesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCategoryDto"}}}},"responses":{"201":{"description":"Categorie creee avec succes"},"400":{"description":"Donnees invalides"},"409":{"description":"Categorie deja existante"}},"security":[{"access-token":[]}],"summary":"Creer une categorie","tags":["Categories"]},"get":{"operationId":"CategoriesController_findAll","parameters":[{"name":"libelle","required":false,"in":"query","description":"Le libelle de la categorie","schema":{"example":"Electromenager","type":"string"}},{"name":"statut","required":false,"in":"query","description":"Le statut de la categorie","schema":{"example":"ACTIF","type":"string","enum":["ACTIF","INACTIF"]}}],"responses":{"200":{"description":"Liste des categories"}},"security":[{"access-token":[]}],"summary":"Lister les categories avec filtres","tags":["Categories"]}},"/v1/api/categories/{id}":{"get":{"operationId":"CategoriesController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Categorie trouvee"},"404":{"description":"Categorie introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer une categorie par id","tags":["Categories"]},"patch":{"operationId":"CategoriesController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCategoryDto"}}}},"responses":{"200":{"description":"Categorie mise a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Categorie introuvable"},"409":{"description":"Conflit de donnees"}},"security":[{"access-token":[]}],"summary":"Mettre a jour une categorie","tags":["Categories"]},"delete":{"operationId":"CategoriesController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"204":{"description":"Categorie supprimee"},"404":{"description":"Categorie introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer (soft delete) une categorie","tags":["Categories"]}},"/v1/api/categories/{id}/toggle-statut":{"patch":{"operationId":"CategoriesController_toggleStatut","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Statut modifie avec succes"},"404":{"description":"Categorie introuvable"}},"security":[{"access-token":[]}],"summary":"Activer ou desactiver une categorie","tags":["Categories"]}},"/v1/api/formats-bouteille":{"post":{"operationId":"FormatsBouteilleController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFormatsBouteilleDto"}}}},"responses":{"201":{"description":"Format de bouteille cree avec succes"},"400":{"description":"Donnees invalides"},"409":{"description":"Format deja existant"}},"security":[{"access-token":[]}],"summary":"Creer un format de bouteille","tags":["Formats Bouteille"]},"get":{"operationId":"FormatsBouteilleController_findAll","parameters":[{"name":"libelle","required":false,"in":"query","description":"Filtrer par libelle du format de bouteille","schema":{"example":"33cl","type":"string"}},{"name":"statut","required":false,"in":"query","description":"Filtrer par statut","schema":{"example":"ACTIF","type":"string","enum":["ACTIF","INACTIF"]}}],"responses":{"200":{"description":"Liste des formats de bouteille"}},"security":[{"access-token":[]}],"summary":"Lister les formats de bouteille avec filtres","tags":["Formats Bouteille"]}},"/v1/api/formats-bouteille/{id}":{"get":{"operationId":"FormatsBouteilleController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Format de bouteille trouve"},"404":{"description":"Format de bouteille introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer un format de bouteille par id","tags":["Formats Bouteille"]},"patch":{"operationId":"FormatsBouteilleController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFormatsBouteilleDto"}}}},"responses":{"200":{"description":"Format de bouteille mis a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Format de bouteille introuvable"},"409":{"description":"Conflit de donnees"}},"security":[{"access-token":[]}],"summary":"Mettre a jour un format de bouteille","tags":["Formats Bouteille"]},"delete":{"operationId":"FormatsBouteilleController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"204":{"description":"Format de bouteille supprime"},"404":{"description":"Format de bouteille introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer (soft delete) un format de bouteille","tags":["Formats Bouteille"]}},"/v1/api/formats-bouteille/{id}/toggle-statut":{"patch":{"operationId":"FormatsBouteilleController_toggleStatut","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Statut modifie avec succes"},"404":{"description":"Format de bouteille introuvable"}},"security":[{"access-token":[]}],"summary":"Activer ou desactiver un format de bouteille","tags":["Formats Bouteille"]}},"/v1/api/types-casier":{"post":{"operationId":"TypesCasierController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTypesCasierDto"}}}},"responses":{"201":{"description":"Type de casier cree avec succes"},"400":{"description":"Donnees invalides"},"409":{"description":"Type de casier deja existant"}},"security":[{"access-token":[]}],"summary":"Creer un type de casier","tags":["Types Casier"]},"get":{"operationId":"TypesCasierController_findAll","parameters":[{"name":"libelle","required":false,"in":"query","description":"Filtrer par libelle du type de casier","schema":{"example":"12 trous","type":"string"}},{"name":"statut","required":false,"in":"query","description":"Filtrer par statut","schema":{"example":"ACTIF","type":"string","enum":["ACTIF","INACTIF"]}},{"name":"nbBouteilles","required":false,"in":"query","description":"Filtrer par nombre de bouteilles","schema":{"example":12,"type":"number"}}],"responses":{"200":{"description":"Liste des types de casier"}},"security":[{"access-token":[]}],"summary":"Lister les types de casier avec filtres","tags":["Types Casier"]}},"/v1/api/types-casier/{id}":{"get":{"operationId":"TypesCasierController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Type de casier trouve"},"404":{"description":"Type de casier introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer un type de casier par id","tags":["Types Casier"]},"patch":{"operationId":"TypesCasierController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTypesCasierDto"}}}},"responses":{"200":{"description":"Type de casier mis a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Type de casier introuvable"},"409":{"description":"Conflit de donnees"}},"security":[{"access-token":[]}],"summary":"Mettre a jour un type de casier","tags":["Types Casier"]},"delete":{"operationId":"TypesCasierController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"204":{"description":"Type de casier supprime"},"404":{"description":"Type de casier introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer (soft delete) un type de casier","tags":["Types Casier"]}},"/v1/api/types-casier/{id}/toggle-statut":{"patch":{"operationId":"TypesCasierController_toggleStatut","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Statut modifie avec succes"},"404":{"description":"Type de casier introuvable"}},"security":[{"access-token":[]}],"summary":"Activer ou desactiver un type de casier","tags":["Types Casier"]}},"/v1/api/fournisseurs":{"post":{"operationId":"FournisseursController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFournisseurDto"}}}},"responses":{"201":{"description":"Fournisseur cree avec succes"},"400":{"description":"Donnees invalides"},"409":{"description":"Fournisseur deja existant"}},"security":[{"access-token":[]}],"summary":"Creer un fournisseur","tags":["Fournisseurs"]},"get":{"operationId":"FournisseursController_findAll","parameters":[{"name":"nom","required":false,"in":"query","description":"Filtrer par nom","schema":{"example":"SOLIBRA","type":"string"}},{"name":"telephone","required":false,"in":"query","description":"Filtrer par numero de telephone","schema":{"example":"+2250707070707","type":"string"}},{"name":"contact","required":false,"in":"query","description":"Filtrer par email de contact","schema":{"example":"contact@solibra.ci","type":"string"}},{"name":"statut","required":false,"in":"query","description":"Filtrer par statut","schema":{"example":"ACTIF","type":"string","enum":["ACTIF","INACTIF"]}}],"responses":{"200":{"description":"Liste des fournisseurs"}},"security":[{"access-token":[]}],"summary":"Lister les fournisseurs avec filtres","tags":["Fournisseurs"]}},"/v1/api/fournisseurs/{id}":{"get":{"operationId":"FournisseursController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Fournisseur trouve"},"404":{"description":"Fournisseur introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer un fournisseur par id","tags":["Fournisseurs"]},"patch":{"operationId":"FournisseursController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFournisseurDto"}}}},"responses":{"200":{"description":"Fournisseur mis a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Fournisseur introuvable"},"409":{"description":"Conflit de donnees"}},"security":[{"access-token":[]}],"summary":"Mettre a jour un fournisseur","tags":["Fournisseurs"]},"delete":{"operationId":"FournisseursController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"204":{"description":"Fournisseur supprime"},"404":{"description":"Fournisseur introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer (soft delete) un fournisseur","tags":["Fournisseurs"]}},"/v1/api/fournisseurs/{id}/toggle-statut":{"patch":{"operationId":"FournisseursController_toggleStatut","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Statut modifie avec succes"},"404":{"description":"Fournisseur introuvable"}},"security":[{"access-token":[]}],"summary":"Activer ou desactiver un fournisseur","tags":["Fournisseurs"]}},"/v1/api/produits":{"post":{"operationId":"ProduitsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProduitDto"}}}},"responses":{"201":{"description":"Produit cree avec succes"},"400":{"description":"Donnees invalides"},"409":{"description":"Produit deja existant"}},"security":[{"access-token":[]}],"summary":"Creer un produit","tags":["Produits"]},"get":{"operationId":"ProduitsController_findAll","parameters":[{"name":"designation","required":false,"in":"query","description":"Filtre designation","schema":{"example":"beaufort","type":"string"}},{"name":"categorieId","required":false,"in":"query","description":"Filtre categorie","schema":{"example":1,"type":"number"}},{"name":"formatBouteilleId","required":false,"in":"query","description":"Filtre format bouteille","schema":{"example":1,"type":"number"}},{"name":"fournisseurId","required":false,"in":"query","description":"Filtre fournisseur","schema":{"example":1,"type":"number"}},{"name":"statut","required":false,"in":"query","description":"Filtre statut","schema":{"example":"ACTIF","type":"string","enum":["ACTIF","INACTIF"]}},{"name":"dateDebut","required":false,"in":"query","description":"Date debut (createdAt) au format ISO","schema":{"example":"2026-04-01","type":"string"}},{"name":"dateFin","required":false,"in":"query","description":"Date fin (createdAt) au format ISO","schema":{"example":"2026-04-30","type":"string"}}],"responses":{"200":{"description":"Liste des produits"}},"security":[{"access-token":[]}],"summary":"Lister les produits avec filtres","tags":["Produits"]}},"/v1/api/produits/{id}":{"get":{"operationId":"ProduitsController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Produit trouve"},"404":{"description":"Produit introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer un produit par id","tags":["Produits"]},"patch":{"operationId":"ProduitsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProduitDto"}}}},"responses":{"200":{"description":"Produit mis a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Produit introuvable"},"409":{"description":"Conflit de donnees"}},"security":[{"access-token":[]}],"summary":"Mettre a jour un produit","tags":["Produits"]},"delete":{"operationId":"ProduitsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"204":{"description":"Produit supprime"},"404":{"description":"Produit introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer (soft delete) un produit","tags":["Produits"]}},"/v1/api/produits/{id}/toggle-statut":{"patch":{"operationId":"ProduitsController_toggleStatut","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":"Statut modifie avec succes"},"404":{"description":"Produit introuvable"}},"security":[{"access-token":[]}],"summary":"Activer ou desactiver un produit","tags":["Produits"]}},"/v1/api/stocks/journalier":{"post":{"operationId":"StocksController_createStockJournalier","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStockJournalierDto"}}}},"responses":{"201":{"description":"Stock journalier cree avec succes"},"400":{"description":"Donnees invalides"}},"security":[{"access-token":[]}],"summary":"Creer un stock journalier","tags":["Stocks"]},"get":{"operationId":"StocksController_findAllStocksJournaliers","parameters":[{"name":"produitId","required":false,"in":"query","description":"Filtrer par ID produit","schema":{"example":1,"type":"number"}},{"name":"date","required":false,"in":"query","description":"Filtrer par date (jour exact)","schema":{"format":"date-time","example":"2026-04-30","type":"string"}},{"name":"dateFrom","required":false,"in":"query","description":"Date de début (inclus)","schema":{"example":"2026-05-01","type":"string"}},{"name":"dateTo","required":false,"in":"query","description":"Date de fin (inclus)","schema":{"example":"2026-05-31","type":"string"}}],"responses":{"200":{"description":"Liste des stocks journaliers"}},"security":[{"access-token":[]}],"summary":"Lister les stocks journaliers","tags":["Stocks"]}},"/v1/api/stocks/journalier/{id}":{"get":{"operationId":"StocksController_findOneStockJournalier","parameters":[{"name":"id","required":true,"in":"path","description":"ID du stock journalier","schema":{"type":"number"}}],"responses":{"200":{"description":"Stock journalier trouve"},"404":{"description":"Stock journalier introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer un stock journalier par id","tags":["Stocks"]}},"/v1/api/stocks/journalier/produit/{produitId}/date/{date}":{"get":{"operationId":"StocksController_getStockDuJour","parameters":[{"name":"produitId","required":true,"in":"path","description":"ID du produit","schema":{"type":"number"}},{"name":"date","required":true,"in":"path","description":"Date (YYYY-MM-DD)","schema":{"type":"string"}}],"responses":{"200":{"description":"Stock du jour"}},"security":[{"access-token":[]}],"summary":"Obtenir le stock du jour pour un produit","tags":["Stocks"]}},"/v1/api/stocks/mouvement":{"post":{"operationId":"StocksController_createMouvement","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMouvementStockDto"}}}},"responses":{"201":{"description":"Mouvement cree avec succes"},"400":{"description":"Donnees invalides"}},"security":[{"access-token":[]}],"summary":"Creer un mouvement de stock","tags":["Stocks"]}},"/v1/api/stocks/mouvements":{"get":{"operationId":"StocksController_findAllMouvements","parameters":[{"name":"produitId","required":false,"in":"query","description":"Filtrer par produit","schema":{"type":"string"}}],"responses":{"200":{"description":"Liste des mouvements"}},"security":[{"access-token":[]}],"summary":"Lister les mouvements de stock","tags":["Stocks"]}},"/v1/api/stocks/tableau":{"get":{"operationId":"StocksController_getTableauStocks","parameters":[],"responses":{"200":{"description":"Tableau des stocks"}},"security":[{"access-token":[]}],"summary":"Tableau de bord des stocks","tags":["Stocks"]}},"/v1/api/stocks/cumulatif/{produitId}":{"post":{"operationId":"StocksController_updateStockCumulatif","parameters":[{"name":"produitId","required":true,"in":"path","description":"ID du produit","schema":{"type":"number"}}],"responses":{"200":{"description":"Stock cumulatif mis a jour"}},"security":[{"access-token":[]}],"summary":"Mettre a jour le stock cumulatif","tags":["Stocks"]}},"/v1/api/stocks/cumulatif/init/{produitId}":{"post":{"operationId":"StocksController_initStockCumulatif","parameters":[{"name":"produitId","required":true,"in":"path","description":"ID du produit","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateStockDepartDto"}}}},"responses":{"201":{"description":"Stock de depart enregistre"}},"security":[{"access-token":[]}],"summary":"Initialiser ou modifier le stock de depart cumulatif","tags":["Stocks"]}},"/v1/api/stocks/cumulatif/{produitId}/stock-depart":{"patch":{"operationId":"StocksController_updateStockDepart","parameters":[{"name":"produitId","required":true,"in":"path","description":"ID du produit","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateStockDepartDto"}}}},"responses":{"200":{"description":"Stock de depart mis a jour"}},"security":[{"access-token":[]}],"summary":"Modifier le stock de depart et recalculer le stock final","tags":["Stocks"]}},"/v1/api/ventes":{"post":{"operationId":"VentesController_createVente","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVenteDto"}}}},"responses":{"201":{"description":"Vente creee avec succes"},"400":{"description":"Donnees invalides"},"404":{"description":"Client ou produit introuvable"}},"security":[{"access-token":[]}],"summary":"Creer une vente","tags":["Ventes"]},"get":{"operationId":"VentesController_findAllVentes","parameters":[{"name":"clientId","required":false,"in":"query","description":"Filtrer par client","schema":{"example":1,"type":"number"}},{"name":"produitId","required":false,"in":"query","description":"Ventes contenant ce produit","schema":{"example":1,"type":"number"}},{"name":"date","required":false,"in":"query","description":"Jour exact","schema":{"format":"date-time","example":"2026-04-30","type":"string"}},{"name":"dateFrom","required":false,"in":"query","description":"Date de début (inclus)","schema":{"example":"2026-05-01","type":"string"}},{"name":"dateTo","required":false,"in":"query","description":"Date de fin (inclus)","schema":{"example":"2026-05-31","type":"string"}}],"responses":{"200":{"description":"Liste des ventes"}},"security":[{"access-token":[]}],"summary":"Lister les ventes","tags":["Ventes"]}},"/v1/api/ventes/{id}":{"get":{"operationId":"VentesController_findOneVente","parameters":[{"name":"id","required":true,"in":"path","description":"ID de la vente","schema":{"type":"number"}}],"responses":{"200":{"description":"Vente trouvee"},"404":{"description":"Vente introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer une vente par id","tags":["Ventes"]},"delete":{"operationId":"VentesController_removeVente","parameters":[{"name":"id","required":true,"in":"path","description":"ID de la vente","schema":{"type":"number"}}],"responses":{"204":{"description":"Vente supprimee"},"404":{"description":"Vente introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer une vente (soft delete)","tags":["Ventes"]}},"/v1/api/clients":{"post":{"operationId":"ClientsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateClientDto"}}}},"responses":{"201":{"description":"Client cree avec succes"},"400":{"description":"Donnees invalides"},"409":{"description":"Client deja existant"}},"security":[{"access-token":[]}],"summary":"Creer un client","tags":["Clients"]},"get":{"operationId":"ClientsController_findAll","parameters":[],"responses":{"200":{"description":"Liste des clients"}},"security":[{"access-token":[]}],"summary":"Lister les clients","tags":["Clients"]}},"/v1/api/clients/{id}":{"get":{"operationId":"ClientsController_findOne","parameters":[{"name":"id","required":true,"in":"path","description":"ID du client","schema":{"type":"number"}}],"responses":{"200":{"description":"Client trouve"},"404":{"description":"Client introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer un client par id","tags":["Clients"]},"patch":{"operationId":"ClientsController_update","parameters":[{"name":"id","required":true,"in":"path","description":"ID du client","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateClientDto"}}}},"responses":{"200":{"description":"Client mis a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Client introuvable"}},"security":[{"access-token":[]}],"summary":"Mettre a jour un client","tags":["Clients"]},"delete":{"operationId":"ClientsController_remove","parameters":[{"name":"id","required":true,"in":"path","description":"ID du client","schema":{"type":"number"}}],"responses":{"204":{"description":"Client supprime"},"404":{"description":"Client introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer (soft delete) un client","tags":["Clients"]}},"/v1/api/credits":{"post":{"operationId":"CreditsController_createCredit","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCreditDto"}}}},"responses":{"201":{"description":"Credit cree avec succes"},"400":{"description":"Donnees invalides"},"404":{"description":"Client introuvable"}},"security":[{"access-token":[]}],"summary":"Creer un credit","tags":["Credits"]},"get":{"operationId":"CreditsController_findAllCredits","parameters":[{"name":"clientId","required":false,"in":"query","description":"Filtrer par client","schema":{"type":"string"}}],"responses":{"200":{"description":"Liste des credits"}},"security":[{"access-token":[]}],"summary":"Lister les credits","tags":["Credits"]}},"/v1/api/credits/{id}":{"get":{"operationId":"CreditsController_findOneCredit","parameters":[{"name":"id","required":true,"in":"path","description":"ID du credit","schema":{"type":"number"}}],"responses":{"200":{"description":"Credit trouve"},"404":{"description":"Credit introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer un credit par id","tags":["Credits"]},"patch":{"operationId":"CreditsController_updateCredit","parameters":[{"name":"id","required":true,"in":"path","description":"ID du credit","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCreditDto"}}}},"responses":{"200":{"description":"Credit mis a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Credit introuvable"}},"security":[{"access-token":[]}],"summary":"Mettre a jour un credit","tags":["Credits"]},"delete":{"operationId":"CreditsController_removeCredit","parameters":[{"name":"id","required":true,"in":"path","description":"ID du credit","schema":{"type":"number"}}],"responses":{"204":{"description":"Credit supprime"},"404":{"description":"Credit introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer un credit","tags":["Credits"]}},"/v1/api/credits/remboursements":{"post":{"operationId":"CreditsController_createRemboursement","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRemboursementDto"}}}},"responses":{"201":{"description":"Remboursement cree avec succes"},"400":{"description":"Donnees invalides"},"404":{"description":"Credit introuvable"}},"security":[{"access-token":[]}],"summary":"Creer un remboursement","tags":["Credits"]}},"/v1/api/achats":{"post":{"operationId":"AchatsController_createAchat","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAchatDto"}}}},"responses":{"201":{"description":"Achat cree avec succes"},"400":{"description":"Donnees invalides"},"404":{"description":"Fournisseur introuvable"}},"security":[{"access-token":[]}],"summary":"Creer un achat","tags":["Achats"]},"get":{"operationId":"AchatsController_findAllAchats","parameters":[{"name":"fournisseurId","required":false,"in":"query","description":"Filtrer par fournisseur","schema":{"example":1,"type":"number"}},{"name":"produitId","required":false,"in":"query","description":"Achats contenant ce produit","schema":{"example":1,"type":"number"}},{"name":"date","required":false,"in":"query","description":"Jour exact","schema":{"format":"date-time","example":"2026-04-30","type":"string"}},{"name":"dateFrom","required":false,"in":"query","description":"Date de début (inclus)","schema":{"example":"2026-05-01","type":"string"}},{"name":"dateTo","required":false,"in":"query","description":"Date de fin (inclus)","schema":{"example":"2026-05-31","type":"string"}}],"responses":{"200":{"description":"Liste des achats"}},"security":[{"access-token":[]}],"summary":"Lister les achats","tags":["Achats"]}},"/v1/api/achats/{id}":{"get":{"operationId":"AchatsController_findOneAchat","parameters":[{"name":"id","required":true,"in":"path","description":"ID achat","schema":{"type":"number"}}],"responses":{"200":{"description":"Achat trouve"},"404":{"description":"Achat introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer un achat par id","tags":["Achats"]},"patch":{"operationId":"AchatsController_updateAchat","parameters":[{"name":"id","required":true,"in":"path","description":"ID achat","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAchatDto"}}}},"responses":{"200":{"description":"Achat mis a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Achat introuvable"}},"security":[{"access-token":[]}],"summary":"Mettre a jour un achat","tags":["Achats"]},"delete":{"operationId":"AchatsController_removeAchat","parameters":[{"name":"id","required":true,"in":"path","description":"ID achat","schema":{"type":"number"}}],"responses":{"204":{"description":"Achat supprime"},"404":{"description":"Achat introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer un achat (soft delete + annulation des entrees stock)","tags":["Achats"]}},"/v1/api/achats/casiers-consignes":{"post":{"operationId":"AchatsController_createCasiersConsignes","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCasiersConsigneDto"}}}},"responses":{"201":{"description":"Casiers consignes crees avec succes"},"400":{"description":"Donnees invalides"}},"security":[{"access-token":[]}],"summary":"Creer des casiers consignes","tags":["Achats"]}},"/v1/api/credits-fournisseurs":{"get":{"operationId":"CreditsFournisseursController_findAll","parameters":[{"name":"fournisseurId","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"access-token":[]}],"summary":"Lister les crédits fournisseurs","tags":["Credits Fournisseurs"]},"post":{"operationId":"CreditsFournisseursController_createManual","parameters":[],"responses":{"400":{"description":""}},"security":[{"access-token":[]}],"summary":"Création manuelle interdite","tags":["Credits Fournisseurs"]}},"/v1/api/credits-fournisseurs/dettes/total":{"get":{"operationId":"CreditsFournisseursController_getTotalDettes","parameters":[],"responses":{"200":{"description":""}},"security":[{"access-token":[]}],"summary":"Total des dettes fournisseurs ouvertes","tags":["Credits Fournisseurs"]}},"/v1/api/credits-fournisseurs/{id}":{"get":{"operationId":"CreditsFournisseursController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"number"}}],"responses":{"200":{"description":""}},"security":[{"access-token":[]}],"summary":"Récupérer un crédit fournisseur par id","tags":["Credits Fournisseurs"]}},"/v1/api/credits-fournisseurs/reglements":{"post":{"operationId":"CreditsFournisseursController_createReglement","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReglementFournisseurDto"}}}},"responses":{"201":{"description":"Règlement créé"}},"security":[{"access-token":[]}],"summary":"Enregistrer un règlement fournisseur","tags":["Credits Fournisseurs"]}},"/v1/api/finances/depenses":{"post":{"operationId":"FinancesController_createDepense","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDepenseDto"}}}},"responses":{"201":{"description":"Depense creee avec succes"},"400":{"description":"Donnees invalides"}},"security":[{"access-token":[]}],"summary":"Creer une depense","tags":["Finances"]},"get":{"operationId":"FinancesController_findAllDepenses","parameters":[{"name":"date","required":false,"in":"query","description":"Filtrer par date (YYYY-MM-DD)","schema":{"type":"string"}}],"responses":{"200":{"description":"Liste des depenses"}},"security":[{"access-token":[]}],"summary":"Lister les depenses","tags":["Finances"]}},"/v1/api/finances/clotures":{"post":{"operationId":"FinancesController_createCloture","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateClotureDto"}}}},"responses":{"201":{"description":"Cloture creee avec succes"},"400":{"description":"Donnees invalides"}},"security":[{"access-token":[]}],"summary":"Creer une cloture","tags":["Finances"]},"get":{"operationId":"FinancesController_findAllClotures","parameters":[],"responses":{"200":{"description":"Liste des clotures"}},"security":[{"access-token":[]}],"summary":"Lister les clotures","tags":["Finances"]}},"/v1/api/depenses":{"post":{"operationId":"DepensesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDepenseDto"}}}},"responses":{"201":{"description":"Depense creee avec succes"},"400":{"description":"Donnees invalides"}},"security":[{"access-token":[]}],"summary":"Creer une depense","tags":["Depenses"]},"get":{"operationId":"DepensesController_findAll","parameters":[],"responses":{"200":{"description":"Liste des depenses"}},"security":[{"access-token":[]}],"summary":"Lister les depenses","tags":["Depenses"]}},"/v1/api/depenses/{id}":{"get":{"operationId":"DepensesController_findOne","parameters":[{"name":"id","required":true,"in":"path","description":"ID de la depense","schema":{"type":"number"}}],"responses":{"200":{"description":"Depense trouvee"},"404":{"description":"Depense introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer une depense par id","tags":["Depenses"]},"patch":{"operationId":"DepensesController_update","parameters":[{"name":"id","required":true,"in":"path","description":"ID de la depense","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDepenseDto"}}}},"responses":{"200":{"description":"Depense mise a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Depense introuvable"}},"security":[{"access-token":[]}],"summary":"Mettre a jour une depense","tags":["Depenses"]},"delete":{"operationId":"DepensesController_remove","parameters":[{"name":"id","required":true,"in":"path","description":"ID de la depense","schema":{"type":"number"}}],"responses":{"204":{"description":"Depense supprimee"},"404":{"description":"Depense introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer une depense","tags":["Depenses"]}},"/v1/api/employes":{"post":{"operationId":"EmployesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEmployeDto"}}}},"responses":{"201":{"description":"Employe cree avec succes"},"400":{"description":"Donnees invalides"},"409":{"description":"Employe deja existant"}},"security":[{"access-token":[]}],"summary":"Creer un employe","tags":["Employes"]},"get":{"operationId":"EmployesController_findAll","parameters":[{"name":"search","required":false,"in":"query","description":"Recherche nom/prenom/poste","schema":{"example":"jean","type":"string"}},{"name":"statut","required":false,"in":"query","schema":{"example":"ACTIF","type":"string","enum":["ACTIF","INACTIF"]}},{"name":"page","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":1,"allOf":[{"$ref":"#/components/schemas/Object"}]}},{"name":"perPage","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":10,"allOf":[{"$ref":"#/components/schemas/Object"}]}}],"responses":{"200":{"description":"Liste des employes"}},"security":[{"access-token":[]}],"summary":"Lister les employes","tags":["Employes"]}},"/v1/api/employes/{id}":{"get":{"operationId":"EmployesController_findOne","parameters":[{"name":"id","required":true,"in":"path","description":"ID de l'employe","schema":{"type":"number"}}],"responses":{"200":{"description":"Employe trouve"},"404":{"description":"Employe introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer un employe par id","tags":["Employes"]},"patch":{"operationId":"EmployesController_update","parameters":[{"name":"id","required":true,"in":"path","description":"ID de l'employe","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEmployeDto"}}}},"responses":{"200":{"description":"Employe mis a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Employe introuvable"}},"security":[{"access-token":[]}],"summary":"Mettre a jour un employe","tags":["Employes"]},"delete":{"operationId":"EmployesController_remove","parameters":[{"name":"id","required":true,"in":"path","description":"ID de l'employe","schema":{"type":"number"}}],"responses":{"204":{"description":"Employe supprime"},"404":{"description":"Employe introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer (soft delete) un employe","tags":["Employes"]}},"/v1/api/employes/{id}/toggle-statut":{"patch":{"operationId":"EmployesController_toggleStatut","parameters":[{"name":"id","required":true,"in":"path","description":"ID de l'employe","schema":{"type":"number"}}],"responses":{"200":{"description":"Statut modifie avec succes"},"404":{"description":"Employe introuvable"}},"security":[{"access-token":[]}],"summary":"Activer ou desactiver un employe","tags":["Employes"]}},"/v1/api/salaires/paiements":{"post":{"operationId":"SalairesController_createPaiement","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSalaireDto"}}}},"responses":{"201":{"description":"Paiement cree avec succes"},"400":{"description":"Donnees invalides"},"404":{"description":"Employe introuvable"}},"security":[{"access-token":[]}],"summary":"Creer un paiement de salaire","tags":["Salaires"]},"get":{"operationId":"SalairesController_findAllPaiements","parameters":[{"name":"employeId","required":false,"in":"query","description":"Filtrer par employe","schema":{"type":"string"}}],"responses":{"200":{"description":"Liste des paiements"}},"security":[{"access-token":[]}],"summary":"Lister les paiements de salaires","tags":["Salaires"]}},"/v1/api/salaires/paiements/{id}":{"get":{"operationId":"SalairesController_findOneSalaire","parameters":[{"name":"id","required":true,"in":"path","description":"ID du paiement","schema":{"type":"number"}}],"responses":{"200":{"description":"Paiement trouve"},"404":{"description":"Paiement introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer un paiement par id","tags":["Salaires"]},"patch":{"operationId":"SalairesController_updateSalaire","parameters":[{"name":"id","required":true,"in":"path","description":"ID du paiement","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSalaireDto"}}}},"responses":{"200":{"description":"Paiement mis a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Paiement introuvable"}},"security":[{"access-token":[]}],"summary":"Mettre a jour un paiement","tags":["Salaires"]},"delete":{"operationId":"SalairesController_removeSalaire","parameters":[{"name":"id","required":true,"in":"path","description":"ID du paiement","schema":{"type":"number"}}],"responses":{"204":{"description":"Paiement supprime"},"404":{"description":"Paiement introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer un paiement","tags":["Salaires"]}},"/v1/api/partenaires":{"post":{"operationId":"PartenairesController_createPartenaire","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePartenaireDto"}}}},"responses":{"201":{"description":"Partenaire cree avec succes"},"400":{"description":"Donnees invalides"},"409":{"description":"Partenaire deja existant"}},"security":[{"access-token":[]}],"summary":"Creer un partenaire","tags":["Partenaires"]},"get":{"operationId":"PartenairesController_findAllPartenaires","parameters":[],"responses":{"200":{"description":"Liste des partenaires"}},"security":[{"access-token":[]}],"summary":"Lister les partenaires","tags":["Partenaires"]}},"/v1/api/partenaires/paiements":{"post":{"operationId":"PartenairesController_createPaiement","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePaiementPartenaireDto"}}}},"responses":{"201":{"description":"Paiement cree avec succes"},"400":{"description":"Donnees invalides"},"404":{"description":"Partenaire introuvable"}},"security":[{"access-token":[]}],"summary":"Creer un paiement partenaire","tags":["Partenaires"]},"get":{"operationId":"PartenairesController_findAllPaiements","parameters":[{"name":"partenaireId","required":false,"in":"query","description":"Filtrer par partenaire","schema":{"type":"string"}}],"responses":{"200":{"description":"Liste des paiements"}},"security":[{"access-token":[]}],"summary":"Lister les paiements partenaires","tags":["Partenaires"]}},"/v1/api/auth/login":{"post":{"operationId":"AuthController_login","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"200":{"description":"Connexion reussie"},"401":{"description":"Identifiants invalides"}},"summary":"Connexion employe","tags":["Auth"]}},"/v1/api/auth/refresh":{"post":{"operationId":"AuthController_refresh","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshTokenDto"}}}},"responses":{"200":{"description":"Access token regenere"},"401":{"description":"Refresh token invalide"}},"summary":"Renouveler access token","tags":["Auth"]}},"/v1/api/auth/me":{"get":{"operationId":"AuthController_me","parameters":[],"responses":{"200":{"description":"Profil charge avec succes"},"401":{"description":"Non authentifie"}},"security":[{"access-token":[]}],"summary":"Profil utilisateur connecte","tags":["Auth"]}},"/v1/api/auth/change-password":{"patch":{"operationId":"AuthController_changePassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordDto"}}}},"responses":{"200":{"description":"Mot de passe modifié"},"401":{"description":"Mot de passe actuel incorrect"}},"security":[{"access-token":[]}],"summary":"Modifier le mot de passe du compte connecté","tags":["Auth"]}},"/v1/api/rapports/tableau-bord":{"get":{"operationId":"RapportsController_getTableauBord","parameters":[],"responses":{"200":{"description":"Donnees du tableau de bord"}},"security":[{"access-token":[]}],"summary":"Tableau de bord general","tags":["Rapports"]}},"/v1/api/rapports/synthese":{"get":{"operationId":"RapportsController_getRapportSynthese","parameters":[{"name":"debut","required":false,"in":"query","description":"Date debut (YYYY-MM-DD)","schema":{"type":"string"}},{"name":"fin","required":false,"in":"query","description":"Date fin (YYYY-MM-DD)","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RapportSyntheseDto"}}}}},"security":[{"access-token":[]}],"summary":"Synthese rapport sur une periode","tags":["Rapports"]}},"/v1/api/rapports/ventes":{"get":{"operationId":"RapportsController_getRapportVentes","parameters":[{"name":"debut","required":false,"in":"query","description":"Date debut (YYYY-MM-DD)","schema":{"type":"string"}},{"name":"fin","required":false,"in":"query","description":"Date fin (YYYY-MM-DD)","schema":{"type":"string"}}],"responses":{"200":{"description":"Rapport des ventes"}},"security":[{"access-token":[]}],"summary":"Rapport des ventes","tags":["Rapports"]}},"/v1/api/rapports/achats":{"get":{"operationId":"RapportsController_getRapportAchats","parameters":[{"name":"debut","required":false,"in":"query","description":"Date debut (YYYY-MM-DD)","schema":{"type":"string"}},{"name":"fin","required":false,"in":"query","description":"Date fin (YYYY-MM-DD)","schema":{"type":"string"}}],"responses":{"200":{"description":"Rapport des achats"}},"security":[{"access-token":[]}],"summary":"Rapport des achats","tags":["Rapports"]}},"/v1/api/rapports/depenses":{"get":{"operationId":"RapportsController_getRapportDepenses","parameters":[{"name":"debut","required":false,"in":"query","description":"Date debut (YYYY-MM-DD)","schema":{"type":"string"}},{"name":"fin","required":false,"in":"query","description":"Date fin (YYYY-MM-DD)","schema":{"type":"string"}}],"responses":{"200":{"description":"Rapport des depenses"}},"security":[{"access-token":[]}],"summary":"Rapport des depenses","tags":["Rapports"]}},"/v1/api/rapports/credits":{"get":{"operationId":"RapportsController_getRapportCredits","parameters":[{"name":"debut","required":false,"in":"query","description":"Date debut (YYYY-MM-DD)","schema":{"type":"string"}},{"name":"fin","required":false,"in":"query","description":"Date fin (YYYY-MM-DD)","schema":{"type":"string"}}],"responses":{"200":{"description":"Rapport des credits"}},"security":[{"access-token":[]}],"summary":"Rapport des credits sur periode","tags":["Rapports"]}},"/v1/api/rapports/clotures":{"get":{"operationId":"RapportsController_getRapportClotures","parameters":[{"name":"debut","required":false,"in":"query","description":"Date debut (YYYY-MM-DD)","schema":{"type":"string"}},{"name":"fin","required":false,"in":"query","description":"Date fin (YYYY-MM-DD)","schema":{"type":"string"}}],"responses":{"200":{"description":"Rapport des clotures"}},"security":[{"access-token":[]}],"summary":"Rapport des clotures journalieres","tags":["Rapports"]}},"/v1/api/rapports/marges":{"get":{"operationId":"RapportsController_getRapportMarges","parameters":[{"name":"debut","required":false,"in":"query","description":"Date debut (YYYY-MM-DD)","schema":{"type":"string"}},{"name":"fin","required":false,"in":"query","description":"Date fin (YYYY-MM-DD)","schema":{"type":"string"}}],"responses":{"200":{"description":"Rapport des marges"}},"security":[{"access-token":[]}],"summary":"Rapport des marges","tags":["Rapports"]}},"/v1/api/rapports/stocks":{"get":{"operationId":"RapportsController_getRapportStocks","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RapportStocksDto"}}}}},"security":[{"access-token":[]}],"summary":"Rapport stocks (tableau cumulatif)","tags":["Rapports"]}},"/v1/api/rapports/casiers":{"get":{"operationId":"RapportsController_getRapportCasiers","parameters":[],"responses":{"200":{"description":"Rapport des casiers"}},"security":[{"access-token":[]}],"summary":"Rapport des casiers","tags":["Rapports"]}},"/v1/api/dashboard/summary":{"get":{"operationId":"DashboardController_getSummary","parameters":[],"responses":{"200":{"description":"Résumé","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardSummaryDto"}}}}},"security":[{"access-token":[]}],"summary":"Vue agrégée pour le tableau de bord (KPI, graphiques, listes)","tags":["Dashboard"]}},"/v1/api/clotures/preview-day":{"get":{"operationId":"CloturesController_previewDay","parameters":[{"name":"date","required":true,"in":"query","schema":{"example":"2026-05-01","type":"string"}}],"responses":{"200":{"description":"Totaux calculés"}},"security":[{"access-token":[]}],"summary":"Prévisualiser les totaux d’une journée (sans enregistrer)","tags":["Clotures"]}},"/v1/api/clotures/auto":{"post":{"operationId":"CloturesController_createAutomatic","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoClotureDto"}}}},"responses":{"201":{"description":"Clôture créée"},"409":{"description":"Clôture déjà existante pour cette date"}},"security":[{"access-token":[]}],"summary":"Clôturer une journée automatiquement (totaux depuis la base)","tags":["Clotures"]}},"/v1/api/clotures":{"post":{"operationId":"CloturesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateClotureDto"}}}},"responses":{"201":{"description":"Cloture creee avec succes"},"400":{"description":"Donnees invalides"}},"security":[{"access-token":[]}],"summary":"Creer une cloture (saisie manuelle)","tags":["Clotures"]},"get":{"operationId":"CloturesController_findAll","parameters":[],"responses":{"200":{"description":"Liste des clotures"}},"security":[{"access-token":[]}],"summary":"Lister les clotures","tags":["Clotures"]}},"/v1/api/clotures/{id}":{"get":{"operationId":"CloturesController_findOne","parameters":[{"name":"id","required":true,"in":"path","description":"ID de la cloture","schema":{"type":"number"}}],"responses":{"200":{"description":"Cloture trouvee"},"404":{"description":"Cloture introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer une cloture par id","tags":["Clotures"]},"patch":{"operationId":"CloturesController_update","parameters":[{"name":"id","required":true,"in":"path","description":"ID de la cloture","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateClotureDto"}}}},"responses":{"200":{"description":"Cloture mise a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Cloture introuvable"}},"security":[{"access-token":[]}],"summary":"Mettre a jour une cloture","tags":["Clotures"]},"delete":{"operationId":"CloturesController_remove","parameters":[{"name":"id","required":true,"in":"path","description":"ID de la cloture","schema":{"type":"number"}}],"responses":{"204":{"description":"Cloture supprimee"},"404":{"description":"Cloture introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer une cloture","tags":["Clotures"]}},"/v1/api/casiers-consignes":{"post":{"operationId":"CasiersConsignesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCasiersConsigneDto"}}}},"responses":{"201":{"description":"Casier consigne cree avec succes"},"400":{"description":"Donnees invalides"}},"security":[{"access-token":[]}],"summary":"Creer un casier consigne","tags":["Casiers Consignes"]},"get":{"operationId":"CasiersConsignesController_findAll","parameters":[],"responses":{"200":{"description":"Liste des casiers consignes"}},"security":[{"access-token":[]}],"summary":"Lister les casiers consignes","tags":["Casiers Consignes"]}},"/v1/api/casiers-consignes/{id}":{"get":{"operationId":"CasiersConsignesController_findOne","parameters":[{"name":"id","required":true,"in":"path","description":"ID du casier consigne","schema":{"type":"number"}}],"responses":{"200":{"description":"Casier consigne trouve"},"404":{"description":"Casier consigne introuvable"}},"security":[{"access-token":[]}],"summary":"Recuperer un casier consigne par id","tags":["Casiers Consignes"]},"patch":{"operationId":"CasiersConsignesController_update","parameters":[{"name":"id","required":true,"in":"path","description":"ID du casier consigne","schema":{"type":"number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCasiersConsigneDto"}}}},"responses":{"200":{"description":"Casier consigne mis a jour"},"400":{"description":"Donnees invalides"},"404":{"description":"Casier consigne introuvable"}},"security":[{"access-token":[]}],"summary":"Mettre a jour un casier consigne","tags":["Casiers Consignes"]},"delete":{"operationId":"CasiersConsignesController_remove","parameters":[{"name":"id","required":true,"in":"path","description":"ID du casier consigne","schema":{"type":"number"}}],"responses":{"204":{"description":"Casier consigne supprime"},"404":{"description":"Casier consigne introuvable"}},"security":[{"access-token":[]}],"summary":"Supprimer un casier consigne","tags":["Casiers Consignes"]}}},"info":{"title":"DepotBackend API","description":"API de gestion de depot, stock, ventes et clients","version":"1.0.1","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"access-token":{"scheme":"bearer","bearerFormat":"JWT","type":"http","in":"header"}},"schemas":{"CreateCategoryDto":{"type":"object","properties":{"libelle":{"type":"string","example":"Electromenager","description":"Le libelle de la categorie"},"statut":{"type":"string","enum":["ACTIF","INACTIF"],"example":"ACTIF","description":"Le statut de la categorie"}},"required":["libelle","statut"]},"UpdateCategoryDto":{"type":"object","properties":{}},"CreateFormatsBouteilleDto":{"type":"object","properties":{"libelle":{"type":"string","example":"33cl","description":"Le libelle du format de bouteille"},"statut":{"type":"string","enum":["ACTIF","INACTIF"],"example":"ACTIF","description":"Le statut du format de bouteille"}},"required":["libelle","statut"]},"UpdateFormatsBouteilleDto":{"type":"object","properties":{}},"CreateTypesCasierDto":{"type":"object","properties":{"libelle":{"type":"string","example":"12 trous","description":"Le libelle du type de casier"},"nbBouteilles":{"type":"number","example":12,"description":"Le nombre de bouteilles dans le casier"},"statut":{"type":"string","enum":["ACTIF","INACTIF"],"example":"ACTIF","description":"Le statut du type de casier"}},"required":["libelle","nbBouteilles","statut"]},"UpdateTypesCasierDto":{"type":"object","properties":{}},"CreateFournisseurDto":{"type":"object","properties":{"nom":{"type":"string","example":"fournisseur de biere","description":"Le nom du fournisseur"},"telephone":{"type":"string","example":"+2250707070707","description":"Le numero de telephone du fournisseur"},"contact":{"type":"string","example":"Responsable commercial","description":"Le contact du fournisseur (optionnel)"},"societe":{"type":"object","example":{"nom":"SOLIBRA","secteur":"Brasserie","adresse":"Abidjan, Côte d'Ivoire"},"description":"Informations JSON de la société du fournisseur"},"statut":{"type":"string","enum":["ACTIF","INACTIF"],"example":"ACTIF","description":"Le statut du fournisseur"}},"required":["nom","telephone","statut"]},"UpdateFournisseurDto":{"type":"object","properties":{}},"ProduitFournisseurItemDto":{"type":"object","properties":{"fournisseurId":{"type":"number","example":1,"description":"ID du fournisseur"},"prixAchat":{"type":"number","example":5200,"description":"Prix d achat chez ce fournisseur (FCFA)"}},"required":["fournisseurId","prixAchat"]},"CreateProduitDto":{"type":"object","properties":{"designation":{"type":"string","example":"Biere Beaufort 50","description":"Designation du produit"},"categorieId":{"type":"number","example":1,"description":"ID de la categorie"},"formatBouteilleId":{"type":"number","example":1,"description":"ID du format de bouteille"},"fournisseurs":{"description":"Fournisseurs du produit avec prix d achat respectifs","example":[{"fournisseurId":1,"prixAchat":5200},{"fournisseurId":2,"prixAchat":5100}],"type":"array","items":{"$ref":"#/components/schemas/ProduitFournisseurItemDto"}},"typeCasierId":{"type":"number","example":1,"description":"ID du type de casier"},"prixVente":{"type":"number","example":6000,"description":"Prix de vente (FCFA)"},"stockDepart":{"type":"number","example":10,"description":"Stock de départ initial (casiers) à la création"},"statut":{"type":"string","enum":["ACTIF","INACTIF"],"example":"ACTIF","description":"Statut du produit"}},"required":["designation","categorieId","formatBouteilleId","fournisseurs","typeCasierId","prixVente"]},"UpdateProduitDto":{"type":"object","properties":{}},"CreateStockJournalierDto":{"type":"object","properties":{"produitId":{"type":"number","example":1,"description":"ID du produit"},"date":{"format":"date-time","type":"string","example":"2026-04-30","description":"Date du stock"},"stockDepart":{"type":"number","example":10.5,"description":"Stock de départ (casiers)"}},"required":["produitId","date","stockDepart"]},"CreateMouvementStockDto":{"type":"object","properties":{"produitId":{"type":"number","example":1,"description":"ID du produit"},"date":{"format":"date-time","type":"string","example":"2026-04-30","description":"Date du mouvement"},"type":{"type":"string","enum":["ENTREE","SORTIE"],"example":"ENTREE","description":"Type de mouvement"},"quantiteCasiers":{"type":"number","example":2.5,"description":"Quantité en casiers (décimal)"},"origine":{"type":"string","enum":["VENTE","ACHAT"],"example":"ACHAT","description":"Origine du mouvement"},"referenceId":{"type":"number","example":1,"description":"ID de la vente ou de l'achat"},"utilisateurId":{"type":"number","example":1,"description":"ID de l'utilisateur"}},"required":["produitId","date","type","quantiteCasiers","origine","referenceId","utilisateurId"]},"UpdateStockDepartDto":{"type":"object","properties":{"stockDepart":{"type":"number","example":25.5,"description":"Stock de départ en casiers"}},"required":["stockDepart"]},"CreateVentesDetailDto":{"type":"object","properties":{"produitId":{"type":"number","example":1,"description":"ID du produit"},"quantiteCasiers":{"type":"number","example":2.5,"description":"Quantité en casiers (0.5, 1, 1.5...)"}},"required":["produitId","quantiteCasiers"]},"CreateVenteDto":{"type":"object","properties":{"date":{"format":"date-time","type":"string","example":"2026-04-30","description":"Date de la vente (défaut: aujourd'hui)"},"clientId":{"type":"number","example":1,"description":"ID du client (obligatoire si CREDIT ou PARTIEL)"},"typePaiement":{"type":"string","enum":["COMPTANT","CREDIT","PARTIEL"],"example":"COMPTANT","description":"Type de paiement"},"montantRecu":{"type":"number","example":20000,"description":"Montant reçu du client"},"details":{"description":"Lignes de vente","type":"array","items":{"$ref":"#/components/schemas/CreateVentesDetailDto"}}},"required":["typePaiement","montantRecu","details"]},"CreateClientDto":{"type":"object","properties":{"firstname":{"type":"string","example":"Jean","description":"Le prénom du client"},"lastname":{"type":"string","example":"Dupont","description":"Le nom du client"},"telephone":{"type":"string","example":"0705137055","description":"Le contact du client"},"statut":{"type":"string","enum":["ACTIF","INACTIF"],"example":"ACTIF","description":"Le statut du client"}},"required":["firstname","lastname","telephone"]},"UpdateClientDto":{"type":"object","properties":{}},"CreateCreditDto":{"type":"object","properties":{"clientId":{"type":"number","example":1,"description":"ID du client"},"venteId":{"type":"number","example":1,"description":"ID de la vente"},"date":{"format":"date-time","type":"string","example":"2026-04-30","description":"Date du crédit"},"montantInitial":{"type":"number","example":15000,"description":"Montant initial"}},"required":["clientId","venteId","date","montantInitial"]},"UpdateCreditDto":{"type":"object","properties":{}},"CreateRemboursementDto":{"type":"object","properties":{"creditId":{"type":"number","example":1,"description":"ID du crédit"},"date":{"format":"date-time","type":"string","example":"2026-04-30","description":"Date du remboursement"},"montantPaye":{"type":"number","example":5000,"description":"Montant payé"}},"required":["creditId","montantPaye"]},"CreateAchatsDetailDto":{"type":"object","properties":{"produitId":{"type":"number","example":1,"description":"ID du produit"},"quantiteCasiers":{"type":"number","example":5,"description":"Quantité en casiers (décimal)"},"prixUnitaire":{"type":"number","example":4500,"description":"Prix d'achat unitaire"}},"required":["produitId","quantiteCasiers","prixUnitaire"]},"CreateAchatDto":{"type":"object","properties":{"date":{"format":"date-time","type":"string","example":"2026-04-30","description":"Date de l'achat (défaut: aujourd'hui)"},"fournisseurId":{"type":"number","example":1,"description":"ID du fournisseur"},"typePaiement":{"type":"string","enum":["COMPTANT","CREDIT","PARTIEL"],"example":"COMPTANT","description":"Mode de paiement"},"montantPaye":{"type":"number","example":20000,"description":"Montant payé au fournisseur (obligatoire si PARTIEL)"},"statut":{"type":"string","enum":["PAYE","IMPAYE","PARTIEL"]},"details":{"description":"Lignes d'achat","type":"array","items":{"$ref":"#/components/schemas/CreateAchatsDetailDto"}}},"required":["fournisseurId","typePaiement","details"]},"UpdateAchatDto":{"type":"object","properties":{}},"CreateCasiersConsigneDto":{"type":"object","properties":{"fournisseurId":{"type":"number","example":1,"description":"ID du fournisseur"},"typeCasierId":{"type":"number","example":1,"description":"ID du type de casier"},"date":{"type":"string","example":"2026-04-30","description":"Date de l'opération"},"quantiteRecue":{"type":"number","example":10,"description":"Quantité reçue (casiers)"},"quantiteRendue":{"type":"number","example":5,"description":"Quantité rendue (défaut: 0)"},"achatId":{"type":"number","description":"Lien achat si généré automatiquement"}},"required":["fournisseurId","typeCasierId","date","quantiteRecue"]},"CreateReglementFournisseurDto":{"type":"object","properties":{"creditFournisseurId":{"type":"number","example":1,"description":"ID du crédit fournisseur"},"date":{"format":"date-time","type":"string","example":"2026-05-15","description":"Date du règlement"},"montantPaye":{"type":"number","example":15000,"description":"Montant versé au fournisseur (FCFA)"}},"required":["creditFournisseurId","montantPaye"]},"CreateDepenseDto":{"type":"object","properties":{"date":{"type":"string","example":"2026-05-15","description":"Date de la depense (defaut: aujourd hui)"},"motif":{"type":"string","example":"Transport","description":"Motif de la depense"},"montant":{"type":"number","example":15000,"description":"Montant de la depense en FCFA"}},"required":["motif","montant"]},"CreateClotureDto":{"type":"object","properties":{"date":{"type":"string","example":"2026-05-01","description":"Journée clôturée"},"totalVentes":{"type":"number","example":150000},"totalAchats":{"type":"number","example":80000},"totalDepenses":{"type":"number","example":12000},"solde":{"type":"number","example":58000,"description":"Solde / résultat retenu pour la journée"},"note":{"type":"string"}},"required":["date","totalVentes","totalAchats","totalDepenses","solde"]},"UpdateDepenseDto":{"type":"object","properties":{}},"CreateEmployeDto":{"type":"object","properties":{"firstname":{"type":"string","example":"Jean","description":"Prenom de l employe"},"lastname":{"type":"string","example":"Kouassi","description":"Nom de l employe"},"poste":{"type":"string","enum":["VENDEUR","CAISSIER","GERANT","RESPONSABLE","ADMINISTRATEUR"],"example":"VENDEUR","description":"Poste de l employe"},"phone":{"type":"string","example":"+2250707070707","description":"Numero de telephone de l employe"},"password":{"type":"string","example":"12345678","description":"Mot de passe (optionnel à la création — défaut : 12345678 si omis)"},"salaireBase":{"type":"number","example":150000,"description":"Salaire de base en FCFA"},"dateEmbauche":{"type":"string","example":"2026-04-29","description":"Date embauche (YYYY-MM-DD)"},"statut":{"type":"string","enum":["ACTIF","INACTIF"],"example":"ACTIF","description":"Statut de l employe"}},"required":["firstname","lastname","poste","phone","salaireBase"]},"Object":{"type":"object","properties":{}},"UpdateEmployeDto":{"type":"object","properties":{}},"CreateSalaireDto":{"type":"object","properties":{"employeId":{"type":"number","example":1,"description":"ID de l'employé"},"mois":{"type":"string","example":"2026-04","description":"Mois de paie (YYYY-MM)"},"datePaiement":{"format":"date-time","type":"string","example":"2026-04-30","description":"Date de paiement"}},"required":["employeId","mois"]},"CreatePartenaireDto":{"type":"object","properties":{"nom":{"type":"string","example":"Mairie de Cocody","description":"Nom du partenaire"},"type":{"type":"string","example":"IMPOT","description":"Type de partenaire"},"contact":{"type":"string","example":"+2250707070707","description":"Contact"},"statut":{"type":"string","example":"ACTIF","description":"Statut"}},"required":["nom"]},"CreatePaiementPartenaireDto":{"type":"object","properties":{"partenaireId":{"type":"number","example":1,"description":"ID du partenaire"},"date":{"format":"date-time","type":"string","example":"2026-04-30","description":"Date du paiement"},"motif":{"type":"string","example":"Taxe municipale","description":"Motif du paiement"},"montant":{"type":"number","example":15000,"description":"Montant du paiement"}},"required":["partenaireId","date","motif","montant"]},"LoginDto":{"type":"object","properties":{"phone":{"type":"string","example":"0705137055","description":"Numero de telephone de connexion"},"password":{"type":"string","example":"MotDePasseFort123!","description":"Mot de passe du compte employe"}},"required":["phone","password"]},"RefreshTokenDto":{"type":"object","properties":{"refreshToken":{"type":"string","description":"Refresh token JWT","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."}},"required":["refreshToken"]},"ChangePasswordDto":{"type":"object","properties":{"currentPassword":{"type":"string","description":"Mot de passe actuel"},"newPassword":{"type":"string","description":"Nouveau mot de passe (min. 8 caractères)","minLength":8}},"required":["currentPassword","newPassword"]},"RapportPaiementBucketDto":{"type":"object","properties":{"count":{"type":"number","example":12},"total":{"type":"number","example":450000}},"required":["count","total"]},"RapportPaiementsDto":{"type":"object","properties":{"comptant":{"$ref":"#/components/schemas/RapportPaiementBucketDto"},"credit":{"$ref":"#/components/schemas/RapportPaiementBucketDto"},"partiel":{"$ref":"#/components/schemas/RapportPaiementBucketDto"}},"required":["comptant","credit","partiel"]},"RapportSyntheseDto":{"type":"object","properties":{"debut":{"type":"string","example":"2026-05-01"},"fin":{"type":"string","example":"2026-05-30"},"chiffreAffaires":{"type":"number","example":1250000},"totalAchats":{"type":"number","example":820000},"margeNette":{"type":"number","example":430000},"totalDepenses":{"type":"number","example":45000},"soldePeriode":{"type":"number","example":385000},"nbVentes":{"type":"number","example":48},"nbAchats":{"type":"number","example":22},"nbDepenses":{"type":"number","example":7},"nbClotures":{"type":"number","example":3},"creditsEncours":{"type":"number","example":180000},"casiersRestants":{"type":"number","example":42},"stocksCritiques":{"type":"number","example":5},"valeurStock":{"type":"number","example":2100000},"panierMoyen":{"type":"number","example":26041.67},"paiements":{"$ref":"#/components/schemas/RapportPaiementsDto"}},"required":["debut","fin","chiffreAffaires","totalAchats","margeNette","totalDepenses","soldePeriode","nbVentes","nbAchats","nbDepenses","nbClotures","creditsEncours","casiersRestants","stocksCritiques","valeurStock","panierMoyen","paiements"]},"RapportStocksDto":{"type":"object","properties":{"stocksCritiques":{"type":"number","example":5},"valeurStock":{"type":"number","example":2100000},"rows":{"type":"array","items":{"type":"object"}}},"required":["stocksCritiques","valeurStock","rows"]},"DashboardKpisDto":{"type":"object","properties":{"chiffreAffairesMois":{"type":"number","description":"Somme des ventes (montant total) du mois civil en cours"},"chiffreAffairesEvolutionPct":{"type":"object","nullable":true,"description":"Évolution % vs même nombre de jours du mois précédent"},"stockCritiqueCount":{"type":"number","description":"Nombre de produits en stock bas ou rupture (tableau cumulatif)"},"stockCritiqueEvolution":{"type":"object","nullable":true},"creditsEnCours":{"type":"number","description":"Somme des montants restants des crédits non soldés"},"creditsEvolutionPct":{"type":"object","nullable":true},"depensesJour":{"type":"number","description":"Somme des dépenses enregistrées aujourd’hui"},"depensesEvolutionPct":{"type":"object","nullable":true}},"required":["chiffreAffairesMois","chiffreAffairesEvolutionPct","stockCritiqueCount","stockCritiqueEvolution","creditsEnCours","creditsEvolutionPct","depensesJour","depensesEvolutionPct"]},"DashboardVenteVsAchatJourDto":{"type":"object","properties":{"jour":{"type":"string","example":"lun."},"ventes":{"type":"number","example":450000},"achats":{"type":"number","example":320000}},"required":["jour","ventes","achats"]},"DashboardMargeMoisDto":{"type":"object","properties":{"mois":{"type":"string","example":"Jan"},"marge":{"type":"number","example":1200000}},"required":["mois","marge"]},"DashboardDerniereVenteDto":{"type":"object","properties":{"client":{"type":"string"},"produit":{"type":"string"},"montant":{"type":"number"},"date":{"type":"string","example":"2026-05-02"},"heure":{"type":"string","example":"14:32"}},"required":["client","produit","montant","date","heure"]},"DashboardStockCritiqueDto":{"type":"object","properties":{"designation":{"type":"string"},"stockFinal":{"type":"number"},"seuil":{"type":"number"},"statut":{"type":"string","example":"BAS"}},"required":["designation","stockFinal","seuil","statut"]},"DashboardSummaryDto":{"type":"object","properties":{"kpis":{"$ref":"#/components/schemas/DashboardKpisDto"},"ventesVsAchatsSemaine":{"type":"array","items":{"$ref":"#/components/schemas/DashboardVenteVsAchatJourDto"}},"margeSixMois":{"type":"array","items":{"$ref":"#/components/schemas/DashboardMargeMoisDto"}},"dernieresVentes":{"type":"array","items":{"$ref":"#/components/schemas/DashboardDerniereVenteDto"}},"stocksCritiques":{"type":"array","items":{"$ref":"#/components/schemas/DashboardStockCritiqueDto"}}},"required":["kpis","ventesVsAchatsSemaine","margeSixMois","dernieresVentes","stocksCritiques"]},"AutoClotureDto":{"type":"object","properties":{"date":{"type":"string","example":"2026-05-01","description":"Journée à clôturer (YYYY-MM-DD). Si omis : jour UTC en cours."},"note":{"type":"string","description":"Commentaire (sinon note auto)"}}},"UpdateClotureDto":{"type":"object","properties":{}},"UpdateCasiersConsigneDto":{"type":"object","properties":{"fournisseurId":{"type":"number","example":1,"description":"ID du fournisseur"},"typeCasierId":{"type":"number","example":1,"description":"ID du type de casier"},"date":{"type":"string","example":"2026-04-30","description":"Date de l'opération"},"quantiteRecue":{"type":"number","example":10,"description":"Quantité reçue (casiers)"},"quantiteRendue":{"type":"number","example":5,"description":"Quantité rendue (défaut: 0)"},"achatId":{"type":"number","description":"Lien achat si généré automatiquement"}}}}}}