Overview
Client-mode REST API connector for the FedEx Developer Portal APIs: OAuth 2.0 client credentials, tracking (tracking number, reference, TCN, multiple-piece shipments, proof of delivery documents, e-mail notifications), rates and transit times, address and postal code validation, service availability, location search, shipments and labels (purchase), cancel, return tags (purchase), pickups (purchase), Global Trade regulatory details, Advanced Integrated Visibility subscriptions (billed) and trade document upload; companion server connector for AIV tracking webhooks. This is one of the templates in the FedEx Developer Portal REST API app (fedex-developer-portal). Deploy it alongside the other connectors of that app when they depend on each other (for example a token connector plus an API connector).
Not yet verified against the live vendor API: No FedEx developer project (API key / secret key) or FedEx shipping account on the factory box (no FEDEX_* variables); only static, mock, negative-control and unauthenticated / fake-credential public probes ran.
Auth
OAuth 2.0 client credentials (credentials in the form body, client_secret_post): GetToken posts grant_type=client_credentials&client_id&client_secret (application/x-www-form-urlencoded) to /oauth/token; GetTokenChild uses client_pc_credentials or csp_credentials + child_Key + child_secret. Reply access_token, token_type bearer, expires_in 3600, scope; no refresh token. FedExApi / FedExDocs events: Authorization: Bearer <access_token> and x-customer-transaction-id; FedExApi also x-locale en_US. Every event sends User-Agent: Coreflux-Broker. Auth headers used by the template:Authorization: Bearer {value.json.access_token}.
Template parameters
BASE_ADDRESS default: https://documentapi.prod.fedex.com.
Events
Deploy
Get the template card (JSON withtemplate and metadata) from the broker, then deploy the connector:
BASE_ADDRESS already filled in:
-addRoute (do not include ADD METADATA).
Usage example
CallUploadTradeDocuments by publishing a JSON payload to its request topic, and read the reply on the response topic:

