Authentication

Every PCS Partner API -- Entities, Dispatch, Opportunity -- and the MCP server share a single OAuth2 client-credentials flow. Get one access token here and use it everywhere.

Get a token

Exchange your client ID and secret for a bearer token using the client-credentials grant. Send it as application/x-www-form-urlencoded, not JSON:

curl -X POST \
https://dev-openapi-apim.azure-api.net/public/authorization/v1/tokens/oauth \
--data-urlencode grant_type=client_credentials \
--data-urlencode client_id=<your-client-id> \
--data-urlencode client_secret=<your-client-secret>

{"access_token": "eyJ...", "expires_in": 3600}

No scope field is used -- your credentials alone determine what you can access. Tokens expire (see expires_in); request a new one when yours does.

Use the token

Send it as Authorization: Bearer <access_token> on every request to Entities, Dispatch, Opportunity, or the MCP server. There's no separate API key or subscription step -- the token is the only credential these APIs check.

[PLACEHOLDER — needs real content from someone with product knowledge of this process: how a partner actually requests and receives a client_id/client_secret pair in the first place (who to contact, whether there's a formal approval step, expected turnaround time).]