Dữ liệu

Tổ chức và nhân sự

Tổ chức, phòng ban, chức danh, nhân sự.

Các endpoint dưới đây dùng token kết nối và nằm dưới /v1/work.

Tổ chức

GET /organization — quyền organization:read

{ "data": { "id": "org_…", "name": "Công ty ABC", "environment": "live",
            "currency_code": "VND", "timezone": "Asia/Ho_Chi_Minh",
            "pay_cycle": "monthly", "cutoff_day": 25, "payday": 5 } }

Phòng ban và chức danh

GET /departments · GET /departments/{id} · GET /positions — quyền organization:read

{ "id": "dep_…", "name": "Cửa hàng Quận 1", "kind": "store", "address": "…",
  "lat": 10.77, "lng": 106.70, "radius_m": 100, "lead_member_id": "mem_…" }

Nhân sự

GET    /members?department=&status=active|paused|left&q=&limit=&cursor=
GET    /members/{id}
POST   /members                      PATCH /members/{id}
POST   /members/{id}/deactivate      POST  /members/{id}/activation-code
{ "id": "mem_Kd7p…", "name": "Nguyễn Văn A", "department_id": "dep_…",
  "position_id": "pos_…", "position": "Thu ngân", "role": "staff", "status": "active",
  "join_date": "2026-03-01", "awaits_activation": false, "created_at": "…", "updated_at": "…" }

Có quyền members:salary thì thêm base_salary, salary_basis (month, day, hour) và rate.

Có quyền members:avatar thì thêm avatar_url. Ảnh mới luôn là URL mới nên có thể dùng URL làm phiên bản. POST /members/{id}/avatar (multipart, trường file: jpg/png/webp ≤ 4 MB) thay ảnh, DELETE /members/{id}/avatar gỡ ảnh. Ảnh thuộc về tài khoản CTAS của người đó: đổi ở đây là đổi ở mọi sản phẩm CTAS. Khi ảnh đổi, các kết nối khác nhận webhook member.avatar_updated (member_id, has_avatar, không kèm URL); kết nối tự đổi thì không nhận lại.

Tạo nhân sự

POST /members — quyền members:write. Trường: name, phone, department_id, position_id, role, join_date, base_salary, salary_basis.

  • Người chưa có tài khoản CTAS được tạo ở trạng thái chờ kích hoạt. Response có meta.activation_code để bạn chuyển cho nhân viên.
  • Trùng số điện thoại trong tổ chức: 409.
  • Vượt số nhân sự của gói: 403 PLAN_LIMIT với details.limit = "max_active_members".
  • Không tạo được quản trị viên qua API.

Cho nghỉ

POST /members/{id}/deactivate với { "effective_date", "reason" } chuyển status sang left. CTAS Work không xoá hồ sơ nhân sự vì lương và chấm công phải giữ, nên không có DELETE.

Trạng thái

TrườngGiá trị
members.statusactive, paused, left
members.roleadmin, manager, lead, staff, hoặc vai trò tuỳ chỉnh của tổ chức