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:
| Endpoint | Allowed roles |
|---|---|
| List members | Owner, Admin, Member |
| Invite a member | Owner, Admin |
| Change a member's role | Owner |
| Remove a member | Owner |
List Team Members
Returns all members of the authenticated tenant account.
GET /tenants/me/membersExample 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
| Field | Type | Description |
|---|---|---|
id | string | Member identifier |
email | string | Member email address |
status | string | active or pending |
role | string | owner, admin, or member |
invitedAt | string | ISO 8601 timestamp of invitation |
joinedAt | string or null | ISO 8601 timestamp when invitation was accepted |
Invite a Team Member
Sends an invitation email to a new team member.
POST /tenants/me/members/inviteRequest Body
json
{
"email": "newmember@example.com",
"role": "member"
}| Field | Type | Required | Default | Description |
|---|---|---|---|---|
email | string | Yes | - | Email address to invite |
role | string | No | "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
| Code | HTTP | Description |
|---|---|---|
MEMBER_LIMIT_REACHED | 429 | Plan member limit reached |
MEMBER_ALREADY_EXISTS | 409 | This email is already a member or has a pending invitation |
VALIDATION_ERROR | 400 | Invalid 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"
}| Field | Type | Required | Description |
|---|---|---|---|
role | string | Yes | New 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
}