Members

สมาชิก · คำเชิญ · role

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

ParamTypeNote
roleIduuidrequired (จาก GET /roles)
ErrorStatusเมื่อไหร่
member_not_found404ไม่มี member row นี้ใน business นี้
role_not_found404roleId ไม่มีอยู่ใน business นี้
cannot_change_owner_role403สมาชิกเป้าหมายคือ owner
use_transfer_ownership422กำลังตั้งเป็น 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

ErrorStatusเมื่อไหร่
cannot_remove_self422ลบสมาชิกภาพของตัวเองไม่ได้
cannot_remove_owner403ลบ 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

ParamTypeNote
emailstringrequired
roleIduuidrequired (จาก GET /roles)
sendEmailbooleanoptional — ส่งลิงก์คำเชิญทางอีเมล
language"th" | "en"optional — ภาษาของอีเมล
ErrorStatusเมื่อไหร่
role_not_found404roleId ไม่มีอยู่ใน business นี้
already_member409อีเมลนั้นเป็นสมาชิกอยู่แล้ว
invite_already_pending409มีคำเชิญค้างอยู่สำหรับอีเมลนั้นแล้ว
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 }
  ]
}
เอกสาร API