Updated May 10, 2026
Adds an existing account user (or API key) to a project with a project-scoped role. For account-level invitations use raff_member instead. Account Owners have implicit access to every project — don’t manage them via this resource.
Example — add a user to a project
resource "raff_project_member" "alice_in_prod" {
project_id = raff_project . prod . id
target_user_id = "<alice-user-uuid>"
role_id = raff_role . vm_operator . id
}
Example — add a CI key to a project
resource "raff_project_member" "ci_in_prod" {
project_id = raff_project . prod . id
api_key_id = raff_api_key . ci . id
role_id = raff_role . vm_operator . id
}
Argument reference
Required
Argument Type Description project_idstring (UUID) Project to add to. ForceNew role_idstring (UUID) Role to assign. Must be project-scoped
One of (mutually exclusive)
Argument Type Description target_user_idstring (UUID) Existing account user. ForceNew api_key_idstring (UUID) API key to grant project access. ForceNew
Optional
Argument Type Description statusstring active or suspended
Attribute reference (computed)
Attribute Description idComposite ID — <project_id>/<member_id> emailMember’s email role_nameDisplay name of the assigned role created_atRFC3339 timestamp
Lifecycle
Operation Behavior terraform apply (create)Adds the member to the project Change role_id, status In-place update Change project_id, target_user_id, api_key_id Replacement — destroy + recreateterraform destroyRemoves the member from the project (account-level access unaffected)
Importing existing project members
terraform import raff_project_member.alice_in_prod < project-uui d > / < member-uui d >
Permissions
The API key needs project.members.manage in the target project. The system role Project Admin grants this.
Data sources
# All members of a project, optionally filtered
data "raff_project_members" "prod" {
project_id = raff_project . prod . id
status = "active"
}
raff_member Account-level membership.
raff_project The project to add into.
CLI: raff project member Imperative equivalent.
Last modified on May 11, 2026