Aller au contenu principal

SDK Java

Pas encore publié

Le SDK Java existe en code source mais n'est pas encore publié sur Maven Central. Il n'est donc pas installable via une dépendance Maven/Gradle aujourd'hui. Le code ci-dessous documente l'API telle qu'elle sera une fois le SDK publié — en attendant, utilisez l'API publique directement en HTTP (voir l'exemple Spring Boot avec RestTemplate).

Client OkHttp + parsing Gson. Le SDK ne définit aucun package model : toutes les méthodes retournent des Map<String, Object>/List<Map<String, Object>> bruts, pas d'objets typés.

Installation (à venir)​

<dependency>
<groupId>com.moncreneau</groupId>
<artifactId>moncreneau-java</artifactId>
<version>1.0.0</version>
</dependency>

Gradle :

implementation 'com.moncreneau:moncreneau-java:1.0.0'

Configuration​

import com.moncreneau.Moncreneau;

public class Main {
public static void main(String[] args) {
Moncreneau client = new Moncreneau("YOUR_API_KEY");
}
}

Avec URL de base et timeout personnalisés :

import com.moncreneau.Moncreneau;

Moncreneau client = new Moncreneau("YOUR_API_KEY", "https://mc-prd.duckdns.org/api/v1", 30);

Intégration Spring Boot​

import com.moncreneau.Moncreneau;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MoncreneauConfig {

@Value("${moncreneau.api.key}")
private String apiKey;

@Bean
public Moncreneau moncreneauClient() {
return new Moncreneau(apiKey);
}
}
moncreneau.api.key=${MONCRENEAU_API_KEY}

Lister les départements​

import com.moncreneau.Moncreneau;
import java.util.List;
import java.util.Map;

Moncreneau client = new Moncreneau("YOUR_API_KEY");

List<Map<String, Object>> departments = client.departments.list();

for (Map<String, Object> dept : departments) {
System.out.println(dept.get("id") + " - " + dept.get("name"));
}

Créer un rendez-vous​

import com.moncreneau.Moncreneau;
import com.moncreneau.exceptions.MoncreneauException;
import java.util.Map;

Moncreneau client = new Moncreneau("YOUR_API_KEY");

Map<String, Object> data = Map.of(
"departmentId", 5,
"dateTime", "2026-02-15T10:00:00",
"name", "Amadou Diallo"
);

try {
Map<String, Object> appointment = client.appointments.create(data);

System.out.println("✅ Rendez-vous créé!");
System.out.println("ID: " + appointment.get("id"));
System.out.println("QR Code: " + appointment.get("qrCode"));

} catch (MoncreneauException e) {
if ("INSUFFICIENT_CREDITS".equals(e.getErrorCode())) {
System.err.println("❌ Crédits insuffisants: " + e.getMessage());
} else {
System.err.println("❌ Erreur: " + e.getMessage());
}
}

Vérifier la disponibilité d'un créneau​

Le backend vérifie un créneau précis (dateTime), pas une plage de dates.

import com.moncreneau.Moncreneau;
import java.util.Map;

Moncreneau client = new Moncreneau("YOUR_API_KEY");

Map<String, Object> availability = client.departments.getAvailability("5", "2026-02-15T10:00:00");

if (Boolean.TRUE.equals(availability.get("available"))) {
System.out.println("✅ Créneau disponible! Places restantes: " + availability.get("remainingSlots"));
} else {
System.out.println("❌ Créneau indisponible: " + availability.get("unavailabilityReason"));
}

Annuler un rendez-vous​

import com.moncreneau.Moncreneau;

Moncreneau client = new Moncreneau("YOUR_API_KEY");

client.appointments.cancel("123");
System.out.println("✅ Rendez-vous annulé, 1 crédit remboursé");

Gestion des erreurs​

Il n'existe qu'une seule classe d'exception, com.moncreneau.exceptions.MoncreneauException (non vérifiée, RuntimeException) — le code métier se distingue via getErrorCode() :

import com.moncreneau.exceptions.MoncreneauException;

try {
Map<String, Object> appointment = client.appointments.create(data);
} catch (MoncreneauException e) {
switch (e.getErrorCode()) {
case "INSUFFICIENT_CREDITS" -> System.err.println("Crédits insuffisants: " + e.getMessage());
case "VALIDATION_ERROR" -> System.err.println("Validation: " + e.getDetails());
case "INVALID_API_KEY" -> System.err.println("Clé API invalide");
default -> System.err.println("Erreur " + e.getErrorCode() + " (HTTP " + e.getStatusCode() + "): " + e.getMessage());
}
}

Vérification des webhooks​

verifyWebhookSignature est une méthode statique sur la classe Moncreneau, pas une méthode d'instance :

import com.moncreneau.Moncreneau;

boolean isValid = Moncreneau.verifyWebhookSignature(payload, signature, webhookSecret);

if (!isValid) {
// rejeter la requête (401)
}

Voir Sécurité des webhooks pour le détail du format de signature.