ProjectResource
Introduction
Project Resource.
Hosts APIs to manage projects and active project selection for users.
Main capabilities:
List projects by user and by subscription
Read project details
Create and update projects
Change active project for a user
Delete projects
All endpoints are under base path /projects.
All endpoints require x-session-token.
Common Models
- ProjectEditorViewModel:
projectId, subscriptionId, name, description, targetUser, activeProject
- ProjectListViewModel:
projectId, subscriptionName, name, description, activeProject
- ProjectViewModel:
projectId, subscriptionId, name, description, activeProject
- SuccessResponse:
message
- ErrorResponse:
message
APIs
GET /projects/byuser
Description: Returns projects available to current user across subscriptions available to that user.
Query params: valid (optional boolean, default false)
Success: 200 OK, body: array of ProjectListViewModel
Return codes: 200, 401, 500
Notes: if no active project is currently set and at least one project exists, first project is auto-marked active and persisted on user profile.
GET /projects/bysubscription
Description: Returns projects for one subscription.
Query params: subscription (required)
Success: 200 OK, body: array of ProjectListViewModel
Return codes: 200, 401, 400, 403, 500
GET /projects/byId
Description: Returns detailed view model for one project id.
Query params: project (required)
Success: 200 OK, body: ProjectViewModel
Return codes: 200, 401, 400, 403, 500
POST /projects/add
Description: Creates a new project.
Body: ProjectEditorViewModel
Success: 200 OK, body: SuccessResponse (message contains created project id)
Return codes: 200, 401, 403, 500
- Notes:
If another project with same name exists, the service clones/adjusts name until unique.
If activeProject is true, active project is updated for target user flow.
PUT /projects/update
Description: Updates an existing project.
Body: ProjectEditorViewModel
Success: 200 OK, body: SuccessResponse (message contains project id)
Return codes: 200, 401, 400, 403, 500
- Notes:
Enforces unique project name (excluding current project).
If activeProject is true, active project is changed accordingly.
If activeProject is false and updated project is currently active for user, active project/subscription can be cleared.
PUT /projects/active
Description: Changes active project (and corresponding active subscription) for user.
Query params: project (optional, nullable to clear), target (optional user id)
Success: 200 OK, body: SuccessResponse
Return codes: 200, 401, 400, 403, 500
- Notes:
target is optional; defaults to current user.
Changing active project for another user requires admin role.
DELETE /projects/delete
Description: Deletes a project.
Query params: project (required)
Success: 200 OK, body: SuccessResponse
Return codes: 200, 401, 400, 403, 500