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
📋 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'alertetype(Enum, required) - Type d'alertepriorite(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'alertedescription(String, required, max: 250) - Description détailléemessage(String, required, max: 250) - Message de l'alerte
Dates et résolution
dateCreation(Date, default: Date.now)dateEcheance(Date) - Date d'échéancedateResolution(Date) - Date de résolutionresoluPar(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 joursdonneesSpecifiques.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 heuresconfiguration.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 retardjoursRestants(Number, virtual) - Jours restants avant échéanceestUrgente(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 todolisttitre(String, required, max: 50) - Titre de la todolistdescription(String, max: 250) - Description de la todolistcouleur(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 clientclient.motDePasseTeamViewer(String) - Mot de passe TeamViewer du clientclient.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 todolistdateArchivage(Date) - Date d'archivage
Collaboration
collaborateurs(Array) - Utilisateurs ayant accèscollaborateurs.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 heuresparametres.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 todolistprojet(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 retardjoursRestants(Number, virtual) - Jours restants avant échéanceestUrgente(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 devisnumeroDevis(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 devismontant(Number, min: 0) - Montant en CHFstatut(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évuenoteInstallation(String) - Note d'installation (texte multiligne)
Notes
notes(String) - Notes générales (texte multiligne)
Statut et timestamps
createdAt(Date, auto) - Date de créationupdatedAt(Date, auto) - Date de mise à jour
✅ API en ligne et opérationnelle