Nhà phát triển

Neebo Partner API

API REST cho đối tác, thiết bị kiểm soát ra vào, hệ thống IoT và phần mềm của chủ đầu tư. Đọc dữ liệu căn hộ, cư dân, hóa đơn; tạo phản ánh; kiểm tra quyền vào cổng và nhận sự kiện qua webhook. Có trong gói Doanh nghiệp.

Xác thực bằng API key

Trưởng Ban quản lý tạo key trong web quản lý (Tích hợp → API key), chọn scope và các tòa được phép truy cập. Key chỉ hiện một lần khi tạo; thu hồi có hiệu lực ngay.

curl https://api.neebo.vn/partner/v1/buildings \
  -H "Authorization: Bearer nb_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  • Base URL: https://api.neebo.vn/partner/v1
  • JSON UTF-8; thời gian là mili-giây Unix, ngày dạng YYYY-MM-DD giờ Việt Nam.
  • Lỗi: {"error": {"code": "...", "message": "..."}} kèm mã HTTP (401, 402, 403, 404, 422, 429).
  • Mỗi key chỉ thấy dữ liệu các tòa được gán (buildingIds).

Scope

ScopeCho phép
units:readDanh sách căn hộ của tòa
residents:readCư dân đang hoạt động (số điện thoại được che giữa)
invoices:readHóa đơn phí theo kỳ và trạng thái thanh toán
tickets:writeTạo phản ánh từ hệ thống của bạn
access:verifyKiểm tra quyền ra vào, gửi sự kiện cửa/barrier
guests:verifyKiểm tra mã QR khách
vehicles:verifyKiểm tra biển số xe đã đăng ký
webhooks:manageĐăng ký và quản lý webhook

Lệnh chính

LệnhScopeMô tả
GET /buildings(mọi key)Tòa trong phạm vi key
GET /unitsunits:readCăn hộ, phân trang limit/offset
GET /residentsresidents:readCư dân đang hoạt động
GET /invoicesinvoices:readHóa đơn theo kỳ, trạng thái
POST /ticketstickets:writeTạo phản ánh cho căn hộ
POST /access/verifyaccess:verifyQR căn, QR khách, phiếu chuyển đồ, biển số
POST /access/eventsaccess:verifySự kiện thiết bị: cửa, barrier, báo động
GET/POST /webhookswebhooks:manageDanh sách, đăng ký webhook; xem nhật ký gửi

Danh sách phân trang bằng limit (mặc định 100, tối đa 500) và offset; nextOffset = null là hết dữ liệu. Ví dụ kiểm tra quyền vào cổng:

{ "qr": "neebo://unit/unit_abc", "gate": "Cổng A", "buildingId": "bld_x" }

→ { "allowed": true, "reason": "resident",
    "subject": { "kind": "unit", "id": "unit_abc", "unitCode": "A-1208" },
    "logId": "acl_…" }

Webhook

Đăng ký URL https để nhận sự kiện. Khi tạo, Neebo trả secret (whsec_…) đúng một lần. Sự kiện hỗ trợ:

invoice.paidticket.createdticket.status_changedguest.checked_invehicle.approvedmember.verifiedaccess.denied

{ "id": "whd_…", "event": "invoice.paid", "createdAt": 1792771834161,
  "buildingId": "bld_x", "data": { "invoiceId": "…", "total": 1250000 } }

Header gửi kèm: X-Neebo-Event, X-Neebo-Delivery (dùng chống trùng), X-Neebo-Timestamp (giây Unix) và X-Neebo-Signature: sha256=<hex>. Xác minh chữ ký trước khi xử lý:

import crypto from 'node:crypto';

// HMAC-SHA256(secret, "<X-Neebo-Timestamp>.<raw body>"), từ chối nếu lệch giờ quá 5 phút.
function verify(req, rawBody, secret) {
  const ts = req.headers['x-neebo-timestamp'];
  const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(`${ts}.${rawBody}`).digest('hex');
  const got = req.headers['x-neebo-signature'] ?? '';
  return Math.abs(Date.now() / 1000 - Number(ts)) < 300
    && got.length === expected.length
    && crypto.timingSafeEqual(Buffer.from(got), Buffer.from(expected));
}

Phản hồi không phải 2xx hoặc quá 10 giây sẽ được gửi lại sau 30 giây, 2 phút, 8 phút, 32 phút (tối đa 5 lần). Nhật ký gửi có nút gửi lại và gửi thử trong web quản lý.

Giới hạn và bảo mật

  • 600 lệnh/phút/key; vượt quá trả 429 rate_limited.
  • Mọi lệnh ghi được lưu nhật ký kiểm toán.
  • Khách hàng tạm ngưng do nợ phí chỉ còn dùng được lệnh GET (402 billing_suspended).
  • Lệnh ngoài phạm vi tòa của key trả 404, thiếu scope trả 403 insufficient_scope.

Cần tích hợp riêng cho dự án? Nói chuyện với Neebo.

Chúng tôi hỗ trợ kết nối thiết bị ra vào, barrier, phần mềm kế toán và hệ thống của chủ đầu tư. Đặt lịch demo để nhận key thử nghiệm.