API Restriction · 07 — ชื่อ permission ของ endpoint ถัง FE / BE / BOTH
เสนอชื่อ permission ให้ endpoint ทุกเส้นที่ยังมีผู้เรียกจริง โดยยึด USAGE_API_AUDIT เป็นตัวตั้ง ไม่ได้ scan controller ใหม่ — ถัง NONE ตัดออกแล้วเพราะปิดด้วย [NotExposed] ไปในเลนของมันเอง
อัปเดต: 2026-09-11
API Restriction · 07 — ชื่อ permission ของ endpoint ถัง FE / BE / BOTH
ผลของข้อ 2 ใน checklist 06 — ตั้งชื่อ permission ให้ endpoint ทุกเส้นที่ยังมีผู้เรียกจริง
ตัวตั้งของไฟล์นี้
ยึด USAGE_API_AUDIT.md (Atlas/docs/platform/api-surface-reduction/20260909/) เป็นตัวตั้ง ซึ่งเป็น audit ที่ไล่ทุก endpoint แล้วจัดเป็นสี่ถังตามว่าใครเรียก — ไม่ได้ scan controller ใหม่ เพราะงานจัดถังทำไปแล้วและเป็นคนละงานกัน
| ถัง | ความหมาย | ในไฟล์นี้ |
|---|---|---|
| NONE | ไม่พบผู้เรียกในโค้ดที่สแกน | ตัดออกทั้งหมด — ปิดด้วย [NotExposed] ไปในเลนของมันเองแล้ว ไม่ต้องมี permission |
| FE | มีผู้เรียกจาก frontend เท่านั้น | ตั้งชื่อ |
| BE | ถูกเรียกจาก service อื่นเท่านั้น | ตั้งชื่อ |
| BOTH | มีทั้ง frontend และ backend เรียก | ตั้งชื่อ |
ดึงจาก §8 ของ audit ได้ 176 เส้น (ต้นทางมี 178 แถว แต่ CodexService ซ้ำ 2 แถว คือ DELETE และ PUT ของ /entries/{id:guid} จึงเหลือ 176 คู่ verb+route ที่ไม่ซ้ำ) — FE 132 · BE 28 · BOTH 16 · ได้ชื่อที่ไม่ซ้ำ 156 ชื่อ
เกณฑ์ตั้งชื่อ
รูปแบบ {resource}:{action} · ตัวพิมพ์เล็กล้วน · ห้าม wildcard · ห้ามใส่ชื่อ service · ห้ามใส่ HTTP method · ห้ามใส่ชื่อ env
{resource}= คำนามของสิ่งที่ endpoint กระทำ เอกพจน์ ถ้าหลายคำใช้ขีดกลาง เช่นuser-role{action}=readcreateupdatedeleteหรือคำกริยาเฉพาะเมื่อสี่ตัวนี้ไม่ตรง เช่นapprovecancelexport- เส้นที่อ่านทั้ง collection กับอ่านรายตัวของ resource เดียวกัน ใช้ชื่อเดียวกัน โดยตั้งใจ
- ชื่อซ้ำกันข้าม service ไม่ใช่ปัญหา เพราะ grant เทียบทั้ง
NameและOwnerServiceพร้อมกัน (PermissionAuthorizationHandler.cs:79-82) ⇒user:readของ UserService กับของ SentinelGateway เป็นคนละใบ
ผลการ review รอบแรก และสิ่งที่แก้ไปแล้ว
review เมื่อ 11/09 ให้ผล fail แล้วแก้ตามนี้ครบก่อนขึ้นฉบับนี้
- แก้ชื่อ 95 เส้น ที่ตั้งแบบกึ่งอัตโนมัติจาก route แล้วผิดความหมาย — เอาคำกริยาไปเป็น resource (
instance-discard:create→onboarding-instance:discard) · action ผิด (user-ids:update→active-user-id:read) ·POSTที่ใช้ค้นข้อมูลถูกตั้งเป็นcreate(terms-notice:create→terms-notice:read) · มีชื่อ service ปนอยู่ในชื่อ (file-management-file:create→file:create) · ลอก segment จาก route มาตรง ๆ (task-all-task:read→task-all:read) - แยกชื่อที่ครอบคนละ scope ออกจากกัน 8 กลุ่ม — terms ราย application กับ terms ทั้งระบบ · CMS content ฝั่ง admin กับฝั่ง public ·
entryที่แก้ข้อมูลกับที่สลับสถานะ · onboarding history · step data ฝั่ง admin กับฝั่งเจ้าของเรื่อง · terms status ที่อ่านกับที่แก้ · application role ที่ผูกกับบริษัทกับที่ผูกกับผู้ใช้ตรง ๆ · member ของบริษัทฝั่ง AMLO กับฝั่ง corporate - ตัดแถวซ้ำของ CodexService ออกสองแถว
🔴 เรื่องที่ค้างอยู่ที่ต้นทาง ไม่ได้แก้ในไฟล์นี้ — PATCH /api/codex-service/v1/entries/{id:guid}/active ถูกจัดไว้ทั้งถัง FE และถัง NONE พร้อมกัน ที่ USAGE_API_AUDIT.md:376 ⇒ ถ้าที่ถูกคือ NONE เส้นนี้จะถูกปิดด้วย [NotExposed] แล้วชื่อ entry:activate จะไม่มีที่ใช้ ต้องเคลียร์ที่ต้นทางก่อน seed
เรื่องที่ต้องเคาะก่อนเอาไป seed
- ถัง BE ไม่มี user token — เส้นที่ service อื่นเรียกมาไม่มีผู้ใช้จริงอยู่เบื้องหลัง
[RequirePermission]ตัดสินจาก grant ของผู้ใช้ จึงใช้กับเส้นเหล่านี้ไม่ได้ตรง ๆ ชื่อในตารางด้านล่างตั้งไว้ให้ครบเพื่อให้เห็นภาพทั้งหมด แต่ต้องเคาะก่อนว่าจะ seed แถวของถัง BE ลงฐานด้วยไหม หรือปล่อยเส้นเหล่านี้ให้กลไกอื่นดูแล - ถัง BOTH รับสองทาง — เส้นเดียวกันมีทั้ง frontend และ backend เรียก ถ้าบังคับ permission แล้วฝั่ง backend ที่ไม่มี user token จะเข้าไม่ได้ ต้องเคาะว่าจะแยก route หรือยกเว้นอย่างไร
- ชื่อที่ครอบมากกว่าหนึ่ง route มี 15 ชื่อ (รายการอยู่ท้ายไฟล์) ส่วนใหญ่เป็นเจตนาตามเกณฑ์ข้อสาม แต่บางตัวครอบ scope ที่ต่างกันจริง ๆ ต้องไล่ดูทีละตัว
branch ที่ต้องทำงานต่อ — ห้ามแตกจาก development
งานปิดถัง NONE ด้วย [NotExposed] ทำเสร็จแล้วจริง แต่ยังไม่ merge อยู่บน branch ของตัวเอง repo ละหนึ่ง branch แตกจาก origin/development ของ repo นั้น พร้อม worktree ชื่อ .worktrees/api-surface-none ทุก repo
🔴 งานแปะ [RequirePermission] ต้องทำต่อบน branch เหล่านี้ ไม่ใช่แตกใหม่จาก development — ถ้าแตกจาก development จะไม่เห็น [NotExposed] ที่แปะไว้ แล้วไปแปะ permission ให้เส้นที่ถูกปิดไปแล้ว พอ merge ทั้งสองฝั่งจะชนกันที่ controller ไฟล์เดียวกัน
| repo | เส้นที่ปิด | branch | PR |
|---|---|---|---|
Backend_UserService | 81 | feature/userservice-api-surface-none | 3100 |
Backend_CodexService | 47 | feature/codexservice-api-surface-none | 3101 |
Backend_ThirdPartyService | 31 | feature/thirdpartyservice-api-surface-none | 3102 |
Backend_NotificationService | 25 | feature/notificationservice-api-surface-none | 3103 |
Backend_TaskService | 14 | feature/taskservice-api-surface-none | 3104 |
Backend_OrchestratorService | 6 | feature/orchestratorservice-api-surface-none | 3105 |
Backend_WorkflowService | 6 | feature/workflowservice-api-surface-none | 3106 |
Backend_FileManagementService | 3 | feature/filemanagementservice-api-surface-none | 3107 |
Backend_Centralized | 2 | feature/centralized-api-surface-none | 3108 |
Backend_ConsentService | 1 | feature/consentservice-api-surface-none | 3109 |
ยืนยันเมื่อ 11/09 แล้วว่า NotExposed อยู่ในไฟล์จริงของทุก branch — 27 ไฟล์ที่ UserService · 16 ที่ Codex · 14 ที่ Notification · 12 ที่ ThirdParty · 9 ที่ Workflow · 8 ที่ Task, Orchestrator และ Centralized · 7 ที่ FileManagement และ Consent · attribute เองนิยามอยู่ที่ Backend_Package src/Abstractions/Security/NotExposedAttribute.cs:18 และ UnexposedRouteConvention.cs:8-22 เป็นตัวถอด route ออกตอน startup
UserService
78 เส้น — FE 70 · BE 4 · BOTH 4
| Verb | Route | ถัง | permission ที่เสนอ |
|---|---|---|---|
| GET | /api/user-service/v1/admin/amlo/cases | FE | amlo-case:read |
| GET | /api/user-service/v1/admin/amlo/companies/{companyId:guid}/members | FE | amlo-company-member:read |
| POST | /api/user-service/v1/admin/amlo/companies/{companyId:guid}/unblock | FE | amlo-company:unblock |
| GET | /api/user-service/v1/admin/amlo/companies/{companyId:guid}/unblock-history | FE | amlo-company-unblock-history:read |
| GET | /api/user-service/v1/admin/amlo/current-generation | FE | amlo-generation:read |
| POST | /api/user-service/v1/admin/amlo/trigger-sync | FE | amlo:sync |
| GET | /api/user-service/v1/admin/amlo/unblock-history | FE | amlo-unblock-history:read |
| GET | /api/user-service/v1/admin/apps/{app_id}/roles | FE | app-role:read |
| POST | /api/user-service/v1/admin/apps/{app_id}/roles | FE | app-role:create |
| GET | /api/user-service/v1/admin/flow-instances | FE | flow-instance:read |
| GET | /api/user-service/v1/admin/flow-instances/by-ref-no/{refNo} | BOTH | flow-instance:read |
| POST | /api/user-service/v1/admin/flow-instances/search | BE | flow-instance:read |
| GET | /api/user-service/v1/admin/flow-instances/{id:guid}/edit-history | FE | flow-instance-edit-history:read |
| GET | /api/user-service/v1/admin/flow-instances/{id:guid}/step-map | FE | flow-instance-step-map:read |
| GET | /api/user-service/v1/admin/flow-instances/{id:guid}/steps/{stepType}/data | FE | flow-instance-step-data:read |
| GET | /api/user-service/v1/apps/{appId:guid}/menus | FE | app-menu:read |
| POST | /api/user-service/v1/apps/{appId:guid}/menus | FE | app-menu:create |
| GET | /api/user-service/v1/apps/{appId:guid}/menus/{menuId:guid}/permissions | FE | menu-permission:read |
| POST | /api/user-service/v1/apps/{appId:guid}/menus/{menuId:guid}/permissions/{permissionId:guid} | FE | menu-permission:create |
| GET | /api/user-service/v1/apps/{app_id}/modes/{mode}/roles | FE | app-mode-role:read |
| GET | /api/user-service/v1/apps/{applicationId:guid}/permissions | FE | app-permission:read |
| POST | /api/user-service/v1/apps/{applicationId:guid}/permissions | FE | app-permission:create |
| GET | /api/user-service/v1/apps/{applicationId:guid}/roles/permissions | FE | role-permission:read |
| POST | /api/user-service/v1/apps/{applicationId:guid}/roles/{roleId:guid}/permissions | FE | role-permission:create |
| POST | /api/user-service/v1/cache/users/warm/{oid} | BE | user-cache:warm |
| POST | /api/user-service/v1/client-keys/echo | FE | client-key:echo |
| PATCH | /api/user-service/v1/companies/default | FE | company:set-default |
| POST | /api/user-service/v1/companies/sync | FE | company:sync |
| GET | /api/user-service/v1/companies/{companyId:guid}/detail | FE | company:read |
| POST | /api/user-service/v1/companies/{companyId:guid}/users/{userId:guid}/application-roles | FE | company-user-application-role:create |
| GET | /api/user-service/v1/corporate/{companyId:guid}/members | FE | company-member:read |
| GET | /api/user-service/v1/employees/by-email | BOTH | employee:read |
| GET | /api/user-service/v1/employees/by-role/{role_id} | BOTH | employee:read |
| POST | /api/user-service/v1/flow-instances/{id:guid}/transition | FE | flow-instance:transition |
| GET | /api/user-service/v1/onboarding/flows/{code} | FE | onboarding-flow:read |
| POST | /api/user-service/v1/onboarding/flows/{flowCode}/access | FE | onboarding-flow:grant-access |
| GET | /api/user-service/v1/onboarding/instances | FE | onboarding-instance:read |
| POST | /api/user-service/v1/onboarding/instances | FE | onboarding-instance:create |
| GET | /api/user-service/v1/onboarding/instances/by-ref-no/{refNo} | FE | onboarding-instance:read |
| GET | /api/user-service/v1/onboarding/instances/{id:guid} | FE | onboarding-instance:read |
| GET | /api/user-service/v1/onboarding/instances/{id:guid}/application-report | FE | onboarding-instance-report:read |
| POST | /api/user-service/v1/onboarding/instances/{id:guid}/discard | FE | onboarding-instance:discard |
| GET | /api/user-service/v1/onboarding/instances/{id:guid}/edit-history | FE | onboarding-instance-edit-history:read |
| GET | /api/user-service/v1/onboarding/instances/{id:guid}/history | FE | onboarding-instance-history:read |
| GET | /api/user-service/v1/onboarding/instances/{id:guid}/history/{historyId:guid} | FE | onboarding-instance-history:read |
| POST | /api/user-service/v1/onboarding/instances/{id:guid}/open | FE | onboarding-instance:open |
| POST | /api/user-service/v1/onboarding/instances/{id:guid}/owner-cancel | FE | onboarding-instance:cancel |
| GET | /api/user-service/v1/onboarding/instances/{id:guid}/step-map | FE | onboarding-instance-step-map:read |
| POST | /api/user-service/v1/onboarding/instances/{id:guid}/steps/{stepType}/actions/{actionCode} | FE | onboarding-step:act |
| GET | /api/user-service/v1/onboarding/instances/{id:guid}/steps/{stepType}/data | FE | onboarding-step-data:read |
| GET | /api/user-service/v1/onboarding/juristic/{juristicId}/availability | FE | juristic:check-availability |
| POST | /api/user-service/v1/onboarding/validate-invite | FE | onboarding-invite:validate |
| POST | /api/user-service/v1/security-probe/echo-fields | FE | security-probe:echo |
| GET | /api/user-service/v1/security-probe/role-gate | FE | security-probe:read |
| GET | /api/user-service/v1/subscriptions | FE | subscription:read |
| POST | /api/user-service/v1/subscriptions/create | FE | subscription:create |
| DELETE | /api/user-service/v1/subscriptions/delete | FE | subscription:delete |
| POST | /api/user-service/v1/subscriptions/tokens/batch | BE | subscription-token:create |
| DELETE | /api/user-service/v1/subscriptions/unsubscribe | FE | subscription:unsubscribe |
| GET | /api/user-service/v1/subscriptions/users | BE | subscription-user:read |
| GET | /api/user-service/v1/subscriptions/verify-token | FE | subscription-token:verify |
| POST | /api/user-service/v1/users | FE | user:create |
| GET | /api/user-service/v1/users/active-ids | BOTH | active-user-id:read |
| GET | /api/user-service/v1/users/me | FE | user:read |
| GET | /api/user-service/v1/users/me/applications/{applicationId:guid}/permissions | FE | user-application-permission:read |
| GET | /api/user-service/v1/users/me/details | FE | user-detail:read |
| GET | /api/user-service/v1/users/profile/me | FE | user-profile:read |
| GET | /api/user-service/v1/users/profile/me/name | FE | user-profile:read |
| GET | /api/user-service/v1/users/settings/me | FE | user-setting:read |
| PATCH | /api/user-service/v1/users/settings/me/contact-email | FE | user-setting-contact-email:update |
| PATCH | /api/user-service/v1/users/settings/me/notification/real-time | FE | user-setting-notification-real-time:update |
| PATCH | /api/user-service/v1/users/settings/me/notification/via-email | FE | user-setting-notification-via-email:update |
| PATCH | /api/user-service/v1/users/settings/me/notification/within-app | FE | user-setting-notification-within-app:update |
| GET | /api/user-service/v1/users/settings/me/notifications | FE | user-setting-notification:read |
| DELETE | /api/user-service/v1/users/settings/me/profile-photo | FE | user-setting-profile-photo:delete |
| PUT | /api/user-service/v1/users/settings/me/profile-photo | FE | user-setting-profile-photo:update |
| GET | /api/user-service/v1/users/{azureObjectId}/roles | FE | user-role:read |
| POST | /api/user-service/v1/users/{userId:guid}/application-roles | FE | user-application-role:create |
Centralized
25 เส้น — FE 20 · BE 2 · BOTH 3
| Verb | Route | ถัง | permission ที่เสนอ |
|---|---|---|---|
| POST | /api/centralized-service/v1/admin/amlo-ingestion/run | BE | amlo-ingestion:run |
| GET | /api/centralized-service/v1/admin/terms/documents | FE | terms-document:read |
| POST | /api/centralized-service/v1/admin/terms/documents | FE | terms-document:create |
| POST | /api/centralized-service/v1/admin/terms/documents/with-version | FE | terms-document:create |
| GET | /api/centralized-service/v1/admin/terms/documents/{documentCode} | FE | terms-document:read |
| POST | /api/centralized-service/v1/admin/terms/documents/{documentCode}/versions | FE | terms-document-version:create |
| GET | /api/centralized-service/v1/admin/terms/documents/{documentCode}/versions/{termsVersion} | FE | terms-document-version:read |
| GET | /api/centralized-service/v1/admin/terms/documents/{documentCode}/versions/{termsVersion}/consents | FE | terms-consent:read |
| POST | /api/centralized-service/v1/admin/terms/documents/{documentCode}/versions/{termsVersion}/deactivate | FE | terms-document-version:deactivate |
| POST | /api/centralized-service/v1/admin/terms/documents/{documentCode}/versions/{termsVersion}/publish | FE | terms-document-version:publish |
| GET | /api/centralized-service/v1/amlo-screening/current-generation | BE | amlo-screening:read |
| GET | /api/centralized-service/v1/applications/terms/history | FE | terms-history-all:read |
| GET | /api/centralized-service/v1/applications/terms/history/by-juristic | FE | terms-history-all:read |
| POST | /api/centralized-service/v1/applications/terms/notices/batch | BOTH | terms-notice:read |
| POST | /api/centralized-service/v1/applications/{applicationCode}/terms/consents | FE | terms-consent:create |
| GET | /api/centralized-service/v1/applications/{applicationCode}/terms/current | BOTH | terms:read |
| GET | /api/centralized-service/v1/applications/{applicationCode}/terms/history | FE | terms-history:read |
| GET | /api/centralized-service/v1/applications/{applicationCode}/terms/status | FE | terms-status:read |
| PATCH | /api/centralized-service/v1/applications/{applicationCode}/terms/status | FE | terms-status:update |
| GET | /api/centralized-service/v1/applications/{applicationCode}/terms/status/by-email | FE | terms-status:read |
| GET | /api/centralized-service/v1/applications/{applicationCode}/terms/status/by-juristic | FE | terms-status:read |
| PATCH | /api/centralized-service/v1/applications/{applicationCode}/terms/status/by-juristic | FE | terms-status:update |
| GET | /api/centralized-service/v1/document-numbers/configs/{configCode}/current | FE | document-number-config:read |
| POST | /api/centralized-service/v1/document-numbers/configs/{configCode}/reset | FE | document-number-config:reset |
| POST | /api/centralized-service/v1/document-numbers/generate | BOTH | document-number:generate |
CodexService
13 เส้น — FE 8 · BE 3 · BOTH 2
| Verb | Route | ถัง | permission ที่เสนอ |
|---|---|---|---|
| GET | /api/codex-service/v1/app-management/apps | BOTH | app:read |
| GET | /api/codex-service/v1/app-management/apps/{id:guid} | BE | app:read |
| PATCH | /api/codex-service/v1/app-management/apps/{id:guid}/status | FE | app:update |
| GET | /api/codex-service/v1/app-management/status/check | FE | app-management-status:read |
| GET | /api/codex-service/v1/categories/{id:guid} | FE | category:read |
| GET | /api/codex-service/v1/cms-config/all | BE | cms-config:read |
| GET | /api/codex-service/v1/document-numbers/policies | BOTH | document-number-policy:read |
| GET | /api/codex-service/v1/document-numbers/policies/{policyCode} | BE | document-number-policy:read |
| GET | /api/codex-service/v1/entries | FE | entry:read |
| POST | /api/codex-service/v1/entries | FE | entry:create |
| DELETE | /api/codex-service/v1/entries/{id:guid} | FE | entry:delete |
| PUT | /api/codex-service/v1/entries/{id:guid} | FE | entry:update |
| PATCH | /api/codex-service/v1/entries/{id:guid}/active | FE | entry:activate |
NotificationService
15 เส้น — FE 5 · BE 8 · BOTH 2
| Verb | Route | ถัง | permission ที่เสนอ |
|---|---|---|---|
| GET | /api/notification-service/v1/notifications | FE | notification:read |
| POST | /api/notification-service/v1/notifications/batch | BE | notification:create |
| PATCH | /api/notification-service/v1/notifications/read-all | FE | notification:mark-all-read |
| GET | /api/notification-service/v1/notifications/unread-count | FE | notification:read |
| GET | /api/notification-service/v1/notifications/{id:guid} | FE | notification:read |
| PATCH | /api/notification-service/v1/notifications/{id:guid}/read | FE | notification:mark-read |
| POST | /api/notification-service/v1/otp/internal-generate | BOTH | otp:generate |
| GET | /api/notification-service/v1/otp/slots/by-refcode | BE | otp-slot:read |
| GET | /api/notification-service/v1/otp/slots/delivery-status | BE | otp-slot:read |
| GET | /api/notification-service/v1/otp/slots/latest-token | BE | otp-slot-token:read |
| POST | /api/notification-service/v1/otp/slots/pre-generate | BE | otp-slot:generate |
| PATCH | /api/notification-service/v1/otp/slots/token | BE | otp-slot-token:update |
| POST | /api/notification-service/v1/otp/verify | BOTH | otp:verify |
| POST | /api/notification-service/v1/otp/verify-success | BE | otp:verify-success |
| POST | /api/notification-service/v1/otp/wrong-attempt | BE | otp:wrong-attempt |
WorkflowService
14 เส้น — FE 9 · BE 1 · BOTH 4
| Verb | Route | ถัง | permission ที่เสนอ |
|---|---|---|---|
| GET | /api/workflow-service/v{version:apiVersion}/workflow/check-document/{documentId} | FE | workflow-check-document:read |
| POST | /api/workflow-service/v{version:apiVersion}/workflow/instances | BOTH | workflow-instance:create |
| GET | /api/workflow-service/v{version:apiVersion}/workflow/instances/by-document/{documentId} | BOTH | workflow-instance:read |
| PUT | /api/workflow-service/v{version:apiVersion}/workflow/instances/{instanceId}/steps/{stepInstanceId}/assignees | FE | step-assignee:update |
| PATCH | /api/workflow-service/v{version:apiVersion}/workflow/pickup | FE | workflow:pickup |
| GET | /api/workflow-service/v{version:apiVersion}/workflow/tasks/pending | FE | task-pending:read |
| POST | /api/workflow-service/v{version:apiVersion}/workflow/templates | FE | workflow-template:create |
| GET | /api/workflow-service/v{version:apiVersion}/workflow/templates/{TemplateID} | FE | workflow-template:read |
| POST | /api/workflow-service/v{version:apiVersion}/workflow/{appId}/action | FE | workflow-action:create |
| POST | /api/workflow-service/v{version:apiVersion}/workflow/{appId}/cancel | BE | workflow:cancel |
| POST | /api/workflow-service/v{version:apiVersion}/workflow/{appId}/rework | FE | workflow:rework |
| POST | /api/workflow-service/v{version:apiVersion}/workflow/{instanceId}/force-stop | BOTH | workflow-stop:create |
| POST | /api/workflow-service/v{version:apiVersion}/workflow/{instanceId}/resubmit | BOTH | workflow-resubmit:create |
| POST | /api/workflow-service/v{version:apiVersion}/workflow/{instanceId}/steps/{stepInstanceId}/action | FE | step-action:create |
TaskService
10 เส้น — FE 4 · BE 5 · BOTH 1
| Verb | Route | ถัง | permission ที่เสนอ |
|---|---|---|---|
| POST | /api/task-service/v1/tasks | BE | task:create |
| POST | /api/task-service/v1/tasks/all-tasks/search | FE | task-all:read |
| POST | /api/task-service/v1/tasks/assigned-tasks/search | FE | task-assigned:read |
| POST | /api/task-service/v1/tasks/my-tasks/search | FE | task-mine:read |
| POST | /api/task-service/v1/tasks/pending-tasks/search | FE | task-pending:read |
| PATCH | /api/task-service/v1/tasks/pickup | BE | task:pickup |
| GET | /api/task-service/v1/tasks/ref/{refNo} | BOTH | task:read |
| PATCH | /api/task-service/v1/tasks/resubmit | BE | task:resubmit |
| PATCH | /api/task-service/v1/tasks/{id:int} | BE | task:update |
| PATCH | /api/task-service/v1/tasks/{id:int}/rework | BE | task:rework |
SentinelGatewayService
7 เส้น — FE 6 · BE 1 · BOTH 0
| Verb | Route | ถัง | permission ที่เสนอ |
|---|---|---|---|
| GET | /sentinel/antiforgery-token | FE | antiforgery-token:read |
| POST | /sentinel/auth/onboarding/exchange | FE | onboarding-token:exchange |
| POST | /sentinel/internal/resolve-session | BE | auth-session:resolve |
| GET | /sentinel/login | FE | auth-session:login |
| GET | /sentinel/logout | FE | auth-session:logout |
| POST | /sentinel/logout | FE | auth-session:logout |
| GET | /sentinel/logout-entra | FE | auth-session:logout-entra |
FileManagementService
5 เส้น — FE 2 · BE 3 · BOTH 0
| Verb | Route | ถัง | permission ที่เสนอ |
|---|---|---|---|
| PUT | /api/file-management/v1/files/profile-photo | BE | profile-photo:update |
| GET | /api/file-management/v1/files/profile-photo/cdn-url | BE | profile-photo:read |
| DELETE | /api/file-management/v1/files/profile-photo/delete | BE | profile-photo:delete |
| POST | /api/file-management/v1/files/upload | FE | file:create |
| GET | /api/file-management/v1/files/{fileId:guid}/download | FE | file:download |
ThirdPartyService
5 เส้น — FE 4 · BE 1 · BOTH 0
| Verb | Route | ถัง | permission ที่เสนอ |
|---|---|---|---|
| GET | /api/thirdparty-service/v{version:apiVersion}/Customer/fx-registration-profile/{taxId} | FE | fx-registration-profile:read |
| GET | /api/thirdparty-service/v{version:apiVersion}/JuristicShareholder/organization-juristic-person-full-access/{JuristicId} | BE | juristic-person:read-full |
| GET | /api/thirdparty-service/v{version:apiVersion}/JuristicShareholder/organization-juristic-person/{JuristicId} | FE | juristic-person:read |
| GET | /api/thirdparty-service/v{version:apiVersion}/cms/admin/contents/{tag} | FE | cms-content-admin:read |
| GET | /api/thirdparty-service/v{version:apiVersion}/cms/contents | FE | cms-content:read |
ConsentService
4 เส้น — FE 4 · BE 0 · BOTH 0
| Verb | Route | ถัง | permission ที่เสนอ |
|---|---|---|---|
| GET | /api/consent-service/v1/notice | FE | notice:read |
| GET | /api/consent-service/v1/pending-notices | FE | pending-notice:read |
| GET | /api/consent-service/v1/preference | FE | preference:read |
| POST | /api/consent-service/v1/receipt | FE | receipt:create |
ชื่อที่ครอบมากกว่าหนึ่ง route
| permission | route ที่ใช้ชื่อนี้ |
|---|---|
app:read | /api/codex-service/v1/app-management/apps · /api/codex-service/v1/app-management/apps/{id:guid} |
document-number-policy:read | /api/codex-service/v1/document-numbers/policies · /api/codex-service/v1/document-numbers/policies/{policyCode} |
employee:read | /api/user-service/v1/employees/by-email · /api/user-service/v1/employees/by-role/{role_id} |
flow-instance:read | /api/user-service/v1/admin/flow-instances · /api/user-service/v1/admin/flow-instances/by-ref-no/{refNo} · /api/user-service/v1/admin/flow-instances/search |
notification:read | /api/notification-service/v1/notifications · /api/notification-service/v1/notifications/unread-count · /api/notification-service/v1/notifications/{id:guid} |
onboarding-instance-history:read | /api/user-service/v1/onboarding/instances/{id:guid}/history · /api/user-service/v1/onboarding/instances/{id:guid}/history/{historyId:guid} |
onboarding-instance:read | /api/user-service/v1/onboarding/instances · /api/user-service/v1/onboarding/instances/by-ref-no/{refNo} · /api/user-service/v1/onboarding/instances/{id:guid} |
otp-slot:read | /api/notification-service/v1/otp/slots/by-refcode · /api/notification-service/v1/otp/slots/delivery-status |
task-pending:read | /api/task-service/v1/tasks/pending-tasks/search · /api/workflow-service/v{version:apiVersion}/workflow/tasks/pending |
terms-document:create | /api/centralized-service/v1/admin/terms/documents · /api/centralized-service/v1/admin/terms/documents/with-version |
terms-document:read | /api/centralized-service/v1/admin/terms/documents · /api/centralized-service/v1/admin/terms/documents/{documentCode} |
terms-history-all:read | /api/centralized-service/v1/applications/terms/history · /api/centralized-service/v1/applications/terms/history/by-juristic |
terms-status:read | /api/centralized-service/v1/applications/{applicationCode}/terms/status · /api/centralized-service/v1/applications/{applicationCode}/terms/status/by-email · /api/centralized-service/v1/applications/{applicationCode}/terms/status/by-juristic |
terms-status:update | /api/centralized-service/v1/applications/{applicationCode}/terms/status · /api/centralized-service/v1/applications/{applicationCode}/terms/status/by-juristic |
user-profile:read | /api/user-service/v1/users/profile/me · /api/user-service/v1/users/profile/me/name |