GET |
/projects |
viewer, analyst, project_manager, admin |
200 + ProjectRead[] |
401 unauthenticated, 403 insufficient role |
Lists all projects visible to the caller. |
POST |
/projects |
project_manager, admin |
201 + ProjectRead |
401, 403, 409 name conflict, 422 validation |
Creates a project and seeds default pricing settings. |
GET |
/projects/{project_id} |
viewer, analyst, project_manager, admin |
200 + ProjectRead |
401, 403, 404 missing project |
Returns a single project by id. |
PUT |
/projects/{project_id} |
project_manager, admin |
200 + ProjectRead |
401, 403, 404, 422 |
Updates mutable fields (name, location, operation_type, description). |
DELETE |
/projects/{project_id} |
project_manager, admin |
204 |
401, 403, 404 |
Removes the project and cascading scenarios. |
GET |
/projects/{project_id}/scenarios |
viewer, analyst, project_manager, admin |
200 + ScenarioRead[] |
401, 403, 404 |
Lists scenarios that belong to the project. |
POST |
/projects/{project_id}/scenarios |
project_manager, admin |
201 + ScenarioRead |
401, 403, 404 missing project, 409 duplicate name, 422 validation |
Creates a scenario under the project. Currency defaults to pricing metadata when omitted. |
POST |
/projects/{project_id}/scenarios/compare |
viewer, analyst, project_manager, admin |
200 + ScenarioComparisonResponse |
401, 403, 404, 422 mismatch/validation |
Validates a list of scenario ids before comparison. |
GET |
/scenarios/{scenario_id} |
viewer, analyst, project_manager, admin |
200 + ScenarioRead |
401, 403, 404 |
Retrieves a single scenario. |
PUT |
/scenarios/{scenario_id} |
project_manager, admin |
200 + ScenarioRead |
401, 403, 404, 422 |
Updates scenario metadata (status, dates, currency, resource). |
DELETE |
/scenarios/{scenario_id} |
project_manager, admin |
204 |
401, 403, 404 |
Removes the scenario and dependent data. |