Skip to content

Member ​

Query and manage members of your organization, including inviting new users and removing existing ones.

Allowed query parameters ​

Filters ​

FilterTypeDescription
searchStringFull-text search

Sorting ​

name, created_at, position, department

Includes ​

user.media, supervisor.user.media

Retrieve a member ​

get
/member/{id}

Example response ​

json
// HTTP 200 OK
{
	"id": 123,
	"role": {
		"id": 1454,
		"name": "admin",
		"guard_name": "web",
		"created_at": "2022-05-19T09:35:09.000000Z",
		"updated_at": "2022-05-19T09:35:09.000000Z"
	},
	"name": "Alice Cooper",
	"user": {
		"id": 20,
		"firstname": "Alice",
		"lastname": "Cooper",
		"fullName": "Alice Cooper",
		"email": "alice.cooper@acme.com",
		"department": null,
		"description": null,
		"avatar": {
			"uuid": "40614a32-bdf8-41a5-808b-7bfec98eaef2",
			"name": "logo-only.png",
			"description": null,
			"mime_type": "image/png",
			"collection": "avatar",
			"url": "http://localhost:8000/image/40614a32-bdf8-41a5-808b-7bfec98eaef2/logo-only.png?fit=crop&h=100&w=100&signature=e6e65b38e9a91d58e428fa9007d98218a29abdd9d81fa514c1bfda364a348989"
		},
		"gravatar_url": "https://www.gravatar.com/avatar/8d3879333b5e88863ddbad18be8749bf?s=100&d=identicon&r=g"
	},
	"work_quota": 40
}

List members ​

get
/member

The list endpoint accepts the same parameters as in Retrieve a member and returns a paginated array of the same member object in the data property.

Read more about Pagination, Filtering, Sorting and Includes on the Introduction page.

Roles ​

When inviting a user, you may assign them one of the following roles:

RoleDescription
memberDefault role. General-purpose access for employees of the organization.
managerExtended permissions over projects, sales documents and team management.
coordinatorCoordinator-level access focused on project and team coordination.
accountingAccess to bookkeeping, journal transactions, VAT, banking and other accounting-related resources.
auditorRead-only audit access. Auditor memberships expire automatically after 14 days.
adminFull administrative access to the organization.

If no role is provided when inviting a user, member is used.

Auditor expiration

Invitations accepted with the auditor role automatically grant temporary membership that expires 14 days after acceptance.

Invite a user ​

post
/organization/{organization}/invite

Creates an invitation for the given email address and sends a notification or email with the invitation link. If an invitation already exists for the same email in this organization, it is reused and re-sent (the last_sent_at timestamp is updated).

Path parameters ​

ParameterTypeRequiredDescription
organizationIntegerYesThe ID of the inviting organization

Request body ​

Attribute (* required)TypeDescription
email *StringThe email address to invite. Must be a valid email.
roleStringThe role to assign to the invitee. Defaults to member. See Roles for values.

Permissions

The authenticated user must be a member of the target organization, have a verified email address, and hold the invite_users permission.

Restrictions

  • You cannot invite yourself unless you are a superuser.
  • You cannot invite a user who is already an active member of the organization.
  • Inviting a previously removed user is allowed and will re-activate their membership when they accept.

User limit without a paid plan

Organizations without a paid plan or an active trial can have at most 2 users with an employee role. Pending invitations for an employee role count toward this limit. Inviting another employee returns 402 Payment Required with "features": ["unlocked_users"]. The accounting and auditor roles are free and never count. On a paid plan, every user beyond those included in the plan is added to the subscription as a billed seat.

Example request ​

json
{
    "email": "bob.dylan@acme.com",
    "role": "member"
}

Example response ​

Returns the updated Organization object with the invitations relationship loaded.

json
// HTTP 200 OK
{
    "id": 124,
    "name": "Acme Inc",
    "slug": "acme-inc",
    // ...other organization fields
    "invitations": [
        {
            "id": "3f7c8b1a-2e4d-4a9b-9f1c-8d5e6a7b4c3f",
            "email": "bob.dylan@acme.com",
            "role": "member",
            "token": "h4Yr8qJ1xKmNvP6sT2zLwBcDeFgHiJkLmNoPqRsT",
            "user": null,
            "organization": {
                // Simplified organization object
            },
            "last_sent_at": "2024-06-12T08:15:42.000000Z"
        }
    ]
}

Cancel a pending invitation ​

delete
/invitation/{invitation}

Deletes a pending invitation that has not yet been accepted. Use this to revoke an invitation you sent by mistake.

Path parameters ​

ParameterTypeRequiredDescription
invitationStringYesThe invitation's UUID id

Example response ​

Returns the updated Organization object with the remaining invitations loaded.

json
// HTTP 200 OK
{
    "id": 124,
    "name": "Acme Inc",
    // ...other organization fields
    "invitations": []
}

Remove a member from an organization ​

get
/organization/{organization}/uninvite/{user}

Removes an existing member from the organization. The user is soft-removed from the organization's pivot table and is no longer able to access organization data. If the removed user's current organization was the one they were removed from, their current organization is reset.

Path parameters ​

ParameterTypeRequiredDescription
organizationIntegerYesThe ID of the organization
userIntegerYesThe ID of the user to remove

Permissions

  • The organization owner may remove any member except themselves.
  • Other members must hold the uninvite_users permission.
  • The organization owner cannot be removed.
  • Users with the admin role cannot be removed by non-owners.

Example response ​

Returns the updated Organization object with the remaining users and invitations loaded.

json
// HTTP 200 OK
{
    "id": 124,
    "name": "Acme Inc",
    // ...other organization fields
    "users": [
        // Remaining user objects
    ],
    "invitations": []
}