API Reference
Permissions
Environment-level access control
Environment-level access control
GET /api/v1/projects/{projectId}/my-permissions
Returns the current user's permissions for all environments in a project
Operation ID: getMyPermissions · Authentication: Authorization: Bearer <token>
| Name | Type | Required | Description |
|---|
projectId | string | yes | Project UUID or slug (e.g., "my-project") |
| Status | Description | Body |
|---|
200 | User permissions | MyPermissionsResponse |
401 | Authentication required | Error |
403 | Insufficient permissions | Error |
| Field | Type | Description |
|---|
permissions | object[] | |
is_team_admin | boolean | |
curl -X GET "https://api.keyenv.dev/api/v1/projects/{projectId}/my-permissions" \
-H "Authorization: Bearer $KEYENV_TOKEN"
GET /api/v1/projects/{projectId}/environments/{environmentId}/permissions
Lists all user permissions for an environment
Operation ID: listEnvironmentPermissions · Authentication: Authorization: Bearer <token>
| Name | Type | Required | Description |
|---|
projectId | string | yes | Project UUID or slug (e.g., "my-project") |
environmentId | string | yes | Environment UUID or name (e.g., "development", "staging", "production") |
| Status | Description | Body |
|---|
200 | List of permissions | object[] |
401 | Authentication required | Error |
403 | Insufficient permissions | Error |
| Field | Type | Description |
|---|
id | string (uuid) | |
environment_id | string (uuid) | |
user_id | string (uuid) | |
user_email | string (email) | |
role | enum (none, read, write, admin) | |
granted_by | string (uuid) | |
created_at | string (date-time) | |
updated_at | string (date-time) | |
curl -X GET "https://api.keyenv.dev/api/v1/projects/{projectId}/environments/{environmentId}/permissions" \
-H "Authorization: Bearer $KEYENV_TOKEN"
PUT /api/v1/projects/{projectId}/environments/{environmentId}/permissions
Sets permissions for multiple users at once
Operation ID: bulkSetPermissions · Authentication: Authorization: Bearer <token>
| Name | Type | Required | Description |
|---|
projectId | string | yes | Project UUID or slug (e.g., "my-project") |
environmentId | string | yes | Environment UUID or name (e.g., "development", "staging", "production") |
application/json (required)
| Field | Type | Required | Description |
|---|
permissions | object[] | yes | |
| Status | Description | Body |
|---|
200 | Permissions updated | |
400 | Invalid request | Error |
401 | Authentication required | Error |
403 | Insufficient permissions | Error |
curl -X PUT "https://api.keyenv.dev/api/v1/projects/{projectId}/environments/{environmentId}/permissions" \
-H "Authorization: Bearer $KEYENV_TOKEN" \
-H "Content-Type: application/json" \
-d '{"permissions":[{"user_id":"00000000-0000-0000-0000-000000000000","role":"none"}]}'
GET /api/v1/projects/{projectId}/environments/{environmentId}/permissions/{userId}
Returns a specific user's permission for an environment
Operation ID: getUserPermission · Authentication: Authorization: Bearer <token>
| Name | Type | Required | Description |
|---|
projectId | string | yes | Project UUID or slug (e.g., "my-project") |
environmentId | string | yes | Environment UUID or name (e.g., "development", "staging", "production") |
userId | string (uuid) | yes | User UUID |
| Status | Description | Body |
|---|
200 | User permission | EnvironmentPermission |
401 | Authentication required | Error |
403 | Insufficient permissions | Error |
404 | Resource not found | Error |
| Field | Type | Description |
|---|
id | string (uuid) | |
environment_id | string (uuid) | |
user_id | string (uuid) | |
user_email | string (email) | |
role | enum (none, read, write, admin) | |
granted_by | string (uuid) | |
created_at | string (date-time) | |
updated_at | string (date-time) | |
curl -X GET "https://api.keyenv.dev/api/v1/projects/{projectId}/environments/{environmentId}/permissions/{userId}" \
-H "Authorization: Bearer $KEYENV_TOKEN"
PUT /api/v1/projects/{projectId}/environments/{environmentId}/permissions/{userId}
Sets a user's permission for an environment
Operation ID: setUserPermission · Authentication: Authorization: Bearer <token>
| Name | Type | Required | Description |
|---|
projectId | string | yes | Project UUID or slug (e.g., "my-project") |
environmentId | string | yes | Environment UUID or name (e.g., "development", "staging", "production") |
userId | string (uuid) | yes | User UUID |
application/json (required)
| Field | Type | Required | Description |
|---|
role | enum (none, read, write, admin) | yes | |
| Status | Description | Body |
|---|
200 | Permission set | EnvironmentPermission |
400 | Invalid request | Error |
401 | Authentication required | Error |
403 | Insufficient permissions | Error |
| Field | Type | Description |
|---|
id | string (uuid) | |
environment_id | string (uuid) | |
user_id | string (uuid) | |
user_email | string (email) | |
role | enum (none, read, write, admin) | |
granted_by | string (uuid) | |
created_at | string (date-time) | |
updated_at | string (date-time) | |
curl -X PUT "https://api.keyenv.dev/api/v1/projects/{projectId}/environments/{environmentId}/permissions/{userId}" \
-H "Authorization: Bearer $KEYENV_TOKEN" \
-H "Content-Type: application/json" \
-d '{"role":"none"}'
DELETE /api/v1/projects/{projectId}/environments/{environmentId}/permissions/{userId}
Removes a user's explicit permission for an environment
Operation ID: deleteUserPermission · Authentication: Authorization: Bearer <token>
| Name | Type | Required | Description |
|---|
projectId | string | yes | Project UUID or slug (e.g., "my-project") |
environmentId | string | yes | Environment UUID or name (e.g., "development", "staging", "production") |
userId | string (uuid) | yes | User UUID |
| Status | Description | Body |
|---|
204 | Permission deleted | |
401 | Authentication required | Error |
403 | Insufficient permissions | Error |
curl -X DELETE "https://api.keyenv.dev/api/v1/projects/{projectId}/environments/{environmentId}/permissions/{userId}" \
-H "Authorization: Bearer $KEYENV_TOKEN"
GET /api/v1/projects/{projectId}/permissions/defaults
Returns default permissions for new team members in a project
Operation ID: getDefaultPermissions · Authentication: Authorization: Bearer <token>
| Name | Type | Required | Description |
|---|
projectId | string | yes | Project UUID or slug (e.g., "my-project") |
| Status | Description | Body |
|---|
200 | Default permissions | object[] |
401 | Authentication required | Error |
403 | Insufficient permissions | Error |
| Field | Type | Description |
|---|
id | string (uuid) | |
project_id | string (uuid) | |
environment_name | string | Environment name or "*" for all |
default_role | enum (none, read, write, admin) | |
created_at | string (date-time) | |
curl -X GET "https://api.keyenv.dev/api/v1/projects/{projectId}/permissions/defaults" \
-H "Authorization: Bearer $KEYENV_TOKEN"
PUT /api/v1/projects/{projectId}/permissions/defaults
Sets default permissions for new team members
Operation ID: setDefaultPermissions · Authentication: Authorization: Bearer <token>
| Name | Type | Required | Description |
|---|
projectId | string | yes | Project UUID or slug (e.g., "my-project") |
application/json (required)
| Field | Type | Required | Description |
|---|
defaults | object[] | yes | |
| Status | Description | Body |
|---|
200 | Defaults updated | |
400 | Invalid request | Error |
401 | Authentication required | Error |
403 | Insufficient permissions | Error |
curl -X PUT "https://api.keyenv.dev/api/v1/projects/{projectId}/permissions/defaults" \
-H "Authorization: Bearer $KEYENV_TOKEN" \
-H "Content-Type: application/json" \
-d '{"defaults":[{"environment_name":"string","default_role":"none"}]}'