Members
จัดการสมาชิกของ business และ role ที่แต่ละคนถือ — ดูรายชื่อสมาชิก เปลี่ยน role ลบสมาชิก และส่งหรือยกเลิกคำเชิญ ใช้ GET /roles เพื่อหาค่า roleId ที่ call เหล่านี้ต้องการ
Account key: ทุก request ด้านล่างต้องส่ง
X-Business-Id: <business id>เพื่อเลือก business ที่จะทำงานด้วย (ถ้าไม่ส่งจะได้400 business_required) business key ไม่สนใจ header นี้ — มันผูกกับ business เดียวอยู่แล้ว ดูเพิ่มที่ Getting started → API Key ระดับบัญชี
GET /members
ดูรายชื่อสมาชิกของ business นี้
Scopes: manage_members
curl https://phone.mcloud.co.th/api/v1/members \
-H "Authorization: Bearer crk_..."
{
"members": [
{
"id": "0192b9...",
"userId": "0192c1...",
"name": "Somchai",
"email": "somchai@example.com",
"image": null,
"roleId": "0192d4...",
"roleKey": "owner",
"roleName": "Owner",
"joinedAt": "2026-01-12T03:20:00Z"
}
]
}
PATCH /members/{id}
เปลี่ยน role ของสมาชิก — {id} คือ member row id (ค่า id จาก GET /members ไม่ใช่ userId)
Scopes: manage_members
| Param | Type | Note |
|---|---|---|
roleId | uuid | required (จาก GET /roles) |
| Error | Status | เมื่อไหร่ |
|---|---|---|
member_not_found | 404 | ไม่มี member row นี้ใน business นี้ |
role_not_found | 404 | roleId ไม่มีอยู่ใน business นี้ |
cannot_change_owner_role | 403 | สมาชิกเป้าหมายคือ owner |
use_transfer_ownership | 422 | กำลังตั้งเป็น role owner — ให้ใช้ transfer ownership แทน |
curl -X PATCH https://phone.mcloud.co.th/api/v1/members/$ID \
-H "Authorization: Bearer crk_..." \
-H "Content-Type: application/json" \
-d '{"roleId":"0192d4..."}'
{ "ok": true }
DELETE /members/{id}
ลบสมาชิกออกจาก business นี้ — {id} คือ member row id
Scopes: manage_members
| Error | Status | เมื่อไหร่ |
|---|---|---|
cannot_remove_self | 422 | ลบสมาชิกภาพของตัวเองไม่ได้ |
cannot_remove_owner | 403 | ลบ owner ไม่ได้ |
{ "ok": true }
GET /members/invites
ดูคำเชิญที่ยังค้างอยู่ของ business นี้
Scopes: manage_members
{
"invites": [
{
"id": "0192e7...",
"email": "teammate@example.com",
"roleId": "0192d4...",
"expiresAt": "2026-06-16T00:00:00Z",
"createdAt": "2026-06-09T00:00:00Z"
}
]
}
POST /members/invites
เชิญคนเข้า business นี้ — เลือกส่งอีเมลคำเชิญและภาษาของอีเมลได้
Scopes: manage_members
| Param | Type | Note |
|---|---|---|
email | string | required |
roleId | uuid | required (จาก GET /roles) |
sendEmail | boolean | optional — ส่งลิงก์คำเชิญทางอีเมล |
language | "th" | "en" | optional — ภาษาของอีเมล |
| Error | Status | เมื่อไหร่ |
|---|---|---|
role_not_found | 404 | roleId ไม่มีอยู่ใน business นี้ |
already_member | 409 | อีเมลนั้นเป็นสมาชิกอยู่แล้ว |
invite_already_pending | 409 | มีคำเชิญค้างอยู่สำหรับอีเมลนั้นแล้ว |
curl -X POST https://phone.mcloud.co.th/api/v1/members/invites \
-H "Authorization: Bearer crk_..." \
-H "Content-Type: application/json" \
-d '{"email":"teammate@example.com","roleId":"0192d4...","sendEmail":true,"language":"en"}'
{
"id": "0192e7...",
"link": "https://phone.mcloud.co.th/invite/abc123",
"expiresAt": "2026-06-16T00:00:00Z",
"emailStatus": "sent",
"emailError": null
}
DELETE /members/invites/{id}
ยกเลิกคำเชิญที่ค้างอยู่ — {id} คือ invitation id
Scopes: manage_members
{ "ok": true }
GET /roles
ดู role ที่มีใน business นี้ — ใช้ค่า id เหล่านี้กับ call ของ member/invite ด้านบน
Scopes: manage_members · manage_roles
curl https://phone.mcloud.co.th/api/v1/roles \
-H "Authorization: Bearer crk_..."
{
"roles": [
{ "id": "0192d4...", "key": "owner", "name": "Owner", "isSystem": true },
{ "id": "0192d5...", "key": "agent", "name": "Agent", "isSystem": false }
]
}
