Skip to content

Team Members API

Maintained by: Aether365 Team Audience: Developers Scope: Team member API endpoints - managing user access

Authorization

Team member endpoints use role-based access control:

EndpointAllowed roles
List membersOwner, Admin, Member
Invite a memberOwner, Admin
Change a member's roleOwner
Remove a memberOwner

List Team Members

Returns all members of the authenticated tenant account.

GET /tenants/me/members

Example Request

bash
curl https://api.aether365.io/tenants/me/members \
  -H "Authorization: Bearer <token>"

Example Response

json
{
  "success": true,
  "data": [
    {
      "id": "mem_abc123",
      "email": "alice@example.com",
      "status": "active",
      "role": "owner",
      "invitedAt": "2026-01-15T10:00:00Z",
      "joinedAt": "2026-01-15T10:30:00Z"
    },
    {
      "id": "mem_def456",
      "email": "bob@example.com",
      "status": "active",
      "role": "member",
      "invitedAt": "2026-02-01T09:00:00Z",
      "joinedAt": "2026-02-01T11:00:00Z"
    },
    {
      "id": "mem_ghi789",
      "email": "carol@example.com",
      "status": "pending",
      "role": "member",
      "invitedAt": "2026-04-10T08:00:00Z",
      "joinedAt": null
    }
  ]
}

Response Fields

FieldTypeDescription
idstringMember identifier
emailstringMember email address
statusstringactive or pending
rolestringowner, admin, or member
invitedAtstringISO 8601 timestamp of invitation
joinedAtstring or nullISO 8601 timestamp when invitation was accepted

Invite a Team Member

Sends an invitation email to a new team member.

POST /tenants/me/members/invite

Request Body

json
{
  "email": "newmember@example.com",
  "role": "member"
}
FieldTypeRequiredDefaultDescription
emailstringYes-Email address to invite
rolestringNo"member""member" or "admin"

Example Request

bash
curl -X POST https://api.aether365.io/tenants/me/members/invite \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"email": "newmember@example.com", "role": "member"}'

Example Response

json
{
  "success": true,
  "data": {
    "id": "mem_xyz999",
    "email": "newmember@example.com",
    "status": "pending",
    "role": "member",
    "invitedAt": "2026-04-12T10:00:00Z",
    "joinedAt": null
  }
}

Errors

CodeHTTPDescription
MEMBER_LIMIT_REACHED429Plan member limit reached
MEMBER_ALREADY_EXISTS409This email is already a member or has a pending invitation
VALIDATION_ERROR400Invalid email address

Change a Member's Role

Changes the role of an existing team member.

PATCH /tenants/me/members/{memberId}

WARNING

Only the account owner can change roles. Admins cannot change roles.

Request Body

json
{
  "role": "admin"
}
FieldTypeRequiredDescription
rolestringYesNew role: "member" or "admin"

Example Request

bash
curl -X PATCH https://api.aether365.io/tenants/me/members/mem_def456 \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"role": "admin"}'

Example Response

json
{
  "success": true,
  "data": {
    "id": "mem_def456",
    "email": "bob@example.com",
    "status": "active",
    "role": "admin",
    "invitedAt": "2026-02-01T09:00:00Z",
    "joinedAt": "2026-02-01T11:00:00Z"
  }
}

Remove a Team Member

Removes a member from the account. They immediately lose access.

DELETE /tenants/me/members/{memberId}

WARNING

Removing the account owner is not permitted. To transfer ownership, contact support.

Example Request

bash
curl -X DELETE https://api.aether365.io/tenants/me/members/mem_def456 \
  -H "Authorization: Bearer <token>"

Example Response

json
{
  "success": true,
  "data": null
}
Was this page helpful?