Aggregate statistics across every connected org in the workspace: repository and dependency counts, artifact orphan breakdowns, last scan summary, and the declaration-outcome breakdown.
GET
/
api
/
v1
/
workspaces
/
{workspace_id}
/
stats
Get Workspace Stats
curl --request GET \ --url https://api.example.com/api/v1/workspaces/{workspace_id}/stats \ --header 'X-API-Key: <api-key>'
Per-connected-org stats payload (scoped to one connected org).
Artifact-count semantics. Every count is a raw artifact-row count — no
canonical-name dedup — restricted to first-party artifacts: rows a forked
repo produces only because it kept the upstream project's package identity are
excluded and counted separately (issue #258; is_first_party_artifact in
src/resolver/fork_alias.py is the single source of truth, cached on
artifacts.is_first_party). Consumption is computed by the single source of
truth src/graph/artifact_stats.py (the type-matched union), so an
artifact's orphan status here always matches its is_orphan on
GET /connected-orgs/{id}/artifacts:
total_artifact_rows — first-party artifact rows. Equals the
X-Total-Count header of GET /connected-orgs/{id}/artifacts with its
default include_upstream_aliases=false.
upstream_alias_artifact_count — the rows that filter excludes. Add it
to total_artifact_rows for every row the org has, which is what
?include_upstream_aliases=true returns and what a disconnect deletes.
orphan_artifact_count — first-party rows with zero consumers
(consumer_count == 0). Equals the count of is_orphan==true rows on
the artifacts endpoint and the Artifacts page "Hide orphans (N)" toggle.
consumed_artifact_count — first-party rows with at least one
consumer (== total_artifact_rows - orphan_artifact_count).
artifact_type_breakdown — first-party artifact rows grouped by
artifact_type (includes every type present; never drops one).
Invariant: sum(artifact_type_breakdown.values()) == total_artifact_rows.
total_declarations vs total_dependencies: the former counts every
manifest-context dependency declaration parsed out of the org's repos, the
latter counts the deduped cross-repo edges those declarations resolved to.
The gap between them is the org's coverage story — Patrimore parsed 4,390 and
got 9 edges — and naming both numbers is what lets a near-empty graph explain
itself instead of reading as a broken product (issue #225).
declaration_outcomes breaks that gap down: it partitions the same
total_declarations population into why each declaration did or did not
become an edge, so a large gap can be read as the ~99% correct rejections it
usually is rather than as a failure count (issue #264). It replaced
health, whose unresolved_declarations was that misreadable number and
whose other two fields were hardcoded zeros; the real on-latest / lagging
figures live on GET /artifacts/{id}/consumers.
What became of every dependency declaration parsed from the org (issue #264).
Five mutually exclusive buckets over the same population as
total_declarations — manifest-context declarations, scoped per repo to its
current_scan_id. They sum to total_declarations.
Replaces health.unresolved_declarations, which counted every unresolved
declaration regardless of why, named the result as if it were a failure count,
and — because it was computed over all reference contexts while
total_declarations is manifest-only — could exceed the total it was shown
against (cloudposse: 13,225 unresolved against 6,374 total).
Only unresolved_in_org means "Riftmap may have missed something". The other
three non-resolved buckets are correct rejections: a third-party package is
supposed to stay unresolved, a workspace: dependency lives in the same repo
by definition, and a repo importing its own subpackage is not a cross-repo edge.
Measured across all 321,445 production declarations on 2026-09-12: 86.13%
external, 4.73% resolved_in_org, 4.46% local_reference, 3.86%
self_reference, 0.81% unresolved_in_org. Those are platform
shares — a single org can sit far from them, so do not read the platform
figure as a per-org expectation. They predate v1.25.0, which counts every
repeated declaration of a reference (a second uses: of one action in a
workflow, a package listed as both a dev and a peer dependency), so every
bucket rises for an org once it is rescanned.
resolved_in_org is normally larger than total_dependencies, and that
is not a bug: it counts declarations, while total_dependencies counts deduped
graph edges. A declaration is not an edge — read-time DISTINCT ON collapses
declarations that share a (source, target, dependency_type) key, self-edges
are excluded from the graph, and an artifact target with no producing repo
renders no edge.
Classification is owned by src/graph/declaration_outcomes.py — the single
source of truth, which also documents what these buckets structurally cannot
see (a fork-alias rejection lands in external).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Riftmap","description":"Cross-repository dependency mapper and change impact engine for GitLab/GitHub orgs. The agent-friendly API for 'if I change repo X, what breaks?'","colors":{"primary":"#7B61FF","light":"#9B85FF","dark":"#5E47DB"},"logo":{"light":"https://mintcdn.com/westgaardtechnologies/3NKuoQH-GCYzbIwS/logo.png?fit=max\u0026auto=format\u0026n=3NKuoQH-GCYzbIwS\u0026q=85\u0026s=ca82ef4bbabdfd659799823771bad0ec","dark":"https://mintcdn.com/westgaardtechnologies/3NKuoQH-GCYzbIwS/logo.png?fit=max\u0026auto=format\u0026n=3NKuoQH-GCYzbIwS\u0026q=85\u0026s=ca82ef4bbabdfd659799823771bad0ec"},"favicon":"https://mintcdn.com/westgaardtechnologies/3NKuoQH-GCYzbIwS/favicon.png?fit=max\u0026auto=format\u0026n=3NKuoQH-GCYzbIwS\u0026q=85\u0026s=55d4e687c4535ecb69d903d5e02d0ed9","navbar":{"links":[{"href":"https://app.riftmap.dev","label":"App"}],"primary":{"type":"button","label":"Sign up","href":"https://app.riftmap.dev/register"}},"seo":{"metatags":{"og:site_name":"Riftmap Docs"},"indexing":"navigable"},"fonts":{"heading":{"family":"DM Sans"},"body":{"family":"DM Sans"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"westgaardtechnologies","hasAudioNarration":false,"actualSubdomain":"westgaardtechnologies","customDomains":["docs.riftmap.dev"],"gitSource":{"type":"github","owner":"danielwestgaard","repo":"riftmap","deployBranch":"main","contentDirectory":"docs-site","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aa9521202ae04dd3ca6ab39","collectionId":"6f981270-5d60-46f9-9d4d-c0eb0b80ef8c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aa9521202ae04dd3ca6ab39"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ab910403102d6a97e68e101","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"API Reference","count":88},{"language":"default","tag":"Endpoints","count":87},{"language":"default","tag":"auth","count":18},{"language":"default","tag":"billing","count":18},{"language":"default","tag":"Documentation","count":14},{"language":"default","tag":"workspaces","count":12},{"language":"default","tag":"connected-orgs","count":7},{"language":"default","tag":"repositories","count":7},{"language":"default","tag":"Changelog","count":6},{"language":"default","tag":"invitations","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/workspaces/get-workspace-stats","slug":"/api-reference/workspaces/get-workspace-stats","pageMetadata":{"title":"Get Workspace Stats","description":"Aggregate statistics across every connected org in the workspace: repository and dependency counts, artifact orphan breakdowns, last scan summary, and the declaration-outcome breakdown.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/stats","href":"/api-reference/workspaces/get-workspace-stats","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Aggregate statistics across every connected org in the workspace: repository and dependency counts, artifact orphan breakdowns, last scan summary, and the declaration-outcome breakdown.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get Workspace Stats","description":"Aggregate statistics across every connected org in the workspace: repository and dependency counts, artifact orphan breakdowns, last scan summary, and the declaration-outcome breakdown.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/stats","href":"/api-reference/workspaces/get-workspace-stats","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Aggregate statistics across every connected org in the workspace: repository and dependency counts, artifact orphan breakdowns, last scan summary, and the declaration-outcome breakdown.","operationId":"get_workspace_stats_api_v1_workspaces__workspace_id__stats_get","parameters":["4c3ca9af-ce0f-4cba-a081-950dac66a082","ef7771ec-87fb-48a7-addc-d93a1e6bcbfb","ee0d7a74-4dcb-45ea-9570-df175ea6e5e5"],"responses":{"200":"cb48042e-008e-44b7-ae7c-7dc695126340","422":"e248289b-6702-4777-b7f2-218e4d62367d"},"security":["bb0471c8-61d6-4696-bfc7-1892ddcd6a88","d66af67d-0237-4c5b-b114-274e8e25d689"],"summary":"Get Workspace Stats","tags":["workspaces"],"method":"get","type":"path","servers":[],"path":"/api/v1/workspaces/{workspace_id}/stats","baseUrlOptions":[],"title":"Get Workspace Stats","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"4c3ca9af-ce0f-4cba-a081-950dac66a082":{"in":"path","name":"workspace_id","required":true,"schema":{"format":"uuid","title":"Workspace Id","type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"}},"ef7771ec-87fb-48a7-addc-d93a1e6bcbfb":{"in":"header","name":"X-Workspace-Id","required":false,"schema":{"oneOf":[{"type":"string","title":"X-Workspace-Id","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"X-Workspace-Id","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"}},"ee0d7a74-4dcb-45ea-9570-df175ea6e5e5":{"in":"cookie","name":"riftmap_access","required":false,"schema":{"oneOf":[{"type":"string","title":"Riftmap Access","uniqueKey":"oneOf.0","typeLabel":"string"},{"type":"null","title":"Riftmap Access","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"string | null"}}},"responses":{"cb48042e-008e-44b7-ae7c-7dc695126340":{"content":{"application/json":{"schema":{"description":"Per-connected-org stats payload (scoped to one connected org).\n\nArtifact-count semantics. Every count is a raw artifact-row count — no\ncanonical-name dedup — **restricted to first-party artifacts**: rows a forked\nrepo produces only because it kept the upstream project's package identity are\nexcluded and counted separately (issue #258; ``is_first_party_artifact`` in\n``src/resolver/fork_alias.py`` is the single source of truth, cached on\n``artifacts.is_first_party``). Consumption is computed by the single source of\ntruth ``src/graph/artifact_stats.py`` (the type-matched union), so an\nartifact's orphan status here always matches its ``is_orphan`` on\n``GET /connected-orgs/{id}/artifacts``:\n\n - ``total_artifact_rows`` — first-party artifact rows. Equals the\n ``X-Total-Count`` header of ``GET /connected-orgs/{id}/artifacts`` with its\n default ``include_upstream_aliases=false``.\n - ``upstream_alias_artifact_count`` — the rows that filter excludes. Add it\n to ``total_artifact_rows`` for every row the org has, which is what\n ``?include_upstream_aliases=true`` returns and what a disconnect deletes.\n - ``orphan_artifact_count`` — first-party rows with **zero** consumers\n (``consumer_count == 0``). Equals the count of ``is_orphan==true`` rows on\n the artifacts endpoint and the Artifacts page \"Hide orphans (N)\" toggle.\n - ``consumed_artifact_count`` — first-party rows with **at least one**\n consumer (``== total_artifact_rows - orphan_artifact_count``).\n - ``artifact_type_breakdown`` — **first-party** artifact rows grouped by\n ``artifact_type`` (includes every type present; never drops one).\n Invariant: ``sum(artifact_type_breakdown.values()) == total_artifact_rows``.\n\n``total_declarations`` vs ``total_dependencies``: the former counts every\nmanifest-context dependency *declaration* parsed out of the org's repos, the\nlatter counts the deduped cross-repo *edges* those declarations resolved to.\nThe gap between them is the org's coverage story — Patrimore parsed 4,390 and\ngot 9 edges — and naming both numbers is what lets a near-empty graph explain\nitself instead of reading as a broken product (issue #225).\n\n``declaration_outcomes`` breaks that gap down: it partitions the same\n``total_declarations`` population into why each declaration did or did not\nbecome an edge, so a large gap can be read as the ~99% correct rejections it\nusually is rather than as a failure count (issue #264). It replaced\n``health``, whose ``unresolved_declarations`` was that misreadable number and\nwhose other two fields were hardcoded zeros; the real on-latest / lagging\nfigures live on ``GET /artifacts/{id}/consumers``.","properties":{"artifact_type_breakdown":{"additionalProperties":{"type":"integer","uniqueKey":"artifact_type_breakdown.additionalProperties","typeLabel":"integer"},"title":"Artifact Type Breakdown","type":"object","isRequired":true,"uniqueKey":"artifact_type_breakdown","typeLabel":"Artifact Type Breakdown · object"},"consumed_artifact_count":{"title":"Consumed Artifact Count","type":"integer","isRequired":true,"uniqueKey":"consumed_artifact_count","typeLabel":"integer"},"declaration_outcomes":{"description":"What became of every dependency declaration parsed from the org (issue #264).\n\nFive mutually exclusive buckets over the same population as\n``total_declarations`` — manifest-context declarations, scoped per repo to its\n``current_scan_id``. **They sum to ``total_declarations``.**\n\nReplaces ``health.unresolved_declarations``, which counted every unresolved\ndeclaration regardless of why, named the result as if it were a failure count,\nand — because it was computed over all reference contexts while\n``total_declarations`` is manifest-only — could exceed the total it was shown\nagainst (cloudposse: 13,225 unresolved against 6,374 total).\n\nOnly ``unresolved_in_org`` means \"Riftmap may have missed something\". The other\nthree non-resolved buckets are correct rejections: a third-party package is\nsupposed to stay unresolved, a ``workspace:`` dependency lives in the same repo\nby definition, and a repo importing its own subpackage is not a cross-repo edge.\nMeasured across all 321,445 production declarations on 2026-09-12: 86.13%\n``external``, 4.73% ``resolved_in_org``, 4.46% ``local_reference``, 3.86%\n``self_reference``, **0.81% ``unresolved_in_org``**. Those are *platform*\nshares — a single org can sit far from them, so do not read the platform\nfigure as a per-org expectation. They predate v1.25.0, which counts every\nrepeated declaration of a reference (a second ``uses:`` of one action in a\nworkflow, a package listed as both a dev and a peer dependency), so every\nbucket rises for an org once it is rescanned.\n\n``resolved_in_org`` is normally **larger** than ``total_dependencies``, and that\nis not a bug: it counts declarations, while ``total_dependencies`` counts deduped\ngraph edges. A declaration is not an edge — read-time ``DISTINCT ON`` collapses\ndeclarations that share a ``(source, target, dependency_type)`` key, self-edges\nare excluded from the graph, and an artifact target with no producing repo\nrenders no edge.\n\nClassification is owned by ``src/graph/declaration_outcomes.py`` — the single\nsource of truth, which also documents what these buckets structurally cannot\nsee (a fork-alias rejection lands in ``external``).","properties":{"external":{"description":"Unresolved and the reference does not name anything in this org — third-party packages, base images and actions. Correctly not in your graph. Note this means 'does not name your namespace', not 'you do not depend on it'.","title":"External","type":"integer","isRequired":true,"uniqueKey":"declaration_outcomes.external","typeLabel":"integer"},"local_reference":{"description":"Unresolved because the version constraint denotes a local/intra-repo protocol (pnpm/yarn 'workspace:', 'catalog:', 'link:', 'file:', 'portal:'). Intra-repo by definition and must never mint a cross-repo edge. A correct rejection.","title":"Local Reference","type":"integer","isRequired":true,"uniqueKey":"declaration_outcomes.local_reference","typeLabel":"integer"},"resolved_in_org":{"description":"Resolved to a target inside this org — these are what the graph is built from.","title":"Resolved In Org","type":"integer","isRequired":true,"uniqueKey":"declaration_outcomes.resolved_in_org","typeLabel":"integer"},"self_reference":{"description":"Unresolved and the reference names the declaring repository itself — a monorepo importing its own subpackage, or an image tagged from its own repo. A correct rejection.","title":"Self Reference","type":"integer","isRequired":true,"uniqueKey":"declaration_outcomes.self_reference","typeLabel":"integer"},"unresolved_in_org":{"description":"Unresolved, and the reference names this org's own namespace. THE ONLY BUCKET THAT MEANS RIFTMAP MAY HAVE MISSED AN EDGE — everything else here is expected behaviour. 0.81% of all production declarations, but that is a platform-wide share and not a per-org expectation: a single org can be far higher, usually because one repeated reference shape does not parse.","title":"Unresolved In Org","type":"integer","isRequired":true,"uniqueKey":"declaration_outcomes.unresolved_in_org","typeLabel":"integer"}},"required":["resolved_in_org","local_reference","self_reference","unresolved_in_org","external"],"title":"DeclarationOutcomes","type":"object","isRequired":true,"uniqueKey":"declaration_outcomes","typeLabel":"DeclarationOutcomes · object"},"dependency_type_breakdown":{"additionalProperties":{"type":"integer","uniqueKey":"dependency_type_breakdown.additionalProperties","typeLabel":"integer"},"title":"Dependency Type Breakdown","type":"object","isRequired":true,"uniqueKey":"dependency_type_breakdown","typeLabel":"Dependency Type Breakdown · object"},"last_scan":{"oneOf":[{"type":"object","title":"LastScanSummary","description":"Summary of the most recent scan.","required":["id","status","completed_at","repos_scanned","errors"],"properties":{"completed_at":{"oneOf":[{"type":"string","title":"Completed At","format":"date-time","isRequired":true,"uniqueKey":"last_scan.oneOf.0.completed_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Completed At","isRequired":true,"uniqueKey":"last_scan.oneOf.0.completed_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"last_scan.oneOf.0.completed_at","typeLabel":"string\u003cdate-time> | null"},"errors":{"title":"Errors","type":"integer","isRequired":true,"uniqueKey":"last_scan.oneOf.0.errors","typeLabel":"integer"},"id":{"format":"uuid","title":"Id","type":"string","isRequired":true,"uniqueKey":"last_scan.oneOf.0.id","typeLabel":"string\u003cuuid>"},"repos_scanned":{"title":"Repos Scanned","type":"integer","isRequired":true,"uniqueKey":"last_scan.oneOf.0.repos_scanned","typeLabel":"integer"},"status":{"title":"Status","type":"string","isRequired":true,"uniqueKey":"last_scan.oneOf.0.status","typeLabel":"string"}},"isRequired":true,"uniqueKey":"last_scan.oneOf.0","typeLabel":"LastScanSummary · object"},{"type":"null","isRequired":true,"uniqueKey":"last_scan.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"last_scan","typeLabel":"LastScanSummary · object | null"},"orphan_artifact_count":{"title":"Orphan Artifact Count","type":"integer","isRequired":true,"uniqueKey":"orphan_artifact_count","typeLabel":"integer"},"total_artifact_rows":{"title":"Total Artifact Rows","type":"integer","isRequired":true,"uniqueKey":"total_artifact_rows","typeLabel":"integer"},"total_declarations":{"title":"Total Declarations","type":"integer","isRequired":true,"uniqueKey":"total_declarations","typeLabel":"integer"},"total_dependencies":{"title":"Total Dependencies","type":"integer","isRequired":true,"uniqueKey":"total_dependencies","typeLabel":"integer"},"total_repositories":{"title":"Total Repositories","type":"integer","isRequired":true,"uniqueKey":"total_repositories","typeLabel":"integer"},"upstream_alias_artifact_count":{"default":0,"title":"Upstream Alias Artifact Count","type":"integer","uniqueKey":"upstream_alias_artifact_count","typeLabel":"integer"}},"required":["total_repositories","total_declarations","total_dependencies","consumed_artifact_count","orphan_artifact_count","total_artifact_rows","dependency_type_breakdown","artifact_type_breakdown","last_scan","declaration_outcomes"],"title":"OrgStats","type":"object","uniqueKey":"","typeLabel":"OrgStats · object"},"examples":{"Example":{"title":"Example","value":{"artifact_type_breakdown":{},"consumed_artifact_count":123,"declaration_outcomes":{"external":123,"local_reference":123,"resolved_in_org":123,"self_reference":123,"unresolved_in_org":123},"dependency_type_breakdown":{},"last_scan":{"completed_at":"2023-11-07T05:31:56Z","errors":123,"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","repos_scanned":123,"status":"\u003cstring>"},"orphan_artifact_count":123,"total_artifact_rows":123,"total_declarations":123,"total_dependencies":123,"total_repositories":123,"upstream_alias_artifact_count":0}}},"exampleType":"generated"}},"description":"Successful Response","exampleType":"generated"},"e248289b-6702-4777-b7f2-218e4d62367d":{"content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"oneOf":[{"type":"string","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"integer","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.1","typeLabel":"integer"}],"uniqueKey":"detail.items.[INDEX].loc.items.[INDEX]","typeLabel":"string | integer"},"title":"Location","type":"array","isRequired":true,"uniqueKey":"detail.items.[INDEX].loc","typeLabel":"(string | integer)[]"},"msg":{"title":"Message","type":"string","isRequired":true,"uniqueKey":"detail.items.[INDEX].msg","typeLabel":"string"},"type":{"title":"Error Type","type":"string","isRequired":true,"uniqueKey":"detail.items.[INDEX].type","typeLabel":"string"},"ctx":{"title":"Context","type":"object","uniqueKey":"detail.items.[INDEX].ctx","typeLabel":"Context · object"},"input":{"oneOf":[{"title":"Input"}],"uniqueKey":"detail.items.[INDEX].input","typeLabel":"any"}},"required":["loc","msg","type"],"title":"ValidationError","type":"object","uniqueKey":"detail.items.[INDEX]","typeLabel":"ValidationError · object"},"title":"Detail","type":"array","uniqueKey":"detail","typeLabel":"ValidationError · object[]"}},"title":"HTTPValidationError","type":"object","uniqueKey":"","typeLabel":"HTTPValidationError · object"},"examples":{"Example":{"title":"Example","value":{"detail":[{"loc":["\u003cstring>"],"msg":"\u003cstring>","type":"\u003cstring>","ctx":{},"input":"\u003cunknown>"}]}}},"exampleType":"generated"}},"description":"Validation Error","exampleType":"generated"}},"security":{"bb0471c8-61d6-4696-bfc7-1892ddcd6a88":{"APIKeyHeader":{"in":"header","name":"X-API-Key","type":"apiKey","scopes":[]}},"d66af67d-0237-4c5b-b114-274e8e25d689":{"HTTPBearer":{"description":"API key as Bearer token (rfm_live_... prefix)","scheme":"bearer","type":"http","scopes":[]}}},"servers":{},"processedSecurityOptions":[{"schemes":[{"scheme":{"in":"header","name":"X-API-Key","type":"apiKey","scopes":[]},"schema":{"title":"X-API-Key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"APIKeyHeader","name":"X-API-Key"}],"title":"APIKeyHeader"},{"schemes":[{"scheme":{"description":"API key as Bearer token (rfm_live_... prefix)","scheme":"bearer","type":"http","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key as Bearer token (rfm_live_... prefix)","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"HTTPBearer","name":"Authorization"}],"title":"HTTPBearer"}]},"originalFileLocation":"openapi.json"},"subdomain":"westgaardtechnologies","siteName":"Riftmap","title":"Get Workspace Stats - Riftmap","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-27T12:47:02.149Z","originalFileLocation":"api-reference/workspaces/get-workspace-stats.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Aggregate statistics across every connected org in the workspace: repository and dependency counts, artifact orphan breakdowns, last scan summary, and the declaration-outcome breakdown.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Riftmap\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/westgaardtechnologies/R6ltIliKa1Ys7Brf/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/westgaardtechnologies/R6ltIliKa1Ys7Brf/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/westgaardtechnologies/R6ltIliKa1Ys7Brf/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/westgaardtechnologies/R6ltIliKa1Ys7Brf/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/westgaardtechnologies/R6ltIliKa1Ys7Brf/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/westgaardtechnologies/R6ltIliKa1Ys7Brf/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/westgaardtechnologies/R6ltIliKa1Ys7Brf/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/westgaardtechnologies/R6ltIliKa1Ys7Brf/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/westgaardtechnologies/R6ltIliKa1Ys7Brf/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get Workspace Stats - Riftmap\">\u003cmeta data-mint-head property=\"og:description\" content=\"Aggregate statistics across every connected org in the workspace: repository and dependency counts, artifact orphan breakdowns, last scan summary, and the declaration-outcome breakdown.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Riftmap Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.riftmap.dev/api-reference/workspaces/get-workspace-stats\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://westgaardtechnologies.mintlify.site/_mintlify/api/og/v2?division=workspaces\u0026amp;title=Get+Workspace+Stats\u0026amp;description=Aggregate+statistics+across+every+connected+org+in+the+workspace%3A+repository+and+dependency+counts%2C+artifact+orphan+breakdowns%2C+last+scan+summary%2C+and+the+decla\u0026amp;theme=868fc54aab183060d84a05a1\u0026amp;signature=5ade8a4aa72b2960bff16086218303df2c55b8fd79f7f1685c108404d6853fc0\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get Workspace Stats - Riftmap\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Aggregate statistics across every connected org in the workspace: repository and dependency counts, artifact orphan breakdowns, last scan summary, and the declaration-outcome breakdown.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://westgaardtechnologies.mintlify.site/_mintlify/api/og/v2?division=workspaces\u0026amp;title=Get+Workspace+Stats\u0026amp;description=Aggregate+statistics+across+every+connected+org+in+the+workspace%3A+repository+and+dependency+counts%2C+artifact+orphan+breakdowns%2C+last+scan+summary%2C+and+the+decla\u0026amp;theme=868fc54aab183060d84a05a1\u0026amp;signature=5ade8a4aa72b2960bff16086218303df2c55b8fd79f7f1685c108404d6853fc0\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/westgaardtechnologies/R6ltIliKa1Ys7Brf/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Riftmap\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7B61FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.riftmap.dev/api-reference/workspaces/get-workspace-stats\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/workspaces/get-workspace-stats.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.riftmap.dev/#organization\",\"name\":\"Riftmap\",\"url\":\"https://docs.riftmap.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/westgaardtechnologies/3NKuoQH-GCYzbIwS/logo.png?fit=max\u0026auto=format\u0026n=3NKuoQH-GCYzbIwS\u0026q=85\u0026s=ca82ef4bbabdfd659799823771bad0ec\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.riftmap.dev#website\",\"name\":\"Riftmap\",\"url\":\"https://docs.riftmap.dev\",\"publisher\":{\"@id\":\"https://docs.riftmap.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.riftmap.dev/api-reference/workspaces/get-workspace-stats#webpage\",\"url\":\"https://docs.riftmap.dev/api-reference/workspaces/get-workspace-stats\",\"name\":\"Get Workspace Stats\",\"description\":\"Aggregate statistics across every connected org in the workspace: repository and dependency counts, artifact orphan breakdowns, last scan summary, and the declaration-outcome breakdown.\",\"dateModified\":\"2026-09-27T12:47:02.149Z\",\"isPartOf\":{\"@id\":\"https://docs.riftmap.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.riftmap.dev/api-reference/workspaces/get-workspace-stats#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.riftmap.dev/api-reference/workspaces/get-workspace-stats#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.riftmap.dev/api-reference/artifacts/get-a-single-artifact-by-id-with-consumer-count-and-orphan-flag\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"workspaces\",\"item\":\"https://docs.riftmap.dev/api-reference/workspaces/list-workspaces\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Get Workspace Stats\",\"item\":\"https://docs.riftmap.dev/api-reference/workspaces/get-workspace-stats\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.riftmap.dev/api-reference/workspaces/get-workspace-stats#apireference\",\"headline\":\"Get Workspace Stats\",\"name\":\"Get Workspace Stats\",\"description\":\"Aggregate statistics across every connected org in the workspace: repository and dependency counts, artifact orphan breakdowns, last scan summary, and the declaration-outcome breakdown.\",\"url\":\"https://docs.riftmap.dev/api-reference/workspaces/get-workspace-stats\",\"mainEntityOfPage\":{\"@id\":\"https://docs.riftmap.dev/api-reference/workspaces/get-workspace-stats#webpage\"},\"dateModified\":\"2026-09-27T12:47:02.149Z\",\"publisher\":{\"@id\":\"https://docs.riftmap.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.riftmap.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Riftmap\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Riftmap","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"API reference","href":"/api-reference/introduction"}]},{"group":"Endpoints","pages":[{"group":"artifacts","pages":[{"title":"Get a single artifact by ID, with consumer count and orphan flag.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/artifacts/{artifact_id}","href":"/api-reference/artifacts/get-a-single-artifact-by-id-with-consumer-count-and-orphan-flag"},{"title":"List repositories consuming this artifact, with pinned versions.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/artifacts/{artifact_id}/consumers","href":"/api-reference/artifacts/list-repositories-consuming-this-artifact-with-pinned-versions"},{"title":"List all versions of this artifact seen across the org, with consumer counts.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/artifacts/{artifact_id}/versions","href":"/api-reference/artifacts/list-all-versions-of-this-artifact-seen-across-the-org-with-consumer-counts"},{"title":"List artifacts (Docker images, packages, modules) produced in a connected org.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/connected-orgs/{connected_org_id}/artifacts","href":"/api-reference/artifacts/list-artifacts-docker-images-packages-modules-produced-in-a-connected-org"}]},{"group":"auth","pages":[{"title":"Accept Tos","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/accept-tos","href":"/api-reference/auth/accept-tos"},{"title":"Cancel Account Deletion","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/account/cancel-deletion","href":"/api-reference/auth/cancel-account-deletion"},{"title":"Delete Account","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/account/delete","href":"/api-reference/auth/delete-account"},{"title":"Verify Email","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/email/verify","href":"/api-reference/auth/verify-email"},{"title":"Resend Verification Email","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/email/verify/resend","href":"/api-reference/auth/resend-verification-email"},{"title":"Login","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/login","href":"/api-reference/auth/login"},{"title":"Logout","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/logout","href":"/api-reference/auth/logout"},{"title":"Get Me","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/auth/me","href":"/api-reference/auth/get-me"},{"title":"Update Me","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/v1/auth/me","href":"/api-reference/auth/update-me"},{"title":"Oauth Callback","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/auth/oauth/{provider}/callback","href":"/api-reference/auth/oauth-callback"},{"title":"Oauth Start","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/auth/oauth/{provider}/start","href":"/api-reference/auth/oauth-start"},{"title":"Change Password","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/password/change","href":"/api-reference/auth/change-password"},{"title":"Confirm Password Reset","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/password/reset/confirm","href":"/api-reference/auth/confirm-password-reset"},{"title":"Request Password Reset","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/password/reset/request","href":"/api-reference/auth/request-password-reset"},{"title":"Set Password","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/password/set","href":"/api-reference/auth/set-password"},{"title":"List Providers","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/auth/providers","href":"/api-reference/auth/list-providers"},{"title":"Refresh Token","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/refresh","href":"/api-reference/auth/refresh-token"},{"title":"Register","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/auth/register","href":"/api-reference/auth/register"}]},{"group":"billing","pages":[{"title":"Get Plan Catalog","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/billing/plans","href":"/api-reference/billing/get-plan-catalog"},{"title":"Stripe Webhook","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/webhooks/stripe","href":"/api-reference/billing/stripe-webhook"},{"title":"Get Billing Status","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/billing","href":"/api-reference/billing/get-billing-status"},{"title":"Cancel Subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/billing/cancel","href":"/api-reference/billing/cancel-subscription"},{"title":"Preview pending charges that will bill on the final invoice if not waived","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/billing/cancel/preview","href":"/api-reference/billing/preview-pending-charges-that-will-bill-on-the-final-invoice-if-not-waived"},{"title":"Change Plan","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/billing/change-plan","href":"/api-reference/billing/change-plan"},{"title":"Preview Change Plan","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/billing/change-plan/preview","href":"/api-reference/billing/preview-change-plan"},{"title":"Create Checkout Session","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/billing/checkout","href":"/api-reference/billing/create-checkout-session"},{"title":"Get Billing History","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/billing/history","href":"/api-reference/billing/get-billing-history"},{"title":"Get Payment Info","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/billing/payment-info","href":"/api-reference/billing/get-payment-info"},{"title":"Attach Payment Method","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/billing/payment-methods","href":"/api-reference/billing/attach-payment-method"},{"title":"Create Setup Intent","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/billing/payment-methods/setup-intent","href":"/api-reference/billing/create-setup-intent"},{"title":"Create Portal Session","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/billing/portal","href":"/api-reference/billing/create-portal-session"},{"title":"Resume Subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/billing/resume","href":"/api-reference/billing/resume-subscription"},{"title":"Add Seats","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/billing/seats","href":"/api-reference/billing/add-seats"},{"title":"Remove Seats","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/v1/workspaces/{workspace_id}/billing/seats","href":"/api-reference/billing/remove-seats"},{"title":"Preview Seat Change","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/billing/seats/preview","href":"/api-reference/billing/preview-seat-change"},{"title":"Get Billing Usage","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/billing/usage","href":"/api-reference/billing/get-billing-usage"}]},{"group":"connected-orgs","pages":[{"title":"List Connected Orgs","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/connected-orgs","href":"/api-reference/connected-orgs/list-connected-orgs"},{"title":"Create Connected Org","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/connected-orgs","href":"/api-reference/connected-orgs/create-connected-org"},{"title":"Get Connected Org","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/connected-orgs/{connected_org_id}","href":"/api-reference/connected-orgs/get-connected-org"},{"title":"Update Connected Org","deprecated":null,"version":null,"openapi":"/openapi.json put /api/v1/connected-orgs/{connected_org_id}","href":"/api-reference/connected-orgs/update-connected-org"},{"title":"Delete Connected Org","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/v1/connected-orgs/{connected_org_id}","href":"/api-reference/connected-orgs/delete-connected-org"},{"title":"Ranked findings feed: high-fan-in repos with low bus factor (spec §8). Shares and counts are computed over a trailing window (default 365 days), excluding merge commits, with bot identities stripped; each item carries the `window` (start/end) and `computed_at` it was computed for.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/connected-orgs/{connected_org_id}/ownership-risk","href":"/api-reference/connected-orgs/ranked-findings-feed:-high-fan-in-repos-with-low-bus-factor-spec-§8-shares-and-counts-are-computed-over-a-trailing-window-default-365-days-excluding-merge-commits-with-bot-identities-stripped;-each-item-carries-the-`window`-startend-and-`computed_at`-it-was-computed-for"},{"title":"Get Connected Org Stats","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/connected-orgs/{connected_org_id}/stats","href":"/api-reference/connected-orgs/get-connected-org-stats"}]},{"group":"graph","pages":[{"title":"Get the dependency graph (full org or subgraph anchored at a repo).","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/connected-orgs/{connected_org_id}/graph","href":"/api-reference/graph/get-the-dependency-graph-full-org-or-subgraph-anchored-at-a-repo"}]},{"group":"repositories","pages":[{"title":"List repositories discovered in a connected org.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/connected-orgs/{connected_org_id}/repositories","href":"/api-reference/repositories/list-repositories-discovered-in-a-connected-org"},{"title":"Resolve a clone URL or org/repo slug to a repository (pass exactly one of `url` or `full_path`).","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/repositories/lookup","href":"/api-reference/repositories/resolve-a-clone-url-or-orgrepo-slug-to-a-repository-pass-exactly-one-of-`url`-or-`full_path`"},{"title":"Get a single repository by ID, including freshness fields.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/repositories/{repo_id}","href":"/api-reference/repositories/get-a-single-repository-by-id-including-freshness-fields"},{"title":"Recommended first hydration call after `/lookup`: repo + capped deps + capped dependents + artifacts in one round-trip.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/repositories/{repo_id}/context","href":"/api-reference/repositories/recommended-first-hydration-call-after-`lookup`:-repo-+-capped-deps-+-capped-dependents-+-artifacts-in-one-round-trip"},{"title":"List the dependency declarations this repository makes.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/repositories/{repo_id}/dependencies","href":"/api-reference/repositories/list-the-dependency-declarations-this-repository-makes"},{"title":"List the repositories that directly depend on this repository.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/repositories/{repo_id}/dependents","href":"/api-reference/repositories/list-the-repositories-that-directly-depend-on-this-repository"},{"title":"Bus-factor signal + capped human contributors for one repo (spec §8).","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/repositories/{repo_id}/ownership","href":"/api-reference/repositories/bus-factor-signal-+-capped-human-contributors-for-one-repo-spec-§8"}]},{"group":"scans","pages":[{"title":"List Scans","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/connected-orgs/{connected_org_id}/scans","href":"/api-reference/scans/list-scans"},{"title":"Trigger Scan","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/connected-orgs/{connected_org_id}/scans","href":"/api-reference/scans/trigger-scan"},{"title":"Get Scan","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/scans/{scan_id}","href":"/api-reference/scans/get-scan"},{"title":"Cancel Scan","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/scans/{scan_id}/cancel","href":"/api-reference/scans/cancel-scan"}]},{"group":"invitations","pages":[{"title":"Preview Invitation","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/invitations/{token}","href":"/api-reference/invitations/preview-invitation"},{"title":"Accept Invitation","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/invitations/{token}/accept","href":"/api-reference/invitations/accept-invitation"},{"title":"List Invitations","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/invitations","href":"/api-reference/invitations/list-invitations"},{"title":"Create Invitation","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/invitations","href":"/api-reference/invitations/create-invitation"},{"title":"Revoke Invitation","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/v1/workspaces/{workspace_id}/invitations/{invitation_id}","href":"/api-reference/invitations/revoke-invitation"}]},{"group":"impact","pages":[{"title":"Transitive downstream blast radius (repo-level BFS). NOT file-path scoped — accepts only `max_depth` + `min_confidence`.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/repositories/{repo_id}/impact","href":"/api-reference/impact/transitive-downstream-blast-radius-repo-level-bfs-not-file-path-scoped-—-accepts-only-`max_depth`-+-`min_confidence`"}]},{"group":"workspaces","pages":[{"title":"List Workspaces","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces","href":"/api-reference/workspaces/list-workspaces"},{"title":"Create Workspace","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces","href":"/api-reference/workspaces/create-workspace"},{"title":"Create Workspace With Checkout","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/create-with-checkout","href":"/api-reference/workspaces/create-workspace-with-checkout"},{"title":"Get Workspace","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}","href":"/api-reference/workspaces/get-workspace"},{"title":"Update Workspace","deprecated":null,"version":null,"openapi":"/openapi.json put /api/v1/workspaces/{workspace_id}","href":"/api-reference/workspaces/update-workspace"},{"title":"Delete Workspace","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/v1/workspaces/{workspace_id}","href":"/api-reference/workspaces/delete-workspace"},{"title":"Regenerate Api Key","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/api-key/regenerate","href":"/api-reference/workspaces/regenerate-api-key"},{"title":"Read the workspace's plan entitlements (any member)","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/entitlements","href":"/api-reference/workspaces/read-the-workspaces-plan-entitlements-any-member"},{"title":"Export Workspace","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/export","href":"/api-reference/workspaces/export-workspace"},{"title":"List Oauth Orgs","description":"List GitHub orgs or GitLab groups accessible via the user's linked OAuth identity.\n\nUsed by the frontend org-picker so users can connect an org without pasting a PAT.\nRequires session auth — the token lives on the user's identity row, not the workspace.","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/oauth-orgs/{provider}","href":"/api-reference/workspaces/list-oauth-orgs"},{"title":"Get Workspace Stats","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/stats","href":"/api-reference/workspaces/get-workspace-stats"},{"title":"Transfer Ownership","description":"Transfer ownership to another member. Caller is demoted to Admin; target is promoted to Owner.\n\nRequires session auth — API keys cannot transfer ownership (no user identity to demote).","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/transfer","href":"/api-reference/workspaces/transfer-ownership"}]},{"group":"api-keys","pages":[{"title":"List Api Keys","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/api-keys","href":"/api-reference/api-keys/list-api-keys"},{"title":"Create Api Key","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/api-keys","href":"/api-reference/api-keys/create-api-key"},{"title":"Revoke Api Key","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/v1/workspaces/{workspace_id}/api-keys/{key_id}","href":"/api-reference/api-keys/revoke-api-key"}]},{"group":"memberships","pages":[{"title":"Leave Workspace","deprecated":null,"version":null,"openapi":"/openapi.json post /api/v1/workspaces/{workspace_id}/leave","href":"/api-reference/memberships/leave-workspace"},{"title":"List Members","deprecated":null,"version":null,"openapi":"/openapi.json get /api/v1/workspaces/{workspace_id}/members","href":"/api-reference/memberships/list-members"},{"title":"Remove Member","deprecated":null,"version":null,"openapi":"/openapi.json delete /api/v1/workspaces/{workspace_id}/members/{user_id}","href":"/api-reference/memberships/remove-member"},{"title":"Update Member Role","deprecated":null,"version":null,"openapi":"/openapi.json patch /api/v1/workspaces/{workspace_id}/members/{user_id}","href":"/api-reference/memberships/update-member-role"}]},{"group":"meta","pages":[{"title":"Health","deprecated":null,"version":null,"openapi":"/openapi.json get /health","href":"/api-reference/meta/health"},{"title":"Health Detailed","deprecated":null,"version":null,"openapi":"/openapi.json get /health/detailed","href":"/api-reference/meta/health-detailed"},{"title":"Ready","deprecated":null,"version":null,"openapi":"/openapi.json get /ready","href":"/api-reference/meta/ready"}]}]}]}]},"basePath":"","title":"Get Workspace Stats - Riftmap","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Myd8dsju.js","utils-C2HkQgW0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-8rSppmTv.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B6MjiCFm.js","snippetPresets-DwrSAONL.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-1-a5UQKQ.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C541m7wZ.js","shallow-CWELCZ77.js","getApiPlaygroundDisplay-CTo5Zn03.js","CodeSnippet-D--dzvnl.js","CodeSnippets-DM3cXEDh.js","Page-CxAy5y67.js","getPastedJson-C-VECgcL.js","icon-BPq2-Mg3.js","MethodPill-D9J5cUHd.js","DuplicateIcon-BqHaxUnD.js","createIcon-CIbcZHp9.js","DynamicMarkdown-BKiHAm_d.js","SectionHeading-DstQXt3H.js","axios-vUo_bRtp.js","Markdown-CpxgzsKA.js","clsx-C5EfhVm0.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CJ9Oly2E.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Mk6P3qvh.js"]}