ABM Industries · OAuth Scopes

ABM Industries OAuth Scopes

OAuth 2.0 probed

ABM Industries uses OAuth 2.0 but publishes no discrete scopes — access is governed by the grant itself (e.g. client-credentials or role-based authorization) rather than per-scope consent.

This index is generated from the provider’s OpenAPI security definitions (and, where available, its documented scope reference) and refreshes on every APIs.io network build. Browse every provider’s scopes at scopes.apis.io.

Facilities ManagementEngineeringInfrastructureMobilityFortune 500
Scopes: 0 Flows: Method: probed

Scopes (0)

ABM Industries implements OAuth 2.0 but publishes no discrete scopes — access is governed by the grant itself (client-credentials or role-based authorization) rather than per-scope consent.

ABM publishes no scopes reference page. What follows is not a reconstruction — it is the authorisation configuration ABM's own first-party client ships to every browser. ABM Connect uses a SINGLE coarse application scope across every protected resource: there is no per-resource or per-verb scoping, so a token that can read a service location can also reach finance, talent-management and safety resources. That is a real, material finding for anyone assessing delegated access.

Source

OAuth Scopes

abm-industries-scopes.yml Raw ↑
generated: '2026-08-29'
method: probed
source: >-
  MSAL protected-resource map and `environment` constant read verbatim from ABM's own production
  bundle https://connect.abm.com/chunk-QN7SXVIA.js, cross-checked against the Azure AD B2C
  discovery document at
  https://connect2abm.b2clogin.com/connect2abm.onmicrosoft.com/B2C_1_cft-signin/v2.0/.well-known/openid-configuration
  (HTTP 200), 2026-08-29.
provider: ABM Industries
providerId: abm-industries
api: ABM Connect
docs: null
note: >-
  ABM publishes no scopes reference page. What follows is not a reconstruction — it is the
  authorisation configuration ABM's own first-party client ships to every browser. ABM Connect
  uses a SINGLE coarse application scope across every protected resource: there is no per-resource
  or per-verb scoping, so a token that can read a service location can also reach finance,
  talent-management and safety resources. That is a real, material finding for anyone assessing
  delegated access.
scope_model: single coarse application scope
scope_count: 2
scopes:
  - name: https://connect2ABM.onmicrosoft.com/31f16065-3479-4b3c-a3cd-e337cafc33c9/cft_client_access
    description: >-
      The one application scope MSAL requests for every ABM Connect protected resource. Granted
      against ABM's Azure AD B2C application (app ID URI connect2ABM.onmicrosoft.com).
    applies_to: all resources listed under protected_resources
  - name: openid
    description: >-
      The only scope advertised in `scopes_supported` by ABM's B2C discovery document.
    source: b2c-discovery
protected_resources:
  base_url: https://connectapi.abm.com/cust-api/
  note: >-
    Resource paths are relative to base_url unless an absolute host is shown. Names are ABM's own
    identifiers. `internal/*` resources are shipped in the customer bundle but are for ABM staff.
  resources:
    - { name: UserAccessApi, path: UserAccess/ }
    - { name: ManageUserApi, path: ManageUser/ }
    - { name: MyAccountApi, path: MyAccount/ }
    - { name: PowerBiEmbedApi, path: PowerBIEmbed/ }
    - { name: WorkOrderApi, path: WorkOrder/ }
    - { name: QualityApi, path: Quality/ }
    - { name: SwopApi, path: SWOP/ }
    - { name: FinanceApi, path: Finance/ }
    - { name: ServiceLocationApi, path: ServiceLocation/ }
    - { name: SafetyApi, path: Safety/ }
    - { name: TalentManagementApi, path: TalentManagement/ }
    - { name: AbmConnectApi, path: abm-connect/ }
    - { name: UserLog, path: abm-connect/user/ }
    - { name: DocumentApi, path: Documents/ }
    - { name: SurveyApi, path: survey }
    - { name: DynamicPageApi, path: DynamicPage/ }
    - { name: AviationServicesApi, path: AviationServices/ }
    - { name: AviationQualityApi, path: AviationQuality/ }
    - { name: Global_WorkOrderApi, path: Global/WorkOrder/ }
    - { name: Global_QualityApi, path: Global/Quality/ }
    - { name: Global_FinanceApi, path: Global/Finance/ }
    - { name: Global_ServiceLocationApi, path: Global/ServiceLocation/ }
    - { name: Global_SafetyApi, path: Global/Safety/ }
    - { name: Global_TalentManagementApi, path: Global/TalentManagement/ }
    - { name: Global_InsightsApi, path: Global/Insights/ }
    - { name: Global_CustomerRel, path: Global/CustomerRel/ }
    - { name: Global_SocialSafety, path: Global/Social/ }
    - { name: Global_EnvironmentApi, path: Global/Env/ }
    - { name: GlobalHomeApi, path: Global/Home/ }
    - { name: In_GlobalScoreCardApi, path: internal/globalScorecard/, audience: abm-internal }
    - { name: In_ScoreCardApi, path: internal/scorecard/, audience: abm-internal }
    - { name: In_FinanceApi, path: internal/finance/, audience: abm-internal }
    - { name: In_WorkOrderApi, path: internal/workOrders/, audience: abm-internal }
    - { name: In_SwopApi, path: internal/SWOP/, audience: abm-internal }
    - { name: In_SafetyApi, path: internal/safety/, audience: abm-internal }
    - { name: In_QualityApi, path: internal/quality/, audience: abm-internal }
    - { name: In_TalentManagementApi, path: internal/talentmanagement/, audience: abm-internal }
    - { name: WebAssetsApi, url: https://connectapi.abm.com/web-assets/ }
    - { name: DocumentApi.blobUrl, url: https://connectapi.abm.com/emp-documents/ }
    - { name: InvoiceEndpoint, url: https://connectapi.abm.com/emp-invoices-clone/ }
    - { name: TaskManagementOpsApi, url: https://appservices.abm.com/external/task-mgmt/cust-api/ }
    - { name: OpsConnectApi, url: https://appservices.abm.com/external/task-mgmt/cust-api/ }
    - { name: RoutesApi, url: https://appservices-uat.abm.com/external/task-mgmt/tasks-api/, note: points at a UAT host in production }
    - { name: TaskAIManagementOpsApi, url: https://appservices-uat.abm.com/external/task-mgmt/ai-assitant/, note: points at a UAT host in production }
resource_count: 44
evidence:
  - url: https://connect.abm.com/chunk-QN7SXVIA.js
    status: 200
  - url: https://connect2abm.b2clogin.com/connect2abm.onmicrosoft.com/B2C_1_cft-signin/v2.0/.well-known/openid-configuration
    status: 200
maintainers:
  - FN: Kin Lane
    email: kin@apievangelist.com

Work with this as data

Every scope set here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for oauth scopes

4 MCP tools reach this
  • find_scopesBrowse and filter every scope set in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This scope set
curl "https://apis.io/api/v1/scopes/abm-industries-scopes"
All oauth scopes
curl "https://apis.io/api/v1/scopes?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.