E-002 — Danh mục API¶
Nguồn: PRD prd-openapi-platform-2026-09-04 §5 (F10, F11) · spine
architecture-openapi-platform-2026-09-04 (AD-3, AD-4, AD-9, AD-21) · story chi tiết + AC ở
_bmad-output/planning-artifacts/epics.md (mục Epic E-002).
PO duyệt cấu trúc epic + ô parity: 05/09/2026 — duyệt cả danh sách epic và bảng story.
Dựng cây Domain → Subdomain → API. Nhãn nhóm Thông tư 64 trên từng API là nguồn
duy nhất để thi hành khoản 3 Điều 5 ở các epic sau, và 1.6–1.7 là đường duy nhất
đặt được nhãn đó.
Vì sao làm — BRD tầng epic¶
Mục tiêu. Quản trị viên dựng được cây Domain → Subdomain → API, và mỗi API mang nhãn nhóm Thông tư 64 — nhãn này là nguồn duy nhất để thi hành khoản 3 Điều 5 về sau.
Nhóm yêu cầu trong PRD — F10, F11¶
F10 — Danh mục Domain và Subdomain¶
- FR-061 Quản trị Domain: mã, tên, trạng thái (Đang hoạt động / Ngưng hoạt động), mô tả.
- FR-062 Mã domain theo quy tắc: chữ in hoa, số,
_và., tối đa 64 ký tự. Quy tắc này lấy từ helper text của hệ cũ, cần phía nghiệp vụ xác nhận trước khi thành ràng buộc cứng. - FR-063 Quản trị Subdomain: mã, tên, thuộc một Domain, trạng thái, mô tả.
- FR-064 Subdomain được phép chưa thuộc Domain nào — hệ cũ có bản ghi Domain rỗng.
[ASSUMPTION]Chưa rõ đó là trạng thái hợp lệ hay dữ liệu bẩn. - FR-065 Ngưng hoạt động một Domain phải nêu rõ ảnh hưởng tới Subdomain và API bên dưới — không xoá ngầm, không để lại con mồ côi.
- FR-066 Danh sách có tìm kiếm, lọc, phân trang.
F11 — Danh mục API¶
- FR-067 Quản trị API: tên, thuộc Domain (và Subdomain), phiên bản, trạng thái (Đã xuất bản / Ngừng hỗ trợ).
- FR-068 Mỗi API mang hai địa chỉ:
API ENDPOINTlà URL dịch vụ nội bộ thật, vàAPI EXPOSElà URL phơi ra cho bên thứ ba. Đây chính là chỗ việc "chuẩn hoá theo TT64" xảy ra, và nó là bảng ánh xạ do người quản trị nhập, không phải quy tắc cứng trong mã. - FR-069
API EXPOSEphải theo nguyên tắc đặt tên của Phụ lục 01 mục 1:https://<domain>/api/v1/…. - FR-070 ⛔ Mỗi API mang nhãn nhóm TT64:
INF·AIS·PIS·EWLTS· API khác. Nhãn này là nguồn duy nhất để suy ràng buộc khoản 3 Điều 5 (TT-01). Bắt buộc, không để trống — API không nhãn là API không cấp phát được. - FR-071 API thuộc nhóm cơ bản của Điều 6 phải khai được mã API chuẩn theo Phụ lục 01, để đối chiếu khi NHNN kiểm tra danh mục.
- FR-072 Đổi trạng thái API sang Ngừng hỗ trợ phải cảnh báo các Sản phẩm API đang chứa nó.
- FR-073 Danh sách API có tìm kiếm, lọc theo Domain và theo nhóm TT64, phân trang.
- FR-074 Nhập danh mục API hàng loạt.
[ASSUMPTION]Hệ cũ có 1.069 API — nhập tay từng cái là không khả thi, nhưng chưa rõ nguồn nhập là gì (OpenAPI spec, CSV, hay từ Kong).
Bảng story → change¶
| Story | Service | Thứ tự bắt buộc | Ghi chú | Chặn bởi |
|---|---|---|---|---|
E-002/1.1 Schema và API Domain, Subdomain |
admin-be | 1 | cap/api-catalog · quy tắc mã 64 ký tự |
M:E-001/1.1 · M:E-001/1.2 |
E-002/1.2 Màn Domain và Subdomain |
admin-fe | 2 | cap/admin-console-ui · sửa bằng modal (UX-DR13) |
M:E-002/1.1 · M:E-001/5.5 |
E-002/1.3 Schema và API danh mục API |
admin-be | 3 | cap/api-catalog · AD-21 · nhãn nhóm mặc định UNCLASSIFIED, ⛔ chỉ đổi qua luồng 1.6 |
M:E-002/1.1 |
E-002/1.4 Màn danh mục API |
admin-fe | 4 | cap/admin-console-ui · phân trang máy chủ cho 1.069 bản ghi |
M:E-002/1.3 · M:E-001/5.5 |
E-002/1.5 Nhập danh mục API hàng loạt |
admin-be | 5 | cap/api-catalog · ⚠️ BỊ CHẶN: nguồn nhập chưa chốt |
M:E-002/1.3 · ⛔NGOÀI:nguồn nhập chưa chốt |
E-002/1.6 Luồng phân loại nhóm TT64 |
admin-be | 6 | cap/api-catalog · AD-21, AD-9 · lô cho INF/AIS/OUT_OF_SCOPE, từng API cho PIS/EWLTS |
M:E-002/1.3 · M:E-001/3.1 |
E-002/1.7 Màn phân loại theo lô |
admin-fe | 7 | cap/admin-console-ui · chọn theo Domain hoặc Subdomain, xem trước rồi gửi duyệt |
M:E-002/1.6 · M:E-001/3.3 · M:E-001/5.5 |
E-002/1.8 Đặc tả API |
admin-be | 8 | cap/api-catalog · PO duyệt 12/09 · mỗi API mang tài liệu OpenAPI (mô tả · tham số M/O · request/response mẫu · mã lỗi); response mẫu chính là FR-105 · GĐ1 nhập tay vài API theo luật §F UU-TIEN-GD1 |
M:E-002/1.3 · ⛔NGOÀI:nguồn nhập chưa chốt (cùng 1.5) |
Bổ sung 12/09/2026 (PO duyệt) — E-002/1.8 Đặc tả API. PO mở màn Chi tiết API và Gọi thử của cổng
TPP vào GĐ1 (gói CCS lượt 2, design/ @ 5ed1cc6). Danh mục 1.3 chỉ mang tên · địa chỉ · nhãn nhóm, không có
tham số/request/response/mã lỗi — nên màn Chi tiết API (E-005/2.7) không có gì để hiển thị nếu thiếu story này.
Response mẫu trong đặc tả là FR-105, ⛔ không mở story «phản hồi mẫu» riêng ở E-009. Nguồn nhập vẫn là câu
hỏi ngoài đội (cùng 1.5); GĐ1 đi bằng nhập tay một số API đủ chạy happy case (§F UU-TIEN-GD1).
⚠️ 1.5 bị chặn và nó chặn thật: 1.069 API không nhập tay từng cái được, nên không có story
này thì E-003 và E-005 không có dữ liệu thật để chạy thử.
1.6 và 1.7 KHÔNG chờ 1.5. Phân loại chạy được trên bất kỳ tập API nào đã có trong
hệ; xếp sau chỉ vì thứ tự tự nhiên là nhập rồi phân loại. Buộc chúng chờ một story đang bị
chặn là kéo theo cả E-003 và E-005 — AD-21 chốt API UNCLASSIFIED không đóng được vào
sản phẩm nào.
⚠️ THIẾU VẬT MANG — hàng 8 của ma trận AD-20 chưa có chủ (đo 08/09/2026). AD-20 cấp
portal_app quyền SELECT chỉ bản đã xuất bản trên DOMAIN/SUBDOMAIN/API, nhưng 1.1
và 1.3 khai bảng mà không story nào mang câu GRANT — mà V3__ma_tran_quyen.sql đã chốt
quyền phải cấp tường minh theo từng bảng, không có đường cấp trước. E-005/2.5 đọc danh mục
này. ⛔ Chưa mở story — đề nghị S2 đang chờ PO duyệt, xem docs/ra-soat-kien-truc-2026-09-08.md.
Các nhóm việc (feature)¶
Hệ Admin
- Danh mục API — 8 story · 🟡 còn 19 mốc