Organizedashboard
GET/user/dashboard/summary
Read the caller's dashboard summary counters
get_my_dashboard_summary
dashboard:read
A token needs thedashboard:readscope: Read your dashboard summary counters and your own activity breakdownGranted bymcp_agent,mcp_agent_write,read_api,write_api.Every operation this scope unlocks
The numbers a dashboard shows before anything else loads: the attention inbox badge, your open
merge requests, pending review requests, open work items assigned to you, pipeline runs that
failed in the last seven days, your current contribution streak, the storage use of up to ten
of your organizations, and whether your getting-started checklist is complete. Each count stops
at a ceiling, and truncated names the ones that reached it. A service account gets only the
inbox badge.
Responses
200The dashboard's summary countersapplication/json
attentionAttentionCountsThe inbox badge, with its own
truncatedflag preserved for clients written against it.- The AttentionCounts schema
- by_reasonobjectReasons with at least one pending item, keyed by the wire name.
- pendinginteger · int64A capped count. When
truncated, this is the cap and the client renders "99+". - truncatedboolean
- authored_merge_requests_openinteger · int64
- contributions_current_streakinteger · int64
- count_capinteger · int64The ceiling each counter was computed under.
- issues_assigned_openinteger · int64
namespacesarray of NamespaceSummaryView
- The NamespaceSummaryView schema
- full_pathstring
- plan_tierPlanTierfreeproteamenterpriseThe subscription plan an organization is on, which sets its resource limits. From smallest to largest:
free,pro,team,enterprise. - root_group_idGroupId (string · uuid)
- storage_bytes_limitinteger · int640–∞
- storage_bytes_usedinteger · int640–∞
- storage_used_pctinteger · int32 or nulloptional0–∞Storage used as a percentage of the limit, rounded, at most 100. Absent when the plan has no storage limit, which is not the same as 0%.
- onboarding_completeboolean
- pipeline_runs_failed_7dinteger · int64
- review_requests_pendinginteger · int64
- truncatedarray of stringThe names of the counters that reached
count_cap, whose values are therefore a minimum rather than the full count.
200 exampleSynthesized example
{
"attention": {
"by_reason": {},
"pending": 72,
"truncated": false
},
"authored_merge_requests_open": 68,
"contributions_current_streak": 66,
"count_cap": 6,
"issues_assigned_open": 84,
"namespaces": [
{
"full_path": "acme/payments-api",
"plan_tier": "free",
"root_group_id": "4c1d8e2f-6a3b-4f90-b7c5-1e2d3c4b5a69",
"storage_bytes_limit": 50,
"storage_bytes_used": 35
},
{
"full_path": "acme/payments-api",
"plan_tier": "free",
"root_group_id": "4c1d8e2f-6a3b-4f90-b7c5-1e2d3c4b5a69",
"storage_bytes_limit": 69,
"storage_bytes_used": 10
}
],
"onboarding_complete": false,
"pipeline_runs_failed_7d": 89,
"review_requests_pending": 67,
"truncated": [
"truncated-8cce"
]
}
401Not authenticatedapplication/json
Error codes
- UNAUTHORIZEDNo credential was sent, or the one sent is invalid, expired or revoked
errorErrorBody
- The ErrorBody schema
- codestringThe coarse category, tied to the status:
NOT_FOUND,CONFLICT,INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all. - messagestringWhat went wrong, for a person. Written to be read, not parsed: match on
reasonorcode. - fieldstring or nulloptionalOn a
400that refused one field's value, the field, as its JSON path:email,items[0].name. Put the message under that input. Absent on every other error. - reasonstring or nulloptionalThe specific code, when the error has one:
LAST_ORGANIZATION_OWNER,BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and oncodeotherwise. - required_scopestring or nulloptionalThe scope the access token was missing, on
INSUFFICIENT_SCOPE. - violationsanyoptionalPresent on the structured-validation errors (
PROVIDER_VALIDATION_FAILEDper-node,PIPELINE_VALIDATION_FAILEDDAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
401 exampleSynthesized example
{
"error": {
"code": "code-e3aa",
"message": "Pin a page's payload to the build that rendered it"
}
}
403The token does not allow reading the dashboardapplication/json
Error codes
- FORBIDDENYou are signed in but may not do this here;
reasonnames the permission or the rule that refused it - INSUFFICIENT_SCOPEThe access token lacks the scope this operation needs;
required_scopenames it - PERMISSION_REQUIREDYou need a permission you do not hold here; the message names it
errorErrorBody
- The ErrorBody schema
- codestringThe coarse category, tied to the status:
NOT_FOUND,CONFLICT,INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all. - messagestringWhat went wrong, for a person. Written to be read, not parsed: match on
reasonorcode. - fieldstring or nulloptionalOn a
400that refused one field's value, the field, as its JSON path:email,items[0].name. Put the message under that input. Absent on every other error. - reasonstring or nulloptionalThe specific code, when the error has one:
LAST_ORGANIZATION_OWNER,BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and oncodeotherwise. - required_scopestring or nulloptionalThe scope the access token was missing, on
INSUFFICIENT_SCOPE. - violationsanyoptionalPresent on the structured-validation errors (
PROVIDER_VALIDATION_FAILEDper-node,PIPELINE_VALIDATION_FAILEDDAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
403 exampleSynthesized example
{
"error": {
"code": "code-fcc7",
"message": "Stream pipeline status into the run header"
}
}
CLI
gitmoap dashboard get-my-dashboard-summary