package dev.lions.user.manager.client.service;

import dev.lions.user.manager.api.SyncResourceApi;
import dev.lions.user.manager.client.filter.AuthHeaderFactory;
import jakarta.ws.rs.*;
import org.eclipse.microprofile.rest.client.annotation.RegisterClientHeaders;
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;

/**
 * REST Client pour le service de synchronisation.
 * Étend l'interface API commune définie dans server-api pour garantir
 * la cohérence du contrat client-serveur.
 */
@Path("/api/sync")
@RegisterRestClient(configKey = "lions-user-manager-api")
@RegisterClientHeaders(AuthHeaderFactory.class)
public interface SyncServiceClient extends SyncResourceApi {

    // checkKeycloakHealth() hérité de SyncResourceApi → GET /api/sync/health/keycloak

    @GET
    @Path("/exists/user/{username}")
    Boolean userExists(
            @PathParam("username") String username,
            @QueryParam("realm") String realmName);

    @GET
    @Path("/exists/role/{roleName}")
    Boolean roleExists(
            @PathParam("roleName") String roleName,
            @QueryParam("realm") String realmName,
            @QueryParam("typeRole") String typeRole,
            @QueryParam("clientName") String clientName);
}
