Batch per-project stats for dashboard
GET
/dashboard/project-stats
const url = 'https://example.com/api/dashboard/project-stats';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/dashboard/project-stats \ --header 'Authorization: Bearer <token>'Returns per-project open ticket count, mismatch count, last scan timestamp, and health status in a single batch call. Replaces N+1 client-side derivation. Supports ETag/304 for conditional polling.
Authorizations
Section titled “Authorizations ”Responses
Section titled “ Responses ”Per-project stats
Media type application/json
object
projects
required
Array<object>
object
project_id
string format: uuid
name
string
open_tickets
integer
mismatches
integer
last_scan_at
string | null
status
string
Headers
Section titled “Headers ” ETag
string
Not Modified (ETag match)
Not authenticated
Media type application/json
object
error
required
Human-readable error message
string
code
Stable machine-readable error code for client branching
string
fieldErrors
First validation message per field path
object
key
additional properties
string
issues
Structured validation issues (Zod)
Array<object>
object
path
required
string
message
required
string
retryAfter
Seconds until rate limit resets (429 responses)
number
reconnect
True if re-linking GitHub may fix the issue
boolean