openapi: 3.0.3 info: title: Laravel description: '' version: 1.0.0 servers: - url: 'https://dev-pessi.ms-hotel.net' paths: /api/statistic-overview: post: summary: 'Afficher les effectifs des éléments de statistique' operationId: afficherLesEffectifsDeslmentsDeStatistique description: '' parameters: [] responses: { } tags: - 'Aperçu des statistiques/ statistic Overview' requestBody: required: false content: application/json: schema: type: object properties: hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 14 nullable: true /api/statistic-booking: post: summary: 'Afficher les statistiques de réservations' operationId: afficherLesStatistiquesDeRservations description: '' parameters: [] responses: { } tags: - 'Aperçu des statistiques/ statistic Overview' requestBody: required: false content: application/json: schema: type: object properties: hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 3 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 20 nullable: true month: type: integer description: 'Le champ value doit être entre 1 et 12.' example: 2 nullable: true /api/statistic-finance: post: summary: 'Afficher les statistiques de commandes' operationId: afficherLesStatistiquesDeCommandes description: '' parameters: [] responses: { } tags: - 'Aperçu des statistiques/ statistic Overview' requestBody: required: false content: application/json: schema: type: object properties: hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 5 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 20 nullable: true month: type: integer description: 'Le champ value doit être entre 1 et 12.' example: 2 nullable: true /api/statistic-room: post: summary: 'Afficher les statistiques par chambre' operationId: afficherLesStatistiquesParChambre description: '' parameters: [] responses: { } tags: - 'Aperçu des statistiques/ statistic Overview' requestBody: required: false content: application/json: schema: type: object properties: hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 3 nullable: true room_id: type: integer description: 'The id of an existing record in the rooms table.' example: 13 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 4 nullable: true date_start: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true date_end: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true /api/articles/all: post: summary: 'Afficher la liste des articles' operationId: afficherLaListeDesArticles description: '' parameters: [] responses: { } tags: - Articles requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 4 nullable: true nbre_items: type: integer description: '' example: 20 nullable: true filter_value: type: string description: '' example: facilis nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 4 nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 4 nullable: true type: type: string description: '' example: storable nullable: true enum: - consumable - storable expired: type: boolean description: '' example: false nullable: true /api/articles: post: summary: 'Enregistrer des articles' operationId: enregistrerDesArticles description: '' parameters: [] responses: { } tags: - Articles requestBody: required: true content: application/json: schema: type: object properties: articles: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: - [] items: type: object properties: name: type: string description: '' example: fugit nullable: false type: type: string description: '' example: storable nullable: false enum: - consumable - storable image: type: string description: '' example: quis nullable: true price: type: number description: '' example: 34083.50844887 nullable: false description: type: string description: '' example: 'Voluptas iste rerum officiis at vero temporibus.' nullable: true unit_of_measurement: type: string description: '' example: quisquam nullable: true alert_quantity: type: integer description: '' example: 1 nullable: true expiry_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true container: type: string description: '' example: a nullable: true container_unit: type: string description: 'Le champ value ne peut contenir plus de 50 caractères.' example: kguvgecbnqwhvsajiqy nullable: true container_quantity: type: integer description: 'Le champ value doit être au moins 0.' example: 27 nullable: true detail: type: string description: '' example: ipsa nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 3 nullable: false suppliers: type: array description: '' example: - 2 items: type: integer required: - name - type - price - service_id - suppliers required: - articles '/api/articles/{article_id}': get: summary: 'Afficher un article spécifique' operationId: afficherUnArticleSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Articles put: summary: 'Modifier un article spécifique' operationId: modifierUnArticleSpcifique description: '' parameters: [] responses: { } tags: - Articles requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: '' example: eum nullable: true type: type: string description: '' example: storable nullable: true enum: - consumable - storable image: type: string description: '' example: perspiciatis nullable: true price: type: number description: '' example: 343.64 nullable: true description: type: string description: '' example: 'Nisi rem cupiditate sequi iusto.' nullable: true unit_of_measurement: type: string description: '' example: commodi nullable: true alert_quantity: type: integer description: '' example: 9 nullable: true expiry_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true container: type: string description: '' example: vitae nullable: true container_unit: type: string description: 'Le champ value ne peut contenir plus de 50 caractères.' example: rjwhtuvfljipwtykuhxyar nullable: true container_quantity: type: integer description: 'Le champ value doit être au moins 0.' example: 60 nullable: true detail: type: string description: '' example: veritatis nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 2 nullable: true parameters: - in: path name: article_id description: 'The ID of the article.' example: 28 required: true schema: type: integer /api/articles/trash: post: summary: 'Fonction pour le multiple archivage des articles' operationId: fonctionPourLeMultipleArchivageDesArticles description: '' parameters: [] responses: { } tags: - Articles requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 14 items: type: integer required: - ids /api/articles/restore: post: summary: 'Fonction de restauration multiples des articles' operationId: fonctionDeRestaurationMultiplesDesArticles description: '' parameters: [] responses: { } tags: - Articles requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 4 items: type: integer required: - ids /api/articles/destroy: post: summary: 'Fonction de suppression définitive multiple des articles' operationId: fonctionDeSuppressionDfinitiveMultipleDesArticles description: '' parameters: [] responses: { } tags: - Articles requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 9 items: type: integer required: - ids /api/articles-suppliers/all: post: summary: "Avoir la liste des fournisseurs d'un article et inversément" operationId: avoirLaListeDesFournisseursDunArticleEtInversment description: '' parameters: [] responses: { } tags: - Articles-Fournisseurs requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 81 nullable: true nbre_items: type: integer description: '' example: 2 nullable: true article_id: type: integer description: 'The id of an existing record in the articles table.' example: 11 nullable: true supplier_id: type: integer description: 'The id of an existing record in the users table.' example: 3 nullable: true /api/register: post: summary: "Fonction permettant à un utilisateur de s'inscrire" operationId: fonctionPermettantUnUtilisateurDeSinscrire description: '' parameters: [] responses: { } tags: - Authentification requestBody: required: true content: multipart/form-data: schema: type: object properties: firstname: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: uxjlgrlyqwtsnglpqhor nullable: false lastname: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: wgotdjmvhwgcfv nullable: true gender: type: string description: '' example: male nullable: false enum: - male - female birthday: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true nationality: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: onnkhqwzuieznmnaybglq nullable: true nui: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: fys nullable: true cni: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: ccjy nullable: true cnps: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: teioenpuemjstpp nullable: true passport_issue_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true passport_issue_place: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: gafz nullable: true profession: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: exnzlbamfs nullable: true birth_place: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: kvuiezhwbiabwonzvemhvl nullable: true connexion_type: type: string description: '' example: email nullable: false enum: - email - phone email: type: string description: 'This field is required when connexion_type is email. Le champ value doit être une address e-mail valide. Le champ value ne peut contenir plus de 255 caractères.' example: quigley.tevin@example.com nullable: false phone: type: string description: 'This field is required when connexion_type is phone. Le champ value ne peut contenir plus de 20 caractères.' example: xsbsbwrf nullable: true phone2: type: string description: 'Le champ value ne peut contenir plus de 20 caractères.' example: wsybodhtjuafwcr nullable: true city: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: rhcmupbltbrv nullable: true address: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: zjujxyqofeprnybnf nullable: true country: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: a nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 9 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 14 nullable: true responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 9 nullable: true password: type: string description: 'Le champ value doit contenir au moins 6 caractères.' example: 'ux+uIvdW,c' nullable: false photo: type: string format: binary description: 'Le champ value doit être une image. Le champ value ne peut être supérieur à 2048 kilobytes.' nullable: true required: - firstname - gender - connexion_type - password security: [] /api/verify-account: post: summary: 'On vérifie le code envoyé par email' operationId: onVrifieLeCodeEnvoyParEmail description: '' parameters: [] responses: { } tags: - Authentification requestBody: required: true content: application/json: schema: type: object properties: connexion_type: type: string description: '' example: phone nullable: false enum: - email - phone email: type: string description: 'This field is required when connexion_type is email. Le champ value doit être une address e-mail valide. The email of an existing record in the temp_users table. Le champ value ne peut contenir plus de 255 caractères.' example: rreichel@example.com nullable: true phone: type: string description: 'This field is required when connexion_type is phone. The phone of an existing record in the temp_users table. Le champ value ne peut contenir plus de 20 caractères.' example: mgoghkgycabz nullable: true verification_code: type: string description: 'Le champ value ne peut contenir plus de 6 caractères.' example: nhh nullable: false required: - connexion_type - verification_code security: [] /api/login: post: summary: 'Fonction permettant à un utilisateur déjà inscrit de se connecter' operationId: fonctionPermettantUnUtilisateurDjInscritDeSeConnecter description: '' parameters: [] responses: { } tags: - Authentification requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'This field is required when phone is not present. Le champ value doit être une address e-mail valide. Le champ value ne peut contenir plus de 255 caractères.' example: rempel.osvaldo@example.com nullable: false phone: type: string description: 'This field is required when email is not present. Le champ value ne peut contenir plus de 20 caractères.' example: sesuhszsijovhagix nullable: false password: type: string description: '' example: w3duwMi8ebesnqXo nullable: false device_key: type: string description: '' example: necessitatibus nullable: true required: - password security: [] /api/reset-password: post: summary: 'Fonction permettant de demander un lien pour réinitialiser le mot de passe' operationId: fonctionPermettantDeDemanderUnLienPourRinitialiserLeMotDePasse description: '' parameters: [] responses: { } tags: - Authentification requestBody: required: true content: application/json: schema: type: object properties: connexion_type: type: string description: '' example: email nullable: false enum: - email - phone email: type: string description: 'This field is required when connexion_type is email. Le champ value doit être une address e-mail valide. The email of an existing record in the users table. Le champ value ne peut contenir plus de 255 caractères.' example: rosanna31@example.net nullable: true phone: type: string description: 'This field is required when connexion_type is phone. The phone of an existing record in the users table. Le champ value ne peut contenir plus de 20 caractères.' example: nvnfvxcbkgyq nullable: true required: - connexion_type /api/confirm-reset-password: post: summary: "Fonction permettant de réinitialiser le mot de passe de l'utilisateur" operationId: fonctionPermettantDeRinitialiserLeMotDePasseDeLutilisateur description: '' parameters: [] responses: { } tags: - Authentification requestBody: required: true content: application/json: schema: type: object properties: connexion_type: type: string description: '' example: phone nullable: false enum: - email - phone email: type: string description: 'This field is required when connexion_type is email. Le champ value doit être une address e-mail valide. The email of an existing record in the users table. The email of an existing record in the temp_users table.' example: kertzmann.laron@example.net nullable: true phone: type: string description: 'This field is required when connexion_type is phone. The phone of an existing record in the users table. The phone of an existing record in the temp_users table. Le champ value ne peut contenir plus de 20 caractères.' example: hsa nullable: true verification_code: type: string description: 'Le champ value doit contenir au moins 6 caractères.' example: molmokhdofggiakerwltrzskfmuoshosjmgzjntmogusqlayqloaiuvlxoypouowmtejrvlbw nullable: false password: type: string description: 'Le champ value doit contenir au moins 6 caractères.' example: 'A-U''F@Go{k"cXw\(l''' nullable: false required: - connexion_type - verification_code - password /api/logout: post: summary: 'Fonction permettant à un utilisateur connecté de se déconnecter' operationId: fonctionPermettantUnUtilisateurConnectDeSeDconnecter description: '' parameters: [] responses: { } tags: - Authentification /api/salaries-advances/all: post: summary: 'Afficher la liste filtrée des avances sur salaire' operationId: afficherLaListeFiltreDesAvancesSurSalaire description: '' parameters: [] responses: { } tags: - 'Avance sur salaire / Salary advance' requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: '' example: 17 nullable: true nbre_items: type: integer description: '' example: 14 nullable: true filter_value: type: string description: '' example: est nullable: true trashed: type: boolean description: '' example: false nullable: true user_id: type: integer description: 'The id of an existing record in the users table.' example: 3 nullable: true user_approve_id: type: integer description: 'The id of an existing record in the users table.' example: 15 nullable: true date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true '/api/salaries-advances/{salary_advance_id}': get: summary: 'Afficher une retenue sur salaire spécifique' operationId: afficherUneRetenueSurSalaireSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Avance sur salaire / Salary advance' put: summary: 'Mettre à jour une retenue sur salaire spécifique' operationId: mettreJourUneRetenueSurSalaireSpcifique description: '' parameters: [] responses: { } tags: - 'Avance sur salaire / Salary advance' requestBody: required: false content: application/json: schema: type: object properties: user_approve_id: type: integer description: 'The id of an existing record in the users table.' example: 8 nullable: true amount: type: string description: '' example: null nullable: true status: type: string description: '' example: in_progress nullable: true enum: - pending_approval - in_progress - approved - rejected reason: type: string description: '' example: adipisci nullable: true comments: type: string description: '' example: voluptate nullable: true parameters: - in: path name: salary_advance_id description: 'The ID of the salary advance.' example: rerum required: true schema: type: string /api/salaries-advances: post: summary: 'Show the form for creating a new resource.' operationId: showTheFormForCreatingANewResource description: '' parameters: [] responses: { } tags: - 'Avance sur salaire / Salary advance' requestBody: required: true content: application/json: schema: type: object properties: salary_advances: type: array description: '' example: - [] items: type: object properties: user_approve_id: type: integer description: 'The id of an existing record in the users table.' example: 10 nullable: false amount: type: string description: '' example: occaecati nullable: false reason: type: string description: '' example: eum nullable: false required: - user_approve_id - amount - reason required: - salary_advances /api/salaries-advances/trash: post: summary: 'Archiver (soft delete) les avances sur salaire spécifiées.' operationId: archiversoftDeleteLesAvancesSurSalaireSpcifies description: '' parameters: [] responses: { } tags: - 'Avance sur salaire / Salary advance' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 1 items: type: integer required: - ids /api/salaries-advances/restore: post: summary: 'Restaurer les avances sur salaire archivées.' operationId: restaurerLesAvancesSurSalaireArchives description: '' parameters: [] responses: { } tags: - 'Avance sur salaire / Salary advance' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 6 items: type: integer required: - ids /api/salaries-advances/destroy: delete: summary: 'Supprimer définitivement les avances sur salaire spécifiées.' operationId: supprimerDfinitivementLesAvancesSurSalaireSpcifies description: '' parameters: [] responses: { } tags: - 'Avance sur salaire / Salary advance' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 15 items: type: integer required: - ids /api/warnings/all: post: summary: 'Lister les avertissements' operationId: listerLesAvertissements description: '' parameters: [] responses: { } tags: - Avertissements requestBody: required: false content: application/json: schema: type: object properties: user_id: type: integer description: 'The id of an existing record in the users table.' example: 1 nullable: true archive: type: string description: '' example: with_trashed nullable: true enum: - with_trashed - only_trashed date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true page_items: type: integer description: '' example: 5 nullable: true nbre_items: type: integer description: '' example: 17 nullable: true filter_value: type: string description: '' example: consectetur nullable: true '/api/warnings/{warning_id}': get: summary: "Afficher les détails d'un avertissement" operationId: afficherLesDtailsDunAvertissement description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Avertissements put: summary: "Modifier les détails d'un avertissement" operationId: modifierLesDtailsDunAvertissement description: '' parameters: [] responses: { } tags: - Avertissements requestBody: required: false content: application/json: schema: type: object properties: user_id: type: integer description: 'The id of an existing record in the users table.' example: 15 nullable: true reason: type: string description: '' example: atque nullable: true date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true parameters: - in: path name: warning_id description: 'The ID of the warning.' example: 15 required: true schema: type: integer /api/warnings: post: summary: 'Ajouter un ou plusieurs avertissements' operationId: ajouterUnOuPlusieursAvertissements description: '' parameters: [] responses: { } tags: - Avertissements requestBody: required: true content: application/json: schema: type: object properties: warnings: type: array description: '' example: - [] items: type: object properties: user_id: type: integer description: 'The id of an existing record in the users table.' example: 17 nullable: false reason: type: string description: '' example: perspiciatis nullable: false date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: false required: - user_id - reason - date required: - warnings /api/warnings/trash: delete: summary: 'Mettre un ou plusieurs avertissements en corbeille (soft delete)' operationId: mettreUnOuPlusieursAvertissementsEnCorbeillesoftDelete description: '' parameters: [] responses: { } tags: - Avertissements requestBody: required: true content: application/json: schema: type: object properties: warning_ids: type: array description: 'The id of an existing record in the warnings table.' example: - 17 items: type: integer required: - warning_ids /api/warnings/restore: post: summary: 'Restaurer un ou plusieurs avertissements de la corbeille' operationId: restaurerUnOuPlusieursAvertissementsDeLaCorbeille description: '' parameters: [] responses: { } tags: - Avertissements requestBody: required: true content: application/json: schema: type: object properties: warning_ids: type: array description: 'The id of an existing record in the warnings table.' example: - 1 items: type: integer required: - warning_ids /api/warnings/destroy: delete: summary: 'Supprimer définitivement un ou plusieurs avertissements' operationId: supprimerDfinitivementUnOuPlusieursAvertissements description: '' parameters: [] responses: { } tags: - Avertissements requestBody: required: true content: application/json: schema: type: object properties: warning_ids: type: array description: 'The id of an existing record in the warnings table.' example: - 19 items: type: integer required: - warning_ids /api/purchase-vouchers/all: post: summary: "Afficher une liste filtrée des bons d'achat" operationId: afficherUneListeFiltreDesBonsDachat description: '' parameters: [] responses: { } tags: - "Bons d'achats" requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 64 nullable: true nbre_items: type: integer description: '' example: 4 nullable: true filter_value: type: string description: '' example: nisi nullable: true status: type: string description: '' example: requesting_price nullable: true enum: - requesting_price - purchase_order - paid - delivered priority: type: string description: '' example: high nullable: true enum: - low - medium - high supplier_id: type: string description: 'The id of an existing record in the users table.' example: null nullable: true hotel_id: type: string description: 'The id of an existing record in the hotels table.' example: null nullable: true responsible_id: type: string description: 'The id of an existing record in the users table.' example: null nullable: true article_ids: type: array description: 'The id of an existing record in the articles table.' example: - 13 items: type: integer /api/purchase-vouchers: post: summary: "Enregistrer un bon d'achat" operationId: enregistrerUnBonDachat description: '' parameters: [] responses: { } tags: - "Bons d'achats" requestBody: required: true content: application/json: schema: type: object properties: supplier_id: type: integer description: 'The id of an existing record in the users table.' example: 2 nullable: false responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 20 nullable: false description: type: string description: '' example: 'Voluptatem et quia vel necessitatibus earum commodi.' nullable: true status: type: string description: '' example: paid nullable: true enum: - requesting_price - purchase_order - paid - delivered priority: type: string description: '' example: high nullable: false enum: - low - medium - high quotation_file: type: string description: '' example: ut nullable: true articles: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: - [] items: type: object properties: id: type: integer description: 'The id of an existing record in the articles table.' example: 15 nullable: false unit_price: type: integer description: '' example: 16 nullable: true quantity: type: integer description: 'Le champ value doit être au moins 1.' example: 31 nullable: false required: - id - quantity required: - supplier_id - responsible_id - priority - articles '/api/purchase-vouchers/{purchase_voucher}': get: summary: "Afficher un bon d'achat spécifique" operationId: afficherUnBonDachatSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - "Bons d'achats" put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - "Bons d'achats" requestBody: required: false content: application/json: schema: type: object properties: supplier_id: type: integer description: 'The id of an existing record in the users table.' example: 1 nullable: true responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 15 nullable: true description: type: string description: '' example: 'Minima magni accusamus et consequatur dolorem dolorem facilis.' nullable: true status: type: string description: '' example: purchase_order nullable: true enum: - requesting_price - purchase_order - paid - delivered priority: type: string description: '' example: medium nullable: true enum: - low - medium - high quotation_file: type: string description: '' example: quos nullable: true articles: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: null items: type: object nullable: true properties: id: type: integer description: 'The id of an existing record in the articles table.' example: 14 nullable: true unit_price: type: integer description: '' example: 12 nullable: true quantity: type: integer description: 'Le champ value doit être au moins 1.' example: 33 nullable: true payment_method: type: string description: '' example: Bank nullable: true enum: - Cash - Bank - OM - MOMO parameters: - in: path name: purchase_voucher description: '' example: 1 required: true schema: type: integer /api/purchase-vouchers/trash: post: summary: "Fonction pour le multiple archivage des bonds d'achat" operationId: fonctionPourLeMultipleArchivageDesBondsDachat description: '' parameters: [] responses: { } tags: - "Bons d'achats" requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 8 items: type: integer required: - ids /api/purchase-vouchers/restore: post: summary: "Fonction de restauration multiples des bonds d'achat" operationId: fonctionDeRestaurationMultiplesDesBondsDachat description: '' parameters: [] responses: { } tags: - "Bons d'achats" requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 16 items: type: integer required: - ids /api/purchase-vouchers/destroy: delete: summary: "Fonction de suppression définitive multiple des bonds d'achat" operationId: fonctionDeSuppressionDfinitiveMultipleDesBondsDachat description: '' parameters: [] responses: { } tags: - "Bons d'achats" requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 15 items: type: integer required: - ids /api/budgets/all: post: summary: 'Afficher les budgets' operationId: afficherLesBudgets description: '' parameters: [] responses: { } tags: - Budget requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 77 nullable: true nbre_items: type: integer description: '' example: 19 nullable: true type: type: string description: '' example: revenue nullable: true enum: - expense - revenue hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 13 nullable: true '/api/budgets/{budget_id}': get: summary: 'Afficher un budget spécifique' operationId: afficherUnBudgetSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Budget put: summary: 'Mettre à jour un budget' operationId: mettreJourUnBudget description: '' parameters: [] responses: { } tags: - Budget requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: ccqjtuuxnmuf nullable: true type: type: string description: '' example: expense nullable: true enum: - expense - revenue description: type: string description: '' example: 'Labore alias et amet.' nullable: true realisation: type: number description: 'Le champ value doit être au moins 0. Le champ value ne peut être supérieur à 100.' example: 6 nullable: true items: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: null items: type: object nullable: true properties: item_id: type: integer description: 'This field is required when items is present.' example: 19 nullable: false quantity: type: integer description: 'Le champ value doit être au moins 1.' example: 28 nullable: true number: type: integer description: 'Le champ value doit être au moins 1.' example: 25 nullable: true amount: type: number description: 'This field is required when items is present. Le champ value doit être au moins 0.' example: 35 nullable: false parameters: - in: path name: budget_id description: 'The ID of the budget.' example: 20 required: true schema: type: integer /api/budgets: post: summary: 'Créer un budget' operationId: crerUnBudget description: '' parameters: [] responses: { } tags: - Budget requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: uzylholekjdpymibva nullable: false type: type: string description: '' example: expense nullable: false enum: - expense - revenue description: type: string description: '' example: 'Illum sed labore tempore cupiditate et unde et.' nullable: true realisation: type: number description: 'Le champ value doit être au moins 0. Le champ value ne peut être supérieur à 100.' example: 9 nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 1 nullable: false items: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: - [] items: type: object properties: item_id: type: integer description: '' example: 7 nullable: false quantity: type: integer description: 'Le champ value doit être au moins 1.' example: 89 nullable: true number: type: integer description: 'Le champ value doit être au moins 1.' example: 82 nullable: true amount: type: number description: 'Le champ value doit être au moins 0.' example: 33 nullable: false required: - item_id - amount required: - name - type - hotel_id - items /api/budgets/trash: post: summary: 'Archiver (soft delete) les budgets' operationId: archiversoftDeleteLesBudgets description: '' parameters: [] responses: { } tags: - Budget requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 13 items: type: integer required: - ids /api/budgets/restore: post: summary: 'Restaurer les budgets archivés' operationId: restaurerLesBudgetsArchivs description: '' parameters: [] responses: { } tags: - Budget requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 6 items: type: integer required: - ids /api/budgets/destroy: delete: summary: 'Supprimer définitivement les budgets' operationId: supprimerDfinitivementLesBudgets description: '' parameters: [] responses: { } tags: - Budget requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 4 items: type: integer required: - ids /api/budgets/progress: post: summary: 'Calculer la progression détaillée par service/expense_type' operationId: calculerLaProgressionDtailleParServiceexpenseType description: '' parameters: [] responses: { } tags: - Budget requestBody: required: true content: application/json: schema: type: object properties: hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 7 nullable: false start_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true end_date: type: string description: 'Le champ value doit être une date valide. Le champ value doit être une date après ou égale à start_date.' example: '2078-01-21' nullable: true required: - hotel_id /api/room-categories/all: post: summary: 'Lister les catégories de chambres disponibles' operationId: listerLesCatgoriesDeChambresDisponibles description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 5 name: Famimial description: 'La meilleure' author: id: 1 name: Admin phone: null created_by: null updated_by: null deleted_by: null created_at: '2025-02-14 10:50:03' updated_at: '2025-02-14 10:50:03' deleted_at: null token: null created_at: '2025-02-14 14:51:35' deleted_at: null count_rooms: 0 - id: 2 name: VIP description: null author: null created_at: '2025-02-14 14:39:45' deleted_at: null count_rooms: 0 links: first: 'http://127.0.0.1:8000/api/room-categories/all?page=1' last: 'http://127.0.0.1:8000/api/room-categories/all?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Précédent' active: false - url: 'http://127.0.0.1:8000/api/room-categories/all?page=1' label: '1' active: true - url: null label: 'Suivant »' active: false path: 'http://127.0.0.1:8000/api/room-categories/all' per_page: 1000000 to: 2 total: 2 properties: data: type: array example: - id: 5 name: Famimial description: 'La meilleure' author: id: 1 name: Admin phone: null created_by: null updated_by: null deleted_by: null created_at: '2025-02-14 10:50:03' updated_at: '2025-02-14 10:50:03' deleted_at: null token: null created_at: '2025-02-14 14:51:35' deleted_at: null count_rooms: 0 - id: 2 name: VIP description: null author: null created_at: '2025-02-14 14:39:45' deleted_at: null count_rooms: 0 items: type: object properties: id: type: integer example: 5 name: type: string example: Famimial description: type: string example: 'La meilleure' author: type: object properties: id: type: integer example: 1 name: type: string example: Admin phone: type: string example: null created_by: type: string example: null updated_by: type: string example: null deleted_by: type: string example: null created_at: type: string example: '2025-02-14 10:50:03' updated_at: type: string example: '2025-02-14 10:50:03' deleted_at: type: string example: null token: type: string example: null created_at: type: string example: '2025-02-14 14:51:35' deleted_at: type: string example: null count_rooms: type: integer example: 0 links: type: object properties: first: type: string example: 'http://127.0.0.1:8000/api/room-categories/all?page=1' last: type: string example: 'http://127.0.0.1:8000/api/room-categories/all?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Précédent' active: false - url: 'http://127.0.0.1:8000/api/room-categories/all?page=1' label: '1' active: true - url: null label: 'Suivant »' active: false items: type: object properties: url: type: string example: null label: type: string example: '« Précédent' active: type: boolean example: false path: type: string example: 'http://127.0.0.1:8000/api/room-categories/all' per_page: type: integer example: 1000000 to: type: integer example: 2 total: type: integer example: 2 403: description: '' content: text/plain: schema: type: string example: "{\n\"message\": \"User does not have the right permissions.\"\n\"...\"\n}" tags: - 'Catégories de chambres' requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: required. example: 1 nullable: true nbre_items: type: integer description: '' example: 14 nullable: true filter_value: type: string description: '' example: et nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 10 nullable: true trashed: type: boolean description: '' example: false nullable: false '/api/room-categories/{room_category}': get: summary: 'Afficher les informations sur une catégorie de chambre' operationId: afficherLesInformationsSurUneCatgorieDeChambre description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Catégories de chambres' put: summary: 'Modifier une catégorie de chambre' operationId: modifierUneCatgorieDeChambre description: '' parameters: [] responses: { } tags: - 'Catégories de chambres' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: libero nullable: false hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 20 nullable: true description: type: string description: '' example: 'Ea velit ullam placeat tempora qui beatae laborum.' nullable: true required: - name parameters: - in: path name: room_category description: '' example: 9 required: true schema: type: integer /api/room-categories: post: summary: 'Ajouer une catégorie de chambre' operationId: ajouerUneCatgorieDeChambre description: '' parameters: [] responses: { } tags: - 'Catégories de chambres' requestBody: required: true content: application/json: schema: type: object properties: room_categories: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: - [] items: type: object properties: hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 20 nullable: false name: type: string description: '' example: aspernatur nullable: false description: type: string description: '' example: 'Quis doloribus officia eum aut quos eaque.' nullable: true required: - hotel_id - name required: - room_categories /api/room-categories/trash: delete: summary: "Archiver une ou plusieurs catégories de chambre\nNB: Un type de chambre ne peut pas être supprimé si il est lié à quelque chose d'autre dans le système" operationId: archiverUneOuPlusieursCatgoriesDeChambreNBUnTypeDeChambreNePeutPastreSupprimSiIlEstLiQuelqueChoseDautreDansLeSystme description: '' parameters: [] responses: { } tags: - 'Catégories de chambres' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the room_categories table.' example: - 20 items: type: integer required: - ids /api/room-categories/restore: post: summary: 'Restaurer une ou plusieurs catégories de chambre de la corbeille' operationId: restaurerUneOuPlusieursCatgoriesDeChambreDeLaCorbeille description: '' parameters: [] responses: { } tags: - 'Catégories de chambres' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 16 items: type: integer required: - ids /api/room-categories/destroy: delete: summary: "Forcer la suppression d'un ou plusieurs hotel(s) du système" operationId: forcerLaSuppressionDunOuPlusieursHotelsDuSystme description: '' parameters: [] responses: { } tags: - 'Catégories de chambres' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 3 items: type: integer required: - ids /api/rooms/all: post: summary: 'Afficher les informations sur les chambres disponibles/occupées' operationId: afficherLesInformationsSurLesChambresDisponiblesoccupes description: '' parameters: [] responses: { } tags: - Chambres requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 41 nullable: true nbre_items: type: integer description: '' example: 15 nullable: true filter_value: type: string description: '' example: nemo nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 15 nullable: true room_type_id: type: integer description: 'The id of an existing record in the room_types table.' example: 16 nullable: true room_category_id: type: integer description: 'The id of an existing record in the room_categories table.' example: 12 nullable: true service_id: type: integer description: '' example: 7 nullable: true status: type: string description: '' example: busy nullable: true enum: - free - busy floor: type: integer description: '' example: 1 nullable: true number_of_room: type: integer description: '' example: 20 nullable: true '/api/rooms/{room_id}': get: summary: "Afficher les informations d'une chambre" operationId: afficherLesInformationsDuneChambre description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Chambres put: summary: "Mettre à jour les informations d'une chambre d'hotel" operationId: mettreJourLesInformationsDuneChambreDhotel description: '' parameters: [] responses: { } tags: - Chambres requestBody: required: false content: application/json: schema: type: object properties: hotel_id: type: integer description: '' example: 11 nullable: true room_type_id: type: integer description: '' example: 18 nullable: true room_category_id: type: integer description: '' example: 13 nullable: true service_id: type: integer description: '' example: 16 nullable: true floor: type: integer description: '' example: 13 nullable: true number: type: integer description: '' example: 18 nullable: true price: type: integer description: '' example: 3 nullable: true number_of_room: type: integer description: '' example: 9 nullable: true image: type: string description: '' example: possimus nullable: true capacity: type: integer description: '' example: 9 nullable: true status: type: string description: '' example: busy nullable: true enum: - free - busy description: type: string description: '' example: 'Et ullam tenetur iure et sit et.' nullable: true parameters: - in: path name: room_id description: 'The ID of the room.' example: 1 required: true schema: type: integer /api/rooms: post: summary: "Ajouter une ou plusieurs chambres d'hotel" operationId: ajouterUneOuPlusieursChambresDhotel description: '' parameters: [] responses: { } tags: - Chambres requestBody: required: true content: application/json: schema: type: object properties: rooms: type: array description: '' example: - [] items: type: object properties: hotel_id: type: integer description: '' example: 12 nullable: false room_type_id: type: integer description: '' example: 9 nullable: false room_category_id: type: integer description: '' example: 6 nullable: false service_id: type: integer description: '' example: 4 nullable: false floor: type: integer description: '' example: 13 nullable: true number: type: integer description: '' example: 20 nullable: true price: type: integer description: '' example: 20 nullable: false number_of_room: type: integer description: '' example: 18 nullable: true capacity: type: integer description: '' example: 7 nullable: false status: type: string description: '' example: busy nullable: false enum: - free - busy name: type: string description: '' example: facilis nullable: false description: type: string description: '' example: 'Ipsam harum eius illum et veritatis quia quibusdam soluta.' nullable: true image: type: string description: '' example: incidunt nullable: true required: - hotel_id - room_type_id - room_category_id - service_id - price - capacity - status - name required: - rooms /api/rooms/trash: delete: summary: "Archiver une ou plusieurs chambres d'hotel" operationId: archiverUneOuPlusieursChambresDhotel description: '' parameters: [] responses: { } tags: - Chambres requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the rooms table.' example: - 9 items: type: integer required: - ids /api/rooms/restore: post: summary: "Restaurer une ou plusieurs chambres d'hotel" operationId: restaurerUneOuPlusieursChambresDhotel description: '' parameters: [] responses: { } tags: - Chambres requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 19 items: type: integer required: - ids /api/rooms/destroy: delete: summary: "Supprimer une ou plusieurs chambres d'hotels" operationId: supprimerUneOuPlusieursChambresDhotels description: '' parameters: [] responses: { } tags: - Chambres requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 13 items: type: integer required: - ids /api/find-licence: post: summary: "Récupérer la route de l'application" operationId: rcuprerLaRouteDeLapplication description: '' parameters: [] responses: { } tags: - Clés requestBody: required: true content: application/json: schema: type: object properties: cle: type: string description: '' example: ut nullable: false required: - cle '/api/keys/{id}': get: summary: "Récuperer les clés d'applications" operationId: rcupererLesClsDapplications description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Clés parameters: - in: path name: id description: 'Optional parameter. The ID of the .' required: true schema: type: string examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: qui /api/orders/all: post: summary: 'Lister les commandes' operationId: listerLesCommandes description: '' parameters: [] responses: { } tags: - Commandes requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 5 nullable: true nbre_items: type: integer description: '' example: 4 nullable: true filter_value: type: string description: '' example: et nullable: true customer_id: type: integer description: 'The id of an existing record in the users table.' example: 6 nullable: true payment_mode: type: string description: '' example: qui nullable: true status: type: string description: '' example: confirmed nullable: true enum: - pending - paid - cancelled - confirmed payment_status: type: string description: '' example: completed nullable: true enum: - none - advance - completed product_id: type: integer description: 'The id of an existing record in the products table.' example: 2 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 20 nullable: true date_start: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true date_end: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 11 nullable: true '/api/orders/{order_id}': get: summary: "Afficher les détails d'une commande" operationId: afficherLesDtailsDuneCommande description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Commandes put: summary: 'Modifier une commande' operationId: modifierUneCommande description: '' parameters: [] responses: { } tags: - Commandes requestBody: required: false content: application/json: schema: type: object properties: customer_id: type: integer description: 'The id of an existing record in the users table.' example: 5 nullable: true payment_mode: type: string description: '' example: non nullable: true room_id: type: integer description: 'The id of an existing record in the rooms table.' example: 3 nullable: true room_service_id: type: integer description: 'The id of an existing record in the room_services table.' example: 10 nullable: true status: type: string description: '' example: pending nullable: true enum: - pending - paid - cancelled - confirmed delivery_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true products: type: array description: '' example: null items: type: object nullable: true properties: id: type: integer description: 'The id of an existing record in the products table.' example: 7 nullable: false quantity: type: integer description: 'Le champ value doit être au moins 1.' example: 69 nullable: false required: - id - quantity parameters: - in: path name: order_id description: 'The ID of the order.' example: 3 required: true schema: type: integer /api/orders: post: summary: 'Ajouter une commande' operationId: ajouterUneCommande description: '' parameters: [] responses: { } tags: - Commandes requestBody: required: true content: application/json: schema: type: object properties: customer_id: type: integer description: 'The id of an existing record in the users table.' example: 19 nullable: true payment_mode: type: string description: '' example: omnis nullable: true room_id: type: integer description: 'The id of an existing record in the rooms table.' example: 4 nullable: true room_service_id: type: integer description: 'The id of an existing record in the room_services table.' example: 7 nullable: true status: type: string description: '' example: cancelled nullable: true enum: - pending - paid - cancelled - confirmed delivery_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true products: type: array description: '' example: - [] items: type: object properties: id: type: integer description: 'The id of an existing record in the products table.' example: 1 nullable: false quantity: type: integer description: 'Le champ value doit être au moins 1.' example: 52 nullable: false required: - id - quantity required: - products /api/orders/trash: post: summary: 'Archiver (soft delete) les presences spécifiées.' operationId: archiversoftDeleteLesPresencesSpcifies description: '' parameters: [] responses: { } tags: - Commandes requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 19 items: type: integer required: - ids /api/orders/restore: post: summary: 'Restaurer les orders archivés.' operationId: restaurerLesOrdersArchivs description: '' parameters: [] responses: { } tags: - Commandes requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 3 items: type: integer required: - ids /api/orders/destroy: post: summary: 'Supprimer définitivement les orders spécifiés.' operationId: supprimerDfinitivementLesOrdersSpcifis description: '' parameters: [] responses: { } tags: - Commandes requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 3 items: type: integer required: - ids /api/contracts/all: post: summary: 'Retourne la liste des contrats avec la possibilité de filtrer et paginer les résultats.' operationId: retourneLaListeDesContratsAvecLaPossibilitDeFiltrerEtPaginerLesRsultats description: '' parameters: [] responses: { } tags: - Contrats requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: '' example: 2 nullable: true nbre_items: type: integer description: '' example: 12 nullable: true filter_value: type: string description: '' example: praesentium nullable: true position: type: string description: '' example: perspiciatis nullable: true status: type: string description: '' example: Active nullable: true enum: - Active - Terminated - Pending trashed: type: boolean description: '' example: true nullable: true '/api/contracts/{contract}': get: summary: 'Affiche les détails d’un contrat spécifique à partir de son identifiant.' operationId: afficheLesDtailsDunContratSpcifiquePartirDeSonIdentifiant description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Contrats put: summary: 'Met à jour les informations d’un contrat donné.' operationId: metJourLesInformationsDunContratDonn description: '' parameters: [] responses: { } tags: - Contrats requestBody: required: false content: application/json: schema: type: object properties: user_id: type: integer description: 'The id of an existing record in the users table.' example: 1 nullable: true user_approve_id: type: integer description: 'The id of an existing record in the users table.' example: 5 nullable: true type: type: string description: '' example: CDI nullable: true enum: - CDD - CDI - Stage description: type: string description: '' example: 'Non commodi consequatur hic nihil.' nullable: true start_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true duration: type: integer description: 'Le champ value doit être au moins 1.' example: 34 nullable: true working_hours: type: string description: '' example: veniam nullable: true position: type: string description: '' example: tenetur nullable: true gross_salary: type: number description: 'Le champ value doit être au moins 0.' example: 26 nullable: true status: type: string description: '' example: Terminated nullable: true enum: - Active - Terminated - Pending service_benefits: type: string description: '' example: delectus nullable: true bonus: type: string description: '' example: voluptate nullable: true number_days_off: type: integer description: '' example: 14 nullable: true parameters: - in: path name: contract description: 'The contract.' example: nisi required: true schema: type: string /api/contracts: post: summary: "Crée un nouveau contrat pour un utilisateur, après vérification d'absence de contrat actif." operationId: creUnNouveauContratPourUnUtilisateurAprsVrificationDabsenceDeContratActif description: '' parameters: [] responses: { } tags: - Contrats requestBody: required: true content: application/json: schema: type: object properties: user_id: type: integer description: 'The id of an existing record in the users table.' example: 19 nullable: false user_approve_id: type: integer description: 'The id of an existing record in the users table.' example: 16 nullable: false type: type: string description: '' example: blanditiis nullable: false description: type: string description: '' example: 'Quia animi similique perspiciatis consequatur.' nullable: true start_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: false duration: type: integer description: 'Le champ value doit être au moins 1.' example: 39 nullable: true working_hours: type: string description: '' example: optio nullable: false position: type: string description: '' example: et nullable: false gross_salary: type: number description: 'Le champ value doit être au moins 0.' example: 39 nullable: false status: type: string description: '' example: Pending nullable: true enum: - Active - Terminated - Pending service_benefits: type: string description: '' example: debitis nullable: true bonus: type: string description: '' example: dolores nullable: true number_days_off: type: integer description: '' example: 1 nullable: true required: - user_id - user_approve_id - type - start_date - working_hours - position - gross_salary /api/contracts/trash: post: summary: 'Archiver (soft delete) les contrats spécifiées.' operationId: archiversoftDeleteLesContratsSpcifies description: '' parameters: [] responses: { } tags: - Contrats requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 7 items: type: integer required: - ids /api/contracts/restore: post: summary: 'Restaurer les contrats archivés.' operationId: restaurerLesContratsArchivs description: '' parameters: [] responses: { } tags: - Contrats requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 6 items: type: integer required: - ids /api/contracts/destroy: post: summary: 'Supprimer définitivement les contrats spécifiés.' operationId: supprimerDfinitivementLesContratsSpcifis description: '' parameters: [] responses: { } tags: - Contrats requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 19 items: type: integer required: - ids /api/disbursements/all: post: summary: 'Afficher la liste des décaissements en fonction des filtres' operationId: afficherLaListeDesDcaissementsEnFonctionDesFiltres description: '' parameters: [] responses: { } tags: - Decaissements requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 36 nullable: true nbre_items: type: integer description: 'Le champ value doit être au moins 1.' example: 82 nullable: true filter_value: type: string description: '' example: vitae nullable: true supplier_id: type: integer description: 'The id of an existing record in the users table.' example: 13 nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 15 nullable: true purchase_order_id: type: integer description: 'The id of an existing record in the purchase_orders table.' example: 5 nullable: true user_id: type: integer description: 'The id of an existing record in the users table.' example: 4 nullable: true created_by: type: integer description: 'The id of an existing record in the users table.' example: 11 nullable: true responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 2 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 4 nullable: true payment_method: type: string description: '' example: Bank nullable: true enum: - Cash - Bank - OM - MOMO status: type: string description: '' example: approved nullable: true enum: - pending - approved - rejected reference: type: string description: '' example: nobis nullable: true date_start: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true date_end: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true expense_type_id: type: integer description: '' example: 7 nullable: true service_ids: type: array description: 'The id of an existing record in the services table.' example: - 8 items: type: integer /api/disbursements: post: summary: 'Enregistrer un nouveau décaissement' operationId: enregistrerUnNouveauDcaissement description: '' parameters: [] responses: { } tags: - Decaissements requestBody: required: true content: application/json: schema: type: object properties: payment_method: type: string description: '' example: Cash nullable: false enum: - Cash - Bank - OM - MOMO status: type: string description: '' example: rejected nullable: true enum: - pending - approved - rejected expense_type_id: type: string description: 'The id of an existing record in the expense_types table.' example: null nullable: true invoice_image: type: string description: '' example: aut nullable: true reasons: type: string description: '' example: ipsum nullable: true total_amount: type: number description: 'Le champ value doit être au moins 0.' example: 81 nullable: true disbursement_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true responsible_id: type: string description: 'The id of an existing record in the users table.' example: error nullable: false user_id: type: string description: 'The id of an existing record in the users table.' example: null nullable: true purchase_order_id: type: string description: 'The id of an existing record in the purchase_orders table. This field is required when service_id is not present.' example: null nullable: true service_id: type: string description: 'The id of an existing record in the services table. This field is required when purchase_order_id is not present.' example: null nullable: true validation_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true salary_components: type: array description: '' example: null items: type: object nullable: true properties: salary_component_id: type: string description: 'The id of an existing record in the salary_components table.' example: rerum nullable: false coef: type: number description: 'Le champ value doit être au moins 0.' example: 20 nullable: true base_amount: type: number description: 'Le champ value doit être au moins 0.' example: 88 nullable: true coef_patronal: type: number description: 'Le champ value doit être au moins 0.' example: 79 nullable: true base_patronal: type: number description: 'Le champ value doit être au moins 0.' example: 77 nullable: true required: - salary_component_id required: - payment_method - responsible_id '/api/disbursements/{disbursement_id}': get: summary: 'Afficher un décaissement spécifique' operationId: afficherUnDcaissementSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Decaissements put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - Decaissements requestBody: required: false content: application/json: schema: type: object properties: payment_method: type: string description: '' example: Bank nullable: true enum: - Cash - Bank - OM - MOMO status: type: string description: '' example: rejected nullable: true enum: - pending - approved - rejected expense_type_id: type: string description: 'The id of an existing record in the expense_types table.' example: null nullable: true invoice_image: type: string description: '' example: sit nullable: true reasons: type: string description: '' example: aut nullable: true total_amount: type: number description: 'Le champ value doit être au moins 0.' example: 15 nullable: true disbursement_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true responsible_id: type: string description: 'The id of an existing record in the users table.' example: null nullable: true user_id: type: string description: 'The id of an existing record in the users table.' example: null nullable: true purchase_order_id: type: string description: 'The id of an existing record in the purchase_orders table.' example: null nullable: true service_id: type: string description: 'The id of an existing record in the services table.' example: null nullable: true validation_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true salary_components: type: array description: '' example: null items: type: object nullable: true properties: salary_component_id: type: string description: 'The id of an existing record in the salary_components table.' example: culpa nullable: false coef: type: number description: 'Le champ value doit être au moins 0.' example: 7 nullable: true base_amount: type: number description: 'Le champ value doit être au moins 0.' example: 18 nullable: true coef_patronal: type: number description: 'Le champ value doit être au moins 0.' example: 65 nullable: true base_patronal: type: number description: 'Le champ value doit être au moins 0.' example: 48 nullable: true required: - salary_component_id parameters: - in: path name: disbursement_id description: 'The ID of the disbursement.' example: 6 required: true schema: type: integer /api/disbursements/trash: post: summary: 'Archiver (soft delete) les décaissements.' operationId: archiversoftDeleteLesDcaissements description: '' parameters: [] responses: { } tags: - Decaissements requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 3 items: type: integer required: - ids /api/disbursements/restore: post: summary: 'Restaurer les décaissements archivés.' operationId: restaurerLesDcaissementsArchivs description: '' parameters: [] responses: { } tags: - Decaissements requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 2 items: type: integer required: - ids /api/disbursements/destroy: post: summary: 'Supprimer définitivement les décaissements spécifiés.' operationId: supprimerDfinitivementLesDcaissementsSpcifis description: '' parameters: [] responses: { } tags: - Decaissements requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 10 items: type: integer required: - ids /api/supply-demands/all: post: summary: "Affiche la liste paginée des demandes d'approvisionnement, avec filtres optionnels." operationId: afficheLaListePagineDesDemandesDapprovisionnementAvecFiltresOptionnels description: '' parameters: [] responses: { } tags: - "Demande d'approvisionnement | Supply demand" requestBody: required: false content: application/json: schema: type: object properties: filter_value: type: string description: '' example: suscipit nullable: true responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 9 nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 4 nullable: true priority: type: string description: '' example: high nullable: true enum: - high - medium - low status: type: string description: '' example: accepted nullable: true enum: - pending - accepted - refused article_ids: type: array description: 'The id of an existing record in the articles table.' example: - 19 items: type: integer start_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true end_date: type: string description: 'Le champ value doit être une date valide. Le champ value doit être une date après ou égale à start_date.' example: '2064-09-19' nullable: true '/api/supply-demands/{supply_demand_id}': get: summary: "Affiche les détails d'une demande d'approvisionnement spécifique." operationId: afficheLesDtailsDuneDemandeDapprovisionnementSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - "Demande d'approvisionnement | Supply demand" put: summary: "Met à jour les informations d'une demande d'approvisionnement existante." operationId: metJourLesInformationsDuneDemandeDapprovisionnementExistante description: '' parameters: [] responses: { } tags: - "Demande d'approvisionnement | Supply demand" requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: knxfkectmgc nullable: true description: type: string description: '' example: 'Eius molestiae similique qui.' nullable: true responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 13 nullable: true status: type: string description: '' example: pending nullable: true enum: - pending - accepted - refused priority: type: string description: '' example: low nullable: true enum: - high - medium - low articles: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: null items: type: object nullable: true properties: id: type: integer description: 'The id of an existing record in the articles table.' example: 14 nullable: false unit_price: type: integer description: '' example: 1 nullable: true quantity: type: integer description: 'Le champ value doit être au moins 1.' example: 30 nullable: false supplier_id: type: integer description: 'The id of an existing record in the users table.' example: 16 nullable: false required: - id - quantity - supplier_id parameters: - in: path name: supply_demand_id description: 'The ID of the supply demand.' example: 1 required: true schema: type: integer /api/supply-demands: post: summary: "Crée une nouvelle demande d'approvisionnement." operationId: creUneNouvelleDemandeDapprovisionnement description: '' parameters: [] responses: { } tags: - "Demande d'approvisionnement | Supply demand" requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: vxeeoklvkqobfkfxvr nullable: true description: type: string description: '' example: 'Iusto reprehenderit at nam.' nullable: true responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 19 nullable: false status: type: string description: '' example: refused nullable: true enum: - pending - accepted - refused priority: type: string description: '' example: medium nullable: false enum: - high - medium - low articles: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: - [] items: type: object properties: id: type: integer description: 'The id of an existing record in the articles table.' example: 20 nullable: false unit_price: type: integer description: '' example: 2 nullable: true quantity: type: integer description: 'Le champ value doit être au moins 1.' example: 42 nullable: false supplier_id: type: integer description: 'The id of an existing record in the users table.' example: 14 nullable: false required: - id - quantity - supplier_id required: - responsible_id - priority - articles /api/supply-demands/trash: post: summary: "Met en corbeille (suppression logique) une ou plusieurs demandes d'approvisionnement." operationId: metEnCorbeillesuppressionLogiqueUneOuPlusieursDemandesDapprovisionnement description: '' parameters: [] responses: { } tags: - "Demande d'approvisionnement | Supply demand" requestBody: required: false content: application/json: schema: type: object properties: supply_demand_ids: type: array description: 'The id of an existing record in the supply_demands table.' example: - 8 items: type: integer /api/supply-demands/restore: post: summary: "Restaure une ou plusieurs demandes d'approvisionnement supprimées (suppression logique)." operationId: restaureUneOuPlusieursDemandesDapprovisionnementSupprimessuppressionLogique description: '' parameters: [] responses: { } tags: - "Demande d'approvisionnement | Supply demand" requestBody: required: false content: application/json: schema: type: object properties: supply_demand_ids: type: array description: 'The id of an existing record in the supply_demands table.' example: - 11 items: type: integer /api/explanation-requests/all: post: summary: "Afficher les demandes d'explication" operationId: afficherLesDemandesDexplication description: '' parameters: [] responses: { } tags: - "Demande d'explication / Explanation Request" requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 73 nullable: false nbre_items: type: integer description: 'Le champ value doit être au moins 1. Le champ value ne peut être supérieur à 1000.' example: 15 nullable: false '/api/explanation-requests/{explanation_request}': get: summary: "Afficher une demande d'explication spécifique" operationId: afficherUneDemandeDexplicationSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - "Demande d'explication / Explanation Request" put: summary: "Mettre a jour une demande d'explication" operationId: mettreAJourUneDemandeDexplication description: '' parameters: [] responses: { } tags: - "Demande d'explication / Explanation Request" requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: lbcmhke nullable: false description: type: string description: '' example: 'Dolor modi aliquid asperiores aliquid et qui nulla incidunt.' nullable: true idUser: type: integer description: 'The id of an existing record in the users table.' example: 7 nullable: false idResponsable: type: integer description: 'The id of an existing record in the users table.' example: 18 nullable: false image: type: string description: '' example: laboriosam nullable: true comments: type: string description: '' example: nesciunt nullable: true parameters: - in: path name: explanation_request description: '' example: 19 required: true schema: type: integer /api/explanation-requests: post: summary: "Creer une demande d'explication" operationId: creerUneDemandeDexplication description: '' parameters: [] responses: { } tags: - "Demande d'explication / Explanation Request" requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: dsrbg nullable: false description: type: string description: '' example: 'Sit ipsam harum voluptatem laboriosam.' nullable: true idUser: type: integer description: 'The id of an existing record in the users table.' example: 16 nullable: false idResponsable: type: integer description: 'The id of an existing record in the users table.' example: 19 nullable: false image: type: string description: '' example: est nullable: true comments: type: string description: '' example: voluptatum nullable: true required: - name - idUser - idResponsable /api/explanation-requests/trash: post: summary: "Archiver (soft delete) les demandes d'explication." operationId: archiversoftDeleteLesDemandesDexplication description: '' parameters: [] responses: { } tags: - "Demande d'explication / Explanation Request" requestBody: required: false content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the explanation_requests table.' example: - 19 items: type: integer /api/explanation-requests/restore: post: summary: "Restaurer les demandes d'explication archivées." operationId: restaurerLesDemandesDexplicationArchives description: '' parameters: [] responses: { } tags: - "Demande d'explication / Explanation Request" requestBody: required: false content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the explanation_requests table.' example: - 12 items: type: integer /api/explanation-requests/destroy: delete: summary: "Supprimer définitivement les demandes d'explication spécifiées." operationId: supprimerDfinitivementLesDemandesDexplicationSpcifies description: '' parameters: [] responses: { } tags: - "Demande d'explication / Explanation Request" requestBody: required: false content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the explanation_requests table.' example: - 5 items: type: integer /api/holidays/all: post: summary: 'Lister les congés enregistrés' operationId: listerLesCongsEnregistrs description: '' parameters: [] responses: { } tags: - 'Demande de congé' requestBody: required: false content: application/json: schema: type: object properties: user_id: type: integer description: 'The id of an existing record in the users table.' example: 8 nullable: true user_approve_id: type: integer description: 'The id of an existing record in the users table.' example: 7 nullable: true status: type: string description: '' example: rejected nullable: true enum: - pending_approval - in_progress - approved - rejected archive: type: string description: '' example: with_trashed nullable: true enum: - with_trashed - only_trashed date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true page_items: type: integer description: '' example: 19 nullable: true nbre_items: type: integer description: '' example: 15 nullable: true filter_value: type: string description: '' example: a nullable: true '/api/holidays/{holiday_id}': get: summary: "Afficher les détails d'une retenue sur salaire" operationId: afficherLesDtailsDuneRetenueSurSalaire description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Demande de congé' put: summary: 'Modifier une demande de congé' operationId: modifierUneDemandeDeCong description: '' parameters: [] responses: { } tags: - 'Demande de congé' requestBody: required: false content: application/json: schema: type: object properties: type: type: string description: '' example: laudantium nullable: true start_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d. Le champ value doit être une date après ou égale à today.' example: '2086-10-21' nullable: true end_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d. Le champ value doit être une date après ou égale à start_date.' example: '2070-06-28' nullable: true days_taken: type: integer description: '' example: 20 nullable: true reason: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: hzt nullable: true status: type: string description: '' example: pending_approval nullable: true enum: - pending_approval - in_progress - approved - rejected parameters: - in: path name: holiday_id description: 'The ID of the holiday.' example: 5 required: true schema: type: integer /api/holidays: post: summary: 'Enregistrer une demande de congé' operationId: enregistrerUneDemandeDeCong description: '' parameters: [] responses: { } tags: - 'Demande de congé' requestBody: required: true content: application/json: schema: type: object properties: type: type: string description: '' example: ut nullable: false start_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d. Le champ value doit être une date après ou égale à today.' example: '2032-08-18' nullable: false end_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d. Le champ value doit être une date après ou égale à start_date.' example: '2039-11-23' nullable: false days_taken: type: integer description: '' example: 4 nullable: false reason: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: nscbelzqzsabplybkqe nullable: false user_approve_id: type: integer description: 'The id of an existing record in the users table.' example: 17 nullable: false required: - type - start_date - end_date - days_taken - reason - user_approve_id /api/holidays/trash: delete: summary: 'Archiver une ou plusieurs demandes de congés' operationId: archiverUneOuPlusieursDemandesDeCongs description: '' parameters: [] responses: { } tags: - 'Demande de congé' requestBody: required: true content: application/json: schema: type: object properties: idHolidays: type: array description: 'The id of an existing record in the holidays table.' example: - 7 items: type: integer required: - idHolidays /api/holidays/restore: post: summary: 'Restaurer une ou plusieurs demandes de congés' operationId: restaurerUneOuPlusieursDemandesDeCongs description: '' parameters: [] responses: { } tags: - 'Demande de congé' requestBody: required: true content: application/json: schema: type: object properties: idHolidays: type: array description: 'The id of an existing record in the holidays table.' example: - 1 items: type: integer required: - idHolidays /api/holidays/destroy: delete: summary: 'Supprimer une ou plusieurs demandes de congés' operationId: supprimerUneOuPlusieursDemandesDeCongs description: '' parameters: [] responses: { } tags: - 'Demande de congé' requestBody: required: true content: application/json: schema: type: object properties: idHolidays: type: array description: 'The id of an existing record in the holidays table.' example: - 6 items: type: integer required: - idHolidays /api/permission-requests/all: post: summary: 'Affiche une liste paginée des demandes de permission.' operationId: afficheUneListePagineDesDemandesDePermission description: '' parameters: [] responses: { } tags: - 'Demandes de Permissions' requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 74 nullable: true nbre_items: type: integer description: 'Le champ value doit être au moins 1. Le champ value ne peut être supérieur à 10000.' example: 17 nullable: true filterValue: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: mcmfvpwmravscrwldllezmktj nullable: true departure: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true return: type: string description: 'Le champ value doit être une date valide. Le champ value doit être une date après datedeparture.' example: '2019-06-10' nullable: true duration: type: integer description: 'Le champ value doit être au moins 1.' example: 30 nullable: true status: type: string description: '' example: null nullable: true archive: type: string description: '' example: only_trashed nullable: true enum: - with_trashed - only_trashed '/api/permission-requests/{permissions_request}': get: summary: "Affiche les détails d'une demande de permission spécifique." operationId: afficheLesDtailsDuneDemandeDePermissionSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Demandes de Permissions' put: summary: 'Met à jour une demande de permission si elle est encore en attente.' operationId: metJourUneDemandeDePermissionSiElleEstEncoreEnAttente description: '' parameters: [] responses: { } tags: - 'Demandes de Permissions' requestBody: required: false content: application/json: schema: type: object properties: reason: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: mlursvmognjtiezsm nullable: true datedeparture: type: string description: 'Le champ value doit être une date valide. Le champ value doit être une date après ou égale à today.' example: '2052-09-06' nullable: true dateRetour: type: string description: 'Le champ value doit être une date valide. Le champ value doit être une date après datedeparture.' example: '2113-09-10' nullable: true duration: type: integer description: 'Le champ value doit être au moins 1.' example: 79 nullable: true status: type: string description: '' example: approved nullable: true enum: - pending - approved - rejected parameters: - in: path name: permissions_request description: '' example: saepe required: true schema: type: string /api/permission-requests: post: summary: 'Crée une nouvelle demande de permission.' operationId: creUneNouvelleDemandeDePermission description: '' parameters: [] responses: { } tags: - 'Demandes de Permissions' requestBody: required: true content: application/json: schema: type: object properties: reason: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: eelebsbjflfdm nullable: false departure: type: string description: 'Le champ value doit être une date valide. Le champ value doit être une date après ou égale à today.' example: '2104-06-11' nullable: false return: type: string description: 'Le champ value doit être une date valide. Le champ value doit être une date après departure.' example: '2058-07-01' nullable: true duration: type: integer description: 'Le champ value doit être au moins 1.' example: 26 nullable: true user_approve_id: type: integer description: 'The id of an existing record in the users table.' example: 2 nullable: false status: type: string description: '' example: approved nullable: true enum: - pending - approved - rejected required: - reason - departure - user_approve_id /api/permission-requests/trash: post: summary: 'Archiver (soft delete) les presences spécifiées.' operationId: archiversoftDeleteLesPresencesSpcifies description: '' parameters: [] responses: { } tags: - 'Demandes de Permissions' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 2 items: type: integer required: - ids /api/permission-requests/restore: post: summary: 'Restaurer les permission_requests archivés.' operationId: restaurerLesPermissionRequestsArchivs description: '' parameters: [] responses: { } tags: - 'Demandes de Permissions' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 18 items: type: integer required: - ids /api/permission-requests/destroy: post: summary: 'Supprimer définitivement les permission_requests spécifiés.' operationId: supprimerDfinitivementLesPermissionRequestsSpcifis description: '' parameters: [] responses: { } tags: - 'Demandes de Permissions' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 1 items: type: integer required: - ids /api/cash-ins/all: post: summary: 'Lister les encaissements' operationId: listerLesEncaissements description: '' parameters: [] responses: { } tags: - Encaissements requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 9 nullable: true nbre_items: type: integer description: '' example: 11 nullable: true filter_value: type: string description: '' example: nihil nullable: true seller_id: type: integer description: 'The id of an existing record in the users table.' example: 15 nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 11 nullable: true order_id: type: integer description: 'The id of an existing record in the orders table.' example: 17 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 18 nullable: true client_id: type: integer description: 'The id of an existing record in the users table.' example: 12 nullable: true created_by: type: integer description: 'The id of an existing record in the users table.' example: 12 nullable: true date_start: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true date_end: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true cashin_type: type: integer description: '' example: order nullable: true enum: - booking - order payment_method: type: string description: '' example: temporibus nullable: true '/api/cash-ins/{cash_in}': get: summary: "Afficher les détails d'un encaissement" operationId: afficherLesDtailsDunEncaissement description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Encaissements put: summary: 'Modifier un encaissement' operationId: modifierUnEncaissement description: '' parameters: [] responses: { } tags: - Encaissements requestBody: required: false content: application/json: schema: type: object properties: order_id: type: integer description: '' example: 3 nullable: true service_id: type: integer description: '' example: 4 nullable: true booking_id: type: integer description: '' example: 18 nullable: true payment_method: type: string description: '' example: iste nullable: true amount: type: number description: '' example: 91821.8186 nullable: true parameters: - in: path name: cash_in description: '' example: 11 required: true schema: type: integer /api/cash-ins: post: summary: 'Ajouter un encaissment' operationId: ajouterUnEncaissment description: '' parameters: [] responses: { } tags: - Encaissements requestBody: required: true content: application/json: schema: type: object properties: order_id: type: integer description: '' example: 15 nullable: true service_id: type: integer description: '' example: 15 nullable: false booking_id: type: integer description: '' example: 9 nullable: true payment_method: type: string description: '' example: aliquid nullable: false type: type: string description: '' example: totam nullable: true amount: type: number description: '' example: 323986.464 nullable: false date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true required: - service_id - payment_method - amount /api/cash-ins/trash: post: summary: 'Archiver (soft delete) les entrées spécifiées.' operationId: archiversoftDeleteLesEntresSpcifies description: '' parameters: [] responses: { } tags: - Encaissements requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 10 items: type: integer required: - ids /api/cash-ins/restore: post: summary: 'Restaurer les entrées archivées.' operationId: restaurerLesEntresArchives description: '' parameters: [] responses: { } tags: - Encaissements requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 1 items: type: integer required: - ids /api/cash-ins/destroy: post: summary: 'Supprimer définitivement les entrées spécifiées.' operationId: supprimerDfinitivementLesEntresSpcifies description: '' parameters: [] responses: { } tags: - Encaissements requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 5 items: type: integer required: - ids /api/other-incomes/all: post: summary: 'Lister les autres revenus' operationId: listerLesAutresRevenus description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 86 nullable: true nbre_items: type: integer description: 'Le champ value doit être au moins 1.' example: 22 nullable: true filter_value: type: string description: '' example: ea nullable: true name: type: string description: '' example: sunt nullable: true amount: type: number description: 'Le champ value doit être au moins 0.' example: 6 nullable: true date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true type: type: string description: '' example: et nullable: true source_name: type: string description: '' example: magni nullable: true start_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true end_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d. Le champ value doit être une date après ou égale à start_date.' example: '2069-09-19' nullable: true trashed: type: boolean description: '' example: true nullable: true '/api/other-incomes/{otherIncome_id}': get: summary: 'Afficher un revenu' operationId: afficherUnRevenu description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints put: summary: 'Modifier un revenu' operationId: modifierUnRevenu description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: '' example: et nullable: true amount: type: number description: 'Le champ value doit être au moins 0.' example: 31 nullable: true date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true type: type: string description: '' example: in nullable: true description: type: string description: '' example: 'At repellat numquam dolores quas nihil nisi fugiat.' nullable: true source_name: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: xwqdggwxi nullable: true parameters: - in: path name: otherIncome_id description: 'The ID of the otherIncome.' example: 11 required: true schema: type: integer /api/other-incomes: post: summary: 'Ajouter un revenu' operationId: ajouterUnRevenu description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: est nullable: false amount: type: number description: 'Le champ value doit être au moins 0.' example: 43 nullable: false date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: false type: type: string description: 'Le champ value ne peut contenir plus de 100 caractères.' example: oufoqewrtvnvy nullable: true description: type: string description: '' example: 'Quod quo delectus architecto in dicta expedita est.' nullable: true source_name: type: string description: '' example: non nullable: true required: - name - amount - date /api/other-incomes/trash: post: summary: 'Trash revenus' operationId: trashRevenus description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the other_incomes table.' example: - 9 items: type: integer /api/other-incomes/restore: post: summary: 'Restore revenus' operationId: restoreRevenus description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the other_incomes table.' example: - 10 items: type: integer /api/other-incomes/destroy: delete: summary: 'Suppression définitive' operationId: suppressionDfinitive description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the other_incomes table.' example: - 19 items: type: integer /api/presences/all: post: summary: 'Lister les présences' operationId: listerLesPrsences description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 2 nullable: true nbre_items: type: integer description: 'Le champ value doit être au moins 1.' example: 34 nullable: true filter_value: type: string description: '' example: sed nullable: true user_id: type: integer description: 'The id of an existing record in the users table.' example: 16 nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 16 nullable: true date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true start_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true end_date: type: string description: 'Le champ value doit être une date valide. Le champ value doit être une date après ou égale à start_date.' example: '2042-09-23' nullable: true type: type: string description: '' example: ut nullable: true trashed: type: boolean description: '' example: false nullable: true /api/presences: post: summary: 'Ajouter une présence' operationId: ajouterUnePrsence description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: user_id: type: integer description: 'The id of an existing record in the users table.' example: 6 nullable: false hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 12 nullable: true date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true hour: type: string description: 'Must be a valid date in the format H:i.' example: '08:05' nullable: true arrivalTime: type: string description: 'Must be a valid date in the format H:i.' example: '08:05' nullable: true departureTime: type: string description: 'Must be a valid date in the format H:i.' example: '08:05' nullable: true type: type: string description: '' example: numquam nullable: false reason: type: string description: '' example: ipsum nullable: true savingType: type: string description: '' example: atque nullable: false required: - user_id - type - savingType '/api/presences/{presence_id}': get: summary: 'Afficher une présence' operationId: afficherUnePrsence description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints put: summary: 'Modifier une présence' operationId: modifierUnePrsence description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: user_id: type: integer description: 'The id of an existing record in the users table.' example: 5 nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 2 nullable: true date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true hour: type: string description: 'Must be a valid date in the format H:i.' example: '08:05' nullable: true arrivalTime: type: string description: 'Must be a valid date in the format H:i.' example: '08:05' nullable: true departureTime: type: string description: 'Must be a valid date in the format H:i.' example: '08:05' nullable: true type: type: string description: '' example: maxime nullable: true reason: type: string description: '' example: tempora nullable: true savingType: type: string description: '' example: odio nullable: true parameters: - in: path name: presence_id description: 'The ID of the presence.' example: 4 required: true schema: type: integer /api/presences/trash: post: summary: 'Trash présences' operationId: trashPrsences description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the presences table.' example: - 18 items: type: integer required: - ids /api/presences/restore: post: summary: 'Restore présences' operationId: restorePrsences description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the presences table.' example: - 17 items: type: integer required: - ids /api/presences/destroy: post: summary: 'Supprimer définitivement des présences' operationId: supprimerDfinitivementDesPrsences description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the presences table.' example: - 11 items: type: integer required: - ids /api/events/all: post: summary: 'Lister les évènements' operationId: listerLesvnements description: '' parameters: [] responses: { } tags: - Evenements requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 76 nullable: true nbre_items: type: integer description: '' example: 16 nullable: true filter_value: type: string description: '' example: veritatis nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 10 nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 2 nullable: true type: type: string description: '' example: external nullable: true enum: - internal - external archive: type: string description: '' example: only_trashed nullable: true enum: - with_trashed - only_trashed '/api/events/{event_id}': get: summary: 'Afficher un évènement' operationId: afficherUnvnement description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Evenements put: summary: 'Modifier un évènement' operationId: modifierUnvnement description: '' parameters: [] responses: { } tags: - Evenements requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 200 caractères.' example: kttwqfjfonqmpubxozjn nullable: true description: type: string description: '' example: 'Sunt deleniti qui deleniti occaecati fuga dolorem consequuntur.' nullable: true start_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true end_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d. Le champ value doit être une date après ou égale à start_date.' example: '2069-04-24' nullable: true type: type: string description: '' example: external nullable: true enum: - internal - external parental_contribution: type: string description: '' example: null nullable: true budget: type: string description: '' example: blanditiis nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 11 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 10 nullable: true parameters: - in: path name: event_id description: 'The ID of the event.' example: 2 required: true schema: type: integer /api/events: post: summary: 'Ajouter un évènement' operationId: ajouterUnvnement description: '' parameters: [] responses: { } tags: - Evenements requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 200 caractères.' example: erktfrtmnzgzscebxprqn nullable: false description: type: string description: '' example: 'Rerum qui ea dolores quos quos.' nullable: false start_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: false end_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d. Le champ value doit être une date après ou égale à start_date.' example: '2050-06-18' nullable: false type: type: string description: '' example: internal nullable: false enum: - internal - external parental_contribution: type: string description: '' example: null nullable: true budget: type: string description: '' example: sed nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 7 nullable: false service_id: type: integer description: 'The id of an existing record in the services table.' example: 19 nullable: true required: - name - description - start_date - end_date - type - hotel_id /api/events/trash: post: summary: 'Archiver un ou plusieurs events' operationId: archiverUnOuPlusieursEvents description: '' parameters: [] responses: { } tags: - Evenements requestBody: required: true content: application/json: schema: type: object properties: event_ids: type: array description: 'The id of an existing record in the events table.' example: - 7 items: type: integer required: - event_ids /api/events/restore: post: summary: 'Restaurer un ou plusieurs events' operationId: restaurerUnOuPlusieursEvents description: '' parameters: [] responses: { } tags: - Evenements requestBody: required: true content: application/json: schema: type: object properties: event_ids: type: array description: 'The id of an existing record in the events table.' example: - 15 items: type: integer required: - event_ids /api/hotels/all: post: summary: 'Lister les hotels de la plateforme' operationId: listerLesHotelsDeLaPlateforme description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 3 name: 'Pessi Hotel' phone: +1-206-252-5925 description: 'Sit quibusdam.' stars: 4 email: isauer@example.net address: "5733 Payton Union\nLake Godfreymouth, LA 34761-3059" website: null author: null created_at: '2025-02-14 10:50:03' links: first: 'http://127.0.0.1:8000/api/hotels/all?page=1' last: 'http://127.0.0.1:8000/api/hotels/all?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Précédent' active: false - url: 'http://127.0.0.1:8000/api/hotels/all?page=1' label: '1' active: true - url: null label: 'Suivant »' active: false path: 'http://127.0.0.1:8000/api/hotels/all' per_page: 1000000 to: 3 total: 3 properties: data: type: array example: - id: 3 name: 'Pessi Hotel' phone: +1-206-252-5925 description: 'Sit quibusdam.' stars: 4 email: isauer@example.net address: "5733 Payton Union\nLake Godfreymouth, LA 34761-3059" website: null author: null created_at: '2025-02-14 10:50:03' items: type: object properties: id: type: integer example: 3 name: type: string example: 'Pessi Hotel' phone: type: string example: +1-206-252-5925 description: type: string example: 'Sit quibusdam.' stars: type: integer example: 4 email: type: string example: isauer@example.net address: type: string example: "5733 Payton Union\nLake Godfreymouth, LA 34761-3059" website: type: string example: null author: type: string example: null created_at: type: string example: '2025-02-14 10:50:03' links: type: object properties: first: type: string example: 'http://127.0.0.1:8000/api/hotels/all?page=1' last: type: string example: 'http://127.0.0.1:8000/api/hotels/all?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Précédent' active: false - url: 'http://127.0.0.1:8000/api/hotels/all?page=1' label: '1' active: true - url: null label: 'Suivant »' active: false items: type: object properties: url: type: string example: null label: type: string example: '« Précédent' active: type: boolean example: false path: type: string example: 'http://127.0.0.1:8000/api/hotels/all' per_page: type: integer example: 1000000 to: type: integer example: 3 total: type: integer example: 3 tags: - Hotels requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: required. example: 1 nullable: true nbre_items: type: integer description: '' example: 6 nullable: true filter_value: type: string description: '' example: eos nullable: true founder_id: type: integer description: 'The id of an existing record in the users table.' example: 6 nullable: true manager_id: type: integer description: 'The id of an existing record in the users table.' example: 11 nullable: true assistant_id: type: integer description: 'The id of an existing record in the users table.' example: 17 nullable: true package_id: type: integer description: 'The id of an existing record in the packages table.' example: 18 nullable: true '/api/hotels/{hotel_id}': get: summary: 'Afficher les informations sur un hotel' operationId: afficherLesInformationsSurUnHotel description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Hotels put: summary: "Modifier les informations d'un hotel" operationId: modifierLesInformationsDunHotel description: '' parameters: [] responses: { } tags: - Hotels requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: '' example: ratione nullable: true phone: type: string description: '' example: in nullable: true description: type: string description: '' example: 'Voluptatem id sunt qui dolorum nam omnis hic tempore.' nullable: true stars: type: integer description: 'Le champ value doit être au moins 1. Le champ value ne peut être supérieur à 5.' example: 2 nullable: true email: type: string description: 'Le champ value doit être une address e-mail valide.' example: kaya57@example.com nullable: true address: type: string description: '' example: nemo nullable: true website: type: string description: '' example: totam nullable: true logo: type: string description: '' example: cumque nullable: true rib: type: string description: '' example: earum nullable: true niu: type: string description: '' example: quidem nullable: true rc: type: string description: '' example: qui nullable: true creation_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true city: type: string description: '' example: distinctio nullable: true country: type: string description: '' example: iste nullable: true type: type: string description: '' example: iure nullable: true category: type: string description: '' example: commodi nullable: true founder_id: type: integer description: 'The id of an existing record in the users table.' example: 13 nullable: true manager_id: type: integer description: 'The id of an existing record in the users table.' example: 13 nullable: true assistant_id: type: integer description: 'The id of an existing record in the users table.' example: 12 nullable: true package_id: type: integer description: '' example: 9 nullable: true parameters: - in: path name: hotel_id description: 'The ID of the hotel.' example: 3 required: true schema: type: integer /api/hotels: post: summary: 'Créer un hôtel' operationId: crerUnHtel description: '' parameters: [] responses: { } tags: - Hotels requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: ipsam nullable: false phone: type: string description: '' example: alias nullable: false description: type: string description: '' example: 'Nisi et qui ut inventore ex consequuntur.' nullable: false stars: type: integer description: 'Le champ value doit être au moins 1. Le champ value ne peut être supérieur à 5.' example: 5 nullable: false email: type: string description: 'Le champ value doit être une address e-mail valide.' example: smith.odessa@example.net nullable: false address: type: string description: '' example: repudiandae nullable: false website: type: string description: '' example: autem nullable: true logo: type: string description: '' example: aliquid nullable: true phone2: type: string description: '' example: null nullable: true rib: type: string description: '' example: null nullable: true niu: type: string description: '' example: null nullable: true rc: type: string description: '' example: null nullable: true creation_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: false city: type: string description: 'Le champ value ne peut contenir plus de 100 caractères.' example: rhajszqvkcjkjmpuqnawkfapd nullable: false country: type: string description: 'Le champ value ne peut contenir plus de 100 caractères.' example: mfrlkvpnaebhoezpicbpjykn nullable: false type: type: string description: '' example: voluptatibus nullable: true category: type: string description: '' example: sit nullable: true founder_id: type: integer description: 'The id of an existing record in the users table.' example: 15 nullable: false manager_id: type: integer description: 'The id of an existing record in the users table.' example: 13 nullable: false assistant_id: type: integer description: 'The id of an existing record in the users table.' example: 3 nullable: true package_id: type: integer description: '' example: 9 nullable: false required: - name - phone - description - stars - email - address - creation_date - city - country - founder_id - manager_id - package_id /api/hotels/trash: delete: summary: "Archiver un ou plusieurs hotel(s)\nNB: Un hotel ne peut pas être supprimé si il est lié à quelque chose d'autre dans le système" operationId: archiverUnOuPlusieursHotelsNBUnHotelNePeutPastreSupprimSiIlEstLiQuelqueChoseDautreDansLeSystme description: '' parameters: [] responses: { } tags: - Hotels requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the hotels table.' example: - 18 items: type: integer required: - ids /api/hotels/restore: post: summary: 'Restaurer un ou plusieurs hotel(s) de la corbeille' operationId: restaurerUnOuPlusieursHotelsDeLaCorbeille description: '' parameters: [] responses: { } tags: - Hotels requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 8 items: type: integer required: - ids /api/hotels/destroy: delete: summary: "Forcer la suppression d'un ou plusieurs hotel(s) du système" operationId: forcerLaSuppressionDunOuPlusieursHotelsDuSystme description: '' parameters: [] responses: { } tags: - Hotels requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 3 items: type: integer required: - ids /api/article-movements/all: post: summary: "Lister les mouvements d'article en fonction du filtre" operationId: listerLesMouvementsDarticleEnFonctionDuFiltre description: '' parameters: [] responses: { } tags: - "Mouvements d'articles" requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 80 nullable: true nbre_items: type: integer description: '' example: 3 nullable: true filter_value: type: string description: '' example: architecto nullable: true article_id: type: integer description: 'The id of an existing record in the articles table.' example: 1 nullable: true operation_type: type: string description: '' example: entry nullable: true enum: - entry - exit product_id: type: integer description: 'The id of an existing record in the products table.' example: 19 nullable: true user_id: type: integer description: 'The id of an existing record in the users table.' example: 18 nullable: true from_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true to_date: type: string description: 'Le champ value doit être une date valide. Le champ value doit être une date après ou égale à from_date.' example: '2099-03-03' nullable: true date_start: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true date_end: type: string description: 'Le champ value doit être une date valide. Le champ value doit être une date après ou égale à date_start.' example: '2059-12-29' nullable: true '/api/article-movements/{article_movement_id}': get: summary: "Afficher un mouvement d'article spécifique" operationId: afficherUnMouvementDarticleSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - "Mouvements d'articles" parameters: - in: path name: article_movement_id description: 'The ID of the article movement.' example: 1 required: true schema: type: integer /api/product-movements/all: post: summary: 'Lister les mouvements de produit en fonction du filtre' operationId: listerLesMouvementsDeProduitEnFonctionDuFiltre description: '' parameters: [] responses: { } tags: - 'Mouvements des produits' requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 65 nullable: true nbre_items: type: integer description: '' example: 17 nullable: true filter_value: type: string description: '' example: totam nullable: true product_id: type: integer description: 'The id of an existing record in the products table.' example: 13 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 6 nullable: true operation_type: type: string description: '' example: exit nullable: true enum: - entry - exit user_id: type: integer description: 'The id of an existing record in the users table.' example: 17 nullable: true date_start: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true date_end: type: string description: 'Le champ value doit être une date valide. Le champ value doit être une date après ou égale à date_start.' example: '2027-03-12' nullable: true /api/product-movements: post: summary: "Effectuer un mouvement de produit (possibilité d'en créer)" operationId: effectuerUnMouvementDeProduitpossibilitDenCrer description: '' parameters: [] responses: { } tags: - 'Mouvements des produits' requestBody: required: true content: application/json: schema: type: object properties: quantity: type: integer description: '' example: 19 nullable: false description: type: string description: '' example: 'Ut est ab consectetur rerum eveniet.' nullable: true operation_type: type: string description: '' example: entry nullable: false enum: - entry - exit product_id: type: integer description: 'The id of an existing record in the products table.' example: 14 nullable: false required: - quantity - operation_type - product_id '/api/product-movements/{product_movement_id}': get: summary: 'Afficher un mouvement de produit spécifique' operationId: afficherUnMouvementDeProduitSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Mouvements des produits' parameters: - in: path name: product_movement_id description: 'The ID of the product movement.' example: 1 required: true schema: type: integer /api/packages/all: post: summary: 'Lister les packages / forfaits disponibles' operationId: listerLesPackagesForfaitsDisponibles description: '' parameters: [] responses: { } tags: - 'Packages / Forfaits' requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 73 nullable: true nbre_items: type: integer description: '' example: 18 nullable: true filter_value: type: string description: '' example: vitae nullable: true website: type: boolean description: '' example: false nullable: true support_type: type: string description: '' example: premium nullable: true enum: - classic - premium electronic_payment: type: boolean description: '' example: false nullable: true mail_pro: type: boolean description: '' example: true nullable: true '/api/packages/{package_id}': get: summary: 'Afficher les informations sur un package' operationId: afficherLesInformationsSurUnPackage description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Packages / Forfaits' put: summary: "Modifier les informations d'un package" operationId: modifierLesInformationsDunPackage description: '' parameters: [] responses: { } tags: - 'Packages / Forfaits' requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: '' example: ad nullable: true amount: type: string description: '' example: null nullable: true website: type: boolean description: '' example: true nullable: true support_type: type: string description: '' example: classic nullable: true enum: - classic - premium electronic_payment: type: boolean description: '' example: true nullable: true mail_pro: type: boolean description: '' example: true nullable: true parameters: - in: path name: package_id description: 'The ID of the package.' example: 1 required: true schema: type: integer /api/packages: post: summary: 'Créer un package / forfait' operationId: crerUnPackageForfait description: '' parameters: [] responses: { } tags: - 'Packages / Forfaits' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: autem nullable: false amount: type: string description: '' example: voluptatibus nullable: false website: type: boolean description: '' example: false nullable: false support_type: type: string description: '' example: premium nullable: false enum: - classic - premium electronic_payment: type: boolean description: '' example: false nullable: false mail_pro: type: boolean description: '' example: true nullable: false required: - name - amount - website - support_type - electronic_payment - mail_pro /api/packages/trash: post: summary: 'Fonction pour le multiple archivage des packages' operationId: fonctionPourLeMultipleArchivageDesPackages description: '' parameters: [] responses: { } tags: - 'Packages / Forfaits' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 1 items: type: integer required: - ids /api/packages/restore: post: summary: 'Fonction de restauration multiples des packages' operationId: fonctionDeRestaurationMultiplesDesPackages description: '' parameters: [] responses: { } tags: - 'Packages / Forfaits' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 18 items: type: integer required: - ids /api/packages/destroy: delete: summary: 'Fonction de suppression définitive multiple des packages' operationId: fonctionDeSuppressionDfinitiveMultipleDesPackages description: '' parameters: [] responses: { } tags: - 'Packages / Forfaits' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 15 items: type: integer required: - ids /api/payments/mtn/webhook: post: summary: 'Webhook MTN' operationId: webhookMTN description: 'Reçoit les notifications asynchrones de MTN Mobile Money.' parameters: [] responses: { } tags: - 'Paiements MTN Mobile Money' /api/payments/mtn/initiate: post: summary: 'Initier un paiement MTN' operationId: initierUnPaiementMTN description: 'Lance une demande de Push STK MTN vers le mobile du client.' parameters: [] responses: { } tags: - 'Paiements MTN Mobile Money' requestBody: required: true content: application/json: schema: type: object properties: booking_id: type: integer description: 'ID de la réservation (optionnel).' example: 1 nullable: true order_id_hms: type: integer description: 'ID de la commande HMS (optionnel).' example: 12 nullable: true service_id: type: integer description: 'ID du service direct (optionnel).' example: 5 nullable: true amount: type: number description: 'Montant de la transaction.' example: 5000.0 nullable: false payment_mode: type: string description: 'Mode de paiement (MTN Mobile Money).' example: 'MTN Mobile Money' nullable: false phonePayeur: type: string description: 'Numéro MTN du payeur (format 6xxxxxxxx).' example: '670000000' nullable: false reference: type: string description: 'Référence personnalisée.' example: 'Réservation Suite 204' nullable: true required: - amount - payment_mode - phonePayeur '/api/payments/mtn/status/{transaction}': get: summary: 'Vérifier le statut (MTN)' operationId: vrifierLeStatutMTN description: "Permet de consulter l'état d'un paiement MTN. Si réussi, un encaissement (CashIn) est créé." parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Paiements MTN Mobile Money' parameters: - in: path name: transaction description: '' example: molestiae required: true schema: type: string - in: path name: id description: 'ID de la transaction HMS.' example: 2 required: true schema: type: integer /api/payments/mtn/statistics: post: summary: 'Statistiques MTN' operationId: statistiquesMTN description: 'Fournit des statistiques sur les paiements MTN Mobile Money.' parameters: [] responses: { } tags: - 'Paiements MTN Mobile Money' requestBody: required: false content: application/json: schema: type: object properties: idEstablishment: type: integer description: "ID de l'établissement (optionnel)." example: 1 nullable: false start_date: type: string description: 'Date de début (optionnel).' example: '2023-01-01' nullable: false end_date: type: string description: 'Date de fin (optionnel).' example: '2023-12-31' nullable: false /api/payments/orange/callback: post: summary: 'Webhook Orange Money' operationId: webhookOrangeMoney description: "Reçoit les notifications asynchrones d'Orange Money pour les paiements Web et Mobile." parameters: [] responses: { } tags: - 'Paiements Orange Money' /api/payments/orange/initiate: post: summary: "Initiation d'un paiement Mobile Orange (STK Push)" operationId: initiationDunPaiementMobileOrangeSTKPush description: "Déclenche un paiement push sur le téléphone du client via l'API mobile Orange.\nLe client reçoit une notification USSD demandant confirmation avec son PIN.\n\nÉtapes :\n1. Vérification du solde et validation des données\n2. Création de l'enregistrement Transaction\n3. Initialisation via l'API /mp/init\n4. Déclenchement du paiement via /mp/pay" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: idTransaction: 123 status: PENDING properties: idTransaction: type: integer example: 123 status: type: string example: PENDING 400: description: '' content: application/json: schema: type: object example: error: 'Numéro bénéficiaire incorrect' properties: error: type: string example: 'Numéro bénéficiaire incorrect' tags: - 'Paiements Orange Money' requestBody: required: true content: application/json: schema: type: object properties: booking_id: type: integer description: 'ID de la réservation (optionnel).' example: 1 nullable: true order_id_hms: type: integer description: 'ID de la commande HMS (optionnel).' example: 12 nullable: true service_id: type: integer description: 'ID du service direct (optionnel).' example: 5 nullable: true amount: type: number description: 'Montant de la transaction.' example: 5000.0 nullable: false payment_mode: type: string description: 'Mode de paiement (Orange Money).' example: 'Orange Money' nullable: false phonePayeur: type: string description: 'Numéro Orange du payeur (format 6xxxxxxxx).' example: '690000000' nullable: false reference: type: string description: 'Référence personnalisée.' example: 'Paiement Chambre 102' nullable: true required: - amount - payment_mode - phonePayeur '/api/payments/orange/status/{transaction}': get: summary: 'Vérifier le statut (Orange)' operationId: vrifierLeStatutOrange description: "Permet de consulter l'état final d'une transaction. Si la transaction est réussie,\nun encaissement (CashIn) est automatiquement généré." parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Paiements Orange Money' parameters: - in: path name: transaction description: '' example: explicabo required: true schema: type: string - in: path name: id description: 'ID de la transaction HMS.' example: 1 required: true schema: type: integer /api/settings/all: post: summary: "Lister les paramètres globaux de l'app" operationId: listerLesParamtresGlobauxDeLapp description: '' parameters: [] responses: { } tags: - 'Paramètres Généraux' requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 89 nullable: true nbre_items: type: integer description: '' example: 20 nullable: true filter_value: type: string description: '' example: vel nullable: true '/api/settings/{setting_id}': get: summary: "Afficher les détails d'un paramètre global" operationId: afficherLesDtailsDunParamtreGlobal description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Paramètres Généraux' put: summary: "Modifier la valeur d'un paramètre global" operationId: modifierLaValeurDunParamtreGlobal description: '' parameters: [] responses: { } tags: - 'Paramètres Généraux' requestBody: required: true content: application/json: schema: type: object properties: value: type: string description: '' example: ad nullable: false required: - value parameters: - in: path name: setting_id description: 'The ID of the setting.' example: 1 required: true schema: type: integer /api/permissions/all: post: summary: 'Afficher la liste des permissions' operationId: afficherLaListeDesPermissions description: '' parameters: [] responses: { } tags: - Permissions requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 61 nullable: true nbre_items: type: integer description: '' example: 15 nullable: true filter_value: type: string description: '' example: est nullable: true /api/permissions: post: summary: 'Ajouter une liste de permission' operationId: ajouterUneListeDePermission description: '' parameters: [] responses: { } tags: - Permissions requestBody: required: true content: application/json: schema: type: object properties: permissions: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: - [] items: type: object properties: name: type: string description: '' example: et nullable: false description: type: string description: '' example: 'Dolor minima asperiores ipsum voluptates est vel temporibus.' nullable: true ressource: type: string description: '' example: quisquam nullable: false required: - name - ressource required: - permissions '/api/permissions/{permission}': get: summary: 'Afficher une permission spécifique' operationId: afficherUnePermissionSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Permissions put: summary: 'Mettre a jour une permission spécifique' operationId: mettreAJourUnePermissionSpcifique description: '' parameters: [] responses: { } tags: - Permissions requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: voluptas nullable: false permissions: type: array description: '' example: - [] items: type: object properties: description: type: string description: '' example: 'Distinctio excepturi qui nam in ipsum aliquam sunt.' nullable: true ressource: type: string description: '' example: beatae nullable: true required: - name parameters: - in: path name: permission description: 'The permission.' example: deleniti required: true schema: type: string /api/permissions/trash: post: summary: 'Fonction pour le multiple archivage des permissions' operationId: fonctionPourLeMultipleArchivageDesPermissions description: '' parameters: [] responses: { } tags: - Permissions requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 19 items: type: integer required: - ids /api/permissions/restore: post: summary: 'Fonction de restauration multiples des permissions' operationId: fonctionDeRestaurationMultiplesDesPermissions description: '' parameters: [] responses: { } tags: - Permissions requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 9 items: type: integer required: - ids /api/permissions/destroy: post: summary: 'Fonction de suppression définitive multiple des permissions' operationId: fonctionDeSuppressionDfinitiveMultipleDesPermissions description: '' parameters: [] responses: { } tags: - Permissions requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 4 items: type: integer required: - ids /api/staff-presences/all: post: summary: 'Afficher la liste filtrée des présences du personnel' operationId: afficherLaListeFiltreDesPrsencesDuPersonnel description: '' parameters: [] responses: { } tags: - 'Presence du personnel / Staff presence' requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 8 nullable: true nbre_items: type: integer description: '' example: 15 nullable: true filter_value: type: string description: '' example: ea nullable: true type: type: string description: '' example: employ nullable: true enum: - staff - employ scan_per_course: type: boolean description: '' example: false nullable: true saving_type: type: string description: '' example: manual nullable: true enum: - manual - qr_code user_id: type: integer description: 'The id of an existing record in the users table.' example: 13 nullable: true date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true '/api/staff-presences/{staff_presence_id}': get: summary: 'Display the specified resource.' operationId: displayTheSpecifiedResource description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Presence du personnel / Staff presence' put: summary: 'Modifier une présence du personnel' operationId: modifierUnePrsenceDuPersonnel description: '' parameters: [] responses: { } tags: - 'Presence du personnel / Staff presence' requestBody: required: false content: application/json: schema: type: object properties: user_id: type: integer description: 'The id of an existing record in the users table.' example: 13 nullable: true scan_per_course: type: boolean description: '' example: true nullable: true type: type: string description: '' example: employ nullable: true enum: - staff - employ date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true time: type: string description: 'Must be a valid date in the format H:i:s.' example: '08:05:42' nullable: true arrival_time: type: string description: 'Must be a valid date in the format H:i:s.' example: '08:05:42' nullable: true departure_time: type: string description: 'Must be a valid date in the format H:i:s.' example: '08:05:42' nullable: true reason: type: string description: '' example: est nullable: true parameters: - in: path name: staff_presence_id description: 'The ID of the staff presence.' example: 12 required: true schema: type: integer /api/staff-presences: post: summary: 'Enregistrer une nouvelle présence de personnel.' operationId: enregistrerUneNouvellePrsenceDePersonnel description: '' parameters: [] responses: { } tags: - 'Presence du personnel / Staff presence' requestBody: required: true content: application/json: schema: type: object properties: user_id: type: integer description: 'The id of an existing record in the users table.' example: 8 nullable: false scan_per_course: type: boolean description: '' example: true nullable: false type: type: string description: '' example: employ nullable: false enum: - staff - employ date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true arrival_time: type: string description: 'Must be a valid date in the format H:i:s.' example: '08:05:42' nullable: true departure_time: type: string description: 'Must be a valid date in the format H:i:s.' example: '08:05:42' nullable: true reason: type: string description: '' example: eum nullable: true required: - user_id - scan_per_course - type /api/staff-presences/trash: post: summary: 'Archiver (soft delete) les presences spécifiées.' operationId: archiversoftDeleteLesPresencesSpcifies description: '' parameters: [] responses: { } tags: - 'Presence du personnel / Staff presence' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 1 items: type: integer required: - ids /api/staff-presences/restore: post: summary: 'Restaurer les staff_presences archivés.' operationId: restaurerLesStaffPresencesArchivs description: '' parameters: [] responses: { } tags: - 'Presence du personnel / Staff presence' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 20 items: type: integer required: - ids /api/staff-presences/destroy: delete: summary: 'Supprimer définitivement les staff_presences spécifiés.' operationId: supprimerDfinitivementLesStaffPresencesSpcifis description: '' parameters: [] responses: { } tags: - 'Presence du personnel / Staff presence' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 15 items: type: integer required: - ids /api/products/all: post: summary: 'Afficher la liste des produits' operationId: afficherLaListeDesProduits description: '' parameters: [] responses: { } tags: - Produits requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 19 nullable: true nbre_items: type: integer description: '' example: 7 nullable: true filter_value: type: string description: '' example: sit nullable: true article_ids: type: array description: 'The id of an existing record in the articles table.' example: - 16 items: type: integer type: type: string description: '' example: storable nullable: true enum: - consumable - storable expired: type: boolean description: '' example: false nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 7 nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 15 nullable: true /api/products: post: summary: 'Ajouter de nouveaux produits' operationId: ajouterDeNouveauxProduits description: '' parameters: [] responses: { } tags: - Produits requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: qui nullable: false type: type: string description: '' example: consumable nullable: false enum: - consumable - storable image: type: string description: '' example: aspernatur nullable: true price: type: number description: '' example: 7.0 nullable: false manufacturing_cost: type: number description: 'Le champ value doit être au moins 0.' example: 58 nullable: true description: type: string description: '' example: 'Culpa rerum eveniet autem deleniti.' nullable: true alert_quantity: type: integer description: '' example: 18 nullable: true status: type: string description: '' example: pending nullable: true enum: - pending - validated quantity: type: integer description: 'Le champ value doit être au moins 0.' example: 19 nullable: true expiry_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 3 nullable: true articles: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: - [] items: type: object properties: id: type: integer description: 'The id of an existing record in the articles table.' example: 10 nullable: false quantity: type: number description: 'Le champ value doit être au moins 0.' example: 76 nullable: false required: - id - quantity required: - name - type - price - articles '/api/products/{product_id}': get: summary: 'Afficher un produit spécifique' operationId: afficherUnProduitSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Produits put: summary: 'Modifier un produit spécifique' operationId: modifierUnProduitSpcifique description: '' parameters: [] responses: { } tags: - Produits requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: '' example: aliquam nullable: true type: type: string description: '' example: storable nullable: true enum: - consumable - storable image: type: string description: '' example: qui nullable: true price: type: number description: '' example: 3.0 nullable: true manufacturing_cost: type: number description: 'Le champ value doit être au moins 0.' example: 3 nullable: true description: type: string description: '' example: 'A ad consequatur iste facilis perspiciatis.' nullable: true alert_quantity: type: integer description: '' example: 13 nullable: true status: type: string description: '' example: pending nullable: true enum: - pending - validated quantity: type: integer description: 'Le champ value doit être au moins 0.' example: 44 nullable: true expiry_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 11 nullable: true articles: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: null items: type: object nullable: true properties: id: type: integer description: 'The id of an existing record in the articles table.' example: 8 nullable: true quantity: type: integer description: 'Le champ value doit être au moins 1.' example: 70 nullable: true parameters: - in: path name: product_id description: 'The ID of the product.' example: 13 required: true schema: type: integer /api/products/trash: post: summary: 'Fonction pour le multiple archivage des products' operationId: fonctionPourLeMultipleArchivageDesProducts description: '' parameters: [] responses: { } tags: - Produits requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 3 items: type: integer required: - ids /api/products/restore: post: summary: 'Fonction de restauration multiples des products' operationId: fonctionDeRestaurationMultiplesDesProducts description: '' parameters: [] responses: { } tags: - Produits requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 12 items: type: integer required: - ids /api/products/destroy: delete: summary: 'Fonction de suppression définitive multiple des products' operationId: fonctionDeSuppressionDfinitiveMultipleDesProducts description: '' parameters: [] responses: { } tags: - Produits requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 15 items: type: integer required: - ids /api/punishments/all: post: summary: 'Liste les sanctions avec filtrage par utilisateur, type ou valeur de recherche.' operationId: listeLesSanctionsAvecFiltrageParUtilisateurTypeOuValeurDeRecherche description: '' parameters: [] responses: { } tags: - Punitions requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 55 nullable: true nbre_items: type: integer description: '' example: 14 nullable: true filter_value: type: string description: '' example: rerum nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 14 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 14 nullable: true user_id: type: integer description: 'The id of an existing record in the users table.' example: 18 nullable: true type: type: integer description: '' example: 6 nullable: true '/api/punishments/{punishment_id}': get: summary: "Affiche les détails d'une sanction spécifique." operationId: afficheLesDtailsDuneSanctionSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Punitions put: summary: "Met à jour les informations d'une sanction existante." operationId: metJourLesInformationsDuneSanctionExistante description: '' parameters: [] responses: { } tags: - Punitions requestBody: required: false content: application/json: schema: type: object properties: description: type: string description: '' example: 'Sint dolor consequatur occaecati ratione molestiae laborum.' nullable: true user_id: type: integer description: 'The id of an existing record in the users table.' example: 5 nullable: true type: type: string description: '' example: repudiandae nullable: true reasons: type: string description: '' example: corrupti nullable: true parameters: - in: path name: punishment_id description: 'The ID of the punishment.' example: 6 required: true schema: type: integer /api/punishments: post: summary: 'Crée une ou plusieurs sanctions à partir des données fournies.' operationId: creUneOuPlusieursSanctionsPartirDesDonnesFournies description: '' parameters: [] responses: { } tags: - Punitions requestBody: required: true content: application/json: schema: type: object properties: punishments: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: - [] items: type: object properties: description: type: string description: '' example: 'Quibusdam vitae ex qui qui.' nullable: true user_id: type: integer description: 'The id of an existing record in the users table.' example: 9 nullable: false type: type: string description: '' example: a nullable: false reasons: type: string description: '' example: animi nullable: false required: - user_id - type - reasons required: - punishments /api/punishments/trash: delete: summary: 'Met en corbeille (soft delete) une ou plusieurs sanctions.' operationId: metEnCorbeillesoftDeleteUneOuPlusieursSanctions description: '' parameters: [] responses: { } tags: - Punitions requestBody: required: true content: application/json: schema: type: object properties: punishment_ids: type: array description: 'The id of an existing record in the punishments table.' example: - 15 items: type: integer required: - punishment_ids /api/punishments/restore: post: summary: 'Restaure une ou plusieurs sanctions mises en corbeille.' operationId: restaureUneOuPlusieursSanctionsMisesEnCorbeille description: '' parameters: [] responses: { } tags: - Punitions requestBody: required: true content: application/json: schema: type: object properties: punishment_ids: type: array description: 'The id of an existing record in the punishments table.' example: - 14 items: type: integer required: - punishment_ids /api/punishments/destroy: delete: summary: 'Supprime définitivement une ou plusieurs sanctions mises en corbeille.' operationId: supprimeDfinitivementUneOuPlusieursSanctionsMisesEnCorbeille description: '' parameters: [] responses: { } tags: - Punitions requestBody: required: true content: application/json: schema: type: object properties: punishment_ids: type: array description: 'The id of an existing record in the punishments table.' example: - 7 items: type: integer required: - punishment_ids /api/salaries-deductions/all: post: summary: 'Afficher la liste filtrée des retenues sur salaire' operationId: afficherLaListeFiltreDesRetenuesSurSalaire description: '' parameters: [] responses: { } tags: - 'Retenue sur salaire / Salary deduction' requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 46 nullable: true nbre_items: type: integer description: '' example: 2 nullable: true filter_value: type: string description: '' example: blanditiis nullable: true user_id: type: integer description: 'The id of an existing record in the users table.' example: 14 nullable: true user_approve_id: type: integer description: 'The id of an existing record in the users table.' example: 14 nullable: true trashed: type: boolean description: '' example: false nullable: true date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true status: type: string description: '' example: approved nullable: true enum: - pending_approval - in_progress - approved - rejected '/api/salaries-deductions/{salary_deduction}': get: summary: 'Afficher une retenue sur salaire spécifique' operationId: afficherUneRetenueSurSalaireSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Retenue sur salaire / Salary deduction' put: summary: 'Mettre à jour une retenue sur salaire spécifique' operationId: mettreJourUneRetenueSurSalaireSpcifique description: '' parameters: [] responses: { } tags: - 'Retenue sur salaire / Salary deduction' requestBody: required: false content: application/json: schema: type: object properties: user_id: type: integer description: 'The id of an existing record in the users table.' example: 15 nullable: true user_approve_id: type: integer description: 'The id of an existing record in the users table.' example: 8 nullable: true amount: type: string description: '' example: null nullable: true reason: type: string description: '' example: omnis nullable: true date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true status: type: string description: '' example: in_progress nullable: true enum: - pending_approval - in_progress - approved - rejected parameters: - in: path name: salary_deduction description: '' example: 12 required: true schema: type: integer /api/salaries-deductions: post: summary: 'Show the form for creating a new resource.' operationId: showTheFormForCreatingANewResource description: '' parameters: [] responses: { } tags: - 'Retenue sur salaire / Salary deduction' requestBody: required: true content: application/json: schema: type: object properties: salary_deductions: type: array description: '' example: - [] items: type: object properties: user_id: type: string description: 'The id of an existing record in the users table.' example: unde nullable: false user_approve_id: type: integer description: 'The id of an existing record in the users table.' example: 20 nullable: false amount: type: number description: 'Le champ value doit être au moins 0.' example: 76 nullable: false date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: false status: type: string description: '' example: in_progress nullable: true enum: - pending_approval - in_progress - approved - rejected reason: type: string description: '' example: et nullable: false required: - user_id - user_approve_id - amount - date - reason required: - salary_deductions /api/salaries-deductions/trash: post: summary: 'Archiver (soft delete) les retenues sur salaire spécifiées.' operationId: archiversoftDeleteLesRetenuesSurSalaireSpcifies description: '' parameters: [] responses: { } tags: - 'Retenue sur salaire / Salary deduction' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 7 items: type: integer required: - ids /api/salaries-deductions/restore: post: summary: 'Restaurer les feedbacks archivés.' operationId: restaurerLesFeedbacksArchivs description: '' parameters: [] responses: { } tags: - 'Retenue sur salaire / Salary deduction' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 11 items: type: integer required: - ids /api/salaries-deductions/destroy: delete: summary: 'Supprimer définitivement les feedbacks spécifiés.' operationId: supprimerDfinitivementLesFeedbacksSpcifis description: '' parameters: [] responses: { } tags: - 'Retenue sur salaire / Salary deduction' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 17 items: type: integer required: - ids /api/reductions/all: post: summary: 'Afficher la liste des réductions' operationId: afficherLaListeDesRductions description: '' parameters: [] responses: { } tags: - Réductions requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 77 nullable: true nbre_items: type: integer description: 'Le champ value doit être au moins 1.' example: 25 nullable: true filter_value: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: qfastkmio nullable: true /api/reductions: post: summary: 'Enregistrer une nouvelle réduction' operationId: enregistrerUneNouvelleRduction description: '' parameters: [] responses: { } tags: - Réductions requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: okfadgrbnbxkiezsezxcwu nullable: false description: type: string description: '' example: 'Dignissimos ea ex modi repellat corrupti assumenda veritatis.' nullable: true amount: type: number description: 'Le champ value doit être au moins 0.' example: 25 nullable: false required: - name - amount '/api/reductions/{reduction}': get: summary: "Afficher les détails d'une réduction" operationId: afficherLesDtailsDuneRduction description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Réductions put: summary: 'Mettre à jour une réduction' operationId: mettreJourUneRduction description: '' parameters: [] responses: { } tags: - Réductions requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: jisvwxpftzoajzayumzthb nullable: true description: type: string description: '' example: 'Illum corporis quia ipsum consectetur consequatur sed iure.' nullable: true amount: type: number description: 'Le champ value doit être au moins 0.' example: 88 nullable: true parameters: - in: path name: reduction description: 'The reduction.' example: autem required: true schema: type: string /api/reductions/trash: post: summary: 'Afficher la corbeille des réductions supprimées' operationId: afficherLaCorbeilleDesRductionsSupprimes description: '' parameters: [] responses: { } tags: - Réductions requestBody: required: false content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the reductions table.' example: null items: type: string /api/reductions/restore: post: summary: 'Restaurer une réduction supprimée' operationId: restaurerUneRductionSupprime description: '' parameters: [] responses: { } tags: - Réductions requestBody: required: false content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the reductions table.' example: null items: type: string /api/reductions/destroy: post: summary: 'Supprimer une réduction (soft delete)' operationId: supprimerUneRductionsoftDelete description: '' parameters: [] responses: { } tags: - Réductions requestBody: required: false content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the reductions table.' example: null items: type: string /api/bookings/all: post: summary: 'Afficher la liste des réservations' operationId: afficherLaListeDesRservations description: '' parameters: [] responses: { } tags: - Réservations requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 41 nullable: true nbre_items: type: integer description: '' example: 19 nullable: true filter_value: type: string description: '' example: quia nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 16 nullable: true room_type_id: type: integer description: 'The id of an existing record in the room_types table.' example: 12 nullable: true room_category_id: type: integer description: 'The id of an existing record in the room_categories table.' example: 8 nullable: true room_id: type: integer description: 'The id of an existing record in the rooms table.' example: 19 nullable: true user_id: type: integer description: 'The id of an existing record in the users table.' example: 9 nullable: true status: type: string description: '' example: sit nullable: true payment_status: type: string description: '' example: completed nullable: true enum: - none - advance - completed room_service_id: type: integer description: 'The id of an existing record in the room_services table.' example: 4 nullable: true date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true date_start: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true date_end: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true /api/bookings: post: summary: 'Enregistrer une nouvelle réservation' operationId: enregistrerUneNouvelleRservation description: '' parameters: [] responses: { } tags: - Réservations requestBody: required: true content: application/json: schema: type: object properties: start_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: false end_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: false user_id: type: integer description: 'The id of an existing record in the users table.' example: 18 nullable: false type: type: string description: '' example: sieste nullable: true enum: - nuite - sieste transport_mode: type: string description: 'Le champ value ne peut contenir plus de 50 caractères.' example: tzumbbldsifhzyvqvhqec nullable: true vehicle_number: type: string description: 'Le champ value ne peut contenir plus de 100 caractères.' example: p nullable: true arrival_time: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true departure_time: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true arrivals: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: cdn nullable: true is_free: type: boolean description: '' example: false nullable: true reduction_id: type: integer description: 'The id of an existing record in the reductions table.' example: 20 nullable: true reduction_amount: type: number description: 'Le champ value doit être au moins 0.' example: 1 nullable: true rooms: type: array description: 'The id of an existing record in the rooms table.' example: null items: type: string nullable: true required: - start_date - end_date - user_id '/api/bookings/{booking_id}': put: summary: 'Mettre à jour une réservation' operationId: mettreJourUneRservation description: '' parameters: [] responses: { } tags: - Réservations requestBody: required: true content: application/json: schema: type: object properties: start_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: false end_date: type: string description: 'Le champ value doit être une date valide. Le champ value doit être une date après start_date.' example: '2035-12-11' nullable: false user_id: type: integer description: 'The id of an existing record in the users table.' example: 8 nullable: false room_service_id: type: integer description: 'The id of an existing record in the room_services table.' example: 6 nullable: true transport_mode: type: string description: 'Le champ value ne peut contenir plus de 50 caractères.' example: dywxwmzvhcuvkgpllcslwkgg nullable: true vehicle_number: type: string description: 'Le champ value ne peut contenir plus de 100 caractères.' example: lmpsqkudifihhmeklyanh nullable: true arrival_time: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true departure_time: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true arrivals: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: atmnoxydcyv nullable: true is_free: type: boolean description: '' example: false nullable: true reduction_id: type: integer description: 'The id of an existing record in the reductions table.' example: 1 nullable: true reduction_amount: type: number description: 'Le champ value doit être au moins 0.' example: 65 nullable: true rooms: type: array description: 'The id of an existing record in the rooms table.' example: - non items: type: string type: type: string description: '' example: sieste nullable: true enum: - nuite - sieste status: type: string description: '' example: checked_in nullable: true enum: - pending - confirmed - checked_in - checked_out - cancelled - no_show - refunded - draft - expired required: - start_date - end_date - user_id - rooms parameters: - in: path name: booking_id description: 'The ID of the booking.' example: 6 required: true schema: type: integer /api/bookings/trash: post: summary: 'Fonction pour le multiple archivage des Reservations' operationId: fonctionPourLeMultipleArchivageDesReservations description: '' parameters: [] responses: { } tags: - Réservations requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 9 items: type: integer required: - ids /api/bookings/restore: post: summary: 'Fonction de restauration multiples des Reservations' operationId: fonctionDeRestaurationMultiplesDesReservations description: '' parameters: [] responses: { } tags: - Réservations requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 10 items: type: integer required: - ids /api/bookings/destroy: delete: summary: 'Fonction de suppression définitive multiple des Reservations' operationId: fonctionDeSuppressionDfinitiveMultipleDesReservations description: '' parameters: [] responses: { } tags: - Réservations requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 20 items: type: integer required: - ids /api/roles/all: post: summary: 'Lister les roles' operationId: listerLesRoles description: '' parameters: [] responses: { } tags: - Rôles requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 17 nullable: true nbre_items: type: integer description: '' example: 10 nullable: true filter_value: type: string description: '' example: ut nullable: true types: type: array description: '' example: - velit items: type: string /api/roles: post: summary: 'Ajouter une liste de role' operationId: ajouterUneListeDeRole description: '' parameters: [] responses: { } tags: - Rôles requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: molestiae nullable: false permissions: type: array description: 'The id of an existing record in the permissions table.' example: - 13 items: type: integer description: type: string description: '' example: 'Nemo vero sunt necessitatibus quasi.' nullable: true type: type: string description: '' example: quia nullable: true required: - name - permissions '/api/roles/{role_id}': get: summary: 'Afficher un role spécifique' operationId: afficherUnRoleSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Rôles put: summary: 'Modifier ou un role spécifique' operationId: modifierOuUnRoleSpcifique description: '' parameters: [] responses: { } tags: - Rôles requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: '' example: voluptatum nullable: true permissions: type: array description: 'The id of an existing record in the permissions table.' example: - 2 items: type: integer nullable: true description: type: string description: '' example: 'Adipisci ipsam minus reiciendis.' nullable: true type: type: string description: '' example: eveniet nullable: true parameters: - in: path name: role_id description: 'The ID of the role.' example: 1 required: true schema: type: integer /api/roles/trash: post: summary: 'Fonction pour le multiple archivage des roles' operationId: fonctionPourLeMultipleArchivageDesRoles description: '' parameters: [] responses: { } tags: - Rôles requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 14 items: type: integer required: - ids /api/roles/restore: post: summary: 'Fonction de restauration multiples des roles' operationId: fonctionDeRestaurationMultiplesDesRoles description: '' parameters: [] responses: { } tags: - Rôles requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 7 items: type: integer required: - ids /api/roles/destroy: delete: summary: 'Fonction de suppression définitive multiple des roles' operationId: fonctionDeSuppressionDfinitiveMultipleDesRoles description: '' parameters: [] responses: { } tags: - Rôles requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 20 items: type: integer required: - ids /api/room-services/all: post: summary: 'Récupérer la liste des services de chambre avec filtres et pagination.' operationId: rcuprerLaListeDesServicesDeChambreAvecFiltresEtPagination description: '' parameters: [] responses: { } tags: - 'Service de chambre' requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 58 nullable: true nbre_items: type: integer description: '' example: 2 nullable: true filter_value: type: string description: '' example: et nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 4 nullable: true archive: type: string description: '' example: only_trashed nullable: true enum: - with_trashed - only_trashed order_by: type: string description: '' example: service_id nullable: true enum: - id - name - service_id '/api/room-services/{room_service}': get: summary: "Afficher les détails d'un service de chambre spécifique." operationId: afficherLesDtailsDunServiceDeChambreSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Service de chambre' put: summary: 'Mettre à jour un service de chambre existant.' operationId: mettreJourUnServiceDeChambreExistant description: '' parameters: [] responses: { } tags: - 'Service de chambre' requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 200 caractères.' example: qwwkkkyr nullable: true description: type: string description: 'Le champ value ne peut contenir plus de 5000 caractères.' example: 'Doloribus odio tempore autem repudiandae omnis aliquid culpa.' nullable: true price: type: string description: '' example: null nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 11 nullable: true parameters: - in: path name: room_service description: '' example: 1 required: true schema: type: integer /api/room-services: post: summary: 'Créer un ou plusieurs services de chambre.' operationId: crerUnOuPlusieursServicesDeChambre description: '' parameters: [] responses: { } tags: - 'Service de chambre' requestBody: required: true content: application/json: schema: type: object properties: room_services: type: array description: '' example: - [] items: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 200 caractères.' example: zrvmmtfdlwjggnvswzwdt nullable: true description: type: string description: 'Le champ value ne peut contenir plus de 5000 caractères.' example: 'Tempore doloribus possimus recusandae ex ab nobis esse animi.' nullable: true price: type: string description: '' example: null nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 18 nullable: true required: - room_services /api/room-services/trash: post: summary: 'Archiver un ou plusieurs services de chambre.' operationId: archiverUnOuPlusieursServicesDeChambre description: '' parameters: [] responses: { } tags: - 'Service de chambre' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the room_services table.' example: - 10 items: type: integer required: - ids /api/room-services/restore: post: summary: 'Restaurer un ou plusieurs services de chambre archivés.' operationId: restaurerUnOuPlusieursServicesDeChambreArchivs description: '' parameters: [] responses: { } tags: - 'Service de chambre' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the room_services table.' example: - 17 items: type: integer required: - ids /api/services/all: post: summary: 'Récupérer la liste des services avec filtres et pagination.' operationId: rcuprerLaListeDesServicesAvecFiltresEtPagination description: '' parameters: [] responses: { } tags: - Services requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 85 nullable: true nbre_items: type: integer description: '' example: 15 nullable: true filter_value: type: string description: '' example: fuga nullable: true type: type: string description: '' example: et nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 16 nullable: true responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 6 nullable: true '/api/services/{service_id}': get: summary: "Afficher les détails d'un service spécifique." operationId: afficherLesDtailsDunServiceSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Services put: summary: 'Mettre à jour un service existant.' operationId: mettreJourUnServiceExistant description: '' parameters: [] responses: { } tags: - Services requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: '' example: quasi nullable: true image: type: string description: '' example: deserunt nullable: true description: type: string description: '' example: 'Illum dolor dolores unde numquam.' nullable: true type: type: string description: '' example: eum nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 11 nullable: true responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 4 nullable: true parameters: - in: path name: service_id description: 'The ID of the service.' example: 1 required: true schema: type: integer /api/services: post: summary: 'Créer un ou plusieurs services.' operationId: crerUnOuPlusieursServices description: '' parameters: [] responses: { } tags: - Services requestBody: required: true content: application/json: schema: type: object properties: services: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: - [] items: type: object properties: name: type: string description: '' example: expedita nullable: false image: type: string description: '' example: voluptas nullable: true description: type: string description: '' example: 'Facilis illum labore quisquam sed.' nullable: true type: type: string description: '' example: facilis nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 16 nullable: false responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 7 nullable: false required: - name - hotel_id - responsible_id required: - services /api/services/trash: delete: summary: 'Archiver un ou plusieurs services.' operationId: archiverUnOuPlusieursServices description: '' parameters: [] responses: { } tags: - Services requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 2 items: type: integer required: - ids /api/services/restore: post: summary: 'Restaurer un ou plusieurs services archivés.' operationId: restaurerUnOuPlusieursServicesArchivs description: '' parameters: [] responses: { } tags: - Services requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 12 items: type: integer required: - ids /api/services/destroy: delete: summary: 'Supprimer définitivement un ou plusieurs services.' operationId: supprimerDfinitivementUnOuPlusieursServices description: '' parameters: [] responses: { } tags: - Services requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 6 items: type: integer required: - ids /api/feedbacks/all: post: summary: 'Affiche une liste des feedbacks filtrés.' operationId: afficheUneListeDesFeedbacksFiltrs description: '' parameters: [] responses: { } tags: - 'Suggestions / Feedback' requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 5 nullable: true nbre_items: type: integer description: '' example: 5 nullable: true filter_value: type: string description: '' example: quos nullable: true is_anonymous: type: boolean description: '' example: true nullable: true user_id: type: integer description: 'The id of an existing record in the users table.' example: 8 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 1 nullable: true status: type: string description: '' example: received nullable: true enum: - pending - received - in_progress - resolved date_start: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true date_end: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:42' nullable: true '/api/feedbacks/{feedback_id}': get: summary: "Afficher les détails d'une suggestion / feedback" operationId: afficherLesDtailsDuneSuggestionFeedback description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Suggestions / Feedback' put: summary: 'Mettre à jour une suggestion / feedback' operationId: mettreJourUneSuggestionFeedback description: '' parameters: [] responses: { } tags: - 'Suggestions / Feedback' requestBody: required: false content: application/json: schema: type: object properties: service_id: type: integer description: 'The id of an existing record in the services table.' example: 11 nullable: true status: type: string description: '' example: resolved nullable: true enum: - pending - received - in_progress - resolved message: type: string description: 'Le champ value ne peut contenir plus de 1000 caractères.' example: ul nullable: true is_anonymous: type: boolean description: '' example: false nullable: true parameters: - in: path name: feedback_id description: 'The ID of the feedback.' example: 1 required: true schema: type: integer /api/feedbacks: post: summary: 'Créer une suggestion / feedback' operationId: crerUneSuggestionFeedback description: '' parameters: [] responses: { } tags: - 'Suggestions / Feedback' requestBody: required: true content: application/json: schema: type: object properties: service_id: type: integer description: 'The id of an existing record in the services table.' example: 8 nullable: true message: type: string description: 'Le champ value ne peut contenir plus de 1000 caractères.' example: kzacqhhpcmkvi nullable: false is_anonyme: type: boolean description: '' example: false nullable: true required: - message /api/feedbacks/trash: post: summary: 'Archiver (soft delete) les feedbacks spécifiés.' operationId: archiversoftDeleteLesFeedbacksSpcifis description: '' parameters: [] responses: { } tags: - 'Suggestions / Feedback' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 14 items: type: integer required: - ids /api/feedbacks/restore: post: summary: 'Restaurer les feedbacks archivés.' operationId: restaurerLesFeedbacksArchivs description: '' parameters: [] responses: { } tags: - 'Suggestions / Feedback' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 1 items: type: integer required: - ids /api/feedbacks/destroy: delete: summary: 'Supprimer définitivement les feedbacks spécifiés.' operationId: supprimerDfinitivementLesFeedbacksSpcifis description: '' parameters: [] responses: { } tags: - 'Suggestions / Feedback' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 12 items: type: integer required: - ids /api/expense-types/all: post: summary: 'Afficher les types de dépense' operationId: afficherLesTypesDeDpense description: '' parameters: [] responses: { } tags: - 'Type de dépense / Expense Type' requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 48 nullable: true nbre_items: type: integer description: '' example: 15 nullable: true '/api/expense-types/{expense_type}': get: summary: 'Afficher un type de dépense spécifique' operationId: afficherUnTypeDeDpenseSpcifique description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Type de dépense / Expense Type' put: summary: 'Mettre a jour les types de dépense' operationId: mettreAJourLesTypesDeDpense description: '' parameters: [] responses: { } tags: - 'Type de dépense / Expense Type' requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: '' example: animi nullable: true description: type: string description: '' example: 'Sit ratione omnis in consequatur.' nullable: true parameters: - in: path name: expense_type description: '' example: 1 required: true schema: type: integer /api/expense-types: post: summary: 'Creer un type de dépense' operationId: creerUnTypeDeDpense description: '' parameters: [] responses: { } tags: - 'Type de dépense / Expense Type' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: repudiandae nullable: false description: type: string description: '' example: 'Molestias temporibus totam mollitia voluptate sint ea.' nullable: true required: - name /api/expense-types/trash: post: summary: 'Archiver (soft delete) les types de dépense.' operationId: archiversoftDeleteLesTypesDeDpense description: '' parameters: [] responses: { } tags: - 'Type de dépense / Expense Type' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 15 items: type: integer required: - ids /api/expense-types/restore: post: summary: 'Restaurer les types de dépense archivée.' operationId: restaurerLesTypesDeDpenseArchive description: '' parameters: [] responses: { } tags: - 'Type de dépense / Expense Type' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 6 items: type: integer required: - ids /api/expense-types/destroy: delete: summary: 'Supprimer définitivement les expense_types spécifiés.' operationId: supprimerDfinitivementLesExpenseTypesSpcifis description: '' parameters: [] responses: { } tags: - 'Type de dépense / Expense Type' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 18 items: type: integer required: - ids /api/room-types/all: post: summary: 'Lister les types de chambres disponibles' operationId: listerLesTypesDeChambresDisponibles description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 2 name: 'Chambre VIP' description: null author: id: 1 name: Admin phone: null created_by: null updated_by: null deleted_by: null created_at: '2025-02-14 10:50:03' updated_at: '2025-02-14 10:50:03' deleted_at: null token: null created_at: '2025-02-14 11:42:24' count_rooms: 0 - id: 4 name: 'Salle de fëte' description: null author: id: 1 name: Admin phone: null created_by: null updated_by: null deleted_by: null created_at: '2025-02-14 10:50:03' updated_at: '2025-02-14 10:50:03' deleted_at: null token: null created_at: '2025-02-14 11:56:06' count_rooms: 0 - id: 3 name: 'Suite Présidentielle' description: null author: id: 1 name: Admin phone: null created_by: null updated_by: null deleted_by: null created_at: '2025-02-14 10:50:03' updated_at: '2025-02-14 10:50:03' deleted_at: null token: null created_at: '2025-02-14 11:44:16' count_rooms: 0 links: first: 'http://127.0.0.1:8000/api/room-types/all?page=1' last: 'http://127.0.0.1:8000/api/room-types/all?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Précédent' active: false - url: 'http://127.0.0.1:8000/api/room-types/all?page=1' label: '1' active: true - url: null label: 'Suivant »' active: false path: 'http://127.0.0.1:8000/api/room-types/all' per_page: 1000000 to: 3 total: 3 properties: data: type: array example: - id: 2 name: 'Chambre VIP' description: null author: id: 1 name: Admin phone: null created_by: null updated_by: null deleted_by: null created_at: '2025-02-14 10:50:03' updated_at: '2025-02-14 10:50:03' deleted_at: null token: null created_at: '2025-02-14 11:42:24' count_rooms: 0 - id: 4 name: 'Salle de fëte' description: null author: id: 1 name: Admin phone: null created_by: null updated_by: null deleted_by: null created_at: '2025-02-14 10:50:03' updated_at: '2025-02-14 10:50:03' deleted_at: null token: null created_at: '2025-02-14 11:56:06' count_rooms: 0 - id: 3 name: 'Suite Présidentielle' description: null author: id: 1 name: Admin phone: null created_by: null updated_by: null deleted_by: null created_at: '2025-02-14 10:50:03' updated_at: '2025-02-14 10:50:03' deleted_at: null token: null created_at: '2025-02-14 11:44:16' count_rooms: 0 items: type: object properties: id: type: integer example: 2 name: type: string example: 'Chambre VIP' description: type: string example: null author: type: object properties: id: type: integer example: 1 name: type: string example: Admin phone: type: string example: null created_by: type: string example: null updated_by: type: string example: null deleted_by: type: string example: null created_at: type: string example: '2025-02-14 10:50:03' updated_at: type: string example: '2025-02-14 10:50:03' deleted_at: type: string example: null token: type: string example: null created_at: type: string example: '2025-02-14 11:42:24' count_rooms: type: integer example: 0 links: type: object properties: first: type: string example: 'http://127.0.0.1:8000/api/room-types/all?page=1' last: type: string example: 'http://127.0.0.1:8000/api/room-types/all?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Précédent' active: false - url: 'http://127.0.0.1:8000/api/room-types/all?page=1' label: '1' active: true - url: null label: 'Suivant »' active: false items: type: object properties: url: type: string example: null label: type: string example: '« Précédent' active: type: boolean example: false path: type: string example: 'http://127.0.0.1:8000/api/room-types/all' per_page: type: integer example: 1000000 to: type: integer example: 3 total: type: integer example: 3 tags: - 'Types de Chambres' requestBody: required: false content: application/json: schema: type: object properties: page_items: type: integer description: required. example: 1 nullable: true nbre_items: type: integer description: '' example: 4 nullable: true filter_value: type: string description: '' example: rerum nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 17 nullable: true trashed: type: boolean description: '' example: true nullable: false '/api/room-types/{room_type}': get: summary: 'Afficher les informations sur un type de chambre' operationId: afficherLesInformationsSurUnTypeDeChambre description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Types de Chambres' put: summary: 'Ajouter un type de chambre' operationId: ajouterUnTypeDeChambre description: '' parameters: [] responses: { } tags: - 'Types de Chambres' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: '' example: quidem nullable: false hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 10 nullable: true description: type: string description: '' example: 'Nostrum qui aut ut.' nullable: true required: - name parameters: - in: path name: room_type description: '' example: 3 required: true schema: type: integer /api/room-types: post: summary: 'Ajouer un type de chambre' operationId: ajouerUnTypeDeChambre description: '' parameters: [] responses: { } tags: - 'Types de Chambres' requestBody: required: true content: application/json: schema: type: object properties: room_types: type: array description: 'Le champ value doit contenir au moins 1 éléments.' example: - [] items: type: object properties: name: type: string description: '' example: illo nullable: false hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 13 nullable: false description: type: string description: '' example: 'Ipsum eaque aliquid unde neque possimus laboriosam placeat.' nullable: true required: - name - hotel_id required: - room_types /api/room-types/trash: delete: summary: "Archiver un ou plusieurs type de chambre\nNB: Un type de chambre ne peut pas être supprimé si il est lié à quelque chose d'autre dans le système" operationId: archiverUnOuPlusieursTypeDeChambreNBUnTypeDeChambreNePeutPastreSupprimSiIlEstLiQuelqueChoseDautreDansLeSystme description: '' parameters: [] responses: { } tags: - 'Types de Chambres' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: 'The id of an existing record in the room_types table.' example: - 15 items: type: integer required: - ids /api/room-types/restore: post: summary: 'Restaurer un ou plusieurs type de chambre de la corbeille' operationId: restaurerUnOuPlusieursTypeDeChambreDeLaCorbeille description: '' parameters: [] responses: { } tags: - 'Types de Chambres' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 11 items: type: integer required: - ids /api/room-types/destroy: delete: summary: "Forcer la suppression d'un ou plusieurs hotel(s) du système" operationId: forcerLaSuppressionDunOuPlusieursHotelsDuSystme description: '' parameters: [] responses: { } tags: - 'Types de Chambres' requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 5 items: type: integer required: - ids /api/tasks/all: post: summary: 'Lister les tâches' operationId: listerLesTches description: '' parameters: [] responses: { } tags: - Tâches requestBody: required: false content: application/json: schema: type: object properties: user_id: type: integer description: 'The id of an existing record in the users table.' example: 12 nullable: true responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 5 nullable: true page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 68 nullable: true nbre_items: type: integer description: '' example: 19 nullable: true filter_value: type: string description: 'Le champ value ne peut contenir plus de 100 caractères.' example: xbzginuvpudepf nullable: true priority: type: string description: '' example: medium nullable: true enum: - low - medium - high status: type: string description: '' example: finished nullable: true enum: - created - started - finished '/api/tasks/{task_id}': get: summary: "Afficher les détails d'une tâche" operationId: afficherLesDtailsDuneTche description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Tâches put: summary: 'Modifier une tâche' operationId: modifierUneTche description: '' parameters: [] responses: { } tags: - Tâches requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 250 caractères.' example: eucfgy nullable: true description: type: string description: '' example: 'Facere dolor enim cum nemo sit ipsa.' nullable: true due_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: true estimation: type: integer description: 'Le champ value doit être au moins 0.' example: 55 nullable: true priority: type: string description: '' example: low nullable: true enum: - low - medium - high status: type: string description: '' example: created nullable: true enum: - created - started - finished user_ids: type: array description: 'The id of an existing record in the users table.' example: - 9 items: type: integer responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 9 nullable: true parameters: - in: path name: task_id description: 'The ID of the task.' example: 3 required: true schema: type: integer /api/tasks: post: summary: 'Ajouter une tâche' operationId: ajouterUneTche description: '' parameters: [] responses: { } tags: - Tâches requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Le champ value ne peut contenir plus de 250 caractères.' example: bquodsn nullable: false description: type: string description: '' example: 'Similique totam velit fugiat voluptatum et cum.' nullable: false due_date: type: string description: 'Le champ value doit être une date valide. Must be a valid date in the format Y-m-d.' example: '2026-05-18' nullable: false estimation: type: integer description: 'Le champ value doit être au moins 0.' example: 2 nullable: false priority: type: string description: '' example: low nullable: false enum: - low - medium - high user_ids: type: array description: 'The id of an existing record in the users table.' example: - 17 items: type: integer responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 18 nullable: false required: - name - description - due_date - estimation - priority - responsible_id /api/tasks/trash: post: summary: 'Fonction pour le multiple archivage des taches' operationId: fonctionPourLeMultipleArchivageDesTaches description: '' parameters: [] responses: { } tags: - Tâches requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 13 items: type: integer required: - ids /api/tasks/restore: post: summary: 'Fonction de restauration multiples des taches' operationId: fonctionDeRestaurationMultiplesDesTaches description: '' parameters: [] responses: { } tags: - Tâches requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 17 items: type: integer required: - ids /api/tasks/destroy: delete: summary: 'Fonction de suppression définitive multiple des taches' operationId: fonctionDeSuppressionDfinitiveMultipleDesTaches description: '' parameters: [] responses: { } tags: - Tâches requestBody: required: true content: application/json: schema: type: object properties: ids: type: array description: '' example: - 16 items: type: integer required: - ids /api/upload-photo: post: summary: "Upload d'un fichier" operationId: uploadDunFichier description: '' parameters: [] responses: { } tags: - 'Upload de fichier' requestBody: required: true content: application/json: schema: type: object properties: photo: type: string description: 'Le champ value ne peut contenir plus de 5120 caractères.' example: ivkabwnfsr nullable: false required: - photo /api/users/all: post: summary: 'Fonction qui permet de recuperer la liste des utilisateurs' operationId: fonctionQuiPermetDeRecupererLaListeDesUtilisateurs description: '' parameters: [] responses: { } tags: - Utilisateurs requestBody: required: false content: application/json: schema: type: object properties: role_id: type: integer description: 'The id of an existing record in the roles table.' example: 14 nullable: true role_types: type: array description: 'The type of an existing record in the roles table.' example: - saepe items: type: string nullable: true page_items: type: integer description: 'Le champ value doit être au moins 1.' example: 40 nullable: true nbre_items: type: integer description: '' example: 16 nullable: true filter_value: type: string description: '' example: eveniet nullable: true order_by: type: boolean description: '' example: true nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 3 nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 12 nullable: true responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 8 nullable: true type: type: string description: '' example: voluptates nullable: true /api/users: post: summary: "Fonction qui permet d'ajouter un utilisateur sans passer par la verification" operationId: fonctionQuiPermetDajouterUnUtilisateurSansPasserParLaVerification description: '' parameters: [] responses: { } tags: - Utilisateurs requestBody: required: true content: application/json: schema: type: object properties: firstname: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: lprkckdkg nullable: false lastname: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: ng nullable: true gender: type: string description: '' example: female nullable: false enum: - male - female type: type: string description: '' example: inventore nullable: true birthday: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true nationality: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: vzpoooklgqtpab nullable: true nui: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: uapjrkyyeylkugfywxpvwxzs nullable: true cni: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: owyznwpsfvdzjuzlkomym nullable: true cnps: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: akylzqxowezhtpbvlbmizu nullable: true passport_issue_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true passport_issue_place: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: bvsiimihvoobpymxa nullable: true profession: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: yybrkqxtceejvenzsx nullable: true birth_place: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: e nullable: true connexion_type: type: string description: '' example: phone nullable: false enum: - email - phone email: type: string description: 'This field is required when connexion_type is email. Le champ value doit être une address e-mail valide. Le champ value ne peut contenir plus de 255 caractères.' example: baufderhar@example.com nullable: true phone: type: string description: 'This field is required when connexion_type is phone. Le champ value ne peut contenir plus de 20 caractères.' example: yrcxgptejhklwhyu nullable: true phone2: type: string description: 'Le champ value ne peut contenir plus de 20 caractères.' example: qfltigcukkrcuoxcy nullable: true city: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: h nullable: true address: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: rtrbixqvshnlwzhxfab nullable: true country: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: nkaii nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 4 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 15 nullable: true responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 6 nullable: true password: type: string description: 'Le champ value doit contenir au moins 6 caractères.' example: '|~.q-yI/-5' nullable: false photo: type: string description: '' example: nulla nullable: true role_id: type: integer description: 'The id of an existing record in the roles table.' example: 9 nullable: true articles: type: array description: 'The id of an existing record in the articles table.' example: - 9 items: type: integer required: - firstname - gender - connexion_type - password '/api/users/{user_id}': get: summary: "Cette route permet d'afficher les informations d'un utilisateur" operationId: cetteRoutePermetDafficherLesInformationsDunUtilisateur description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Utilisateurs put: summary: "Fonction permettant de mettre à jour les informations d'un utilisateur" operationId: fonctionPermettantDeMettreJourLesInformationsDunUtilisateur description: '' parameters: [] responses: { } tags: - Utilisateurs requestBody: required: false content: application/json: schema: type: object properties: firstname: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: ojdqynsm nullable: true lastname: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: ewulgnekfrv nullable: true gender: type: string description: '' example: male nullable: true enum: - male - female type: type: string description: '' example: cumque nullable: true birthday: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true nationality: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: apxlxbziau nullable: true nui: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: jjpb nullable: true cni: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: kymtpetsimccvwaprirl nullable: true cnps: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: qkzqqaybmyjqoisxxmilsn nullable: true passport_issue_date: type: string description: 'Le champ value doit être une date valide.' example: '2026-05-18T08:05:41' nullable: true passport_issue_place: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: k nullable: true profession: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: twsupwbpolujxcgjr nullable: true birth_place: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: wxfzemfquwpnpozk nullable: true connexion_type: type: string description: '' example: phone nullable: true enum: - email - phone email: type: string description: 'Le champ value doit être une address e-mail valide. Le champ value ne peut contenir plus de 255 caractères.' example: vbergnaum@example.net nullable: true phone: type: string description: 'Le champ value ne peut contenir plus de 20 caractères.' example: t nullable: true phone2: type: string description: 'Le champ value ne peut contenir plus de 20 caractères.' example: wgnuyljvuikdprhmazwe nullable: true city: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: vfgqqwfyyjxhp nullable: true address: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: nzpod nullable: true country: type: string description: 'Le champ value ne peut contenir plus de 255 caractères.' example: nqhxzpislxfcico nullable: true hotel_id: type: integer description: 'The id of an existing record in the hotels table.' example: 8 nullable: true service_id: type: integer description: 'The id of an existing record in the services table.' example: 11 nullable: true responsible_id: type: integer description: 'The id of an existing record in the users table.' example: 5 nullable: true password: type: string description: 'Le champ value doit contenir au moins 6 caractères.' example: 'e40"#xw3jm~&*;$}|K' nullable: true photo: type: string description: '' example: omnis nullable: true role_id: type: integer description: 'The id of an existing record in the roles table.' example: 8 nullable: true parameters: - in: path name: user_id description: 'The ID of the user.' example: 1 required: true schema: type: integer /api/users/trash: post: summary: 'Fonction pour le multiple archivage des utilisateurs' operationId: fonctionPourLeMultipleArchivageDesUtilisateurs description: '' parameters: [] responses: { } tags: - Utilisateurs requestBody: required: false content: application/json: schema: type: object properties: user_ids: type: array description: '' example: - 15 items: type: integer /api/users/restore: post: summary: "Fonction de restauration multiples d'utilisateurs" operationId: fonctionDeRestaurationMultiplesDutilisateurs description: '' parameters: [] responses: { } tags: - Utilisateurs requestBody: required: false content: application/json: schema: type: object properties: user_ids: type: array description: '' example: - 9 items: type: integer /api/users/destroy: post: summary: "Fonction de suppression définitive multiple d'utilisateurs" operationId: fonctionDeSuppressionDfinitiveMultipleDutilisateurs description: '' parameters: [] responses: { } tags: - Utilisateurs requestBody: required: false content: application/json: schema: type: object properties: user_ids: type: array description: '' example: - 7 items: type: integer tags: - name: 'Aperçu des statistiques/ statistic Overview' description: "\nAfficher les statistiques de chaque hotel ou d'un groupe d'hotel" - name: Articles description: "\nGestion des articles" - name: Articles-Fournisseurs description: "\nAvoir la liste des fournisseurs d'un article et inversément" - name: Authentification description: "\nGestion de l'authentification des utilisateurs" - name: 'Avance sur salaire / Salary advance' description: "\nGestion des avances sur salaire" - name: Avertissements description: 'Gestion des avertissements' - name: "Bons d'achats" description: "\nGestion des bons d'achat" - name: Budget description: "\nGestion des budgets de l'hôtel" - name: 'Catégories de chambres' description: "\nGestion des catégories de chambres" - name: Chambres description: "\nGestions des chambres" - name: Clés description: "\nGestion des clés de l'application'" - name: Commandes description: "\nGestion des commandes" - name: Contrats description: "\n Gestion des contrats employés" - name: Decaissements description: "\nGestion des décaissements" - name: "Demande d'approvisionnement | Supply demand" description: "Contrôleur chargé de la gestion des demandes d'approvisionnement." - name: "Demande d'explication / Explanation Request" description: "\nGestion des demandes d'explication" - name: 'Demande de congé' description: 'Gestion des demandes de congé employé' - name: 'Demandes de Permissions' description: "\nContrôleur pour la gestion des demandes de permission des utilisateurs" - name: Encaissements description: "\nGestion des encaissements" - name: Endpoints description: '' - name: Evenements description: "\nGestion des évènements" - name: Hotels description: "\nGestion des hotels de l'application" - name: "Mouvements d'articles" description: "\nGestion des mouvements d'articles" - name: 'Mouvements des produits' description: "\nGestion des mouvements de produits" - name: 'Packages / Forfaits' description: "\nGestion des packages / forfaits" - name: 'Paiements MTN Mobile Money' description: "\nAPI pour la gestion des paiements via MTN Mobile Money (Cameroun)." - name: 'Paiements Orange Money' description: "\nContrôleur pour la gestion des paiements via Orange Money (Cameroun).\nSupporte les paiements Web (redirection vers page Orange) et Mobile Push (STK).\n\nFonctionnalités :\n- Initiation de paiements web et mobile\n- Vérification de statut avec logique de retry\n- Gestion des webhooks pour confirmations asynchrones\n- Déduction automatique de 2% de frais de transaction\n- Vérification de solde avant paiement\n- Prévention des doublons via verrouillage DB" - name: 'Paramètres Généraux' description: "\nGestion des paramètres généraux dans l'application" - name: Permissions description: "\nGestion des permissions" - name: 'Presence du personnel / Staff presence' description: "\nGestion des présences du personnel" - name: Produits description: "\nGestion des produits" - name: Punitions description: "\nGestion des punitions" - name: 'Retenue sur salaire / Salary deduction' description: "\nGestion des retenus sur salaire" - name: Réductions description: "\nGestion des réductions" - name: Réservations description: "\nGestion des réservations" - name: Rôles description: "\nGestion des rôles" - name: 'Service de chambre' description: "\nGestion des services de chambre" - name: Services description: "\nContrôleur responsable de la gestion des services." - name: 'Suggestions / Feedback' description: "\nGestion des suggestions des utilisateurs" - name: 'Type de dépense / Expense Type' description: "\nGestion des présences du personnel" - name: 'Types de Chambres' description: "\nGestion des types de chambres" - name: Tâches description: "\nGestion des tâches" - name: 'Upload de fichier' description: "\nGestion des uploads de fichiers" - name: Utilisateurs description: "\nGestion des utilisateurs" components: securitySchemes: default: type: http scheme: bearer description: 'You can retrieve your token by visiting your dashboard and clicking Generate API token.' security: - default: []