Skip to main content

Permissions

Manage granular project-level and environment-level access permissions for team members. Permissions control what actions each user can perform on specific projects and environments.

Permission Levels​

LevelViewDeployManageDelete
view_onlyYes———
deployYesYes——
full_accessYesYesYesYes
Role bypass

Users with the owner or admin team role bypass all permission checks and have full access to everything.

Project Permissions​

List Project Permissions​

GET /api/v1/permissions/project
ParameterTypeDescription
project_uuidstringFilter by project UUID
user_idintegerFilter by user ID

Response:

{
"data": [
{
"id": 1,
"project_uuid": "proj-abc123",
"project_name": "My Project",
"user_id": 5,
"user_name": "John Doe",
"user_email": "[email protected]",
"can_view": true,
"can_deploy": true,
"can_manage": false,
"can_delete": false,
"permission_level": "deploy",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
]
}

Get Project Permission​

GET /api/v1/permissions/project/{id}

Grant Project Access​

POST /api/v1/permissions/project
{
"project_uuid": "proj-abc123",
"user_id": 5,
"permission_level": "deploy"
}
ParameterTypeRequiredDescription
project_uuidstringYesUUID of the project
user_idintegerYesID of the user to grant access
permission_levelstringYesview_only, deploy, or full_access

Response: 201 Created

{
"message": "Project access granted.",
"data": {
"id": 1,
"project_uuid": "proj-abc123",
"user_id": 5,
"can_view": true,
"can_deploy": true,
"can_manage": false,
"can_delete": false
}
}

Error: 409 Conflict if the user already has access to the project.

Update Project Permission​

PUT /api/v1/permissions/project/{id}
{
"permission_level": "full_access"
}

Response:

{
"message": "Project permission updated.",
"data": {
"id": 1,
"project_uuid": "proj-abc123",
"user_id": 5,
"can_view": true,
"can_deploy": true,
"can_manage": true,
"can_delete": true
}
}

Revoke Project Access​

DELETE /api/v1/permissions/project/{id}

Response:

{
"message": "Project access revoked."
}

Bulk Operations​

Grant Access to All Team Members​

Grant project access to all current team members at once:

POST /api/v1/permissions/project/bulk
{
"project_uuid": "proj-abc123",
"permission_level": "view_only"
}

Response:

{
"message": "Access granted to 5 team members.",
"count": 5
}

Revoke All Project Access​

Remove all user access from a project:

DELETE /api/v1/permissions/project/bulk/{project_uuid}

Response:

{
"message": "All project access revoked.",
"count": 5
}

Environment Permissions​

Environment permissions override project-level permissions for a specific environment. When no environment override exists, the project-level permission applies.

List Environment Permissions​

GET /api/v1/permissions/environment
ParameterTypeDescription
environment_idintegerFilter by environment ID
user_idintegerFilter by user ID

Response:

{
"data": [
{
"id": 1,
"environment_id": 10,
"environment_name": "production",
"project_uuid": "proj-abc123",
"user_id": 5,
"user_name": "John Doe",
"can_view": true,
"can_deploy": false,
"can_manage": false,
"can_delete": false,
"created_at": "2024-01-15T10:30:00Z"
}
]
}

Create Environment Override​

POST /api/v1/permissions/environment
{
"environment_id": 10,
"user_id": 5,
"permission_level": "view_only"
}
ParameterTypeRequiredDescription
environment_idintegerYesEnvironment ID
user_idintegerYesUser ID
permission_levelstringYesview_only, deploy, or full_access

Response: 201 Created

{
"message": "Environment permission override created.",
"data": {
"id": 1,
"environment_id": 10,
"user_id": 5,
"can_view": true,
"can_deploy": false,
"can_manage": false,
"can_delete": false
}
}

Delete Environment Override​

Removes the override, reverting to project-level permissions:

DELETE /api/v1/permissions/environment/{id}

Response:

{
"message": "Environment permission override removed."
}

Example: Restricting Production Access​

A common pattern is to give developers full access at the project level but restrict production to view-only:

# Grant full access at project level
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"project_uuid":"proj-abc","user_id":5,"permission_level":"full_access"}' \
https://app.corelix.io/api/v1/permissions/project

# Override: view-only on production environment
curl -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"environment_id":10,"user_id":5,"permission_level":"view_only"}' \
https://app.corelix.io/api/v1/permissions/environment

The developer can deploy to staging and development but can only view production resources.