SDK Node.js pour MONCRENEAU
Le SDK Node.js officiel pour intégrer MONCRENEAU dans vos applications Express, NestJS ou Node.js standard.
Installation
npm install @moncreneau/api
# ou
yarn add @moncreneau/api
# ou
pnpm add @moncreneau/api
Configuration
Import ES6
import { MoncreneauClient } from 'moncreneau';
const client = new MoncreneauClient('YOUR_API_KEY');
Require CommonJS
const { MoncreneauClient } = require('moncreneau');
const client = new MoncreneauClient('YOUR_API_KEY');
Avec variables d'environnement
import { MoncreneauClient } from 'moncreneau';
const client = new MoncreneauClient(process.env.MONCRENEAU_API_KEY);
Fichier .env :
MONCRENEAU_API_KEY=YOUR_API_KEY
MONCRENEAU_BASE_URL=https://mc-prd.duckdns.org/api/v1
Exemples d'utilisation
Lister les départements
import { MoncreneauClient } from 'moncreneau';
const client = new MoncreneauClient('YOUR_API_KEY');
async function listDepartments() {
try {
const departments = await client.departments.list();
departments.forEach(dept => {
console.log(`ID: ${dept.id} - ${dept.name} (${dept.address})`);
});
} catch (error) {
console.error('Erreur:', error.message);
}
}
listDepartments();
Créer un rendez-vous
import { MoncreneauClient } from 'moncreneau';
const client = new MoncreneauClient('YOUR_API_KEY');
async function createAppointment() {
try {
const appointment = await client.appointments.create({
departmentId: 5,
dateTime: '2026-02-15T10:00:00',
name: 'Amadou Diallo'
});
console.log('✅ Rendez-vous créé!');
console.log('ID:', appointment.id);
console.log('QR Code:', appointment.qrCode);
console.log('Statut:', appointment.status);
} catch (error) {
if (error.code === 'INSUFFICIENT_CREDITS') {
console.error('❌ Crédits insuffisants:', error.message);
} else {
console.error('❌ Erreur:', error.message);
}
}
}
createAppointment();
Vérifier la disponibilité
import { MoncreneauClient } from 'moncreneau';
const client = new MoncreneauClient('YOUR_API_KEY');
async function checkAvailability() {
try {
const availability = await client.departments.checkAvailability(
5,
'2026-02-15T10:00:00'
);
if (availability.available) {
console.log('✅ Créneau disponible!');
console.log('Places restantes:', availability.remainingSlots);
} else {
console.log('❌ Créneau indisponible');
console.log('Raison:', availability.unavailabilityReason);
}
} catch (error) {
console.error('Erreur:', error.message);
}
}
checkAvailability();
Annuler un rendez-vous
import { MoncreneauClient } from 'moncreneau';
const client = new MoncreneauClient('YOUR_API_KEY');
async function cancelAppointment(appointmentId) {
try {
const cancelled = await client.appointments.cancel(appointmentId);
console.log('✅ Rendez-vous annulé');
console.log('Statut:', cancelled.status);
console.log('1 crédit remboursé');
} catch (error) {
console.error('❌ Erreur:', error.message);
}
}
cancelAppointment(123);
Intégration Express
import express from 'express';
import { MoncreneauClient } from 'moncreneau';
const app = express();
app.use(express.json());
const client = new MoncreneauClient(process.env.MONCRENEAU_API_KEY);
// Endpoint pour créer un RDV
app.post('/appointments', async (req, res) => {
try {
const { departmentId, dateTime, name } = req.body;
const appointment = await client.appointments.create({
departmentId,
dateTime,
name
});
res.status(201).json(appointment);
} catch (error) {
if (error.code === 'INSUFFICIENT_CREDITS') {
return res.status(402).json({ error: error.message });
}
res.status(500).json({ error: error.message });
}
});
// Endpoint pour vérifier disponibilité
app.get('/departments/:id/availability', async (req, res) => {
try {
const { id } = req.params;
const { dateTime } = req.query;
const availability = await client.departments.checkAvailability(
parseInt(id),
dateTime
);
res.json(availability);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
Gestion des erreurs
Le SDK utilise des erreurs typées :
import {
MoncreneauClient,
InsufficientCreditsError,
ValidationError,
NotFoundError,
UnauthorizedError
} from 'moncreneau';
const client = new MoncreneauClient('YOUR_API_KEY');
try {
const appointment = await client.appointments.create(data);
} catch (error) {
if (error instanceof InsufficientCreditsError) {
// Pas assez de crédits
console.error('Crédits insuffisants:', error.message);
} else if (error instanceof ValidationError) {
// Validation échouée
console.error('Validation:', error.errors);
} else if (error instanceof NotFoundError) {
// Ressource introuvable
console.error('Non trouvé:', error.message);
} else if (error instanceof UnauthorizedError) {
// API Key invalide
console.error('API Key invalide');
} else {
// Erreur générique
console.error('Erreur:', error.message);
}
}
Configuration avancée
Timeout et retry
import { MoncreneauClient } from 'moncreneau';
const client = new MoncreneauClient({
apiKey: 'YOUR_API_KEY',
baseUrl: 'https://mc-prd.duckdns.org/api/v1',
timeout: 30000, // 30 secondes
maxRetries: 3,
retryDelay: 1000 // 1 seconde
});
Webhooks
Vérifiez la signature des webhooks :
import { MoncreneauClient } from 'moncreneau';
const client = new MoncreneauClient('YOUR_API_KEY');
app.post('/webhooks/moncreneau', (req, res) => {
const signature = req.headers['x-moncreneau-signature'];
const payload = JSON.stringify(req.body);
const isValid = client.webhooks.verifySignature(
payload,
signature,
process.env.WEBHOOK_SECRET
);
if (!isValid) {
return res.status(401).send('Invalid signature');
}
// Traiter l'événement
const event = req.body;
console.log('Event:', event.type, event.data);
res.json({ received: true });
});
TypeScript Support
Le SDK est entièrement typé :
import {
MoncreneauClient,
Department,
Appointment,
CreateAppointmentRequest,
SlotAvailability
} from 'moncreneau';
const client = new MoncreneauClient('YOUR_API_KEY');
async function example(): Promise<void> {
const departments: Department[] = await client.departments.list();
const request: CreateAppointmentRequest = {
departmentId: 5,
dateTime: '2026-02-15T10:00:00',
name: 'Amadou Diallo'
};
const appointment: Appointment = await client.appointments.create(request);
}
Ressources
Le SDK Node.js MONCRENEAU est disponible sur npm. Pour des exemples d'intégration, consultez la section Examples.