KeyEnvKeyEnv
API Reference

Permissions

Environment-level access control

Permissions

Environment-level access control

Get my permissions

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>

Path parameters

NameTypeRequiredDescription
projectIdstringyesProject UUID or slug (e.g., "my-project")

Responses

StatusDescriptionBody
200User permissionsMyPermissionsResponse
401Authentication requiredError
403Insufficient permissionsError

Response body (200)

FieldTypeDescription
permissionsobject[]
is_team_adminboolean

Example

curl -X GET "https://api.keyenv.dev/api/v1/projects/{projectId}/my-permissions" \
  -H "Authorization: Bearer $KEYENV_TOKEN"

List environment permissions

GET /api/v1/projects/{projectId}/environments/{environmentId}/permissions

Lists all user permissions for an environment

Operation ID: listEnvironmentPermissions · Authentication: Authorization: Bearer <token>

Path parameters

NameTypeRequiredDescription
projectIdstringyesProject UUID or slug (e.g., "my-project")
environmentIdstringyesEnvironment UUID or name (e.g., "development", "staging", "production")

Responses

StatusDescriptionBody
200List of permissionsobject[]
401Authentication requiredError
403Insufficient permissionsError

Response body (200)

FieldTypeDescription
idstring (uuid)
environment_idstring (uuid)
user_idstring (uuid)
user_emailstring (email)
roleenum (none, read, write, admin)
granted_bystring (uuid)
created_atstring (date-time)
updated_atstring (date-time)

Example

curl -X GET "https://api.keyenv.dev/api/v1/projects/{projectId}/environments/{environmentId}/permissions" \
  -H "Authorization: Bearer $KEYENV_TOKEN"

Bulk set permissions

PUT /api/v1/projects/{projectId}/environments/{environmentId}/permissions

Sets permissions for multiple users at once

Operation ID: bulkSetPermissions · Authentication: Authorization: Bearer <token>

Path parameters

NameTypeRequiredDescription
projectIdstringyesProject UUID or slug (e.g., "my-project")
environmentIdstringyesEnvironment UUID or name (e.g., "development", "staging", "production")

Request body

application/json (required)

FieldTypeRequiredDescription
permissionsobject[]yes

Responses

StatusDescriptionBody
200Permissions updated
400Invalid requestError
401Authentication requiredError
403Insufficient permissionsError

Example

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 user permission

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>

Path parameters

NameTypeRequiredDescription
projectIdstringyesProject UUID or slug (e.g., "my-project")
environmentIdstringyesEnvironment UUID or name (e.g., "development", "staging", "production")
userIdstring (uuid)yesUser UUID

Responses

StatusDescriptionBody
200User permissionEnvironmentPermission
401Authentication requiredError
403Insufficient permissionsError
404Resource not foundError

Response body (200)

FieldTypeDescription
idstring (uuid)
environment_idstring (uuid)
user_idstring (uuid)
user_emailstring (email)
roleenum (none, read, write, admin)
granted_bystring (uuid)
created_atstring (date-time)
updated_atstring (date-time)

Example

curl -X GET "https://api.keyenv.dev/api/v1/projects/{projectId}/environments/{environmentId}/permissions/{userId}" \
  -H "Authorization: Bearer $KEYENV_TOKEN"

Set user permission

PUT /api/v1/projects/{projectId}/environments/{environmentId}/permissions/{userId}

Sets a user's permission for an environment

Operation ID: setUserPermission · Authentication: Authorization: Bearer <token>

Path parameters

NameTypeRequiredDescription
projectIdstringyesProject UUID or slug (e.g., "my-project")
environmentIdstringyesEnvironment UUID or name (e.g., "development", "staging", "production")
userIdstring (uuid)yesUser UUID

Request body

application/json (required)

FieldTypeRequiredDescription
roleenum (none, read, write, admin)yes

Responses

StatusDescriptionBody
200Permission setEnvironmentPermission
400Invalid requestError
401Authentication requiredError
403Insufficient permissionsError

Response body (200)

FieldTypeDescription
idstring (uuid)
environment_idstring (uuid)
user_idstring (uuid)
user_emailstring (email)
roleenum (none, read, write, admin)
granted_bystring (uuid)
created_atstring (date-time)
updated_atstring (date-time)

Example

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 user permission

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>

Path parameters

NameTypeRequiredDescription
projectIdstringyesProject UUID or slug (e.g., "my-project")
environmentIdstringyesEnvironment UUID or name (e.g., "development", "staging", "production")
userIdstring (uuid)yesUser UUID

Responses

StatusDescriptionBody
204Permission deleted
401Authentication requiredError
403Insufficient permissionsError

Example

curl -X DELETE "https://api.keyenv.dev/api/v1/projects/{projectId}/environments/{environmentId}/permissions/{userId}" \
  -H "Authorization: Bearer $KEYENV_TOKEN"

Get default permissions

GET /api/v1/projects/{projectId}/permissions/defaults

Returns default permissions for new team members in a project

Operation ID: getDefaultPermissions · Authentication: Authorization: Bearer <token>

Path parameters

NameTypeRequiredDescription
projectIdstringyesProject UUID or slug (e.g., "my-project")

Responses

StatusDescriptionBody
200Default permissionsobject[]
401Authentication requiredError
403Insufficient permissionsError

Response body (200)

FieldTypeDescription
idstring (uuid)
project_idstring (uuid)
environment_namestringEnvironment name or "*" for all
default_roleenum (none, read, write, admin)
created_atstring (date-time)

Example

curl -X GET "https://api.keyenv.dev/api/v1/projects/{projectId}/permissions/defaults" \
  -H "Authorization: Bearer $KEYENV_TOKEN"

Set default permissions

PUT /api/v1/projects/{projectId}/permissions/defaults

Sets default permissions for new team members

Operation ID: setDefaultPermissions · Authentication: Authorization: Bearer <token>

Path parameters

NameTypeRequiredDescription
projectIdstringyesProject UUID or slug (e.g., "my-project")

Request body

application/json (required)

FieldTypeRequiredDescription
defaultsobject[]yes

Responses

StatusDescriptionBody
200Defaults updated
400Invalid requestError
401Authentication requiredError
403Insufficient permissionsError

Example

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"}]}'

On this page