Spaces:
Configuration error
Configuration error
|
Download API.md from varshithreddy1807/aria: direct link, hf CLI and curl.
- Browser
- Download file 14.4 kB
-
https://huggingface.co/spaces/varshithreddy1807/aria/resolve/main/API.md
- Command line
-
hf download hf://spaces/varshithreddy1807/aria/API.md
-
curl -L -o API.md https://huggingface.co/spaces/varshithreddy1807/aria/resolve/main/API.md
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. | |