Retrieve a single project by its ID. Requires a valid JWT access token. The project must belong to the authenticated user’s tenant.
- The
progressfield isnullwhen the project status is notBUILDING, and an integer 0-100 when the status isBUILDING. - The frontend displays different actions depending on the project status:
DRAFTorUPDATED— show “Publish” button (triggers build + deploy, handled by a separate conversation/build UC).LIVE— show “Pause” action.PAUSED— show “Resume” action.- All non-ARCHIVED statuses — show “Archive” action.
DRAFTmeans the project has never been deployed.UPDATEDmeans the project was previously LIVE but has unpublished local changes.
Limitation (MVP): Progress tracking is a stub — the backend always returns
0for projects inBUILDINGstatus.
sequenceDiagram
actor User
User->>+FE: opens project detail
FE->>+BE: GET /api/v1/projects/{id} <br> Authorization: Bearer {accessToken}
BE->>BE: validate JWT access token
alt access token invalid or missing
BE-->>FE: 401 Unauthorized <br> ErrorResponse
end
BE->>DB: find project by id and tenant_id
alt project not found
BE-->>FE: 404 Not Found <br> ErrorResponse
end
BE->>-FE: 200 OK <br> ProjectResponse
FE->>-User: display project detail
GET /api/v1/projects/{id} (no request body)
200 OK ProjectResponse:
{
"data": {
"id": 1,
"name": "Wildwood Bakery",
"description": "Online ordering for a neighborhood bakery",
"status": "LIVE",
"url": "wildwood-bakery.talkide.app",
"accent": "oklch(0.78 0.15 70)",
"techStack": "Vue + Spring Boot",
"progress": null,
"previewUrl": "http://localhost:5201",
"createdAt": "2026-04-20T10:00:00Z",
"updatedAt": "2026-04-29T14:30:00Z"
}
}
401 Unauthorized (missing or invalid access token) ErrorResponse:
{
"status": 401,
"code": "AUTHENTICATION_FAILED",
"message": "Access token is missing or invalid"
}
404 Not Found (project does not exist or does not belong to user’s tenant) ErrorResponse:
{
"status": 404,
"code": "NOT_FOUND",
"message": "Project not found"
}
Frontend
Validations
No form inputs — this is a read-only detail view.
Backend
Validations
| Field | Constraints | Size | Pattern | Note |
|---|---|---|---|---|
| id (path) | not_null, positive | Must be a valid project ID belonging to the user’s tenant |
Test Cases
| GIVEN | WHEN | THEN |
|---|---|---|
| authenticated user, project belongs to user’s tenant | GET /projects/{id} is called | 200 OK with project data returned |
| authenticated user, project belongs to another tenant | GET /projects/{id} is called | 404 NOT_FOUND error response is returned |
| authenticated user, project ID does not exist | GET /projects/{id} is called | 404 NOT_FOUND error response is returned |
| project in BUILDING status | GET /projects/{id} is called | 200 OK with progress=0 returned |
| project in LIVE status | GET /projects/{id} is called | 200 OK with progress=null returned |
| no Authorization header | GET /projects/{id} is called | 401 AUTHENTICATION_FAILED error response is returned |
Was this page helpful?
Thanks for the feedback.