MATIH Platform is in active MVP development. Documentation reflects current implementation status.
7. Tenant Lifecycle
Tenant Management
Tenant Statistics

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

FilePath
Controllercontrol-plane/tenant-service/src/main/java/com/matih/tenant/controller/TenantController.java
Response DTOcontrol-plane/tenant-service/src/main/java/com/matih/tenant/dto/response/TenantStatsResponse.java
Repositorycontrol-plane/tenant-service/src/main/java/com/matih/tenant/repository/TenantRepository.java