Private Docs

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} = read create update delete หรือคำกริยาเฉพาะเมื่อสี่ตัวนี้ไม่ตรง เช่น approve cancel export
  • เส้นที่อ่านทั้ง collection กับอ่านรายตัวของ resource เดียวกัน ใช้ชื่อเดียวกัน โดยตั้งใจ
  • ชื่อซ้ำกันข้าม service ไม่ใช่ปัญหา เพราะ grant เทียบทั้ง Name และ OwnerService พร้อมกัน (PermissionAuthorizationHandler.cs:79-82) ⇒ user:read ของ UserService กับของ SentinelGateway เป็นคนละใบ

ผลการ review รอบแรก และสิ่งที่แก้ไปแล้ว

review เมื่อ 11/09 ให้ผล fail แล้วแก้ตามนี้ครบก่อนขึ้นฉบับนี้

  • แก้ชื่อ 95 เส้น ที่ตั้งแบบกึ่งอัตโนมัติจาก route แล้วผิดความหมาย — เอาคำกริยาไปเป็น resource (instance-discard:createonboarding-instance:discard) · action ผิด (user-ids:updateactive-user-id:read) · POST ที่ใช้ค้นข้อมูลถูกตั้งเป็น create (terms-notice:createterms-notice:read) · มีชื่อ service ปนอยู่ในชื่อ (file-management-file:createfile:create) · ลอก segment จาก route มาตรง ๆ (task-all-task:readtask-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เส้นที่ปิดbranchPR
Backend_UserService81feature/userservice-api-surface-none3100
Backend_CodexService47feature/codexservice-api-surface-none3101
Backend_ThirdPartyService31feature/thirdpartyservice-api-surface-none3102
Backend_NotificationService25feature/notificationservice-api-surface-none3103
Backend_TaskService14feature/taskservice-api-surface-none3104
Backend_OrchestratorService6feature/orchestratorservice-api-surface-none3105
Backend_WorkflowService6feature/workflowservice-api-surface-none3106
Backend_FileManagementService3feature/filemanagementservice-api-surface-none3107
Backend_Centralized2feature/centralized-api-surface-none3108
Backend_ConsentService1feature/consentservice-api-surface-none3109

ยืนยันเมื่อ 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

VerbRouteถังpermission ที่เสนอ
GET/api/user-service/v1/admin/amlo/casesFEamlo-case:read
GET/api/user-service/v1/admin/amlo/companies/{companyId:guid}/membersFEamlo-company-member:read
POST/api/user-service/v1/admin/amlo/companies/{companyId:guid}/unblockFEamlo-company:unblock
GET/api/user-service/v1/admin/amlo/companies/{companyId:guid}/unblock-historyFEamlo-company-unblock-history:read
GET/api/user-service/v1/admin/amlo/current-generationFEamlo-generation:read
POST/api/user-service/v1/admin/amlo/trigger-syncFEamlo:sync
GET/api/user-service/v1/admin/amlo/unblock-historyFEamlo-unblock-history:read
GET/api/user-service/v1/admin/apps/{app_id}/rolesFEapp-role:read
POST/api/user-service/v1/admin/apps/{app_id}/rolesFEapp-role:create
GET/api/user-service/v1/admin/flow-instancesFEflow-instance:read
GET/api/user-service/v1/admin/flow-instances/by-ref-no/{refNo}BOTHflow-instance:read
POST/api/user-service/v1/admin/flow-instances/searchBEflow-instance:read
GET/api/user-service/v1/admin/flow-instances/{id:guid}/edit-historyFEflow-instance-edit-history:read
GET/api/user-service/v1/admin/flow-instances/{id:guid}/step-mapFEflow-instance-step-map:read
GET/api/user-service/v1/admin/flow-instances/{id:guid}/steps/{stepType}/dataFEflow-instance-step-data:read
GET/api/user-service/v1/apps/{appId:guid}/menusFEapp-menu:read
POST/api/user-service/v1/apps/{appId:guid}/menusFEapp-menu:create
GET/api/user-service/v1/apps/{appId:guid}/menus/{menuId:guid}/permissionsFEmenu-permission:read
POST/api/user-service/v1/apps/{appId:guid}/menus/{menuId:guid}/permissions/{permissionId:guid}FEmenu-permission:create
GET/api/user-service/v1/apps/{app_id}/modes/{mode}/rolesFEapp-mode-role:read
GET/api/user-service/v1/apps/{applicationId:guid}/permissionsFEapp-permission:read
POST/api/user-service/v1/apps/{applicationId:guid}/permissionsFEapp-permission:create
GET/api/user-service/v1/apps/{applicationId:guid}/roles/permissionsFErole-permission:read
POST/api/user-service/v1/apps/{applicationId:guid}/roles/{roleId:guid}/permissionsFErole-permission:create
POST/api/user-service/v1/cache/users/warm/{oid}BEuser-cache:warm
POST/api/user-service/v1/client-keys/echoFEclient-key:echo
PATCH/api/user-service/v1/companies/defaultFEcompany:set-default
POST/api/user-service/v1/companies/syncFEcompany:sync
GET/api/user-service/v1/companies/{companyId:guid}/detailFEcompany:read
POST/api/user-service/v1/companies/{companyId:guid}/users/{userId:guid}/application-rolesFEcompany-user-application-role:create
GET/api/user-service/v1/corporate/{companyId:guid}/membersFEcompany-member:read
GET/api/user-service/v1/employees/by-emailBOTHemployee:read
GET/api/user-service/v1/employees/by-role/{role_id}BOTHemployee:read
POST/api/user-service/v1/flow-instances/{id:guid}/transitionFEflow-instance:transition
GET/api/user-service/v1/onboarding/flows/{code}FEonboarding-flow:read
POST/api/user-service/v1/onboarding/flows/{flowCode}/accessFEonboarding-flow:grant-access
GET/api/user-service/v1/onboarding/instancesFEonboarding-instance:read
POST/api/user-service/v1/onboarding/instancesFEonboarding-instance:create
GET/api/user-service/v1/onboarding/instances/by-ref-no/{refNo}FEonboarding-instance:read
GET/api/user-service/v1/onboarding/instances/{id:guid}FEonboarding-instance:read
GET/api/user-service/v1/onboarding/instances/{id:guid}/application-reportFEonboarding-instance-report:read
POST/api/user-service/v1/onboarding/instances/{id:guid}/discardFEonboarding-instance:discard
GET/api/user-service/v1/onboarding/instances/{id:guid}/edit-historyFEonboarding-instance-edit-history:read
GET/api/user-service/v1/onboarding/instances/{id:guid}/historyFEonboarding-instance-history:read
GET/api/user-service/v1/onboarding/instances/{id:guid}/history/{historyId:guid}FEonboarding-instance-history:read
POST/api/user-service/v1/onboarding/instances/{id:guid}/openFEonboarding-instance:open
POST/api/user-service/v1/onboarding/instances/{id:guid}/owner-cancelFEonboarding-instance:cancel
GET/api/user-service/v1/onboarding/instances/{id:guid}/step-mapFEonboarding-instance-step-map:read
POST/api/user-service/v1/onboarding/instances/{id:guid}/steps/{stepType}/actions/{actionCode}FEonboarding-step:act
GET/api/user-service/v1/onboarding/instances/{id:guid}/steps/{stepType}/dataFEonboarding-step-data:read
GET/api/user-service/v1/onboarding/juristic/{juristicId}/availabilityFEjuristic:check-availability
POST/api/user-service/v1/onboarding/validate-inviteFEonboarding-invite:validate
POST/api/user-service/v1/security-probe/echo-fieldsFEsecurity-probe:echo
GET/api/user-service/v1/security-probe/role-gateFEsecurity-probe:read
GET/api/user-service/v1/subscriptionsFEsubscription:read
POST/api/user-service/v1/subscriptions/createFEsubscription:create
DELETE/api/user-service/v1/subscriptions/deleteFEsubscription:delete
POST/api/user-service/v1/subscriptions/tokens/batchBEsubscription-token:create
DELETE/api/user-service/v1/subscriptions/unsubscribeFEsubscription:unsubscribe
GET/api/user-service/v1/subscriptions/usersBEsubscription-user:read
GET/api/user-service/v1/subscriptions/verify-tokenFEsubscription-token:verify
POST/api/user-service/v1/usersFEuser:create
GET/api/user-service/v1/users/active-idsBOTHactive-user-id:read
GET/api/user-service/v1/users/meFEuser:read
GET/api/user-service/v1/users/me/applications/{applicationId:guid}/permissionsFEuser-application-permission:read
GET/api/user-service/v1/users/me/detailsFEuser-detail:read
GET/api/user-service/v1/users/profile/meFEuser-profile:read
GET/api/user-service/v1/users/profile/me/nameFEuser-profile:read
GET/api/user-service/v1/users/settings/meFEuser-setting:read
PATCH/api/user-service/v1/users/settings/me/contact-emailFEuser-setting-contact-email:update
PATCH/api/user-service/v1/users/settings/me/notification/real-timeFEuser-setting-notification-real-time:update
PATCH/api/user-service/v1/users/settings/me/notification/via-emailFEuser-setting-notification-via-email:update
PATCH/api/user-service/v1/users/settings/me/notification/within-appFEuser-setting-notification-within-app:update
GET/api/user-service/v1/users/settings/me/notificationsFEuser-setting-notification:read
DELETE/api/user-service/v1/users/settings/me/profile-photoFEuser-setting-profile-photo:delete
PUT/api/user-service/v1/users/settings/me/profile-photoFEuser-setting-profile-photo:update
GET/api/user-service/v1/users/{azureObjectId}/rolesFEuser-role:read
POST/api/user-service/v1/users/{userId:guid}/application-rolesFEuser-application-role:create

Centralized

25 เส้น — FE 20 · BE 2 · BOTH 3

VerbRouteถังpermission ที่เสนอ
POST/api/centralized-service/v1/admin/amlo-ingestion/runBEamlo-ingestion:run
GET/api/centralized-service/v1/admin/terms/documentsFEterms-document:read
POST/api/centralized-service/v1/admin/terms/documentsFEterms-document:create
POST/api/centralized-service/v1/admin/terms/documents/with-versionFEterms-document:create
GET/api/centralized-service/v1/admin/terms/documents/{documentCode}FEterms-document:read
POST/api/centralized-service/v1/admin/terms/documents/{documentCode}/versionsFEterms-document-version:create
GET/api/centralized-service/v1/admin/terms/documents/{documentCode}/versions/{termsVersion}FEterms-document-version:read
GET/api/centralized-service/v1/admin/terms/documents/{documentCode}/versions/{termsVersion}/consentsFEterms-consent:read
POST/api/centralized-service/v1/admin/terms/documents/{documentCode}/versions/{termsVersion}/deactivateFEterms-document-version:deactivate
POST/api/centralized-service/v1/admin/terms/documents/{documentCode}/versions/{termsVersion}/publishFEterms-document-version:publish
GET/api/centralized-service/v1/amlo-screening/current-generationBEamlo-screening:read
GET/api/centralized-service/v1/applications/terms/historyFEterms-history-all:read
GET/api/centralized-service/v1/applications/terms/history/by-juristicFEterms-history-all:read
POST/api/centralized-service/v1/applications/terms/notices/batchBOTHterms-notice:read
POST/api/centralized-service/v1/applications/{applicationCode}/terms/consentsFEterms-consent:create
GET/api/centralized-service/v1/applications/{applicationCode}/terms/currentBOTHterms:read
GET/api/centralized-service/v1/applications/{applicationCode}/terms/historyFEterms-history:read
GET/api/centralized-service/v1/applications/{applicationCode}/terms/statusFEterms-status:read
PATCH/api/centralized-service/v1/applications/{applicationCode}/terms/statusFEterms-status:update
GET/api/centralized-service/v1/applications/{applicationCode}/terms/status/by-emailFEterms-status:read
GET/api/centralized-service/v1/applications/{applicationCode}/terms/status/by-juristicFEterms-status:read
PATCH/api/centralized-service/v1/applications/{applicationCode}/terms/status/by-juristicFEterms-status:update
GET/api/centralized-service/v1/document-numbers/configs/{configCode}/currentFEdocument-number-config:read
POST/api/centralized-service/v1/document-numbers/configs/{configCode}/resetFEdocument-number-config:reset
POST/api/centralized-service/v1/document-numbers/generateBOTHdocument-number:generate

CodexService

13 เส้น — FE 8 · BE 3 · BOTH 2

VerbRouteถังpermission ที่เสนอ
GET/api/codex-service/v1/app-management/appsBOTHapp:read
GET/api/codex-service/v1/app-management/apps/{id:guid}BEapp:read
PATCH/api/codex-service/v1/app-management/apps/{id:guid}/statusFEapp:update
GET/api/codex-service/v1/app-management/status/checkFEapp-management-status:read
GET/api/codex-service/v1/categories/{id:guid}FEcategory:read
GET/api/codex-service/v1/cms-config/allBEcms-config:read
GET/api/codex-service/v1/document-numbers/policiesBOTHdocument-number-policy:read
GET/api/codex-service/v1/document-numbers/policies/{policyCode}BEdocument-number-policy:read
GET/api/codex-service/v1/entriesFEentry:read
POST/api/codex-service/v1/entriesFEentry:create
DELETE/api/codex-service/v1/entries/{id:guid}FEentry:delete
PUT/api/codex-service/v1/entries/{id:guid}FEentry:update
PATCH/api/codex-service/v1/entries/{id:guid}/activeFEentry:activate

NotificationService

15 เส้น — FE 5 · BE 8 · BOTH 2

VerbRouteถังpermission ที่เสนอ
GET/api/notification-service/v1/notificationsFEnotification:read
POST/api/notification-service/v1/notifications/batchBEnotification:create
PATCH/api/notification-service/v1/notifications/read-allFEnotification:mark-all-read
GET/api/notification-service/v1/notifications/unread-countFEnotification:read
GET/api/notification-service/v1/notifications/{id:guid}FEnotification:read
PATCH/api/notification-service/v1/notifications/{id:guid}/readFEnotification:mark-read
POST/api/notification-service/v1/otp/internal-generateBOTHotp:generate
GET/api/notification-service/v1/otp/slots/by-refcodeBEotp-slot:read
GET/api/notification-service/v1/otp/slots/delivery-statusBEotp-slot:read
GET/api/notification-service/v1/otp/slots/latest-tokenBEotp-slot-token:read
POST/api/notification-service/v1/otp/slots/pre-generateBEotp-slot:generate
PATCH/api/notification-service/v1/otp/slots/tokenBEotp-slot-token:update
POST/api/notification-service/v1/otp/verifyBOTHotp:verify
POST/api/notification-service/v1/otp/verify-successBEotp:verify-success
POST/api/notification-service/v1/otp/wrong-attemptBEotp:wrong-attempt

WorkflowService

14 เส้น — FE 9 · BE 1 · BOTH 4

VerbRouteถังpermission ที่เสนอ
GET/api/workflow-service/v{version:apiVersion}/workflow/check-document/{documentId}FEworkflow-check-document:read
POST/api/workflow-service/v{version:apiVersion}/workflow/instancesBOTHworkflow-instance:create
GET/api/workflow-service/v{version:apiVersion}/workflow/instances/by-document/{documentId}BOTHworkflow-instance:read
PUT/api/workflow-service/v{version:apiVersion}/workflow/instances/{instanceId}/steps/{stepInstanceId}/assigneesFEstep-assignee:update
PATCH/api/workflow-service/v{version:apiVersion}/workflow/pickupFEworkflow:pickup
GET/api/workflow-service/v{version:apiVersion}/workflow/tasks/pendingFEtask-pending:read
POST/api/workflow-service/v{version:apiVersion}/workflow/templatesFEworkflow-template:create
GET/api/workflow-service/v{version:apiVersion}/workflow/templates/{TemplateID}FEworkflow-template:read
POST/api/workflow-service/v{version:apiVersion}/workflow/{appId}/actionFEworkflow-action:create
POST/api/workflow-service/v{version:apiVersion}/workflow/{appId}/cancelBEworkflow:cancel
POST/api/workflow-service/v{version:apiVersion}/workflow/{appId}/reworkFEworkflow:rework
POST/api/workflow-service/v{version:apiVersion}/workflow/{instanceId}/force-stopBOTHworkflow-stop:create
POST/api/workflow-service/v{version:apiVersion}/workflow/{instanceId}/resubmitBOTHworkflow-resubmit:create
POST/api/workflow-service/v{version:apiVersion}/workflow/{instanceId}/steps/{stepInstanceId}/actionFEstep-action:create

TaskService

10 เส้น — FE 4 · BE 5 · BOTH 1

VerbRouteถังpermission ที่เสนอ
POST/api/task-service/v1/tasksBEtask:create
POST/api/task-service/v1/tasks/all-tasks/searchFEtask-all:read
POST/api/task-service/v1/tasks/assigned-tasks/searchFEtask-assigned:read
POST/api/task-service/v1/tasks/my-tasks/searchFEtask-mine:read
POST/api/task-service/v1/tasks/pending-tasks/searchFEtask-pending:read
PATCH/api/task-service/v1/tasks/pickupBEtask:pickup
GET/api/task-service/v1/tasks/ref/{refNo}BOTHtask:read
PATCH/api/task-service/v1/tasks/resubmitBEtask:resubmit
PATCH/api/task-service/v1/tasks/{id:int}BEtask:update
PATCH/api/task-service/v1/tasks/{id:int}/reworkBEtask:rework

SentinelGatewayService

7 เส้น — FE 6 · BE 1 · BOTH 0

VerbRouteถังpermission ที่เสนอ
GET/sentinel/antiforgery-tokenFEantiforgery-token:read
POST/sentinel/auth/onboarding/exchangeFEonboarding-token:exchange
POST/sentinel/internal/resolve-sessionBEauth-session:resolve
GET/sentinel/loginFEauth-session:login
GET/sentinel/logoutFEauth-session:logout
POST/sentinel/logoutFEauth-session:logout
GET/sentinel/logout-entraFEauth-session:logout-entra

FileManagementService

5 เส้น — FE 2 · BE 3 · BOTH 0

VerbRouteถังpermission ที่เสนอ
PUT/api/file-management/v1/files/profile-photoBEprofile-photo:update
GET/api/file-management/v1/files/profile-photo/cdn-urlBEprofile-photo:read
DELETE/api/file-management/v1/files/profile-photo/deleteBEprofile-photo:delete
POST/api/file-management/v1/files/uploadFEfile:create
GET/api/file-management/v1/files/{fileId:guid}/downloadFEfile:download

ThirdPartyService

5 เส้น — FE 4 · BE 1 · BOTH 0

VerbRouteถังpermission ที่เสนอ
GET/api/thirdparty-service/v{version:apiVersion}/Customer/fx-registration-profile/{taxId}FEfx-registration-profile:read
GET/api/thirdparty-service/v{version:apiVersion}/JuristicShareholder/organization-juristic-person-full-access/{JuristicId}BEjuristic-person:read-full
GET/api/thirdparty-service/v{version:apiVersion}/JuristicShareholder/organization-juristic-person/{JuristicId}FEjuristic-person:read
GET/api/thirdparty-service/v{version:apiVersion}/cms/admin/contents/{tag}FEcms-content-admin:read
GET/api/thirdparty-service/v{version:apiVersion}/cms/contentsFEcms-content:read

ConsentService

4 เส้น — FE 4 · BE 0 · BOTH 0

VerbRouteถังpermission ที่เสนอ
GET/api/consent-service/v1/noticeFEnotice:read
GET/api/consent-service/v1/pending-noticesFEpending-notice:read
GET/api/consent-service/v1/preferenceFEpreference:read
POST/api/consent-service/v1/receiptFEreceipt:create

ชื่อที่ครอบมากกว่าหนึ่ง route

permissionroute ที่ใช้ชื่อนี้
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