KB: Understanding Microsoft-Owned APIs, SPs, and API Permissions

 

1. Microsoft-Owned APIs behave differently

  • The App Registration lives in Microsoft’s tenant (hidden from you)

  • You only see the Service Principal (SP) in your tenant

  • The Microsoft API SP never shows API permissions

  • This is expected and correct

Example:
Power Platform API → AppID 8578e004-a5c6-46e7-913e-12f58912df43 (Microsoft-owned)


2. API permissions are ALWAYS stored on the client application, not on the Microsoft API

When you grant a permission like:

CopilotStudio.Copilots.Invoke

It gets added to the client application's SP/App Registration, e.g.:

"My Application"
—not—
Power Platform API SP

So the client app will show:

✔ API permissions
✔ Delegated permissions
✔ Admin consent

The Microsoft API SP will show:

❌ Nothing
❌ No API permissions
❌ No scopes
❌ No roles


3. Why?

Because permissions are modeled as:

Client App → requests → permission → from → Resource API

The resource API (Microsoft-owned SP) does NOT keep track of who is calling it.


4. If you find a Microsoft API SP later and want to know “which app is using this API?”

You can reverse-search by the API’s AppID.

CLI:

az ad app list --query "[?requiredResourceAccess[?resourceAppId=='<API-ID>']]"

Graph:

az rest --method get \ --url "https://graph.microsoft.com/v1.0/applications?$filter=requiredResourceAccess/any(x:x/resourceAppId eq '<API-ID>')"

This returns all client applications that added permissions for that API.


5. How to interpret what you see in the portal

When you open the client app (your app):

You see:

  • API permissions

  • Which Microsoft APIs it calls

  • Which scopes it needs

  • Who granted the consent

When you open the Microsoft API SP:

You see:

  • Nothing in API permissions

  • No scopes

  • No roles

  • Only basic properties

This is expected.


6. What actually happened in your case

You saw:

  • A Microsoft API SP: Power Platform API

  • A custom client app: "My Application"

  • API permissions were visible only on the client app

✔ Correct
✔ Expected
✔ This is how Entra ID models delegated permissions


7. The golden rule

API permissions always belong to the client app, never the Microsoft API.

To see who uses a Microsoft API → inspect the client apps, not the API SP.

To find those client apps → search by resourceAppId.

Comments

Popular posts from this blog

KB: Azure ACA Container fails to start (no User Assigned or Delegated Managed Identity found for specified ClientId)

Electron Process Execution Failure with FSLogix

KB:RMM VS DEX (Remote Monitoring Management vs Digital Employee Experience)