SDK Java pour MONCRENEAU
Le SDK Java officiel pour intégrer MONCRENEAU dans vos applications Spring Boot, Quarkus ou Java standard.
Installation
Installation via JitPack
Le SDK est disponible via JitPack. Ajoutez le repository JitPack à votre configuration :
Maven
Ajoutez le repository et la dépendance dans votre pom.xml :
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.nbsidiki</groupId>
<artifactId>moncreneau-java</artifactId>
<version>main-SNAPSHOT</version>
</dependency>
</dependencies>
Gradle
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.nbsidiki:moncreneau-java:main-SNAPSHOT'
}
Configuration
Initialisation simple
import com.moncreneau.ApiClient;
ApiClient client = new ApiClient("YOUR_API_KEY");
Avec Spring Boot
import com.moncreneau.ApiClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MoncreneauConfig {
@Bean
public ApiClient moncreneauClient(
@Value("${moncreneau.api.key}") String apiKey) {
return new ApiClient(apiKey);
}
}
Dans application.properties :
moncreneau.api.key=${MONCRENEAU_API_KEY}
moncreneau.api.base-url=https://mc-prd.duckdns.org/api/v1
Exemples d'utilisation
Lister les départements
import com.moncreneau.ApiClient;
import com.moncreneau.model.Department;
import java.util.List;
public class DepartmentExample {
public static void main(String[] args) {
ApiClient client = new ApiClient("YOUR_API_KEY");
// Liste tous les départements
List<Department> departments = client.departments().list();
for (Department dept : departments) {
System.out.println(String.format(
"ID: %d - %s (%s)",
dept.getId(),
dept.getName(),
dept.getAddress()
));
}
}
}
Créer un rendez-vous
import com.moncreneau.ApiClient;
import com.moncreneau.model.Appointment;
import com.moncreneau.model.CreateAppointmentRequest;
import com.moncreneau.exception.InsufficientCreditsException;
import java.time.LocalDateTime;
public class AppointmentExample {
public static void main(String[] args) {
ApiClient client = new ApiClient("YOUR_API_KEY");
CreateAppointmentRequest request = new CreateAppointmentRequest()
.departmentId(5L)
.dateTime(LocalDateTime.parse("2026-02-15T10:00:00"))
.name("Amadou Diallo");
try {
Appointment appointment = client.appointments().create(request);
System.out.println("✅ Rendez-vous créé!");
System.out.println("ID: " + appointment.getId());
System.out.println("QR Code: " + appointment.getQrCode());
System.out.println("Statut: " + appointment.getStatus());
} catch (InsufficientCreditsException e) {
System.err.println("❌ Crédits insuffisants: " + e.getMessage());
} catch (Exception e) {
System.err.println("❌ Erreur: " + e.getMessage());
}
}
}
Vérifier la disponibilité
import com.moncreneau.ApiClient;
import com.moncreneau.model.SlotAvailability;
import java.time.LocalDateTime;
public class AvailabilityExample {
public static void main(String[] args) {
ApiClient client = new ApiClient("YOUR_API_KEY");
Long departmentId = 5L;
LocalDateTime dateTime = LocalDateTime.parse("2026-02-15T10:00:00");
SlotAvailability availability = client.departments()
.checkAvailability(departmentId, dateTime);
if (availability.isAvailable()) {
System.out.println("✅ Créneau disponible!");
System.out.println("Places restantes: " + availability.getRemainingSlots());
} else {
System.out.println("❌ Créneau indisponible");
System.out.println("Raison: " + availability.getUnavailabilityReason());
}
}
}
Annuler un rendez-vous
import com.moncreneau.ApiClient;
import com.moncreneau.model.Appointment;
public class CancelExample {
public static void main(String[] args) {
ApiClient client = new ApiClient("YOUR_API_KEY");
Long appointmentId = 123L;
try {
Appointment cancelled = client.appointments().cancel(appointmentId);
System.out.println("✅ Rendez-vous annulé");
System.out.println("Statut: " + cancelled.getStatus());
System.out.println("1 crédit remboursé");
} catch (Exception e) {
System.err.println("❌ Erreur: " + e.getMessage());
}
}
}
Gestion des erreurs
Le SDK lance des exceptions typées pour différentes erreurs :
import com.moncreneau.exception.*;
try {
Appointment apt = client.appointments().create(request);
} catch (InsufficientCreditsException e) {
// Pas assez de crédits
System.err.println("Crédits insuffisants: " + e.getMessage());
} catch (ValidationException e) {
// Requête invalide
System.err.println("Validation échouée: " + e.getErrors());
} catch (NotFoundException e) {
// Ressource introuvable
System.err.println("Non trouvé: " + e.getMessage());
} catch (UnauthorizedException e) {
// API Key invalide
System.err.println("API Key invalide");
} catch (ApiException e) {
// Erreur générique API
System.err.println("Erreur API: " + e.getMessage());
}
Configuration avancée
Timeout et retry
import com.moncreneau.ApiClient;
import com.moncreneau.config.ClientConfig;
import java.time.Duration;
ClientConfig config = new ClientConfig()
.apiKey("YOUR_API_KEY")
.baseUrl("https://mc-prd.duckdns.org/api/v1")
.connectTimeout(Duration.ofSeconds(10))
.readTimeout(Duration.ofSeconds(30))
.maxRetries(3);
ApiClient client = new ApiClient(config);
Logging
import com.moncreneau.ApiClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
ApiClient client = new ApiClient("YOUR_API_KEY")
.enableLogging(LoggerFactory.getLogger("moncreneau"));
Ressources
Le SDK Java MONCRENEAU est disponible sur Maven Central. Pour des exemples d'intégration, consultez la section Examples.