Bỏ qua, đến nội dung

Tham chiếu API — API Keys

Tổng quan Resource

ResourceMô tảQuyền
apiKeysQuản lý API keysAdmin (pm.api-keys.configuration)

Middleware bổ sung: user chỉ thấy và xoá được API keys do chính mình tạo (scope filter theo userId).

Tạo API Key

typescript
const response = await agent.resource('apiKeys').create({
  values: {
    name: 'CI/CD Pipeline',
    roleName: 'editor',
    expiresIn: '30d',  // '30d', '90d', '1y', 'never'
  },
});
const { token } = response.body.data;
// ⚠️ Lưu lại ngay — token chỉ hiển thị 1 lần

Lấy danh sách keys

typescript
const response = await agent.resource('apiKeys').list({
  sort: ['-createdAt'],
});
// response.body.data = [{ id, name, roleName, expiresIn, createdAt, ... }]
// Lưu ý: field `token` bị ẩn trong response list

Xoá API Key (vô hiệu hoá token)

typescript
await agent.resource('apiKeys').destroy({
  filterByTargetKey: keyId,
});
// Token JWT bị xoá khỏi DB → request dùng token này sẽ bị từ chối

Sử dụng key từ hệ thống bên ngoài

Với Authorization header (khuyến nghị)

bash
curl -H "Authorization: Bearer eyJhbGciOi..." \
  https://your-domain/api/posts:list

Ví dụ: tạo bản ghi mới

bash
curl -X POST \
  -H "Authorization: Bearer eyJhbGciOi..." \
  -H "Content-Type: application/json" \
  -d '{"values": {"title": "Bài viết mới", "status": "draft"}}' \
  https://your-domain/api/posts:create

Database Collection — apiKeys

FieldKiểuMô tả
idbigintID tự tăng
namestringTên mô tả key (ví dụ: "CI/CD Pipeline")
roleNamestringRole gán cho key — quyết định quyền truy cập
expiresInstringThời hạn token: 30d, 90d, 1y, never
tokenstringJWT — chỉ hiển thị 1 lần khi tạo, sau đó bị ẩn
userIdbigintID của user đã tạo key
sortintegerThứ tự sắp xếp
createdAttimestampThời gian tạo key

Phân quyền (ACL)

ACL SnippetQuyềnMô tả
pm.api-keys.configurationAdminTruy cập trang API Keys trong Settings

Ngoài ra, middleware scope đảm bảo:

  • apiKeys:list — chỉ trả về keys có userId = user hiện tại
  • apiKeys:destroy — chỉ cho phép xoá keys có userId = user hiện tại

Giới hạn kỹ thuật

Tham sốGiá trịGhi chú
Số key tối đa / user20Cấu hình được
Token formatJWT (HS256)Ký bởi @digiforce-nc/auth
Key hết hạnTự động bị từ chốiResponse 401 Unauthorized
Rate limitNhư user bình thườngÁp dụng theo role