Tenant Statistics
The GET /api/v1/tenants/stats endpoint provides platform-wide tenant statistics for administrative dashboards and monitoring.
Endpoint
curl http://localhost:8082/api/v1/tenants/stats \
-H "Authorization: Bearer $TOKEN"Response:
{
"statusCounts": [
["ACTIVE", 42],
["PROVISIONING", 3],
["SUSPENDED", 5],
["PENDING", 1],
["FAILED", 2]
],
"tierCounts": [
["FREE", 20],
["STARTER", 10],
["PROFESSIONAL", 12],
["ENTERPRISE", 5]
],
"totalStorageAllocatedGb": 15000
}Implementation
@Transactional(readOnly = true)
public TenantStatsResponse getStats() {
List<Object[]> statusCounts = tenantRepository.countByStatus();
List<Object[]> tierCounts = tenantRepository.countByTier();
Long totalStorage = tenantRepository.getTotalStorageAllocated();
return TenantStatsResponse.builder()
.statusCounts(statusCounts)
.tierCounts(tierCounts)
.totalStorageAllocatedGb(totalStorage != null ? totalStorage : 0L)
.build();
}The repository uses custom aggregate queries (@Query annotations) to efficiently compute counts and totals.
Source Files
| File | Path |
|---|---|
| Controller | control-plane/tenant-service/src/main/java/com/matih/tenant/controller/TenantController.java |
| Response DTO | control-plane/tenant-service/src/main/java/com/matih/tenant/dto/response/TenantStatsResponse.java |
| Repository | control-plane/tenant-service/src/main/java/com/matih/tenant/repository/TenantRepository.java |