> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreflux.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Ups Api

> Client-mode REST API connector for the UPS Developer Portal APIs: OAuth 2.0 client credentials, package tracking, Track Alert push subscriptions, rating and shop rates, address validation, time in transit, locations and Access Points, shipments and labels (purchase), void, label recovery, landed cost, pickups (purchase), paperless trade documents, Quantum View, Delivery Intercept eligibility and charges, dangerous goods data; companion server connector for Track Alert webhooks

Technical Preview

## Overview

Client-mode REST API connector for the UPS Developer Portal APIs: OAuth 2.0 client credentials, package tracking, Track Alert push subscriptions, rating and shop rates, address validation, time in transit, locations and Access Points, shipments and labels (purchase), void, label recovery, landed cost, pickups (purchase), paperless trade documents, Quantum View, Delivery Intercept eligibility and charges, dangerous goods data; companion server connector for Track Alert webhooks.

This is one of the templates in the UPS Developer Portal REST API app (`ups-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).

> [!NOTE]
>
> Not yet verified against the live vendor API: No UPS developer app (client id / secret) or shipper account on the factory box (no UPS\_\* variables); only static, mock, negative-control and unauthenticated / fake-credential public probes ran.

## Auth

OAuth 2.0 client credentials (client\_secret\_basic): GetToken posts grant\_type=client\_credentials (form) to /security/v1/oauth/token with Authorization: Basic base64(client\_id:client\_secret); GetTokenForAccount adds x-merchant-id (shipper account). Reply access\_token, token\_type, issued\_at, expires\_in (seconds, string), status; no refresh token. UpsApi events: Authorization: Bearer \<access\_token>, transId \<unique, max 32> and transactionSrc Coreflux-Broker. Every event also sends User-Agent: Coreflux-Broker.

Auth headers used by the template: `Authorization: Bearer {value.json.access_token}`.

## Template parameters

| Placeholder | Type | Description | Required |
| - | - | - | - |
| `RouteName` | string | Name of the Ups Api connector | no |
| `BaseUrl` | string | Ups Api base URL without trailing slash (e.g. [https://onlinetools.ups.com](https://onlinetools.ups.com)) | yes |

`BASE_ADDRESS` default: `https://onlinetools.ups.com`.

## Events

| Event | Method | Endpoint | Request topic | Response topic | Payload fields |
| - | - | - | - | - | - |
| `TrackPackage` | GET | `/api/track/v1/details/{value.json.id}?{value.json.query}` | `fleet/ups/track/get` | `fleet/ups/track/get/response` | `access_token`, `id`, `query`, `trans_id` |
| `TrackShipment` | GET | `/api/track/v1/shipment/details/{value.json.id}?{value.json.query}` | `fleet/ups/track-shipment/get` | `fleet/ups/track-shipment/get/response` | `access_token`, `id`, `query`, `trans_id` |
| `TrackByReference` | GET | `/api/track/v1/reference/details/{value.json.id}?{value.json.query}` | `fleet/ups/track-reference/get` | `fleet/ups/track-reference/get/response` | `access_token`, `id`, `query`, `trans_id` |
| `SubscribeTrackAlert` | POST | `/api/track/v2/subscription/standard/package` | `fleet/ups/track-alert/create` | `fleet/ups/track-alert/create/response` | `access_token`, `body`, `trans_id` |
| `SubscribeTrackAlertEnhanced` | POST | `/api/track/v2/subscription/enhanced/package` | `fleet/ups/track-alert-enhanced/create` | `fleet/ups/track-alert-enhanced/create/response` | `access_token`, `body`, `trans_id` |
| `RateShipment` | POST | `/api/rating/v2409/Rate` | `fleet/ups/rate/get` | `fleet/ups/rate/get/response` | `access_token`, `body`, `trans_id` |
| `ShopRates` | POST | `/api/rating/v2409/Shop` | `fleet/ups/rate-shop/get` | `fleet/ups/rate-shop/get/response` | `access_token`, `body`, `trans_id` |
| `ShopRatesWithTransit` | POST | `/api/rating/v2409/Shoptimeintransit` | `fleet/ups/rate-shop-transit/get` | `fleet/ups/rate-shop-transit/get/response` | `access_token`, `body`, `trans_id` |
| `ValidateAddress` | POST | `/api/addressvalidation/v2/3?{value.json.query}` | `fleet/ups/address/validate` | `fleet/ups/address/validate/response` | `access_token`, `body`, `query`, `trans_id` |
| `GetTransitTimes` | POST | `/api/shipments/v1/transittimes` | `fleet/ups/transit-time/get` | `fleet/ups/transit-time/get/response` | `access_token`, `body`, `trans_id` |
| `FindLocations` | POST | `/api/locations/v3/search/availabilities/1` | `fleet/ups/location/search` | `fleet/ups/location/search/response` | `access_token`, `body`, `trans_id` |
| `FindAccessPoints` | POST | `/api/locations/v3/search/availabilities/64` | `fleet/ups/access-point/search` | `fleet/ups/access-point/search/response` | `access_token`, `body`, `trans_id` |
| `CreateShipment` | POST | `/api/shipments/v2409/ship` | `fleet/ups/shipment/create` | `fleet/ups/shipment/create/response` | `access_token`, `body`, `trans_id` |
| `VoidShipment` | DELETE | `/api/shipments/v2409/void/cancel/{value.json.id}?{value.json.query}` | `fleet/ups/shipment/void` | `fleet/ups/shipment/void/response` | `access_token`, `id`, `query`, `trans_id` |
| `RecoverLabel` | POST | `/api/labels/v1/recovery` | `fleet/ups/label/recover` | `fleet/ups/label/recover/response` | `access_token`, `body`, `trans_id` |
| `QuoteLandedCost` | POST | `/api/landedcost/v1/quotes` | `fleet/ups/landed-cost/quote` | `fleet/ups/landed-cost/quote/response` | `access_token`, `body`, `trans_id` |
| `RatePickup` | POST | `/api/shipments/v2409/pickup/{value.json.pickup_type}` | `fleet/ups/pickup/rate` | `fleet/ups/pickup/rate/response` | `access_token`, `body`, `pickup_type`, `trans_id` |
| `GetPendingPickups` | GET | `/api/shipments/v2409/pickup/{value.json.pickup_type}` | `fleet/ups/pickup-pending/get` | `fleet/ups/pickup-pending/get/response` | `access_token`, `account_number`, `pickup_type`, `trans_id` |
| `CreatePickup` | POST | `/api/pickupcreation/v2409/pickup` | `fleet/ups/pickup/create` | `fleet/ups/pickup/create/response` | `access_token`, `body`, `trans_id` |
| `CancelPickup` | DELETE | `/api/shipments/v2409/pickup/02` | `fleet/ups/pickup/cancel` | `fleet/ups/pickup/cancel/response` | `access_token`, `prn`, `trans_id` |
| `ListPickupPoliticalDivisions` | GET | `/api/pickup/v2409/countries/{value.json.country}` | `fleet/ups/pickup-division/list` | `fleet/ups/pickup-division/list/response` | `access_token`, `country`, `trans_id` |
| `FindPickupServiceCenters` | POST | `/api/pickup/v2409/servicecenterlocations` | `fleet/ups/pickup-service-center/search` | `fleet/ups/pickup-service-center/search/response` | `access_token`, `body`, `trans_id` |
| `UploadPaperlessDocument` | POST | `/api/paperlessdocuments/v2/upload` | `fleet/ups/paperless-document/upload` | `fleet/ups/paperless-document/upload/response` | `access_token`, `body`, `shipper_number`, `trans_id` |
| `PushPaperlessImage` | POST | `/api/paperlessdocuments/v2/image` | `fleet/ups/paperless-document/push` | `fleet/ups/paperless-document/push/response` | `access_token`, `body`, `shipper_number`, `trans_id` |
| `DeletePaperlessDocument` | DELETE | `/api/paperlessdocuments/v2/DocumentId/ShipperNumber` | `fleet/ups/paperless-document/delete` | `fleet/ups/paperless-document/delete/response` | `access_token`, `document_id`, `shipper_number`, `trans_id` |
| `GetQuantumViewEvents` | POST | `/api/quantumview/v3/events` | `fleet/ups/quantum-view/get` | `fleet/ups/quantum-view/get/response` | `access_token`, `body`, `trans_id` |
| `CheckInterceptEligibility` | GET | `/api/deliveryintercept/v2/eligibility/intercept/{value.json.id}` | `fleet/ups/intercept-eligibility/get` | `fleet/ups/intercept-eligibility/get/response` | `access_token`, `id`, `trans_id` |
| `GetInterceptCharges` | POST | `/api/deliveryintercept/v2/charges/{value.json.id}` | `fleet/ups/intercept-charges/get` | `fleet/ups/intercept-charges/get/response` | `access_token`, `body`, `id`, `trans_id` |
| `GetChemicalReferenceData` | POST | `/api/dangerousgoods/v2409/chemicalreferencedata` | `fleet/ups/dangerous-goods-chemical/get` | `fleet/ups/dangerous-goods-chemical/get/response` | `access_token`, `body`, `trans_id` |

## Deploy

Get the template card (JSON with `template` and `metadata`) from the broker, then deploy the connector:

```bash theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
mosquitto_pub -t '$SYS/Coreflux/Command' -m "-routeCode UPS_DEVELOPER_PORTAL"
```

The deployable connector from the REST API app, with `BASE_ADDRESS` already filled in:

```lot theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
DEFINE ROUTE UpsApi WITH TYPE REST_API
    ADD REST_API_CONFIG
        WITH BASE_ADDRESS "https://onlinetools.ups.com"
        WITH ENABLE_CLIENT "true"
        WITH USE_SSL "true"
        WITH REQUEST_TIMEOUT '60'
        WITH DEFAULT_CONTENT_TYPE "application/json"
    ADD EVENT TrackPackage
        WITH SOURCE_TOPIC "fleet/ups/track/get"
        WITH DESTINATION_TOPIC "fleet/ups/track/get/response"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/track/v1/details/{value.json.id}?{value.json.query}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
    ADD EVENT TrackShipment
        WITH SOURCE_TOPIC "fleet/ups/track-shipment/get"
        WITH DESTINATION_TOPIC "fleet/ups/track-shipment/get/response"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/track/v1/shipment/details/{value.json.id}?{value.json.query}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
    ADD EVENT TrackByReference
        WITH SOURCE_TOPIC "fleet/ups/track-reference/get"
        WITH DESTINATION_TOPIC "fleet/ups/track-reference/get/response"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/track/v1/reference/details/{value.json.id}?{value.json.query}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
    ADD EVENT SubscribeTrackAlert
        WITH SOURCE_TOPIC "fleet/ups/track-alert/create"
        WITH DESTINATION_TOPIC "fleet/ups/track-alert/create/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/track/v2/subscription/standard/package"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT SubscribeTrackAlertEnhanced
        WITH SOURCE_TOPIC "fleet/ups/track-alert-enhanced/create"
        WITH DESTINATION_TOPIC "fleet/ups/track-alert-enhanced/create/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/track/v2/subscription/enhanced/package"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT RateShipment
        WITH SOURCE_TOPIC "fleet/ups/rate/get"
        WITH DESTINATION_TOPIC "fleet/ups/rate/get/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/rating/v2409/Rate"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT ShopRates
        WITH SOURCE_TOPIC "fleet/ups/rate-shop/get"
        WITH DESTINATION_TOPIC "fleet/ups/rate-shop/get/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/rating/v2409/Shop"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT ShopRatesWithTransit
        WITH SOURCE_TOPIC "fleet/ups/rate-shop-transit/get"
        WITH DESTINATION_TOPIC "fleet/ups/rate-shop-transit/get/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/rating/v2409/Shoptimeintransit"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT ValidateAddress
        WITH SOURCE_TOPIC "fleet/ups/address/validate"
        WITH DESTINATION_TOPIC "fleet/ups/address/validate/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/addressvalidation/v2/3?{value.json.query}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT GetTransitTimes
        WITH SOURCE_TOPIC "fleet/ups/transit-time/get"
        WITH DESTINATION_TOPIC "fleet/ups/transit-time/get/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/shipments/v1/transittimes"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT FindLocations
        WITH SOURCE_TOPIC "fleet/ups/location/search"
        WITH DESTINATION_TOPIC "fleet/ups/location/search/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/locations/v3/search/availabilities/1"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT FindAccessPoints
        WITH SOURCE_TOPIC "fleet/ups/access-point/search"
        WITH DESTINATION_TOPIC "fleet/ups/access-point/search/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/locations/v3/search/availabilities/64"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT CreateShipment
        WITH SOURCE_TOPIC "fleet/ups/shipment/create"
        WITH DESTINATION_TOPIC "fleet/ups/shipment/create/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/shipments/v2409/ship"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT VoidShipment
        WITH SOURCE_TOPIC "fleet/ups/shipment/void"
        WITH DESTINATION_TOPIC "fleet/ups/shipment/void/response"
        WITH METHOD "DELETE"
        WITH ENDPOINT "/api/shipments/v2409/void/cancel/{value.json.id}?{value.json.query}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
    ADD EVENT RecoverLabel
        WITH SOURCE_TOPIC "fleet/ups/label/recover"
        WITH DESTINATION_TOPIC "fleet/ups/label/recover/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/labels/v1/recovery"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT QuoteLandedCost
        WITH SOURCE_TOPIC "fleet/ups/landed-cost/quote"
        WITH DESTINATION_TOPIC "fleet/ups/landed-cost/quote/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/landedcost/v1/quotes"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT RatePickup
        WITH SOURCE_TOPIC "fleet/ups/pickup/rate"
        WITH DESTINATION_TOPIC "fleet/ups/pickup/rate/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/shipments/v2409/pickup/{value.json.pickup_type}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT GetPendingPickups
        WITH SOURCE_TOPIC "fleet/ups/pickup-pending/get"
        WITH DESTINATION_TOPIC "fleet/ups/pickup-pending/get/response"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/shipments/v2409/pickup/{value.json.pickup_type}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "AccountNumber" "{value.json.account_number}"
    ADD EVENT CreatePickup
        WITH SOURCE_TOPIC "fleet/ups/pickup/create"
        WITH DESTINATION_TOPIC "fleet/ups/pickup/create/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/pickupcreation/v2409/pickup"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT CancelPickup
        WITH SOURCE_TOPIC "fleet/ups/pickup/cancel"
        WITH DESTINATION_TOPIC "fleet/ups/pickup/cancel/response"
        WITH METHOD "DELETE"
        WITH ENDPOINT "/api/shipments/v2409/pickup/02"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Prn" "{value.json.prn}"
    ADD EVENT ListPickupPoliticalDivisions
        WITH SOURCE_TOPIC "fleet/ups/pickup-division/list"
        WITH DESTINATION_TOPIC "fleet/ups/pickup-division/list/response"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/pickup/v2409/countries/{value.json.country}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
    ADD EVENT FindPickupServiceCenters
        WITH SOURCE_TOPIC "fleet/ups/pickup-service-center/search"
        WITH DESTINATION_TOPIC "fleet/ups/pickup-service-center/search/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/pickup/v2409/servicecenterlocations"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT UploadPaperlessDocument
        WITH SOURCE_TOPIC "fleet/ups/paperless-document/upload"
        WITH DESTINATION_TOPIC "fleet/ups/paperless-document/upload/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/paperlessdocuments/v2/upload"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "ShipperNumber" "{value.json.shipper_number}"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT PushPaperlessImage
        WITH SOURCE_TOPIC "fleet/ups/paperless-document/push"
        WITH DESTINATION_TOPIC "fleet/ups/paperless-document/push/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/paperlessdocuments/v2/image"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "ShipperNumber" "{value.json.shipper_number}"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT DeletePaperlessDocument
        WITH SOURCE_TOPIC "fleet/ups/paperless-document/delete"
        WITH DESTINATION_TOPIC "fleet/ups/paperless-document/delete/response"
        WITH METHOD "DELETE"
        WITH ENDPOINT "/api/paperlessdocuments/v2/DocumentId/ShipperNumber"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "ShipperNumber" "{value.json.shipper_number}"
            ADD "DocumentId" "{value.json.document_id}"
    ADD EVENT GetQuantumViewEvents
        WITH SOURCE_TOPIC "fleet/ups/quantum-view/get"
        WITH DESTINATION_TOPIC "fleet/ups/quantum-view/get/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/quantumview/v3/events"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT CheckInterceptEligibility
        WITH SOURCE_TOPIC "fleet/ups/intercept-eligibility/get"
        WITH DESTINATION_TOPIC "fleet/ups/intercept-eligibility/get/response"
        WITH METHOD "GET"
        WITH ENDPOINT "/api/deliveryintercept/v2/eligibility/intercept/{value.json.id}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "platformType" "XOLT"
            ADD "inquiryType" "U"
            ADD "Content-Type" "application/json"
    ADD EVENT GetInterceptCharges
        WITH SOURCE_TOPIC "fleet/ups/intercept-charges/get"
        WITH DESTINATION_TOPIC "fleet/ups/intercept-charges/get/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/deliveryintercept/v2/charges/{value.json.id}"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "platformType" "XOLT"
            ADD "inquiryType" "U"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
    ADD EVENT GetChemicalReferenceData
        WITH SOURCE_TOPIC "fleet/ups/dangerous-goods-chemical/get"
        WITH DESTINATION_TOPIC "fleet/ups/dangerous-goods-chemical/get/response"
        WITH METHOD "POST"
        WITH ENDPOINT "/api/dangerousgoods/v2409/chemicalreferencedata"
        WITH HEADERS
            ADD "Accept" "application/json"
            ADD "User-Agent" "Coreflux-Broker"
            ADD "Authorization" "Bearer {value.json.access_token}"
            ADD "transId" "{value.json.trans_id}"
            ADD "transactionSrc" "Coreflux-Broker"
            ADD "Content-Type" "application/json"
        WITH BODY "{value.json.body}"
```

Deploy it with `-addRoute` (do not include `ADD METADATA`).

## Usage example

Call `TrackPackage` by publishing a JSON payload to its request topic, and read the reply on the response topic:

```bash theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
mosquitto_sub -t 'fleet/ups/track/get/response' &
mosquitto_pub -t 'fleet/ups/track/get' -m '{"access_token": "<access_token>", "id": "<id>", "query": "<query>", "trans_id": "<trans_id>"}'
```

## Related

* [REST API Connectors](/latest/lot-language/routes/rest-api-routes)
* [REST API Apps catalog](/latest/lot-language/routes/rest-api-apps)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.