{
  "title": "TG ONE API Catalog",
  "updatedAt": "2026-11-02T03:29:01.602Z",
  "baseUrl": "https://api.tgone.vn",
  "sourceCommit": "Source repository version",
  "coverage": "Các route đang được triển khai trong mã nguồn TG ONE. Không bao gồm API riêng chưa được đăng ký của HR, Invoice, ERP hoặc ứng dụng khác.",
  "endpoints": [
    {
      "path": "/api/admin/access-governance",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [
        "company.application.activated"
      ],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "resource"
      ],
      "inputFields": [
        "action",
        "registrationId",
        "decision",
        "entitlementId",
        "status",
        "applicationCode",
        "code",
        "name",
        "permissionCodes",
        "userId",
        "companyId",
        "roleId"
      ],
      "source": "app/api/admin/access-governance/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/activation-requests",
      "methods": [
        "GET",
        "PATCH"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "status"
      ],
      "inputFields": [
        "action",
        "id",
        "roles"
      ],
      "source": "app/api/admin/activation-requests/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/api-credentials",
      "methods": [
        "GET",
        "POST",
        "PATCH",
        "DELETE"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "resource",
        "id",
        "q",
        "application",
        "environment",
        "status"
      ],
      "inputFields": [
        "applicationCode",
        "environment",
        "name",
        "scopeCodes",
        "expirationDays",
        "action",
        "id",
        "reason",
        "graceMinutes",
        "confirmClientId"
      ],
      "source": "app/api/admin/api-credentials/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/api-credentials/reissue",
      "methods": [
        "POST"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [],
      "inputFields": [
        "id",
        "reason",
        "expirationDays"
      ],
      "source": "app/api/admin/api-credentials/reissue/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/applications",
      "methods": [
        "GET",
        "POST",
        "PATCH",
        "DELETE"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [],
      "inputFields": [
        "code",
        "name",
        "baseUrl",
        "base_url",
        "status"
      ],
      "source": "app/api/admin/applications/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/cms/articles",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "q",
        "status",
        "categoryId"
      ],
      "inputFields": [
        "categoryId",
        "title",
        "slug",
        "summary",
        "contentHtml",
        "thumbnailUrl",
        "seoTitle",
        "seoDescription",
        "status"
      ],
      "source": "app/api/admin/cms/articles/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/cms/articles/{id}",
      "methods": [
        "PUT",
        "DELETE"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "categoryId",
        "title",
        "slug",
        "summary",
        "contentHtml",
        "thumbnailUrl",
        "seoTitle",
        "seoDescription",
        "status"
      ],
      "source": "app/api/admin/cms/articles/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/cms/banner-slots",
      "methods": [
        "GET",
        "POST",
        "PATCH"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "code",
        "name",
        "pageType",
        "region",
        "displayMode",
        "enabled",
        "autoplayMs",
        "maxItems",
        "desktopRatio",
        "mobileRatio",
        "id"
      ],
      "source": "app/api/admin/cms/banner-slots/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/cms/banner-uploads",
      "methods": [
        "POST"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "slice"
      ],
      "source": "app/api/admin/cms/banner-uploads/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/cms/banners",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "q",
        "status",
        "slot"
      ],
      "inputFields": [
        "id",
        "deleted_at",
        "name",
        "code",
        "status",
        "updated_at",
        "imageDesktopUrl",
        "imageMobileUrl",
        "imageAlt",
        "showCta",
        "ctaUrl",
        "ctaLabel",
        "startAt",
        "endAt",
        "placements",
        "internalDescription",
        "title",
        "description",
        "ctaTarget",
        "showTitle",
        "showDescription",
        "textAlignment",
        "textColor",
        "overlayColor",
        "overlayOpacity"
      ],
      "source": "app/api/admin/cms/banners/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/cms/banners/{id}",
      "methods": [
        "GET",
        "PATCH",
        "DELETE"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "action",
        "showCta",
        "ctaUrl",
        "ctaLabel",
        "startAt",
        "endAt",
        "name",
        "internalDescription",
        "imageDesktopUrl",
        "imageMobileUrl",
        "imageAlt",
        "title",
        "description",
        "ctaTarget",
        "showTitle",
        "showDescription",
        "textAlignment",
        "textColor",
        "overlayColor",
        "overlayOpacity",
        "placements"
      ],
      "source": "app/api/admin/cms/banners/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/cms/categories",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "q"
      ],
      "inputFields": [
        "name",
        "slug",
        "description",
        "status",
        "sortOrder"
      ],
      "source": "app/api/admin/cms/categories/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/cms/categories/{id}",
      "methods": [
        "PUT",
        "DELETE"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "name",
        "slug",
        "description",
        "status",
        "sortOrder"
      ],
      "source": "app/api/admin/cms/categories/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/cms/ecosystem",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/admin/cms/ecosystem/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/cms/ecosystem/{id}",
      "methods": [
        "PUT",
        "DELETE"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/admin/cms/ecosystem/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/cms/media",
      "methods": [
        "POST"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/admin/cms/media/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/cms/settings",
      "methods": [
        "GET",
        "PUT"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/admin/cms/settings/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/companies",
      "methods": [
        "GET",
        "POST",
        "PATCH",
        "DELETE"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "q",
        "status",
        "verification",
        "tenantId",
        "service",
        "taxState",
        "duplicate",
        "page",
        "limit",
        "id"
      ],
      "inputFields": [
        "tenantId",
        "tenant_id",
        "name",
        "taxCode",
        "tax_code",
        "address",
        "companyTypeId",
        "company_type_id",
        "id",
        "action",
        "verificationStatus"
      ],
      "source": "app/api/admin/companies/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/company-platform-profile",
      "methods": [
        "GET",
        "PATCH"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [
        "companyId"
      ],
      "inputFields": [
        "version",
        "profile"
      ],
      "source": "app/api/admin/company-platform-profile/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/company-services",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [
        "companyId"
      ],
      "inputFields": [
        "companyId",
        "action",
        "userId",
        "applicationCode",
        "status",
        "version"
      ],
      "source": "app/api/admin/company-services/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/hr-api-settings",
      "methods": [
        "POST"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [
        "employee.read"
      ],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [],
      "inputFields": [
        "clientId",
        "clientSecret"
      ],
      "source": "app/api/admin/hr-api-settings/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/integration-events",
      "methods": [
        "GET",
        "POST",
        "PATCH",
        "DELETE"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "id"
      ],
      "inputFields": [
        "eventCode",
        "version",
        "producerApplicationCode",
        "consumerApplicationCode",
        "integrationProfileId",
        "id",
        "status"
      ],
      "source": "app/api/admin/integration-events/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/integrations",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "resource"
      ],
      "inputFields": [
        "action",
        "applicationCode",
        "environment",
        "name",
        "scopeCodes",
        "clientId",
        "clientSecret",
        "code",
        "description",
        "riskLevel",
        "tenantId",
        "companyId",
        "relationshipType",
        "isPrimary",
        "planCode",
        "sourceRole",
        "targetAppRole",
        "tenantScope",
        "kind",
        "id",
        "status",
        "apiBaseUrl",
        "webhookUrl",
        "syncMode",
        "timeoutSeconds",
        "retryCount",
        "profileId",
        "target"
      ],
      "source": "app/api/admin/integrations/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/mail-templates",
      "methods": [
        "GET",
        "POST",
        "PATCH",
        "DELETE"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "id"
      ],
      "inputFields": [
        "action",
        "to",
        "code",
        "name",
        "subject",
        "bodyHtml",
        "variables",
        "status",
        "id"
      ],
      "source": "app/api/admin/mail-templates/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/oauth-clients",
      "methods": [
        "GET",
        "POST",
        "PATCH",
        "DELETE"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "clientId"
      ],
      "inputFields": [
        "applicationCode",
        "clientName",
        "redirectUris",
        "postLogoutRedirectUris",
        "scopes",
        "clientId",
        "action",
        "status"
      ],
      "source": "app/api/admin/oauth-clients/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/shared-master-seed",
      "methods": [
        "POST"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/admin/shared-master-seed/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/super-admins",
      "methods": [
        "GET",
        "POST",
        "PATCH"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [],
      "inputFields": [
        "displayName",
        "email",
        "password",
        "id",
        "action",
        "status"
      ],
      "source": "app/api/admin/super-admins/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/tenant-companies",
      "methods": [
        "GET",
        "POST",
        "PATCH",
        "DELETE"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "id"
      ],
      "inputFields": [
        "action",
        "tenantId",
        "companyId",
        "relationshipType",
        "isPrimary",
        "id",
        "status"
      ],
      "source": "app/api/admin/tenant-companies/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/tenants",
      "methods": [
        "GET",
        "POST",
        "PATCH",
        "DELETE"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "id"
      ],
      "inputFields": [
        "code",
        "name",
        "action",
        "id",
        "applicationCode",
        "status"
      ],
      "source": "app/api/admin/tenants/route.ts",
      "alias": false
    },
    {
      "path": "/api/admin/users",
      "methods": [
        "GET",
        "PATCH"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "q",
        "status",
        "page"
      ],
      "inputFields": [
        "id",
        "action",
        "confirmUserId",
        "displayName",
        "email",
        "status",
        "companyId",
        "applicationCode",
        "enabled"
      ],
      "source": "app/api/admin/users/route.ts",
      "alias": false
    },
    {
      "path": "/api/auth/activity",
      "methods": [
        "POST"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [
        "sessionFromToken"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/auth/activity/route.ts",
      "alias": false
    },
    {
      "path": "/api/auth/application-access",
      "methods": [
        "POST"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/auth/application-access/route.ts",
      "alias": false
    },
    {
      "path": "/api/auth/application-activation-request",
      "methods": [
        "POST"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "email",
        "applicationCode"
      ],
      "source": "app/api/auth/application-activation-request/route.ts",
      "alias": false
    },
    {
      "path": "/api/auth/application-login",
      "methods": [
        "POST"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "email",
        "password",
        "applicationCode"
      ],
      "source": "app/api/auth/application-login/route.ts",
      "alias": false
    },
    {
      "path": "/api/auth/google/callback",
      "methods": [
        "GET"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "state",
        "code"
      ],
      "inputFields": [],
      "source": "app/api/auth/google/callback/route.ts",
      "alias": false
    },
    {
      "path": "/api/auth/google/start",
      "methods": [
        "GET"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "returnTo"
      ],
      "inputFields": [],
      "source": "app/api/auth/google/start/route.ts",
      "alias": false
    },
    {
      "path": "/api/auth/health",
      "methods": [
        "GET"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/auth/health/route.ts",
      "alias": false
    },
    {
      "path": "/api/auth/login",
      "methods": [
        "POST"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "email",
        "password",
        "returnTo",
        "applicationCode"
      ],
      "source": "app/api/auth/login/route.ts",
      "alias": false
    },
    {
      "path": "/api/auth/logout",
      "methods": [
        "POST"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [
        "sessionFromToken"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/auth/logout/route.ts",
      "alias": false
    },
    {
      "path": "/api/auth/register",
      "methods": [
        "POST"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "displayName",
        "email",
        "phone",
        "password",
        "applicationCode",
        "confirmPassword",
        "acceptTerms",
        "companyName",
        "taxCode",
        "companyId",
        "tenantName",
        "verificationMethod",
        "position"
      ],
      "source": "app/api/auth/register/route.ts",
      "alias": false
    },
    {
      "path": "/api/auth/session",
      "methods": [
        "GET"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [
        "sessionFromToken"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/auth/session/route.ts",
      "alias": false
    },
    {
      "path": "/api/auth/vnejob-access",
      "methods": [
        "POST"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/auth/vnejob-access/route.ts",
      "alias": false
    },
    {
      "path": "/api/cms/media/{...key}",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/cms/media/[...key]/route.ts",
      "alias": false
    },
    {
      "path": "/api/company-platform-assets/{key}",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/company-platform-assets/[key]/route.ts",
      "alias": false
    },
    {
      "path": "/api/internal/tg-invoice/bootstrap",
      "methods": [
        "POST"
      ],
      "access": "Nội bộ backend",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/internal/tg-invoice/bootstrap/route.ts",
      "alias": false
    },
    {
      "path": "/api/internal/vnejob/company-profile",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "Nội bộ backend",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "companyId"
      ],
      "inputFields": [],
      "source": "app/api/internal/vnejob/company-profile/route.ts",
      "alias": false
    },
    {
      "path": "/api/internal/vnejob/users/import",
      "methods": [
        "POST"
      ],
      "access": "Nội bộ backend",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "items"
      ],
      "source": "app/api/internal/vnejob/users/import/route.ts",
      "alias": false
    },
    {
      "path": "/api/ioc/v1/credentials/{credentialId}/api-access",
      "methods": [
        "GET",
        "PUT"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [],
      "inputFields": [
        "projects"
      ],
      "source": "app/api/ioc/v1/credentials/[credentialId]/api-access/route.ts",
      "alias": true
    },
    {
      "path": "/api/public/administrative-units",
      "methods": [
        "GET"
      ],
      "access": "Public",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "provinceCode"
      ],
      "inputFields": [],
      "source": "app/api/public/administrative-units/route.ts",
      "alias": false
    },
    {
      "path": "/api/public/banner-events",
      "methods": [
        "POST"
      ],
      "access": "Public",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "placementId",
        "eventType",
        "status",
        "deleted_at",
        "id",
        "deviceType",
        "categoryId",
        "contentId"
      ],
      "source": "app/api/public/banner-events/route.ts",
      "alias": false
    },
    {
      "path": "/api/public/banners",
      "methods": [
        "GET"
      ],
      "access": "Public",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "page",
        "slot",
        "category_id",
        "content_id"
      ],
      "inputFields": [
        "id",
        "status",
        "deleted_at",
        "start_at",
        "end_at",
        "placement_id",
        "image_desktop_url",
        "image_mobile_url",
        "image_alt",
        "show_title",
        "title",
        "show_description",
        "description",
        "show_cta",
        "cta_label",
        "cta_url",
        "cta_target",
        "text_alignment",
        "text_color",
        "overlay_color",
        "overlay_opacity"
      ],
      "source": "app/api/public/banners/route.ts",
      "alias": false
    },
    {
      "path": "/api/public/consultations",
      "methods": [
        "POST"
      ],
      "access": "Public",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "name",
        "phone",
        "email",
        "service",
        "company",
        "need_primary",
        "need_secondary",
        "message"
      ],
      "source": "app/api/public/consultations/route.ts",
      "alias": false
    },
    {
      "path": "/api/public/ecosystem",
      "methods": [
        "GET"
      ],
      "access": "Public",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/public/ecosystem/route.ts",
      "alias": false
    },
    {
      "path": "/api/public/news",
      "methods": [
        "GET"
      ],
      "access": "Public",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "limit",
        "page"
      ],
      "inputFields": [],
      "source": "app/api/public/news/route.ts",
      "alias": false
    },
    {
      "path": "/api/public/service-prices",
      "methods": [
        "GET"
      ],
      "access": "Public",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "serviceCode"
      ],
      "inputFields": [],
      "source": "app/api/public/service-prices/route.ts",
      "alias": false
    },
    {
      "path": "/api/public/service-registrations",
      "methods": [
        "POST"
      ],
      "access": "Public",
      "scopeHints": [
        "company.application.requested"
      ],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "website",
        "applicationCode",
        "sourceApp",
        "taxCode",
        "companyName",
        "address",
        "provinceCode",
        "wardCode",
        "contactName",
        "phone",
        "email",
        "password",
        "confirmPassword",
        "selectedPlan",
        "message"
      ],
      "source": "app/api/public/service-registrations/route.ts",
      "alias": false
    },
    {
      "path": "/api/public/settings",
      "methods": [
        "GET"
      ],
      "access": "Public",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/public/settings/route.ts",
      "alias": false
    },
    {
      "path": "/api/public/xepro/bootstrap",
      "methods": [
        "POST"
      ],
      "access": "Public",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/public/xepro/bootstrap/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/access/context/resolve",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "tgone.access.resolve"
      ],
      "authHints": [
        "adminFromToken",
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [
        "applicationCode",
        "userId",
        "email",
        "tenantId",
        "companyId",
        "permissionCode"
      ],
      "source": "app/api/v1/access/context/resolve/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/application-entitlements",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "company.application.entitlement_created"
      ],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "companyId",
        "applicationCode"
      ],
      "inputFields": [
        "tenantId",
        "companyId",
        "applicationCode",
        "planCode"
      ],
      "source": "app/api/v1/application-entitlements/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/application-entitlements/{id}",
      "methods": [
        "PATCH"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [],
      "inputFields": [
        "status"
      ],
      "source": "app/api/v1/application-entitlements/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/companies",
      "methods": [
        "OPTIONS",
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "page",
        "limit",
        "q",
        "status"
      ],
      "inputFields": [],
      "source": "app/api/v1/companies/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/companies/{id}",
      "methods": [
        "GET",
        "PATCH"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "tgone.company.read",
        "company.read",
        "tgone.company.resolve"
      ],
      "authHints": [
        "requireIocAdmin",
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [
        "application_code",
        "applicationCode",
        "user_id",
        "userId",
        "user_email",
        "userEmail",
        "tenant_id",
        "tenantId",
        "company_name",
        "companyName",
        "tax_code",
        "taxCode",
        "address",
        "province_code",
        "provinceCode",
        "ward_code",
        "wardCode",
        "legal_representative",
        "legalRepresentative",
        "contact_name",
        "contactName",
        "phone"
      ],
      "source": "app/api/v1/companies/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/companies/{id}/company-type",
      "methods": [
        "PATCH"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [
        "company_type_id"
      ],
      "source": "app/api/v1/companies/[id]/company-type/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/companies/resolve",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "tgone.company.resolve"
      ],
      "authHints": [
        "requireIocAdmin",
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [
        "application_code",
        "applicationCode",
        "user_id",
        "userId",
        "email",
        "company_id",
        "companyId",
        "taxCode",
        "businessRegistrationNo",
        "legalName",
        "name",
        "registeredAddress",
        "address"
      ],
      "source": "app/api/v1/companies/resolve/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/company-memberships",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [
        "userId",
        "tenantId",
        "companyId",
        "membershipRole"
      ],
      "source": "app/api/v1/company-memberships/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/company-memberships/{id}",
      "methods": [
        "PATCH",
        "DELETE"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [
        "membershipRole",
        "status"
      ],
      "source": "app/api/v1/company-memberships/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/customers",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "q",
        "status",
        "page",
        "limit"
      ],
      "inputFields": [
        "type",
        "code",
        "name",
        "taxCode",
        "tax_code",
        "buyerName",
        "buyer_name",
        "address",
        "phone",
        "email",
        "bankAccount",
        "bank_account",
        "bankName",
        "bank_name",
        "status"
      ],
      "source": "app/api/v1/customers/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/customers/{id}",
      "methods": [
        "GET",
        "PUT",
        "DELETE"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "type",
        "code",
        "name",
        "taxCode",
        "tax_code",
        "buyerName",
        "buyer_name",
        "address",
        "phone",
        "email",
        "bankAccount",
        "bank_account",
        "bankName",
        "bank_name",
        "status"
      ],
      "source": "app/api/v1/customers/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/invoice/partners",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "invoice.integration.manage"
      ],
      "authHints": [
        "serviceTokenClaims"
      ],
      "queryFields": [
        "q",
        "companyId",
        "status",
        "page",
        "size"
      ],
      "inputFields": [],
      "source": "app/api/v1/invoice/partners/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/mail/hr-attendance-activation",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "loginUrl",
        "to",
        "eventKey",
        "password",
        "partnerName",
        "fullName",
        "employeeCode",
        "partnerCode"
      ],
      "source": "app/api/v1/mail/hr-attendance-activation/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/mail/work-email-otp",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "to",
        "otp",
        "expiresMinutes",
        "eventKey",
        "purpose"
      ],
      "source": "app/api/v1/mail/work-email-otp/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/master-data-requests",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [
        "tenantId",
        "companyId"
      ],
      "inputFields": [
        "master_type",
        "requested_name",
        "reason",
        "tenant_id",
        "company_id",
        "suggested_group"
      ],
      "source": "app/api/v1/master-data-requests/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/master-data-requests/{id}",
      "methods": [
        "PATCH"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [
        "status",
        "existing_position_id"
      ],
      "source": "app/api/v1/master-data-requests/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/master-data/provinces",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin",
        "serviceCanRead"
      ],
      "queryFields": [
        "keyword"
      ],
      "inputFields": [],
      "source": "app/api/v1/master-data/provinces/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/master-data/wards",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin",
        "serviceCanRead"
      ],
      "queryFields": [
        "provinceCode",
        "keyword"
      ],
      "inputFields": [],
      "source": "app/api/v1/master-data/wards/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/master/{catalog}",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/v1/master/[catalog]/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/master/{catalog}/{id}",
      "methods": [
        "GET",
        "PATCH"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/v1/master/[catalog]/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/master/{catalog}/{id}/{action}",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/v1/master/[catalog]/[id]/[action]/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/master/{catalog}/{id}/aliases",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [
        "alias",
        "language_code"
      ],
      "source": "app/api/v1/master/[catalog]/[id]/aliases/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/master/events",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin",
        "serviceCanRead"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/v1/master/events/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/parties/customers",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [
        "q",
        "status",
        "limit",
        "page"
      ],
      "inputFields": [],
      "source": "app/api/v1/parties/customers/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/parties/customers/{id}",
      "methods": [
        "GET",
        "PUT",
        "DELETE"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "tenant_id",
        "partner_id",
        "application_id",
        "party_id",
        "relationship_id",
        "party_type",
        "type",
        "display_name",
        "name",
        "status",
        "tax_code",
        "taxCode",
        "phone",
        "email"
      ],
      "source": "app/api/v1/parties/customers/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/parties/resolve",
      "methods": [
        "POST",
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "application_code",
        "applicationCode",
        "party_type",
        "partyType",
        "display_name",
        "displayName",
        "relationship_type",
        "relationshipType",
        "source",
        "tax_code",
        "taxCode",
        "phone",
        "email"
      ],
      "source": "app/api/v1/parties/resolve/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/partner/position-mappings",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [
        "tenantId",
        "companyId"
      ],
      "inputFields": [
        "tenant_id",
        "company_id",
        "position_id",
        "display_name_override",
        "internal_code",
        "enabled"
      ],
      "source": "app/api/v1/partner/position-mappings/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/partner/position-mappings/{id}",
      "methods": [
        "PATCH"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [
        "display_name_override",
        "internal_code",
        "enabled"
      ],
      "source": "app/api/v1/partner/position-mappings/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/pos/employees",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/v1/pos/employees/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/registrations",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "company.application.requested"
      ],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "applicationCode",
        "application_code",
        "sourceApp",
        "source_app",
        "email",
        "taxCode",
        "tax_code",
        "requestedRole"
      ],
      "source": "app/api/v1/registrations/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/registrations/pos",
      "methods": [
        "POST",
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "serviceTokenClaims"
      ],
      "queryFields": [
        "ids"
      ],
      "inputFields": [],
      "source": "app/api/v1/registrations/pos/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/registrations/pos/first-password",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [
        "registrationId",
        "actorId",
        "password",
        "confirmPassword"
      ],
      "source": "app/api/v1/registrations/pos/first-password/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/service-prices",
      "methods": [
        "GET",
        "POST",
        "PATCH",
        "DELETE"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "serviceCode",
        "status",
        "q",
        "id"
      ],
      "inputFields": [
        "serviceCode",
        "groupCode",
        "groupName",
        "code",
        "name",
        "billingCycle",
        "listPrice",
        "salePrice",
        "status",
        "employeeMin",
        "employeeMax",
        "groupOrder",
        "description",
        "unit",
        "features",
        "sortOrder",
        "id"
      ],
      "source": "app/api/v1/service-prices/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/service-token",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "client_id",
        "client_secret",
        "scope"
      ],
      "source": "app/api/v1/service-token/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/users/{id}",
      "methods": [
        "GET",
        "PATCH"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [
        "status",
        "fullName"
      ],
      "source": "app/api/v1/users/[id]/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/users/{id}/app-roles",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [
        "tenantId",
        "companyId",
        "applicationCode",
        "roleCode",
        "dataScope",
        "dataScopeRef",
        "validFrom",
        "validTo"
      ],
      "source": "app/api/v1/users/[id]/app-roles/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/users/{id}/app-roles/{roleAssignmentId}",
      "methods": [
        "DELETE"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/v1/users/[id]/app-roles/[roleAssignmentId]/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/users/{id}/applications",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/v1/users/[id]/applications/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/users/{id}/lock",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/v1/users/[id]/lock/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/users/{id}/memberships",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/v1/users/[id]/memberships/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/users/{id}/roles",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [
        "tenantId",
        "companyId",
        "applicationCode",
        "roleCode",
        "dataScope",
        "dataScopeRef",
        "validFrom",
        "validTo"
      ],
      "source": "app/api/v1/users/[id]/roles/route.ts",
      "alias": true
    },
    {
      "path": "/api/v1/users/{id}/unlock",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/v1/users/[id]/unlock/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/users/authenticate",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "email",
        "password",
        "applicationCode"
      ],
      "source": "app/api/v1/users/authenticate/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/users/merge",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "sourceUserId",
        "targetUserId",
        "reason",
        "mergedBy",
        "metadata"
      ],
      "source": "app/api/v1/users/merge/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/users/resolve",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "applicationCode",
        "provider",
        "providerSubject",
        "email",
        "phone",
        "fullName",
        "password",
        "sourceUserId",
        "roleCode",
        "idempotencyKey",
        "identityOnly"
      ],
      "source": "app/api/v1/users/resolve/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/vehicle-brands",
      "methods": [
        "OPTIONS",
        "GET",
        "POST",
        "PATCH",
        "DELETE"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "page",
        "limit",
        "q",
        "status",
        "id"
      ],
      "inputFields": [
        "code",
        "name",
        "country",
        "logoUrl",
        "status",
        "sortOrder",
        "id"
      ],
      "source": "app/api/v1/vehicle-brands/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/vehicle-models",
      "methods": [
        "OPTIONS",
        "GET",
        "POST",
        "PATCH",
        "DELETE"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [
        "page",
        "limit",
        "q",
        "brandId",
        "status",
        "vehicleType",
        "id"
      ],
      "inputFields": [
        "name",
        "id",
        "code",
        "brandId",
        "vehicleType",
        "status",
        "sortOrder"
      ],
      "source": "app/api/v1/vehicle-models/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/vnehr/onboarding",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/api/v1/vnehr/onboarding/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/vnehr/registration/company/resolve",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "taxCode"
      ],
      "source": "app/api/v1/vnehr/registration/company/resolve/route.ts",
      "alias": false
    },
    {
      "path": "/api/v1/vnehr/registration/join-request",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "taxCode",
        "email",
        "fullName"
      ],
      "source": "app/api/v1/vnehr/registration/join-request/route.ts",
      "alias": false
    },
    {
      "path": "/commerce/v1/configuration",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "commerce.configure"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/commerce/v1/navigation",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "navigation.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/commerce/v1/purchases",
      "methods": [
        "POST"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.purchase"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/commerce/v1/purchases/{id}",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/commerce/v1/purchases/{id}/reconcile",
      "methods": [
        "POST"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.purchase"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/commerce/v1/quotes",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.purchase"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/commerce/v1/quotes/{id}",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.purchase"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/commerce/v1/quotes/{id}/approve",
      "methods": [
        "POST"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.purchase.approve"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/commerce/v1/quotes/{id}/request-approval",
      "methods": [
        "POST"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.purchase"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/commerce/v1/services",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/commerce/v1/services/{code}",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/internal/schedules/tick",
      "methods": [
        "POST"
      ],
      "access": "Machine clock",
      "scopeHints": [
        "schedule.tick"
      ],
      "authHints": [
        "verifySchedule"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/schedules/api.ts",
      "alias": false
    },
    {
      "path": "/ioc/v1/credentials/{credentialId}/api-access",
      "methods": [
        "GET",
        "PUT"
      ],
      "access": "Quản trị IOC",
      "scopeHints": [],
      "authHints": [
        "adminFromToken"
      ],
      "queryFields": [],
      "inputFields": [
        "projects"
      ],
      "source": "app/ioc/v1/credentials/[credentialId]/api-access/route.ts",
      "alias": false
    },
    {
      "path": "/logout",
      "methods": [
        "GET"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [
        "sessionFromToken"
      ],
      "queryFields": [
        "post_logout_redirect_uri"
      ],
      "inputFields": [],
      "source": "app/logout/route.ts",
      "alias": false
    },
    {
      "path": "/oauth2/authorize",
      "methods": [
        "GET"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [
        "sessionFromToken"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/oauth2/authorize/route.ts",
      "alias": false
    },
    {
      "path": "/oauth2/token",
      "methods": [
        "POST"
      ],
      "access": "Xác thực & phiên",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/oauth2/token/route.ts",
      "alias": false
    },
    {
      "path": "/schedule/v1/alerts",
      "methods": [
        "GET",
        "PATCH"
      ],
      "access": "Schedule control plane",
      "scopeHints": [
        "SCHEDULE_VIEW_HISTORY"
      ],
      "authHints": [
        "scheduleActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/schedules/api.ts",
      "alias": false
    },
    {
      "path": "/schedule/v1/definitions",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "Schedule control plane",
      "scopeHints": [
        "SCHEDULE_VIEW / SCHEDULE_CREATE"
      ],
      "authHints": [
        "scheduleActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/schedules/api.ts",
      "alias": false
    },
    {
      "path": "/schedule/v1/definitions/{id}",
      "methods": [
        "GET",
        "PUT",
        "DELETE"
      ],
      "access": "Schedule control plane",
      "scopeHints": [
        "SCHEDULE_VIEW / SCHEDULE_UPDATE"
      ],
      "authHints": [
        "scheduleActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/schedules/api.ts",
      "alias": false
    },
    {
      "path": "/schedule/v1/definitions/{id}/audit",
      "methods": [
        "GET"
      ],
      "access": "Schedule control plane",
      "scopeHints": [
        "SCHEDULE_VIEW_HISTORY"
      ],
      "authHints": [
        "scheduleActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/schedules/api.ts",
      "alias": false
    },
    {
      "path": "/schedule/v1/definitions/{id}/enable",
      "methods": [
        "POST"
      ],
      "access": "Schedule control plane",
      "scopeHints": [
        "SCHEDULE_ENABLE_DISABLE"
      ],
      "authHints": [
        "scheduleActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/schedules/api.ts",
      "alias": false
    },
    {
      "path": "/schedule/v1/definitions/{id}/history",
      "methods": [
        "GET"
      ],
      "access": "Schedule control plane",
      "scopeHints": [
        "SCHEDULE_VIEW_HISTORY"
      ],
      "authHints": [
        "scheduleActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/schedules/api.ts",
      "alias": false
    },
    {
      "path": "/schedule/v1/definitions/{id}/run",
      "methods": [
        "POST"
      ],
      "access": "Schedule control plane",
      "scopeHints": [
        "SCHEDULE_RUN_NOW"
      ],
      "authHints": [
        "scheduleActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/schedules/api.ts",
      "alias": false
    },
    {
      "path": "/schedule/v1/metrics",
      "methods": [
        "GET"
      ],
      "access": "Schedule control plane",
      "scopeHints": [
        "SCHEDULE_VIEW"
      ],
      "authHints": [
        "scheduleActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/schedules/api.ts",
      "alias": false
    },
    {
      "path": "/tgone/v1/access/context/resolve",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "tgone.access.resolve"
      ],
      "authHints": [
        "adminFromToken",
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [
        "applicationCode",
        "userId",
        "email",
        "tenantId",
        "companyId",
        "permissionCode"
      ],
      "source": "app/tgone/v1/access/context/resolve/route.ts",
      "alias": true
    },
    {
      "path": "/tgone/v1/attendance/access/resolve",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "path",
        "method"
      ],
      "source": "app/tgone/v1/attendance/access/resolve/route.ts",
      "alias": false
    },
    {
      "path": "/tgone/v1/companies/{id}",
      "methods": [
        "GET",
        "PATCH"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "tgone.company.read",
        "company.read",
        "tgone.company.resolve"
      ],
      "authHints": [
        "requireIocAdmin",
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [
        "application_code",
        "applicationCode",
        "user_id",
        "userId",
        "user_email",
        "userEmail",
        "tenant_id",
        "tenantId",
        "company_name",
        "companyName",
        "tax_code",
        "taxCode",
        "address",
        "province_code",
        "provinceCode",
        "ward_code",
        "wardCode",
        "legal_representative",
        "legalRepresentative",
        "contact_name",
        "contactName",
        "phone"
      ],
      "source": "app/tgone/v1/companies/[id]/route.ts",
      "alias": true
    },
    {
      "path": "/tgone/v1/companies/{id}/memberships",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "serviceTokenClaims"
      ],
      "queryFields": [
        "tenantId",
        "applicationCode",
        "search",
        "pageSize"
      ],
      "inputFields": [],
      "source": "app/tgone/v1/companies/[id]/memberships/route.ts",
      "alias": false
    },
    {
      "path": "/tgone/v1/hr-access/context",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "hr.access.context.read"
      ],
      "authHints": [
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/tgone/v1/hr-access/context/route.ts",
      "alias": false
    },
    {
      "path": "/tgone/v1/hr-access/users",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "hr.access.users.read"
      ],
      "authHints": [
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/tgone/v1/hr-access/users/route.ts",
      "alias": false
    },
    {
      "path": "/tgone/v1/master-data/provinces",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin",
        "serviceCanRead"
      ],
      "queryFields": [
        "keyword"
      ],
      "inputFields": [],
      "source": "app/tgone/v1/master-data/provinces/route.ts",
      "alias": true
    },
    {
      "path": "/tgone/v1/master-data/wards",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "requireIocAdmin",
        "serviceCanRead"
      ],
      "queryFields": [
        "provinceCode",
        "keyword"
      ],
      "inputFields": [],
      "source": "app/tgone/v1/master-data/wards/route.ts",
      "alias": true
    },
    {
      "path": "/tgone/v1/master/{catalog}",
      "methods": [
        "GET"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [],
      "source": "app/tgone/v1/master/[catalog]/route.ts",
      "alias": false
    },
    {
      "path": "/tgone/v1/pos/employees",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "app/tgone/v1/pos/employees/route.ts",
      "alias": true
    },
    {
      "path": "/tgone/v1/service-token",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [],
      "queryFields": [],
      "inputFields": [
        "client_id",
        "client_secret",
        "scope"
      ],
      "source": "app/tgone/v1/service-token/route.ts",
      "alias": true
    },
    {
      "path": "/tgone/v1/users/{id}/work-activation",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [],
      "authHints": [
        "serviceTokenClaims",
        "sessionFromToken"
      ],
      "queryFields": [],
      "inputFields": [
        "activationStatus",
        "tenantId",
        "companyId"
      ],
      "source": "app/tgone/v1/users/[id]/work-activation/route.ts",
      "alias": false
    },
    {
      "path": "/tgone/v1/users/activate-employee",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "tgone.user.resolve",
        "hr.integration.manage"
      ],
      "authHints": [
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [
        "identifiers",
        "workEmail",
        "displayName",
        "password",
        "confirmPassword",
        "companyRef",
        "companyId",
        "results"
      ],
      "source": "app/tgone/v1/users/activate-employee/route.ts",
      "alias": false
    },
    {
      "path": "/tgone/v1/users/connect-employee",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "tgone.user.resolve",
        "hr.integration.manage"
      ],
      "authHints": [
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [
        "userId",
        "identifiers",
        "workEmail",
        "companyRef",
        "results"
      ],
      "source": "app/tgone/v1/users/connect-employee/route.ts",
      "alias": false
    },
    {
      "path": "/tgone/v1/users/reset-employee-password",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "tgone.user.resolve",
        "hr.integration.manage"
      ],
      "authHints": [
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [
        "userId",
        "companyRef",
        "companyId",
        "workEmail",
        "password",
        "confirmPassword"
      ],
      "source": "app/tgone/v1/users/reset-employee-password/route.ts",
      "alias": false
    },
    {
      "path": "/tgone/v1/users/resolve",
      "methods": [
        "POST"
      ],
      "access": "API dùng chung",
      "scopeHints": [
        "tgone.user.resolve",
        "hr.integration.manage"
      ],
      "authHints": [
        "serviceTokenClaims"
      ],
      "queryFields": [],
      "inputFields": [
        "nationalId",
        "personalPhone",
        "email",
        "workEmailVerified",
        "verifiedWorkEmail"
      ],
      "source": "app/tgone/v1/users/resolve/route.ts",
      "alias": false
    },
    {
      "path": "/vnejob/v1/applications/{id}",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "recruitment.job.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/vnejob-gateway.ts",
      "alias": false
    },
    {
      "path": "/vnejob/v1/employer/context",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "recruitment.job.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/vnejob-gateway.ts",
      "alias": false
    },
    {
      "path": "/vnejob/v1/jobs",
      "methods": [
        "GET",
        "POST"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "recruitment.job.read",
        "recruitment.job.create"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/vnejob-gateway.ts",
      "alias": false
    },
    {
      "path": "/vnejob/v1/jobs/{id}",
      "methods": [
        "GET",
        "PUT"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "recruitment.job.read",
        "recruitment.job.update"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/vnejob-gateway.ts",
      "alias": false
    },
    {
      "path": "/vnejob/v1/jobs/{id}/applications",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "recruitment.job.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/vnejob-gateway.ts",
      "alias": false
    },
    {
      "path": "/vnejob/v1/jobs/{id}/close",
      "methods": [
        "POST"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "recruitment.job.close"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/vnejob-gateway.ts",
      "alias": false
    },
    {
      "path": "/vnejob/v1/recruitment-services",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "recruitment.service.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/vnejob-gateway.ts",
      "alias": false
    },
    {
      "path": "/wallet/v1/balance",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/wallet/v1/buckets",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/wallet/v1/me",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/wallet/v1/refunds",
      "methods": [
        "POST"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.purchase.approve"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/wallet/v1/reservations",
      "methods": [
        "POST"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.purchase"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/wallet/v1/reservations/{id}",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/wallet/v1/reservations/{id}/release",
      "methods": [
        "POST"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.purchase"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/wallet/v1/top-ups",
      "methods": [
        "POST"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.topup"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/wallet/v1/top-ups/{id}",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "wallet.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/wallet/v1/transactions",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "transaction.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    },
    {
      "path": "/wallet/v1/transactions/{id}",
      "methods": [
        "GET"
      ],
      "access": "Company-scoped commerce gateway",
      "scopeHints": [
        "transaction.read"
      ],
      "authHints": [
        "commerceActor"
      ],
      "queryFields": [],
      "inputFields": [],
      "source": "lib/commerce/api.ts",
      "alias": false
    }
  ]
}
