Repo Statistics
WarmHub exposes several repository statistics surfaces because dashboards, billing, settings pages, and shape summaries need different levels of detail.
Dashboard List Metadata
Section titled “Dashboard List Metadata”client.repo.listPage(...) returns repository list items with dashboard-oriented metadata:
totalis the exact active count across shapes, things, and assertions.byKindbreaks that exact count intoshape,thing, andassertion.lastWriteAtis an activity timestamp, not a strict write-history cursor.hasErrorsis true when the repository has action runs in a terminal failure state.
Use this for repository tiles and organization dashboards.
Exact Single-Repo Stats
Section titled “Exact Single-Repo Stats”client.repo.getStats(...) returns an exact active-item count for one repository.
The total field sums active shapes, things, and assertions. The per-kind breakdown separates those categories, and the per-shape map counts active things by shape. Assertions are not included in the per-shape map.
Use this for billing, quotas, or repository detail pages that need the per-shape map.
Batch Stats
Section titled “Batch Stats”client.repo.getStatsBatch(...) returns exact totals for up to 100 repositories in one request.
Use it when callers need exact counts for a caller-provided set of repositories. The batch result does not include the per-shape map; call getStats(...) for any repository where you need that detail.
Configure Stats
Section titled “Configure Stats”client.repo.getConfigureStats(...) returns settings-page counts such as the number of subscriptions attached to a repository.
Use it before delete or visibility-change flows when the UI needs to explain what repository configuration will be affected.
Shape Instance Counts
Section titled “Shape Instance Counts”client.repo.getShapeInstanceCounts(...) returns thing and assertion counts grouped by shape.
The server computes these totals directly, so callers do not need to page through repository contents to build a shape summary UI.
Hit a problem or have a question? Get in touch.