API Endpoints
Complete reference of all fastDeploy API endpoints, their authentication requirements, and usage.
Authentication Endpoints
POST /token
Purpose: Authenticate users and obtain access token Authentication: None (username/password in body) Request Body:
application/x-www-form-urlencoded
username=<username>&password=<password>
Response:
{"access_token": "<jwt>", "token_type": "bearer"}
POST /service-token
Purpose: Generate service token for deployments Authentication: User token required Request Body:
{
"service": "<service_name>",
"origin": "<origin_identifier>",
"expiration_in_days": 1-180
}
Response:
{"service_token": "<jwt>", "token_type": "bearer"}
GET /users/me
Purpose: Get current authenticated user Authentication: User token required Response:
{"id": 1, "name": "username"}
Service Management Endpoints
GET /services/
Purpose: List all registered services Authentication: User token required Response:
[
{
"id": 1,
"name": "service_name",
"data": {
"deploy_script": "deploy.sh",
"description": "Service description",
"steps": [{"name": "step1"}]
}
}
]
GET /services/names/
Purpose: List available service names from filesystem Authentication: User token required Response:
["service1", "service2", "service3"]
POST /services/sync
Purpose: Synchronize filesystem services to database Authentication: User token required Response:
{"detail": "Services synced"}
DELETE /services/{service_id}
Purpose: Remove service from database Authentication: User token required Response:
{"detail": "Service 1 deleted"}
Deployment Endpoints
POST /deployments/
Purpose: Initiate new deployment Authentication: Service token required Request Body:
{
"env": {
"key": "value" // Optional deployment context
}
}
Response:
{
"id": 1,
"service_id": 1,
"started": "2024-01-01T12:00:00Z",
"details": "/deployments/1"
}
GET /deployments/
Purpose: List all deployments Authentication: User token required Response:
[
{
"id": 1,
"service_id": 1,
"origin": "github",
"user": "username",
"started": "2024-01-01T12:00:00Z",
"finished": "2024-01-01T12:05:00Z"
}
]
GET /deployments/{deployment_id}
Purpose: Get deployment details with steps Authentication: Service token required (must match deployment's service) Response:
{
"id": 1,
"service_id": 1,
"started": "2024-01-01T12:00:00Z",
"finished": null,
"steps": [
{
"id": 1,
"name": "step1",
"state": "success",
"message": "Step completed"
}
]
}
PUT /deployments/finish/
Purpose: Mark deployment as complete Authentication: Deployment token required Response:
{"detail": "Deployment 1 finished"}
Step Management Endpoints
POST /steps/
Purpose: Report step progress Authentication: Deployment token required Request Body:
{
"name": "step_name",
"state": "pending|running|success|failure",
"message": "Optional status message",
"error_message": "Error details if failure"
}
Response:
{"detail": "step processed"}
GET /steps/
Purpose: List steps for a deployment
Authentication: User token required
Query Parameters: ?deployment_id=1
Response:
[
{
"id": 1,
"name": "step1",
"state": "success",
"message": "Step completed",
"started": "2024-01-01T12:00:00Z",
"finished": "2024-01-01T12:01:00Z"
}
]
Service Discovery Endpoints
GET /deployed-services/
Purpose: List deployed services for service discovery Authentication: Config token required Response:
[
{
"id": 1,
"deployment_id": 1,
"config": {
"domain": "example.com",
"port": 8080,
"database": "app_db"
}
}
]
WebSocket Endpoint
WS /deployments/ws/{client_id}
Purpose: Real-time deployment updates Protocol: WebSocket Authentication: Send token after connection
Connection Flow:
1. Connect to ws://host/deployments/ws/<uuid>
2. Send authentication message:
json
{"access_token": "<jwt_token>"}
3. Receive authentication response:
json
{"type": "authentication", "status": "success"}
4. Receive real-time events:
json
{
"type": "step|deployment|service",
"id": 1,
"name": "step_name",
"state": "success",
"deployment_id": 1
}
Authentication Summary
| Endpoint | Required Token Type |
|---|---|
POST /token |
None (username/password) |
GET /users/me |
User Token |
POST /service-token |
User Token |
GET /services/* |
User Token |
POST /services/sync |
User Token |
DELETE /services/* |
User Token |
GET /deployments/ |
User Token |
POST /deployments/ |
Service Token |
GET /deployments/{id} |
Service Token |
PUT /deployments/finish/ |
Deployment Token |
POST /steps/ |
Deployment Token |
GET /steps/ |
User Token |
GET /deployed-services/ |
Config Token |
WS /deployments/ws/* |
User Token |
Error Responses
All endpoints may return these standard error responses:
-
401 Unauthorized: Invalid or expired token
json {"detail": "Could not validate credentials"} -
403 Forbidden: Token lacks required permissions
json {"detail": "Wrong service token"} -
404 Not Found: Resource does not exist
json {"detail": "Service not found"} -
422 Unprocessable Entity: Invalid request data
json {"detail": [{"loc": ["body", "field"], "msg": "field required"}]} -
500 Internal Server Error: Unexpected system error
json {"detail": "Internal server error"}