The account members API allows you to invite new members to an account by making a POST
request to /api/v2/members
. When you invite a new member to an account, an invitation is sent to the email you provided. Members with "admin" or "owner" roles may create new members, as well as anyone with a "createMember" permission for "member/*". To learn more, read LaunchDarkly account members.
Any member may request the complete list of account members with a GET
to /api/v2/members
.
Valid built-in role names that you can provide for the role
field include reader
, writer
, admin
, owner/admin
, and no_access
. To learn more about built-in roles, read LaunchDarkly's built-in roles.
Several of the endpoints in the account members API require a member ID. The member ID is returned as part of the Invite new members and List account members responses. It is the _id
field of each element in the items
array.
Return a list of account members.
By default, this returns the first 20 members. Page through this list with the limit
parameter and by following the first
, prev
, next
, and last
links in the returned _links
field. These links are not present if the pages they refer to don't exist. For example, the first
and prev
links will be missing from the response on the first page.
LaunchDarkly supports the following fields for filters:
query
is a string that matches against the members' emails and names. It is not case sensitive.role
is a |
separated list of roles and custom roles. It filters the list to members who have any of the roles in the list. For the purposes of this filtering, Owner
counts as Admin
.id
is a |
separated list of member IDs. It filters the list to members who match any of the IDs in the list.email
is a |
separated list of member emails. It filters the list to members who match any of the emails in the list.team
is a string that matches against the key of the teams the members belong to. It is not case sensitive.noteam
is a boolean that filters the list of members who are not on a team if true and members on a team if false.lastSeen
is a JSON object in one of the following formats:{"never": true}
- Members that have never been active, such as those who have not accepted their invitation to LaunchDarkly, or have not logged in after being provisioned via SCIM.{"noData": true}
- Members that have not been active since LaunchDarkly began recording last seen timestamps.{"before": 1608672063611}
- Members that have not been active since the provided value, which should be a timestamp in Unix epoch milliseconds.accessCheck
is a string that represents a specific action on a specific resource and is in the format <ActionSpecifier>:<ResourceSpecifier>
. It filters the list to members who have the ability to perform that action on that resource. Note: accessCheck
is only supported in API version 20220603
and earlier. To learn more, read Versioning.accessCheck:createApprovalRequest:proj/default:env/test:flag/alternate-page
matches members with the ability to create an approval request for the alternate-page
flag in the test
environment of the default
project.For example, the filter query:abc,role:admin|customrole
matches members with the string abc
in their email or name, ignoring case, who also are either an Owner
or Admin
or have the custom role customrole
.
LaunchDarkly supports two fields for sorting: displayName
and lastSeen
:
displayName
sorts by first + last name, using the member's email if no name is set.lastSeen
sorts by the _lastSeen
property. LaunchDarkly considers members that have never been seen or have no data the oldest.Members collection response
Invalid access token
Forbidden
Invalid resource identifier
Rate limited
{- "items": [
- {
- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "_id": "507f1f77bcf86cd799439011",
- "firstName": "Ariel",
- "lastName": "Flores",
- "role": "reader",
- "email": "ariel@acme.com",
- "_pendingInvite": false,
- "_verified": true,
- "_pendingEmail": "string",
- "customRoles": [
- "devOps",
- "backend-devs"
], - "mfa": "string",
- "excludedDashboards": [
- "string"
], - "_lastSeen": 0,
- "_lastSeenMetadata": {
- "tokenId": "5b52207f8ca8e631d31fdb2b"
}, - "_integrationMetadata": {
- "externalId": "string",
- "externalStatus": {
- "display": "string",
- "value": "string"
}, - "externalUrl": "string",
- "lastChecked": 0
}, - "teams": [
- {
- "customRoleKeys": [
- "access-to-test-projects"
], - "key": "team-key-123abc",
- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "name": "QA Team"
}
], - "permissionGrants": [
- {
- "actionSet": "string",
- "actions": [
- "maintainTeam"
], - "resource": "team/qa-team"
}
], - "creationDate": 0,
- "oauthProviders": [
- "string"
], - "version": 1,
- "roleAttributes": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}
}
], - "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "totalCount": 0
}
Invite one or more new members to join an account. Each member is sent an invitation. Members with "admin" or "owner" roles may create new members, as well as anyone with a "createMember" permission for "member/*". If a member cannot be invited, the entire request is rejected and no members are invited from that request.
Each member must have an email
field and either a role
or a customRoles
field. If any of the fields are not populated correctly, the request is rejected with the reason specified in the "message" field of the response.
Requests to create account members will not work if SCIM is enabled for the account.
No more than 50 members may be created per request.
A request may also fail because of conflicts with existing members. These conflicts are reported using the additional code
and invalid_emails
response fields with the following possible values for code
:
A request that fails for one of the above reasons returns an HTTP response code of 400 (Bad Request).
Member collection response
Invalid request
Invalid access token
Forbidden
Status conflict
Rate limited
[- {
- "email": "sandy@acme.com",
- "password": "***",
- "firstName": "Ariel",
- "lastName": "Flores",
- "role": "reader",
- "customRoles": [
- "customRole1",
- "customRole2"
], - "teamKeys": [
- "team-1",
- "team-2"
], - "roleAttributes": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}
}
]
{- "items": [
- {
- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "_id": "507f1f77bcf86cd799439011",
- "firstName": "Ariel",
- "lastName": "Flores",
- "role": "reader",
- "email": "ariel@acme.com",
- "_pendingInvite": false,
- "_verified": true,
- "_pendingEmail": "string",
- "customRoles": [
- "devOps",
- "backend-devs"
], - "mfa": "string",
- "excludedDashboards": [
- "string"
], - "_lastSeen": 0,
- "_lastSeenMetadata": {
- "tokenId": "5b52207f8ca8e631d31fdb2b"
}, - "_integrationMetadata": {
- "externalId": "string",
- "externalStatus": {
- "display": "string",
- "value": "string"
}, - "externalUrl": "string",
- "lastChecked": 0
}, - "teams": [
- {
- "customRoleKeys": [
- "access-to-test-projects"
], - "key": "team-key-123abc",
- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "name": "QA Team"
}
], - "permissionGrants": [
- {
- "actionSet": "string",
- "actions": [
- "maintainTeam"
], - "resource": "team/qa-team"
}
], - "creationDate": 0,
- "oauthProviders": [
- "string"
], - "version": 1,
- "roleAttributes": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}
}
], - "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "totalCount": 0
}
Get a single account member by member ID.
me
is a reserved value for the id
parameter that returns the caller's member information.
Member response
Invalid access token
Forbidden
Invalid resource identifier
Rate limited
{- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "_id": "507f1f77bcf86cd799439011",
- "firstName": "Ariel",
- "lastName": "Flores",
- "role": "reader",
- "email": "ariel@acme.com",
- "_pendingInvite": false,
- "_verified": true,
- "_pendingEmail": "string",
- "customRoles": [
- "devOps",
- "backend-devs"
], - "mfa": "string",
- "excludedDashboards": [
- "string"
], - "_lastSeen": 0,
- "_lastSeenMetadata": {
- "tokenId": "5b52207f8ca8e631d31fdb2b"
}, - "_integrationMetadata": {
- "externalId": "string",
- "externalStatus": {
- "display": "string",
- "value": "string"
}, - "externalUrl": "string",
- "lastChecked": 0
}, - "teams": [
- {
- "customRoleKeys": [
- "access-to-test-projects"
], - "key": "team-key-123abc",
- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "name": "QA Team"
}
], - "permissionGrants": [
- {
- "actionSet": "string",
- "actions": [
- "maintainTeam"
], - "resource": "team/qa-team"
}
], - "creationDate": 0,
- "oauthProviders": [
- "string"
], - "version": 1,
- "roleAttributes": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}
}
Update a single account member. Updating a member uses a JSON patch representation of the desired changes. To learn more, read Updates.
To update fields in the account member object that are arrays, set the path
to the name of the field and then append /<array index>
. Use /0
to add to the beginning of the array. Use /-
to add to the end of the array. For example, to add a new custom role to a member, use the following request body:
[
{
"op": "add",
"path": "/customRoles/0",
"value": "some-role-id"
}
]
You can update only an account member's role or custom role using a JSON patch. Members can update their own names and email addresses though the LaunchDarkly UI.
When SAML SSO or SCIM is enabled for the account, account members are managed in the Identity Provider (IdP). Requests to update account members will succeed, but the IdP will override the update shortly afterwards.
Member response
Invalid request
Invalid access token
Forbidden
Invalid resource identifier
Status conflict
Rate limited
[- {
- "op": "add",
- "path": "/role",
- "value": "writer"
}
]
{- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "_id": "507f1f77bcf86cd799439011",
- "firstName": "Ariel",
- "lastName": "Flores",
- "role": "reader",
- "email": "ariel@acme.com",
- "_pendingInvite": false,
- "_verified": true,
- "_pendingEmail": "string",
- "customRoles": [
- "devOps",
- "backend-devs"
], - "mfa": "string",
- "excludedDashboards": [
- "string"
], - "_lastSeen": 0,
- "_lastSeenMetadata": {
- "tokenId": "5b52207f8ca8e631d31fdb2b"
}, - "_integrationMetadata": {
- "externalId": "string",
- "externalStatus": {
- "display": "string",
- "value": "string"
}, - "externalUrl": "string",
- "lastChecked": 0
}, - "teams": [
- {
- "customRoleKeys": [
- "access-to-test-projects"
], - "key": "team-key-123abc",
- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "name": "QA Team"
}
], - "permissionGrants": [
- {
- "actionSet": "string",
- "actions": [
- "maintainTeam"
], - "resource": "team/qa-team"
}
], - "creationDate": 0,
- "oauthProviders": [
- "string"
], - "version": 1,
- "roleAttributes": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}
}
Delete a single account member by ID. Requests to delete account members will not work if SCIM is enabled for the account.
Action succeeded
Invalid access token
Forbidden
Invalid resource identifier
Status conflict
Rate limited
{- "code": "unauthorized",
- "message": "Invalid access token"
}
Add one member to one or more teams.
Member response
Invalid request
Invalid access token
Forbidden
Member not found
Status conflict
Rate limited
{- "teamKeys": [
- "team1",
- "team2"
]
}
{- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "_id": "507f1f77bcf86cd799439011",
- "firstName": "Ariel",
- "lastName": "Flores",
- "role": "reader",
- "email": "ariel@acme.com",
- "_pendingInvite": false,
- "_verified": true,
- "_pendingEmail": "string",
- "customRoles": [
- "devOps",
- "backend-devs"
], - "mfa": "string",
- "excludedDashboards": [
- "string"
], - "_lastSeen": 0,
- "_lastSeenMetadata": {
- "tokenId": "5b52207f8ca8e631d31fdb2b"
}, - "_integrationMetadata": {
- "externalId": "string",
- "externalStatus": {
- "display": "string",
- "value": "string"
}, - "externalUrl": "string",
- "lastChecked": 0
}, - "teams": [
- {
- "customRoleKeys": [
- "access-to-test-projects"
], - "key": "team-key-123abc",
- "_links": {
- "property1": {
- "href": "string",
- "type": "string"
}, - "property2": {
- "href": "string",
- "type": "string"
}
}, - "name": "QA Team"
}
], - "permissionGrants": [
- {
- "actionSet": "string",
- "actions": [
- "maintainTeam"
], - "resource": "team/qa-team"
}
], - "creationDate": 0,
- "oauthProviders": [
- "string"
], - "version": 1,
- "roleAttributes": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}
}