API
The web app reads everything through an HTTP API at https://app.argusadr.dev/api/v1, read-only apart from recording approvals. This
page is an overview; a full reference is coming soon.
Authentication
- Every request needs a signed-in session: the session cookie set when you
sign in with GitHub. Without one, the API answers
401. GET /api/v1/healthzandGET /api/v1/openapi.jsonneed no sign-in.- API tokens for scripts and CI: not available yet; to be confirmed. Agent tokens open only the
MCP server, never
/api/v1.
What you see
Only your organisations’ repositories, components and findings, in every list, detail, count and total. Another
organisation’s item answers 404.
Conventions
- Read-only, apart from
POST /approvalsand the admins’ settings: onlyGET. Any other method answers405(or403when it comes from another site or without the session’s CSRF token). - JSON with
snake_casefields; times are ISO 8601 in UTC. - Every response has
meta: when it was generated, when the data was last refreshed (data_as_of), and the model’s version. - Lists return
{ "items": [...], "next_cursor": "…" | null, "meta": {...} }.limitdefaults to 50, up to 500; passcursorto get the next page. - Filters: a repeated filter means OR, different filters mean AND. For example,
?severity=critical&severity=high&project=shopis critical or high findings inshop. - Errors:
{ "error": { "code": "not_found", "message": "…" } }, with400,401,403,404or500. - Caching: each response carries an
ETagandCache-Control: private, max-age=60.
Endpoints
| Path | Returns |
|---|---|
/overview |
one entry per repository, plus totals |
/trend |
daily open-finding counts |
/findings, /findings/{id} |
findings, filtered; one finding with its history |
/rules, /rules/{id} |
the rule catalogue; one rule with its counts |
/repositories |
the repositories |
/prs, /prs/{owner}/{repo}/{number} |
pull requests; one with its files, components and impact |
/agents, /agents/sessions, /agents/sessions/{id} |
the per-agent summary; sessions agents reported |
/approvals |
what waits for a decision, the decisions made on GitHub, and approval records; POST records an approval made in the app by a signed-in person, never by an agent |
/audit |
the append-only audit log: who changed what, when and from where, for your organisations |
/components, /components/{id}, /components/{id}/impact |
components; one component; what changing it reaches |
/contracts, /contracts/{id} |
contracts and their consumers |
/adrs, /docs, /changelog |
decisions, documents, and what changed in the model by week |
/coupling |
components that change together, and hotspots |
/environments |
what runs where, compared with the default branch |
/standards, /initiatives |
scorecards and initiatives |
/insights, /metrics |
key numbers and charts; the architecture metrics |
The machine-readable contract is GET /api/v1/openapi.json.