aria / API.md
varshithreddy1807's picture
Release/aria v1.5.0 (#14)
2cfda00
|
Raw History Blame Contribute Delete
14.4 kB
# API Reference Guide — ARIA v1.5.0
This document details the REST endpoints and Server-Sent Event (SSE) streams exposed by the FastAPI backend server. The API Layer is part of the **Repository Intelligence Architecture (RIA)**, the platform's modular production architecture.
All endpoints are versioned under the `/api/v1` prefix. Legacy root paths (e.g. `/api/...`) are supported as backward-compatible shims.
---
## Authentication
When the application is configured with an `API_KEY` (via the environment variable), all resource-intensive endpoints require authentication.
You must supply the API key in one of the following HTTP headers:
1. **X-API-Key Header**:
```http
X-API-Key: your_secret_api_key_here
```
2. **Authorization Bearer Token Header**:
```http
Authorization: Bearer your_secret_api_key_here
```
Failed authentication requests return a `401 Unauthorized` response:
```json
{
"detail": "Unauthorized. Invalid or missing API key."
}
```
---
## 1. Repository Ingestion & Analysis
### Index Repository (Sync)
Triggers synchronous metadata ingestion for a repository.
- **Endpoint**: `POST /api/v1/index` or `POST /api/index`
- **Method**: `POST`
- **Request Body**:
```json
{
"repo_url": "https://github.com/fastapi/fastapi",
"branch": "master"
}
```
- **Response (200 OK)**:
```json
{
"status": "completed",
"owner": "fastapi",
"repo_name": "fastapi",
"files_count": 342,
"symbols_count": 1821
}
```
---
### Index Repository (Streaming Analysis)
Triggers repository cloning and AST parsing, streaming progress updates as Server-Sent Events (SSE).
- **Endpoint**: `POST /api/v1/analyze` or `POST /api/analyze`
- **Method**: `POST`
- **Request Body**:
```json
{
"url": "https://github.com/fastapi/fastapi",
"branch": "master",
"model": "deepseek-ai/deepseek-v4-flash",
"force_rebuild": false
}
```
- **SSE Stream Data (Progress Events)**:
```text
event: progress
data: {"status": "cloning", "percent": 15, "message": "Cloning repository..."}
event: progress
data: {"status": "parsing", "percent": 50, "message": "Parsing abstract syntax trees..."}
event: progress
data: {"status": "completed", "percent": 100, "message": "Analysis completed."}
```
---
### Get Ingested Analysis Details
Returns metadata for an already analyzed repository.
- **Endpoint**: `GET /api/v1/analysis/{owner}/{repo_name}` or `GET /api/analysis/{owner}/{repo_name}`
- **Method**: `GET`
- **Response (200 OK)**:
```json
{
"owner": "fastapi",
"repo_name": "fastapi",
"indexed_at": "2026-07-04T12:00:00Z",
"primary_language": "Python",
"files_indexed": 342,
"status": "ready"
}
```
---
### Repair Repository Index
Rebuilds the dependency graph and symbol index from the already-cloned repository on disk without re-cloning or re-embedding.
- **Endpoint**: `POST /api/v1/repos/repair` or `POST /api/repos/repair`
- **Method**: `POST`
- **Request Body**:
```json
{
"owner": "fastapi",
"repo": "fastapi"
}
```
- **Response (200 OK)**:
```json
{
"status": "completed",
"message": "Repository index repaired successfully."
}
```
---
## 2. Codebase Chat & Issue Engine
### Chat Query (Streaming)
Queries the multi-agent chatbot about the codebase. Responses are streamed as SSE chunks.
- **Endpoint**: `POST /api/v1/chat` or `POST /api/chat`
- **Method**: `POST`
- **Request Body**:
```json
{
"repo": "fastapi/fastapi",
"message": "What is the entry point of the app?",
"history": [
{"role": "user", "content": "Hi"},
{"role": "assistant", "content": "Hello! How can I help?"}
]
}
```
- **Headers Required**: `Accept: text/event-stream`
- **SSE Stream Data Chunks**:
```text
event: chunk
data: "The "
event: chunk
data: "main "
event: chunk
data: "entrypoint "
event: citations
data: [{"file": "fastapi/main.py", "lines": "1-15", "confidence": 0.95}]
event: done
data: [DONE]
```
---
### Chat Health & LLM Provider Status
Runs a live health check against every configured LLM provider.
- **Endpoint**: `GET /api/v1/chat/health` or `GET /api/chat/health`
- **Method**: `GET`
- **Response (200 OK)**:
```json
{
"status": "ok",
"healthy": true,
"primary_provider": "gemini",
"healthy_providers": ["gemini", "deepseek"],
"unhealthy_providers": []
}
```
---
### Reload LLM Providers
Hot-reloads the LLM provider configuration from `.env` without restarting the server.
- **Endpoint**: `POST /api/v1/chat/reload` or `POST /api/chat/reload`
- **Method**: `POST`
- **Response (200 OK)**:
```json
{
"status": "success",
"message": "LLM provider reloaded successfully. Chat is ready."
}
```
---
### Map GitHub Issue to Implementation Plan
Generates a grounded implementation plan for a given issue using a two-LLM-call pipeline.
- **Endpoint**: `POST /api/v1/issues/map` or `POST /api/issues/map`
- **Method**: `POST`
- **Request Body**:
```json
{
"repo": "fastapi/fastapi",
"title": "Fix memory leaks in cache",
"description": "The cache store is leaking reference counts."
}
```
- **Response (200 OK)**:
```json
{
"issue_summary": "Fix memory leaks in cache",
"issue_type": "Bugfix",
"relevant_files": ["backend/dependencies.py"],
"affected_components": ["Cache System"],
"implementation_plan": [
{
"step": 1,
"action": "Introduce eviction logic to clean stale references."
}
],
"complexity": "Medium",
"confidence": 0.9,
"verified": true,
"sources": ["backend/dependencies.py"]
}
```
---
## 3. Visualizations, Graphs, and Metrics
### Get File Dependency Graph
Returns node and edge representations for the file-level import graph.
- **Endpoint**: `GET /api/v1/graph/{owner}/{repo}/full` or `GET /api/graph/{owner}/{repo}/full`
- **Method**: `GET`
- **Query Parameters**:
- `q`: Optional search keyword to filter nodes.
- **Response (200 OK)**:
```json
{
"nodes": [
{
"id": "fastapi/main.py",
"label": "main.py",
"category": "entry_point",
"highlighted": false,
"is_focus": false
}
],
"edges": [
{
"source": "fastapi/main.py",
"target": "fastapi/applications.py",
"relationship": "imports"
}
],
"matched_count": 1
}
```
---
### Get Neighborhood Subgraph
Returns only the immediate imports and dependents of a focus node.
- **Endpoint**: `GET /api/v1/graph/{owner}/{repo}/neighbors/{focus_id}` or `GET /api/graph/{owner}/{repo}/neighbors/{focus_id}`
- **Method**: `GET`
- **Response (200 OK)**:
*(Same schema format as full graph, filtered to neighborhood nodes)*
---
### Trace Paths (Reachability/Blast Radius)
Computes a reachability subgraph using BFS in forward, backward, or bidirectional orientations.
- **Endpoint**: `GET /api/v1/graph/{owner}/{repo}/trace/{focus_id}` or `GET /api/graph/{owner}/{repo}/trace/{focus_id}`
- **Method**: `GET`
- **Query Parameters**:
- `direction`: `forward` (imports), `backward` (dependents), or `both`.
- `depth`: Maximum depth search limit (default `6`).
- **Response (200 OK)**:
*(Returns sub-graph representing reachability paths)*
---
### Get Call Graph Summary
Returns function-level call graph details for the repository.
- **Endpoint**: `GET /api/v1/call-graph/{owner}/{repo}` or `GET /api/call-graph/{owner}/{repo}`
- **Method**: `GET`
- **Response (200 OK)**:
*(Returns function node call mappings)*
---
### Get Function Blast Radius
Computes the blast radius of changing a specific function.
- **Endpoint**: `GET /api/v1/call-graph/{owner}/{repo}/blast-radius/{function_id}` or `GET /api/call-graph/{owner}/{repo}/blast-radius/{function_id}`
- **Method**: `GET`
- **Response (200 OK)**:
```json
{
"function_id": "fastapi/main.py:app",
"affected_functions": ["fastapi/applications.py:FastAPI"],
"affected_files": ["fastapi/applications.py"],
"depth": 1,
"risk_level": "LOW",
"recursive_cycles": []
}
```
---
### Get Churn Hotspots
Identifies code files with high commit frequency and high topological dependency centrality.
- **Endpoint**: `GET /api/v1/churn/{owner}/{repo}/hotspots` or `GET /api/churn/{owner}/{repo}/hotspots`
- **Method**: `GET`
- **Query Parameters**:
- `top_n`: Maximum items to return (default `25`).
- `since_days`: Git history window (default `365`).
- **Response (200 OK)**:
```json
{
"hotspots": [
{
"file_path": "backend/api.py",
"commit_count": 42,
"churn_score": 8.4
}
]
}
```
---
## 4. Reports & Engineering Advisor
### Compile Health Report
Triggers report generation or fetches the cached analysis report.
- **Endpoint**: `POST /api/v1/report/{owner}/{repo}/build`
- **Method**: `POST`
- **Response (200 OK)**:
```json
{
"metadata": {
"repo_name": "fastapi",
"owner": "fastapi",
"total_loc": 25410,
"generated_at": "2026-07-04T18:00:00Z"
},
"scores": {
"overall": 88,
"architecture": 90,
"api": 85,
"hygiene": 92,
"churn": 80,
"readability": 95,
"grade": "A"
},
"refactoring_priorities": [
"Refactor volatile hotspot module: fastapi/applications.py (churn score: 95.0)"
]
}
```
---
### Download Report Files
Downloads the report in static formats.
- **Endpoint**: `GET /api/v1/report/{owner}/{repo}/download`
- **Method**: `GET`
- **Query Parameters**:
- `format`: `html`, `markdown`, or `pdf`.
- **Response**: File attachment stream (`text/html`, `text/markdown`, or `application/pdf`).
---
### Generate AI Engineering Advisor Report
Analyzes the digital twin structure and continuous monitoring states to generate prioritized advisor recommendations and roadmaps.
- **Endpoint**: `POST /api/v1/repositories/{owner}/{repo}/advisor` or `POST /api/repositories/{owner}/{repo}/advisor`
- **Method**: `POST`
- **Response (200 OK)**:
```json
{
"repository": "fastapi/fastapi",
"overall_priority": "medium",
"total_recommendations": 12,
"top_recommendations": [
{
"id": "rec-1",
"title": "Resolve cycle between main and routing",
"category": "architecture",
"priority": "high",
"estimated_effort": "medium"
}
],
"roadmap_phases": 3,
"roadmap_summary": [
{
"phase": 1,
"title": "Mitigate Security & Dependency Issues",
"recommendation_count": 4
}
]
}
```
---
### Get Latest Advisor Report
Fetches the most recently generated advisor report details.
- **Endpoint**: `GET /api/v1/repositories/{owner}/{repo}/advisor/latest` or `GET /api/repositories/{owner}/{repo}/advisor/latest`
- **Method**: `GET`
- **Response (200 OK)**:
*(Same schema format as Advisor Report)*
---
### Get Engineering Roadmap phases
Fetches the roadmap list from the latest Advisor report.
- **Endpoint**: `GET /api/v1/repositories/{owner}/{repo}/advisor/roadmap` or `GET /api/repositories/{owner}/{repo}/advisor/roadmap`
- **Method**: `GET`
- **Response (200 OK)**:
*(Returns Roadmap Phases array)*
---
## 5. Execution Planner (AEA²)
### Generate Execution Plan
Constructs an autonomous implementation roadmap from the latest Advisor report.
- **Endpoint**: `POST /api/v1/repositories/{owner}/{repo}/execution-plan` or `POST /api/repositories/{owner}/{repo}/execution-plan`
- **Method**: `POST`
- **Response (200 OK)**:
```json
{
"repository": "fastapi/fastapi",
"total_tasks": 8,
"total_batches": 2,
"critical_path_length": 5,
"rollback_checkpoints": 2,
"conflict_count": 0,
"overall_risk": "low",
"batches": [
{
"batch_id": "batch-1",
"order": 1,
"title": "Initial Refactoring Pass",
"task_count": 3,
"parallel": true,
"estimated_effort": "1 day"
}
],
"critical_path": ["task-1", "task-3"],
"metadata": {}
}
```
---
### Get Latest Execution Plan
Fetches the most recently generated execution plan.
- **Endpoint**: `GET /api/v1/repositories/{owner}/{repo}/execution-plan/latest` or `GET /api/repositories/{owner}/{repo}/execution-plan/latest`
- **Method**: `GET`
- **Response (200 OK)**:
*(Same schema format as Execution Plan)*
---
## 6. Intelligent IDE Workspace snapshot
### Get Full Workspace Snapshot
Returns the consolidated data for all workspace views to power the IDE dashboard panels in a single request.
- **Endpoint**: `GET /api/v1/repositories/{owner}/{repo}/workspace` or `GET /api/repositories/{owner}/{repo}/workspace`
- **Method**: `GET`
- **Query Parameters**:
- `file`: Optional path of currently open file to contextualize snapshot.
- `symbol`: Optional currently active symbol.
- `panel`: Active panel focus name.
- **Response (200 OK)**:
*(Returns `WorkspaceSnapshot` containing Overview, Explorer, Chat, Findings, Timeline, Monitor, Advisor, and Execution panel structures)*
---
### Get Workspace Panels Individually
Retrieve individual panel snapshots using these sub-routes (available with root, `/api`, and `/api/v1` prefixes):
- `GET /api/v1/repositories/{owner}/{repo}/workspace/overview` (Overview Panel)
- `GET /api/v1/repositories/{owner}/{repo}/workspace/explorer` (Knowledge Graph Explorer)
- `GET /api/v1/repositories/{owner}/{repo}/workspace/findings` (Findings Panel)
- `GET /api/v1/repositories/{owner}/{repo}/workspace/timeline` (Timeline Panel)
- `GET /api/v1/repositories/{owner}/{repo}/workspace/monitor` (Continuous Monitor Panel)
- `GET /api/v1/repositories/{owner}/{repo}/workspace/advisor` (Advisor Panel)
- `GET /api/v1/repositories/{owner}/{repo}/workspace/execution` (Execution Plan Panel)
---
## 7. Health, Status, and Observability
### Server Live Status
- **Endpoint**: `GET /health` or `GET /api/v1/health`
- **Method**: `GET`
- **Response (200 OK)**:
```json
{
"status": "healthy",
"backend": "online",
"llm_provider": "gemini",
"llm_model": "gemini-2.5-flash",
"embedding_provider": "BAAI/bge-small-en-v1.5",
"vector_db": "chromadb"
}
```
---
### Prometheus Metrics
- **Endpoint**: `GET /metrics` or `GET /api/v1/metrics`
- **Method**: `GET`
- **Response (200 OK)**:
Standard Prometheus text format listing HTTP request counts, active gauges, and processing latencies.