Bienvenue sur votre API

Une solution complète pour la gestion des interventions techniques, des clients et des techniciens. Développée avec les technologies modernes pour une performance optimale.

📊 Importation de données CSV

Importez facilement des données en masse dans tous vos modèles

🔐 Authentification

+
POST /auth/login
POST /auth/login/numeroCodeBarres
POST /auth/register
GET /auth/users
GET /auth/users/barcode/:numeroCodeBarres
GET /auth/users/:userId
PATCH /auth/users/:userId/profile

🔧 Interventions

+
GET /interventions
POST /interventions
GET /interventions/barcode/:numeroCodeBarres
GET /interventions/:id
PATCH /interventions/:id
DELETE /interventions/:id

📦 Matériels

+
GET /materiels
POST /materiels
GET /materiels/barcode/:numeroCodeBarres
GET /materiels/:id
PATCH /materiels/:id
DELETE /materiels/:id
GET /materiels/client/:clientId
GET /materiels/stats

🔍 Filtres Spécialisés

+
GET /interventions/status/:status
GET /interventions/client/:clientId
GET /materiels/stats
DELETE /auth/users/:userId

🚗 Véhicules

+
GET /vehicules - Liste des véhicules
POST /vehicules - Créer un véhicule
GET /vehicules/barcode/:numeroCodeBarres - Par code-barres
GET /vehicules/:id - Détails d'un véhicule
PATCH /vehicules/:id - Mettre à jour un véhicule
DELETE /vehicules/:id - Supprimer un véhicule
GET /vehicules/proprietaire/:proprietaireId - Véhicules d'un propriétaire
GET /vehicules/stats - Statistiques véhicules
GET /vehicules/expirations - Échéances proches
PATCH /vehicules/:id/entretien - Ajouter un entretien

🅿️ Parkings

+
GET /parkings - Liste des parkings
POST /parkings - Créer un parking (Admin/SuperAdmin)
GET /parkings/:id - Détails d'un parking
PATCH /parkings/:id - Mettre à jour un parking (Admin/SuperAdmin)
DELETE /parkings/:id - Supprimer un parking (Admin/SuperAdmin)
GET /parkings/proximite - Recherche par proximité GPS
GET /parkings/disponibilite - Vérifier disponibilité d'un type
GET /parkings/:id/disponibilites - Toutes les disponibilités
GET /parkings/stats - Statistiques parkings (Admin/SuperAdmin)
POST /parkings/:id/reserver - Réserver une place
PATCH /parkings/:id/reservations/:reservationId - Modifier réservation

🚨 Alertes

+
GET /alertes - Liste des alertes
POST /alertes - Créer une alerte
GET /alertes/:id - Détails d'une alerte
PATCH /alertes/:id - Mettre à jour une alerte
DELETE /alertes/:id - Supprimer une alerte (Admin/Tech)
PATCH /alertes/:id/resoudre - Marquer comme résolue
GET /alertes/utilisateur/:userId - Alertes d'un utilisateur
GET /alertes/statistiques - Statistiques alertes (Admin/Tech)
POST /alertes/:id/actions - Ajouter une action
PATCH /alertes/:id/actions/:actionId - Modifier une action

📝 Todolists

+
GET /todolists - Liste des todolists
POST /todolists - Créer une todolist
GET /todolists/:id - Détails d'une todolist
PATCH /todolists/:id - Mettre à jour une todolist
DELETE /todolists/:id - Supprimer une todolist (Admin/Tech)
PATCH /todolists/:id/archiver - Archiver une todolist
GET /todolists/utilisateur/:userId - Todolists d'un utilisateur
GET /todolists/statistiques - Statistiques todolists (Admin/Tech)
POST /todolists/:id/collaborateurs - Ajouter un collaborateur

📄 Devis

+
GET /devis - Liste des devis
POST /devis - Créer un devis (Admin/Tech)
POST /devis/:id/send-email - Envoyer un devis par email (Admin/Tech)
GET /devis/numero/:numero - Rechercher par numéro
GET /devis/:id - Détails d'un devis
PATCH /devis/:id - Mettre à jour un devis (Admin/Tech)
DELETE /devis/:id - Supprimer un devis (Admin)
GET /devis/status/:status - Filtrer par statut
GET /devis/client/:clientId - Devis d'un client

📄 Documents

+
POST /documents - Upload document (CSV/PDF/TXT)
GET /documents - Liste tous les documents
GET /documents/:id - Détails d'un document
GET /documents/:id/download - Télécharger un document
PATCH /documents/:id - Mettre à jour un document
DELETE /documents/:id - Supprimer un document
GET /documents/user/:userId - Documents d'un utilisateur
GET /documents/intervention/:interventionId - Documents d'une intervention

🔐 Tableau des Permissions

+

📋 Hiérarchie des Rôles

👤 Visiteur - Accès très limité
👥 Utilisateur - Accès de base
🏢 Client - Accès client standard
🔧 Technicien - Gestion technique
👑 Admin - Administration complète
Superadmin - Accès total
Catégorie Route Méthode Authentification Rôles Autorisés Description
🔐 AUTHENTIFICATION
Auth /auth/login POST ❌ Publique Public Connexion utilisateur (email/mot de passe)
Auth /auth/login/numeroCodeBarres POST ❌ Publique Public Connexion par code-barres (technicien/admin/superadmin)
Auth /auth/register POST ❌ Publique Public Inscription utilisateur
Auth /auth/users GET ✅ Requise Admin Technicien Superadmin Liste tous les utilisateurs
Auth /auth/users/:userId GET ✅ Requise Connecté Détails d'un utilisateur
Auth /auth/users/:userId DELETE ✅ Requise Admin Superadmin Suppression utilisateur
📦 MATÉRIELS
Matériel /materiels GET ✅ Requise Connecté Liste des matériels
Matériel /materiels POST ✅ Requise Connecté Créer un matériel
Matériel /materiels/stats GET ✅ Requise Admin Technicien Superadmin Statistiques matériels
Matériel /materiels/:id/hard DELETE ✅ Requise Admin Superadmin Suppression définitive
🔧 INTERVENTIONS
Intervention /interventions GET ✅ Requise Admin Technicien Superadmin Liste des interventions
Intervention /interventions POST ✅ Requise Admin Technicien Superadmin Créer une intervention
Intervention /interventions/:id DELETE ✅ Requise Admin Superadmin Supprimer une intervention
🚗 VÉHICULES
Véhicule /vehicules GET ✅ Requise Connecté Liste des véhicules
Véhicule /vehicules POST ✅ Requise Connecté Créer un véhicule
Véhicule /vehicules/stats GET ✅ Requise Admin Technicien Superadmin Statistiques véhicules
Véhicule /vehicules/:id DELETE ✅ Requise Admin Superadmin Supprimer un véhicule
🅿️ PARKINGS
Parking /parkings GET ✅ Requise Connecté Liste des parkings
Parking /parkings POST ✅ Requise Admin Superadmin Créer un parking
Parking /parkings/proximite GET ✅ Requise Connecté Recherche par proximité GPS
Parking /parkings/disponibilite GET ✅ Requise Connecté Vérifier disponibilité d'un type
Parking /parkings/:id/disponibilites GET ✅ Requise Connecté Toutes les disponibilités
Parking /parkings/stats GET ✅ Requise Admin Superadmin Statistiques parkings
Parking /parkings/:id/reserver POST ✅ Requise Connecté Réserver une place
Parking /parkings/:id/reservations/:reservationId PATCH ✅ Requise Connecté Modifier une réservation
Parking /parkings/:id PATCH ✅ Requise Admin Superadmin Mettre à jour un parking
Parking /parkings/:id DELETE ✅ Requise Admin Superadmin Supprimer un parking
📄 DOCUMENTS
Document /documents POST ✅ Requise Connecté Upload d'un document
Document /documents GET ✅ Requise Connecté Liste tous les documents
Document /documents/:id DELETE ✅ Requise Connecté Supprimer un document
🚨 ALERTES
Alerte /alertes GET ✅ Requise Connecté Liste des alertes
Alerte /alertes POST ✅ Requise Connecté Créer une alerte
Alerte /alertes/:id GET ✅ Requise Connecté Détails d'une alerte
Alerte /alertes/:id PATCH ✅ Requise Connecté Mettre à jour une alerte
Alerte /alertes/:id DELETE ✅ Requise Admin Technicien Superadmin Supprimer une alerte
Alerte /alertes/:id/resoudre PATCH ✅ Requise Connecté Marquer comme résolue
Alerte /alertes/statistiques GET ✅ Requise Admin Technicien Superadmin Statistiques alertes
📝 TODOLISTS
Todolist /todolists GET ✅ Requise Connecté Liste des todolists
Todolist /todolists POST ✅ Requise Connecté Créer une todolist
Todolist /todolists/:id GET ✅ Requise Connecté Détails d'une todolist
Todolist /todolists/:id PATCH ✅ Requise Connecté Mettre à jour une todolist
Todolist /todolists/:id DELETE ✅ Requise Admin Technicien Superadmin Supprimer une todolist
Todolist /todolists/:id/archiver PATCH ✅ Requise Connecté Archiver une todolist
Todolist /todolists/statistiques GET ✅ Requise Admin Technicien Superadmin Statistiques todolists
📄 DEVIS
Devis /devis GET ✅ Requise Connecté Liste des devis
Devis /devis POST ✅ Requise Admin Technicien Superadmin Créer un devis
Devis /devis/:id/send-email POST ✅ Requise Admin Technicien Superadmin Envoyer un devis par email
Devis /devis/numero/:numero GET ✅ Requise Connecté Rechercher par numéro
Devis /devis/:id GET ✅ Requise Connecté Détails d'un devis
Devis /devis/:id PATCH ✅ Requise Admin Technicien Superadmin Mettre à jour un devis
Devis /devis/:id DELETE ✅ Requise Admin Superadmin Supprimer un devis
Devis /devis/status/:status GET ✅ Requise Connecté Filtrer par statut
Devis /devis/client/:clientId GET ✅ Requise Connecté Devis d'un client

📋 Structure des Modèles de Données

Voici tous les champs disponibles pour chaque modèle de l'API :

👤 Modèle User

+
🔗 Relations
  • Aucune relation sortante - Ce modèle est référencé par d'autres
  • Référencé par : Vehicules, Materiels, Interventions, Documents, Parkings, Alertes, Todolists, Devis
Informations de base
  • nom (String, required)
  • prenom (String, required)
  • email (String, required, unique)
  • password (String, required)
  • role (Enum: visiteur, utilisateur, client, technicien, admin, superadmin)
  • imageProfil (String, URL)
Informations professionnelles
  • emploi (Enum: salarié, indépendant, retraité, étudiant, chômeur, autre)
  • profession (String)
  • phone (String, validation)
  • dateNaissance (Date)
  • genre (Enum: homme, femme, autre, préfère_ne_pas_dire)
  • nationalite (String)
  • langues (Array of String)
  • niveauEducation (Enum: primaire, collège, lycée, licence, master, doctorat, autre)
  • competences (Array of String)
  • siteWeb (String, validation)
Réseaux sociaux
  • reseauxSociaux.linkedin (String)
  • reseauxSociaux.twitter (String)
  • reseauxSociaux.facebook (String)
Contact d'urgence
  • contactUrgence.nom (String)
  • contactUrgence.telephone (String)
  • contactUrgence.relation (String)
Préférences
  • preferencesNotification.email (Boolean, default: true)
  • preferencesNotification.sms (Boolean, default: false)
  • preferencesNotification.push (Boolean, default: true)
Adresse
  • adresse (String, required)
  • codePostal (String, required)
  • ville (String, required)
Identification
  • numeroContrat (String, unique)
  • numeroCodeBarres (String, unique, validation: 13 digits)
TeamViewer
  • idTeamViewer (String)
  • motDePasseTeamViewer (String)
  • urlConnexionTeamViewer (String)
Statut
  • statut (String, enum: ["actif", "inactif"], default: "actif")
  • createdAt (Date, auto)
  • updatedAt (Date, auto)

📦 Modèle Materiel

+
🔗 Relations
  • RELATION User (client) - optionnel
  • Référencé par : Interventions, Documents, Alertes
Informations de base
  • client (ObjectId, ref: User, optional)
  • nom (String, required)
  • description (String)
  • numeroSerie (String, unique)
  • numeroCodeBarres (String, unique, validation: 13 digits)
Classification
  • categorie (Enum: Ordinateur, Serveur, Imprimante, Réseau, Téléphonie, Sécurité, Autre)
  • marque (String, required)
  • modele (String, required)
Document
  • numero (String, unique)
  • typeDocument (Enum: facture, devis, bon_commande, bon_livraison, garantie, manuel, certificat, autre)
Dates importantes
  • dateAchat (Date)
  • garantie (Boolean, default: false)
  • expirationGarantie (Date)
  • dateInstallation (Date)
  • dernierControle (Date)
Informations financières
  • prixAchat (Number, min: 0)
  • prixVente (Number, min: 0)
  • devise (Enum: EUR, USD, GBP, CHF, default: CHF)
  • fournisseur.nom (String)
  • fournisseur.contact (String)
  • fournisseur.email (String)
  • fournisseur.telephone (String)
Localisation
  • localisation.batiment (String)
  • localisation.etage (String)
  • localisation.bureau (String)
  • localisation.adresseIP (String, validation)
Spécifications techniques
  • specifications.processeur (String)
  • specifications.memoire (String)
  • specifications.stockage (String)
  • specifications.systemeExploitation (String)
  • specifications.versionOS (String)
Maintenance
  • maintenanceHistory (Array: date, type, description, technicien, cout)
  • etat (Enum: neuf, bon, moyen, mauvais, hors_service)
  • statut (Enum: en_stock, en_utilisation, en_maintenance, hors_service, retire)
Autres
  • notes (String)
  • tags (Array of String)
  • actif (Boolean, default: true)
  • createdAt (Date, auto)
  • updatedAt (Date, auto)

🔧 Modèle Intervention

+
🔗 Relations
  • RELATION User (client) - obligatoire
  • RELATION User (technicien) - obligatoire
  • RELATION Vehicule - obligatoire
  • RELATION Materiel - obligatoire
  • Référencé par : Documents, Alertes, Todolists
Informations client
  • idClient (ObjectId, ref: User, required)
  • nomClient (String, required)
  • telephoneClient (String, required)
  • emailClient (String, required)
  • adresseClient.rue (String, required)
  • adresseClient.ville (String, required)
  • adresseClient.codePostal (String, required)
  • adresseClient.pays (String, default: France)
Informations intervention
  • titre (String, required)
  • description (String, required)
  • categorie (Enum: Maintenance, Réparation, Installation, Déplacement, Dépannage, Autre)
  • priorite (Enum: Basse, Normale, Haute, Urgente)
  • statut (Enum: En attente, Planifiée, En cours, Terminée, Annulée)
Dates et temps
  • dateCreation (Date, auto)
  • datePlanifiee (Date, required)
  • heureDebut (String, required)
  • dureeEstimee (Number, required, en heures)
  • dateFin (Date)
  • dureeReelle (Number, en heures)
  • tempsDeplacement (Number, en minutes)
  • tempsInstallation (Number, en minutes)
  • tempsDemontage (Number, en minutes)
Technicien
  • technicienAssigné (ObjectId, ref: User)
  • nomTechnicien (String)
Coûts
  • coutEstime (Number, default: 0)
  • coutFinal (Number, default: 0)
  • coutMateriaux (Number, default: 0)
  • coutMainOeuvre (Number, default: 0)
Équipement
  • equipement (String)
  • numeroSerie (String)
  • garantie (Boolean, default: false)
  • dateExpirationGarantie (Date)
  • materiels (Array of ObjectId, ref: Materiel)
Récurrence
  • recurrence.type (Enum: aucune, quotidienne, hebdomadaire, mensuelle, trimestrielle, annuelle)
  • recurrence.intervalle (Number, default: 1)
  • recurrence.dateFin (Date)
  • recurrence.prochaineOccurrence (Date)
Paiement
  • methodePaiement (Enum: especes, carte, virement, cheque, facture, autre)
  • statutPaiement (Enum: en_attente, paye, partiel, en_retard, annule)
  • numeroFacture (String, unique)
  • datePaiement (Date)
Équipement et outils
  • outilsUtilises (Array: nom, quantite, retourne)
  • materiauxUtilises (Array: nom, quantite, unite, cout)
Qualité et conformité
  • controleQualite.effectue (Boolean, default: false)
  • controleQualite.reussi (Boolean)
  • controleQualite.verifiePar (String)
  • controleQualite.notes (String)
  • conformite.securite (Boolean, default: true)
  • conformite.environnementale (Boolean, default: true)
  • conformite.reglementaire (Boolean, default: true)
Communication
  • notifications (Array: type, envoyeLe, destinataire, contenu, statut)
  • notesInternes (String)
  • notesClient (String)
  • notesTechnicien (String)
Risques et sécurité
  • evaluationRisques.niveau (Enum: faible, moyen, eleve, critique)
  • evaluationRisques.dangers (Array of String)
  • evaluationRisques.precautions (Array of String)
  • evaluationRisques.contactsUrgence (Array: nom, telephone, role)
Évaluation
  • satisfactionClient (Number, min: 1, max: 5)
  • commentairesClient (String)
Suivi
  • suiviRequis (Boolean, default: false)
  • dateSuivi (Date)
  • notesSuivi (String)
Médias
  • photos (Array: url, description, dateUpload)
  • documents (Array: nom, url, dateUpload)
Autres
  • numeroCodeBarres (String, unique, validation: 13 digits)
  • tags (Array of String)
  • actif (String, enum: ["actif", "inactif"], default: "actif")
  • createdAt (Date, auto)
  • updatedAt (Date, auto)

🚗 Modèle Vehicule

+
🔗 Relations
  • RELATION User (proprietaire) - obligatoire
  • Référencé par : Interventions, Documents, Parkings, Alertes
Informations de base
  • proprietaire (ObjectId, ref: User, required)
  • marque (String, required)
  • modele (String, required)
  • version (String)
  • annee (Number, required, min: 1900)
Identification
  • numeroImmatriculation (String, required, unique, validation)
  • numeroSerie (String, unique)
  • numeroCodeBarres (String, unique, validation: 13 digits)
Caractéristiques techniques
  • caracteristiques.typeVehicule (Enum: voiture, moto, camion, utilitaire, bus, velo, bateau, autre)
  • caracteristiques.carburant (Enum: essence, diesel, hybride, electrique, gpl, autre)
  • caracteristiques.puissance (Number, min: 0)
  • caracteristiques.cylindree (Number, min: 0)
  • caracteristiques.nombrePlaces (Number, min: 1, max: 50)
  • caracteristiques.couleur (String)
  • caracteristiques.poidsVide (Number, min: 0)
  • caracteristiques.chargeUtile (Number, min: 0)
Caractéristiques bateau
  • caracteristiques.caracteristiquesBateau.longueur (Number, min: 0)
  • caracteristiques.caracteristiquesBateau.largeur (Number, min: 0)
  • caracteristiques.caracteristiquesBateau.tirantEau (Number, min: 0)
  • caracteristiques.caracteristiquesBateau.typeBateau (Enum: voilier, moteur, semi-rigide, catamaran, yacht, bateau_peche, bateau_plaisance, autre)
  • caracteristiques.caracteristiquesBateau.nombreMoteurs (Number, min: 0, max: 10)
  • caracteristiques.caracteristiquesBateau.puissanceMoteur (Number, min: 0)
  • caracteristiques.caracteristiquesBateau.capaciteCarburant (Number, min: 0)
  • caracteristiques.caracteristiquesBateau.nombreCabines (Number, min: 0, max: 20)
  • caracteristiques.caracteristiquesBateau.nombreCouchettes (Number, min: 0, max: 50)
  • caracteristiques.caracteristiquesBateau.equipements (Array: gps, radar, sondeur, radio_vhf, pilote_automatique, generateur, dessalinisateur, climatisation, autre)
Achat et propriété
  • achat.dateAchat (Date)
  • achat.prixAchat (Number, min: 0)
  • achat.devise (Enum: EUR, USD, GBP, CHF, default: CHF)
  • achat.vendeur.nom (String)
  • achat.vendeur.adresse (String)
  • achat.vendeur.telephone (String)
  • achat.vendeur.email (String)
  • achat.kilometrageAchat (Number, min: 0)
Assurance
  • assurance.compagnie (String)
  • assurance.numeroPolice (String)
  • assurance.dateDebut (Date)
  • assurance.dateFin (Date)
  • assurance.montantAnnuel (Number, min: 0)
  • assurance.typeCouverture (Enum: au_tiers, intermediaire, tous_risques)
  • assurance.franchise (Number, min: 0)
Contrôle technique
  • controleTechnique.dernierControle (Date)
  • controleTechnique.prochainControle (Date, auto-calculé)
  • controleTechnique.resultat (Enum: favorable, defavorable, contre_visite)
  • controleTechnique.centreControle (String)
  • controleTechnique.kilometrageControle (Number, min: 0)
Entretien et maintenance
  • entretien.dernierEntretien (Date)
  • entretien.prochainEntretien (Date, auto-calculé)
  • entretien.kilometrageActuel (Number, min: 0)
  • entretien.intervalleEntretien (Number, min: 0, default: 15000)
  • entretien.historiqueEntretien (Array: date, type, description, kilometrage, cout, garage, facture)
Localisation et utilisation
  • localisation.adresse.rue (String)
  • localisation.adresse.ville (String)
  • localisation.adresse.codePostal (String)
  • localisation.adresse.pays (String, default: France)
  • localisation.parking (Enum: garage, parking_prive, rue, parking_public, autre)
  • localisation.utilisation (Enum: personnel, professionnel, mixte, location, autre)
Documents et papiers
  • documents.carteGrise.numero (String)
  • documents.carteGrise.dateDelivrance (Date)
  • documents.carteGrise.dateExpiration (Date)
  • documents.permisCirculation.numero (String)
  • documents.permisCirculation.dateDelivrance (Date)
  • documents.certificatConformite.numero (String)
  • documents.certificatConformite.dateDelivrance (Date)
État et statut
  • etat (Enum: neuf, bon, moyen, mauvais, hors_service)
  • statut (Enum: en_circulation, en_panne, en_reparation, hors_service, vendue, volée)
Autres
  • notes (String)
  • tags (Array of String)
  • actif (Boolean, default: true)
  • createdAt (Date, auto)
  • updatedAt (Date, auto)

🅿️ Modèle Parking

+
🔗 Relations
  • RELATION User (proprietaire) - obligatoire
  • RELATION Vehicule - (null)
  • Référencé par : Aucun
Informations de base
  • nom (String, required)
  • description (String)
  • gestionnaire (ObjectId, ref: User, required, doit être admin/superadmin)
Localisation
  • adresse.rue (String, required)
  • adresse.ville (String, required)
  • adresse.codePostal (String, required)
  • adresse.pays (String, default: France)
  • adresse.coordonnees.latitude (Number, min: -90, max: 90)
  • adresse.coordonnees.longitude (Number, min: -180, max: 180)
Types de places
  • typesPlaces.moto (total, occupees, prixHeure)
  • typesPlaces.velo (total, occupees, prixHeure)
  • typesPlaces.bateau (total, occupees, prixHeure)
  • typesPlaces.voiture (total, occupees, prixHeure)
  • typesPlaces.fourgon (total, occupees, prixHeure)
  • typesPlaces.camion (total, occupees, prixHeure)
  • typesPlaces.handicap (total, occupees, prixHeure)
  • typesPlaces.electrique (total, occupees, prixHeure)
Horaires d'ouverture
  • horaires.lundi (ouverture, fermeture, ouvert)
  • horaires.mardi (ouverture, fermeture, ouvert)
  • horaires.mercredi (ouverture, fermeture, ouvert)
  • horaires.jeudi (ouverture, fermeture, ouvert)
  • horaires.vendredi (ouverture, fermeture, ouvert)
  • horaires.samedi (ouverture, fermeture, ouvert)
  • horaires.dimanche (ouverture, fermeture, ouvert)
Services disponibles
  • services.surveillance (Boolean, default: false)
  • services.eclairage (Boolean, default: true)
  • services.camera (Boolean, default: false)
  • services.accesHandicape (Boolean, default: false)
  • services.borneRecharge (Boolean, default: false)
  • services.lavage (Boolean, default: false)
  • services.stationService (Boolean, default: false)
Tarification
  • tarification.gratuit (Boolean, default: false)
  • tarification.forfaitJour (Number, min: 0)
  • tarification.forfaitSemaine (Number, min: 0)
  • tarification.forfaitMois (Number, min: 0)
  • tarification.devise (Enum: EUR, USD, GBP, CHF, default: CHF)
  • tarification.reductionHandicape (Number, min: 0, max: 100)
Réservations actives
  • reservations (Array: utilisateur, vehicule, typePlace, numeroPlace, dateDebut, dateFin, dureeEstimee, prixTotal, statut, paiement, notes)
Historique des réservations
  • historiqueReservations (Array: utilisateur, vehicule, typePlace, numeroPlace, dateDebut, dateFin, dureeReelle, prixPaye, statut)
État et statut
  • statut (Enum: ouvert, ferme, maintenance, complet)
  • actif (Boolean, default: true)
Autres
  • notes (String)
  • tags (Array of String)
  • createdAt (Date, auto)
  • updatedAt (Date, auto)

📄 Modèle Document

+
🔗 Relations
  • RELATION User (proprietaire) - obligatoire
  • RELATION Intervention - (null)
  • RELATION Vehicule - (null)
  • RELATION Materiel - (null)
  • Référencé par : Aucun
Informations de base
  • originalName (String, required)
  • fileName (String, required, unique)
  • filePath (String, required)
  • mimeType (String, required)
  • fileSize (Number, required)
  • fileExtension (String, required)
  • description (String)
  • documentType (Enum: CSV, PDF, TXT, required)
Relations
  • userId (ObjectId, ref: User)
  • interventionId (ObjectId, ref: Intervention)
  • materielId (ObjectId, ref: Materiel)
  • vehiculeId (ObjectId, ref: Vehicule)
  • uploadedBy (ObjectId, ref: User)
Catégorisation
  • category (Enum: contract, invoice, report, manual, certificate, photo, insurance, maintenance, registration, other)
  • subcategory (String)
Métadonnées
  • metadata.author (String)
  • metadata.version (String, default: 1.0)
  • metadata.language (String, default: fr)
  • metadata.keywords (Array of String)
  • metadata.subject (String)
  • metadata.title (String)
Sécurité et accès
  • accessLevel (Enum: public, internal, confidential, restricted)
  • isEncrypted (Boolean, default: false)
  • passwordProtected (Boolean, default: false)
Validation et signature
  • isValidated (Boolean, default: false)
  • validatedBy (ObjectId, ref: User)
  • validatedAt (Date)
  • digitalSignature (String)
Versioning
  • isLatestVersion (Boolean, default: true)
  • parentDocument (ObjectId, ref: Document)
  • versionHistory (Array: version, uploadedAt, uploadedBy, changes)
Statut et disponibilité
  • status (Enum: active, archived, deleted, pending_approval)
  • isPublic (Boolean, default: false)
Relations et téléchargements
  • relatedDocuments (Array of ObjectId, ref: Document)
  • downloadCount (Number, default: 0)
  • lastDownloadedAt (Date)
  • lastDownloadedBy (ObjectId, ref: User)
Autres
  • createdAt (Date, auto)
  • updatedAt (Date, auto)

🚨 Modèle Alerte

+
🔗 Relations
  • RELATION User (destinataire) - obligatoire
  • RELATION Intervention - (null)
  • RELATION Vehicule - (null)
  • RELATION Materiel - (null)
  • Référencé par : Aucun
Informations de base
  • utilisateur (ObjectId, ref: User, required) - Créateur de l'alerte
  • type (Enum, required) - Type d'alerte
  • priorite (Enum: faible, normale, haute, critique, default: normale)
  • statut (Enum: active, en_cours, resolue, annulee, archivee, default: active)
  • titre (String, required, max: 50) - Titre de l'alerte
  • description (String, required, max: 250) - Description détaillée
  • message (String, required, max: 250) - Message de l'alerte
Dates et résolution
  • dateCreation (Date, default: Date.now)
  • dateEcheance (Date) - Date d'échéance
  • dateResolution (Date) - Date de résolution
  • resoluPar (ObjectId, ref: User) - Utilisateur qui a résolu
Références liées
  • references.intervention (ObjectId, ref: Intervention)
  • references.materiel (ObjectId, ref: Materiel)
  • references.vehicule (ObjectId, ref: Vehicule)
  • references.parking (ObjectId, ref: Parking)
  • references.document (ObjectId, ref: Document)
  • references.utilisateurCible (ObjectId, ref: User)
Données spécifiques - Maintenance
  • donneesSpecifiques.maintenance.typeMaintenance (Enum: preventive, corrective, amelioration, remplacement)
  • donneesSpecifiques.maintenance.intervalle (Number) - Intervalle en jours
  • donneesSpecifiques.maintenance.dernierEntretien (Date)
Données spécifiques - Échéance
  • donneesSpecifiques.echeance.typeEcheance (Enum: garantie, assurance, controle_technique, entretien, paiement, autre)
  • donneesSpecifiques.echeance.dateEcheanceOriginale (Date)
  • donneesSpecifiques.echeance.joursRestants (Number)
Données spécifiques - Stock
  • donneesSpecifiques.stock.quantiteActuelle (Number)
  • donneesSpecifiques.stock.seuilMinimum (Number)
  • donneesSpecifiques.stock.quantiteCommande (Number)
Données spécifiques - Paiement
  • donneesSpecifiques.paiement.montant (Number)
  • donneesSpecifiques.paiement.devise (String, default: CHF)
  • donneesSpecifiques.paiement.joursRetard (Number)
  • donneesSpecifiques.paiement.numeroFacture (String)
Données spécifiques - Réservation
  • donneesSpecifiques.reservation.dateDebut (Date)
  • donneesSpecifiques.reservation.dateFin (Date)
  • donneesSpecifiques.reservation.typePlace (String)
  • donneesSpecifiques.reservation.numeroPlace (String)
Données spécifiques - Sécurité
  • donneesSpecifiques.securite.niveauRisque (Enum: faible, moyen, eleve, critique)
  • donneesSpecifiques.securite.typeIncident (String)
  • donneesSpecifiques.securite.localisation (String)
Données spécifiques - Performance
  • donneesSpecifiques.performance.metrique (String)
  • donneesSpecifiques.performance.valeurActuelle (Number)
  • donneesSpecifiques.performance.seuilAlerte (Number)
  • donneesSpecifiques.performance.unite (String)
Notifications
  • notifications.email.envoye (Boolean, default: false)
  • notifications.email.dateEnvoi (Date)
  • notifications.email.destinataires (Array of String)
  • notifications.sms.envoye (Boolean, default: false)
  • notifications.sms.dateEnvoi (Date)
  • notifications.sms.destinataires (Array of String)
  • notifications.push.envoye (Boolean, default: false)
  • notifications.push.dateEnvoi (Date)
Actions à effectuer
  • actions (Array: description, type, priorite, assigneA, dateEcheance, statut, dateCreation, dateCompletion)
  • actions.type (Enum: maintenance, commande, contact, documentation, autre)
  • actions.priorite (Enum: faible, normale, haute, critique)
  • actions.statut (Enum: en_attente, en_cours, terminee, annulee)
Configuration
  • configuration.repetition.active (Boolean, default: false)
  • configuration.repetition.intervalle (Enum: quotidien, hebdomadaire, mensuel, trimestriel, annuel)
  • configuration.repetition.frequence (Number, default: 1)
  • configuration.escalade.active (Boolean, default: false)
  • configuration.escalade.delaiEscalade (Number, default: 24) - en heures
  • configuration.autoResolution.active (Boolean, default: false)
  • configuration.autoResolution.conditions (Array: champ, operateur, valeur)
Opérateurs d'auto-résolution
  • operateur (Enum: egal, different, superieur, inferieur, contient)
Historique et métadonnées
  • historique (Array: action, utilisateur, date, commentaire, ancienStatut, nouveauStatut)
  • tags (Array of String)
  • notesInternes (String, max: 250)
  • metadata.source (Enum: systeme, utilisateur, api, import, autre)
  • metadata.version (String, default: 1.0)
  • metadata.ip (String)
  • metadata.userAgent (String)
Statut et timestamps
  • estActive (Boolean, default: true)
  • createdAt (Date, auto)
  • updatedAt (Date, auto)
Propriétés virtuelles
  • estEnRetard (Boolean, virtual) - Alerte en retard
  • joursRestants (Number, virtual) - Jours restants avant échéance
  • estUrgente (Boolean, virtual) - Alerte urgente (haute/critique)

📝 Modèle Todolist

+
🔗 Relations
  • RELATION User (client) - obligatoire - Client auquel la todolist est affectée
  • RELATION User (utilisateur) - optionnel - Propriétaire/utilisateur de la todolist
  • RELATION Projet - optionnel
  • Référencé par : Aucun
Informations de base
  • client (ObjectId, ref: User, required) - Client auquel la todolist est affectée (doit avoir le rôle "client")
  • utilisateur (ObjectId, ref: User, optional) - Propriétaire/utilisateur de la todolist
  • titre (String, required, max: 50) - Titre de la todolist
  • description (String, max: 250) - Description de la todolist
  • couleur (Enum: rouge, bleu, vert, jaune, orange, violet, rose, gris, noir, default: bleu)
  • icone (Enum: 📝, 📋, ✅, 🎯, ⭐, 🔥, 💡, 🚀, 📌, 🔔, 📊, 🎨, 💼, 🏠, 🎪, 🎭, default: 📝)
📺 Informations TeamViewer du client
  • Les informations TeamViewer du client sont accessibles via la relation client
  • client.idTeamViewer (String) - ID TeamViewer du client
  • client.motDePasseTeamViewer (String) - Mot de passe TeamViewer du client
  • client.urlConnexionTeamViewer (String) - URL de connexion TeamViewer du client
  • Note : Utilisez .populate('client') pour accéder aux informations TeamViewer
Statut et priorité
  • statut (Enum: active, archivee, supprimee, default: active)
  • priorite (Enum: faible, normale, haute, critique, default: normale)
  • categorie (Enum: personnel, professionnel, projet, formation, sante, loisirs, maison, voyage, autre, default: personnel)
Dates
  • dateCreation (Date, default: Date.now)
  • dateModification (Date, default: Date.now)
  • dateEcheance (Date) - Date d'échéance de la todolist
  • dateArchivage (Date) - Date d'archivage
Collaboration
  • collaborateurs (Array) - Utilisateurs ayant accès
  • collaborateurs.utilisateur (ObjectId, ref: User, required)
  • collaborateurs.role (Enum: lecture, ecriture, admin, default: lecture)
  • collaborateurs.dateAjout (Date, default: Date.now)
Paramètres d'affichage
  • parametres.affichage.tri (Enum: date_creation, date_echeance, priorite, statut, titre, default: date_creation)
  • parametres.affichage.ordre (Enum: ascendant, descendant, default: descendant)
Notifications
  • parametres.notifications.email.active (Boolean, default: false)
  • parametres.notifications.email.rappelEcheance (Number, default: 24) - en heures
  • parametres.notifications.push.active (Boolean, default: false)
  • parametres.notifications.push.rappelEcheance (Number, default: 2) - en heures
Historique et métadonnées
  • historique (Array: action, utilisateur, date, commentaire, details)
  • tags (Array of String) - Tags de la todolist
  • projet (ObjectId, ref: Projet) - Projet associé (optionnel)
  • metadata.source (Enum: web, mobile, api, import, autre, default: web)
  • metadata.version (String, default: 1.0)
  • metadata.ip (String)
  • metadata.userAgent (String)
Statut et timestamps
  • estActive (Boolean, default: true)
  • createdAt (Date, auto)
  • updatedAt (Date, auto)
Propriétés virtuelles
  • estEnRetard (Boolean, virtual) - Todolist en retard
  • joursRestants (Number, virtual) - Jours restants avant échéance
  • estUrgente (Boolean, virtual) - Todolist urgente (haute/critique)
💡 Exemple d'utilisation - Accès TeamViewer du client
  • GET /todolists/:id avec .populate('client')
  • Réponse inclut : client.idTeamViewer, client.motDePasseTeamViewer, client.urlConnexionTeamViewer
  • Exemple de réponse :
  • {
      "_id": "...",
      "titre": "Intervention client",
      "client": {
        "_id": "...",
        "prenom": "Jean",
        "nom": "Dupont",
        "idTeamViewer": "123456789",
        "motDePasseTeamViewer": "abc123",
        "urlConnexionTeamViewer": "https://..."
      }
    }

📄 Modèle Devis

+
🔗 Relations
  • RELATION User (client) - obligatoire
  • Référencé par : Aucun
Informations générales
  • client (ObjectId, ref: User, required) - Client associé au devis
  • numeroDevis (String, required, unique) - Numéro de devis (format: DEV-YYYYMMDD-XXX, généré automatiquement si vide)
  • description (String) - Description du devis (texte multiligne)
  • date (Date, default: Date.now) - Date du devis
  • montant (Number, min: 0) - Montant en CHF
  • statut (Enum: Brouillon, Envoyé, Accepté, Refusé, Annulé, default: Brouillon)
Financement
  • priseDeCredit (Boolean, default: false) - Prise de crédit (oui/non)
Dates
  • dateInstallation (Date) - Date d'installation prévue
  • noteInstallation (String) - Note d'installation (texte multiligne)
Notes
  • notes (String) - Notes générales (texte multiligne)
Statut et timestamps
  • createdAt (Date, auto) - Date de création
  • updatedAt (Date, auto) - Date de mise à jour
✅ API en ligne et opérationnelle