Apiable
Back to Resources An auditor examining a tangled mess of API scope permissions while a team scrambles to find access records

Managing API Scopes Manually Is a Compliance Disaster Waiting to Happen

Let's walk through a scenario. It's fictional, but if you manage API access for healthcare partners, it'll feel familiar.

The Audit

It's a Tuesday morning. Your compliance team forwards an email: CMS is conducting a review of your API access controls as part of the CMS-0057-F readiness assessment. The auditor needs documentation within two weeks.

Specifically, they want:

  • A list of every third-party application with access to patient data through your FHIR APIs
  • The specific SMART on FHIR scopes each application was granted
  • Evidence that scope grants match what each application actually needs
  • Logs showing who approved each scope grant and when
  • Proof that applications that no longer need access have been revoked

Your team starts pulling records. This is where things unravel.

What They Find

The spreadsheet. Scope assignments are tracked in a shared spreadsheet. It was last updated four months ago. Three applications listed in the spreadsheet were decommissioned by their developers but still have active credentials. Two applications that went live in Q3 aren't in the spreadsheet at all.

The over-scoped applications. During onboarding, it was faster to grant broad scopes and narrow them later. "Later" never happened. A wellness app that only needs to read Observation resources was granted patient/*.read, giving it access to demographics, medications, allergies, and clinical notes. A scheduling tool has write access to resources it never touches.

The missing approvals. For the first ten applications, there's an email chain showing who approved each scope request. For the next twenty, scope grants were handled in Slack. For the most recent applications, nobody can find the approval record at all. The engineer who onboarded most of them left six months ago.

The orphaned credentials. A partner that stopped their integration eight months ago still has valid API keys. Nobody revoked them because nobody realized they were still active. The credentials have been making occasional calls, probably from a staging environment the partner forgot to shut down. Those calls are hitting patient-facing endpoints.

The audit log gaps. Your gateway logs API calls, but the logs don't capture which scopes were used for each request. You can show that Application X made a call to the Patient endpoint. You can't show whether Application X was authorized for that specific scope at the time of the call.

The auditor's summary: you have APIs. You have OAuth. You don't have scope governance. And scope governance is what the regulation requires.

How This Happens

Nobody sets out to build a compliance gap. It accumulates through decisions that make sense individually but create risk collectively.

Speed over precision during onboarding. When a partner needs to go live quickly, granting broad scopes is the path of least resistance. Defining granular scopes for each application takes time. Someone says "we'll tighten this up later" and adds it to a backlog that never gets prioritized.

No single source of truth. Scope assignments live in spreadsheets, email threads, Jira tickets, and one engineer's head. When that engineer moves on, the institutional knowledge goes with them. The spreadsheet becomes a best guess, not a record of truth.

No lifecycle management. Applications get registered and granted access. But there's no process for reviewing whether that access is still appropriate, whether the application is still active, or whether the developer organization still has a valid agreement. Credentials accumulate. Scopes drift. Nobody notices until someone asks.

Gateway logs aren't scope-aware. API gateways log traffic. They track which endpoints were called, by whom, and when. But they don't always capture which OAuth scopes were presented with each request, whether those scopes were valid at the time, or whether the scope grant had been approved through your governance process. The logs tell you what happened at the network level. They don't tell you whether it was authorized at the scope level.

What Scope Governance Actually Requires

Compliant scope management isn't complicated in concept. It's five things done consistently:

  1. Scope requests are captured during registration. When a third-party application registers, it declares which FHIR resource scopes it needs and why. This becomes the baseline for what the application is authorized to access.
  2. Scope grants are approved and recorded. Someone reviews the scope request, verifies it matches the application's stated purpose, and approves it. That approval is logged with a timestamp, the approver's identity, and the specific scopes granted. Not in email. In a system of record.
  3. Scope enforcement is granular. The authorization server enforces scope boundaries at the FHIR resource level. An application granted Observation.read cannot access Patient demographics. Scopes are not advisory. They're enforced on every request.
  4. Access is reviewed periodically. Active applications are reviewed on a regular cadence. Are the scopes still appropriate? Is the application still active? Is the developer organization still under a valid agreement? Applications that no longer meet the criteria are flagged for revocation.
  5. Revocation is immediate and auditable. When access is revoked, the application's credentials and scope grants stop working immediately, not at the end of the billing cycle, not after someone processes a ticket. And the revocation is logged the same way the grant was.

That's the bar. If your current process can do all five, you're in good shape. If any of them depend on a spreadsheet, an email chain, or one person's memory, you have a gap the auditor will find.

The Cost of Fixing It After the Audit

Scope governance gaps found during an audit are significantly more expensive to fix than gaps caught proactively. The audit creates a remediation timeline. Your team drops other work to rebuild scope records, review every application's access, revoke credentials that should have been revoked months ago, and implement the logging that should have been there from the start.

In healthcare, the stakes go beyond compliance fines. Average healthcare data breach costs reached $10.93 million in 2024. An over-scoped application that accesses patient data it shouldn't have is a breach vector. The scope that was "temporary" during onboarding becomes the scope that appears in an incident report.

What to Do Now

Start with the audit exercise from the scenario above, but do it before the real auditor arrives.

  1. List every application with API access. Not what's in your spreadsheet. What's actually active. Check your OAuth server's client registrations, your gateway's active API keys, and your subscription records. Compare them. The discrepancies are your first set of findings.
  2. Review scope grants against actual need. For each active application, compare the scopes it was granted against the scopes it actually uses. Any application with scopes it doesn't use is over-scoped. Narrow them.
  3. Revoke orphaned access. Applications that are no longer active, no longer under agreement, or whose developers are unreachable should have credentials revoked immediately.
  4. Move scope records out of spreadsheets. Scope grants, approvals, and revocations need to live in a system that's queryable, auditable, and current. If you can't generate the auditor's report from your system of record in ten minutes, your system of record isn't good enough.

If the January 2027 compliance checklist showed you the full picture of what's required, this is the area most likely to trip you up. Scope management is where compliance meets daily operations, and daily operations is where shortcuts accumulate.

For teams managing SMART on FHIR scopes across multiple partner applications, Apiable provides scope-based access control, approval workflows, and audit logging as part of the partner onboarding flow, connected to your existing API gateway. Book a demo to see how it works with your compliance requirements.

Apiable Playbook - Build vs Buy as a Service

Apiable Playbook

Build vs Buy as a Service

Read the Apiable Buyers guide and see whether it makes sense to build and API portal yourself or buy it as a service.

See what your API program looks like as a revenue engine.

Join the companies monetizing API usage, scaling partner onboarding, and proving measurable business impact—without overloading their teams.

Book Your Demo