Repositories API
Manage connected repos
Repositories API
Manage connected repositories through the BambooSnow API.
Endpoints
| Method | Endpoint | Description | |--------|----------|-------------| | GET | /v1/repositories | List repositories | | GET | /v1/repositories/:id | Get repository details | | POST | /v1/repositories | Connect repository | | DELETE | /v1/repositories/:id | Disconnect repository | | POST | /v1/repositories/:id/analyze | Trigger analysis |
List Repositories
GET /v1/repositories
Query Parameters
| Parameter | Type | Description | |-----------|------|-------------| | page | integer | Page number (default: 1) | | per_page | integer | Items per page (default: 20, max: 100) | | sort | string | Sort field (name, created_at, updated_at) | | order | string | Sort order (asc, desc) |
Response
{
"data": [
{
"id": "repo_abc123",
"name": "owner/repo-name",
"full_name": "owner/repo-name",
"private": false,
"default_branch": "main",
"connected_at": "2024-01-15T10:30:00Z",
"last_analyzed_at": "2024-01-15T12:00:00Z",
"status": "active",
"agents_count": 3,
"language": "TypeScript",
"health_score": 85
}
],
"meta": {
"total": 15,
"page": 1,
"per_page": 20,
"total_pages": 1
}
}
Get Repository
GET /v1/repositories/:id
Response
{
"id": "repo_abc123",
"name": "owner/repo-name",
"full_name": "owner/repo-name",
"description": "A sample repository",
"private": false,
"default_branch": "main",
"connected_at": "2024-01-15T10:30:00Z",
"last_analyzed_at": "2024-01-15T12:00:00Z",
"status": "active",
"github_id": 123456789,
"clone_url": "https://github.com/owner/repo-name.git",
"languages": {
"TypeScript": 65.5,
"JavaScript": 20.3,
"CSS": 14.2
},
"stats": {
"total_files": 234,
"total_lines": 45678,
"test_coverage": 78.5
},
"analysis": {
"health_score": 85,
"issues_count": 12,
"bottlenecks": [
{
"type": "missing_tests",
"severity": "medium",
"count": 8
}
]
},
"agents": [
{
"id": "agent_xyz",
"name": "code-reviewer",
"status": "active"
}
]
}
Connect Repository
POST /v1/repositories
Request Body
{
"github_repo": "owner/repo-name",
"default_branch": "main",
"auto_analyze": true,
"settings": {
"pr_comments": true,
"status_checks": true
}
}
Response
{
"id": "repo_abc123",
"name": "owner/repo-name",
"status": "connecting",
"message": "Repository connection initiated"
}
Disconnect Repository
DELETE /v1/repositories/:id
Query Parameters
| Parameter | Type | Description | |-----------|------|-------------| | keep_data | boolean | Keep historical data (default: false) |
Response
{
"id": "repo_abc123",
"status": "disconnected",
"message": "Repository disconnected successfully"
}
Trigger Analysis
POST /v1/repositories/:id/analyze
Request Body
{
"branch": "main",
"full_analysis": true,
"include": ["security", "quality", "dependencies"]
}
Response
{
"analysis_id": "analysis_789",
"status": "queued",
"estimated_duration": 120,
"created_at": "2024-01-15T10:30:00Z"
}
Get Analysis Results
GET /v1/repositories/:id/analysis
Query Parameters
| Parameter | Type | Description | |-----------|------|-------------| | analysis_id | string | Specific analysis ID | | latest | boolean | Get latest analysis |
Response
{
"id": "analysis_789",
"repository_id": "repo_abc123",
"status": "completed",
"started_at": "2024-01-15T10:30:00Z",
"completed_at": "2024-01-15T10:32:00Z",
"results": {
"health_score": 85,
"summary": {
"total_files": 234,
"total_issues": 12,
"critical": 0,
"high": 2,
"medium": 5,
"low": 5
},
"categories": {
"security": {
"score": 90,
"issues": 2
},
"quality": {
"score": 82,
"issues": 7
},
"dependencies": {
"score": 88,
"issues": 3
}
}
}
}
Repository Settings
PATCH /v1/repositories/:id/settings
Request Body
{
"default_branch": "main",
"auto_analyze": true,
"notifications": {
"slack_channel": "#dev",
"email": true
},
"agent_defaults": {
"timeout": 300,
"retry_count": 3
}
}