package dev.lions.user.manager.api;

import dev.lions.user.manager.dto.common.UserSessionStatsDTO;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;
import org.eclipse.microprofile.openapi.annotations.Operation;
import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
import org.eclipse.microprofile.openapi.annotations.responses.APIResponses;
import org.eclipse.microprofile.openapi.annotations.tags.Tag;

/**
 * API de métriques liées aux utilisateurs (sessions, utilisateurs en ligne, etc.).
 */
@Path("/api/metrics/users")
@Produces(MediaType.APPLICATION_JSON)
@Tag(name = "User Metrics", description = "Statistiques sur les utilisateurs et leurs sessions")
public interface UserMetricsResourceApi {

    @GET
    @Path("/sessions")
    @Operation(summary = "Statistiques de sessions utilisateurs",
            description = "Retourne des statistiques agrégées sur les utilisateurs et leurs sessions pour un realm")
    @APIResponses({
            @APIResponse(responseCode = "200", description = "Statistiques retournées avec succès"),
            @APIResponse(responseCode = "500", description = "Erreur serveur")
    })
    UserSessionStatsDTO getUserSessionStats(@QueryParam("realm") String realmName);
}

