diff --git a/backend/pom.xml b/backend/pom.xml
index b05c8de..6bf708d 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -84,6 +84,11 @@
h2
test
+
+ org.springframework.security
+ spring-security-test
+ test
+
diff --git a/backend/src/main/java/br/com/fiap/vigisus/config/SecurityConfig.java b/backend/src/main/java/br/com/fiap/vigisus/config/SecurityConfig.java
index 147644a..967565b 100644
--- a/backend/src/main/java/br/com/fiap/vigisus/config/SecurityConfig.java
+++ b/backend/src/main/java/br/com/fiap/vigisus/config/SecurityConfig.java
@@ -31,6 +31,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
.requestMatchers("/actuator/**").permitAll()
.requestMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll()
.requestMatchers("/api/**").permitAll()
+ .requestMatchers("/admin/**").permitAll()
.anyRequest().authenticated()
);
return http.build();
diff --git a/backend/src/main/java/br/com/fiap/vigisus/controller/AdminDashboardController.java b/backend/src/main/java/br/com/fiap/vigisus/controller/AdminDashboardController.java
new file mode 100644
index 0000000..758e8fc
--- /dev/null
+++ b/backend/src/main/java/br/com/fiap/vigisus/controller/AdminDashboardController.java
@@ -0,0 +1,52 @@
+package br.com.fiap.vigisus.controller;
+
+import io.micrometer.core.instrument.Counter;
+import io.micrometer.core.instrument.MeterRegistry;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.Instant;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@RestController
+@RequestMapping("/admin")
+@Tag(name = "Admin Dashboard", description = "Resumo operacional e métricas de uso da API")
+@CrossOrigin(origins = "*")
+@RequiredArgsConstructor
+public class AdminDashboardController {
+
+ private final MeterRegistry meterRegistry;
+
+ @GetMapping("/resumo")
+ @Operation(summary = "Resumo geral de uso da API com contadores de buscas")
+ public Map getResumo() {
+ Counter counter = meterRegistry.find("vigisus.buscas.total").counter();
+ double buscasTotal = counter != null ? counter.count() : 0.0;
+ return Map.of(
+ "buscas_total", buscasTotal,
+ "timestamp", Instant.now().toString()
+ );
+ }
+
+ @GetMapping("/top-municipios")
+ @Operation(summary = "Top municĂpios mais consultados por volume de buscas")
+ public List