diff --git a/Integration/RESTMessageV2/UPS Tracking/README.md b/Integration/RESTMessageV2/UPS Tracking/README.md new file mode 100644 index 0000000000..371bff9c86 --- /dev/null +++ b/Integration/RESTMessageV2/UPS Tracking/README.md @@ -0,0 +1,13 @@ +This script calls the UPS tracking API. + +UPS Developer Account: +Sign up at https://developer.ups.com +Create an App to get credentials +1. Client ID +2. Client Secret + +How to use: +1. Replace YOUR_CLIENT_ID and YOUR_CLIENT_SECRET with your UPS credentials. +2. Use the sandbox URL (wwwcie.ups.com) for testing and production URL (onlinetools.ups.com) for live data. +3. You can move this logic into a Script Include and call it from a Flow, Business Rule, or Catalog Client Script. +4. For security, store credentials in a Connection & Credential Alias and reference them in the script instead of hardcoding. diff --git a/Integration/RESTMessageV2/UPS Tracking/trackUPS.js b/Integration/RESTMessageV2/UPS Tracking/trackUPS.js new file mode 100644 index 0000000000..d6128c1590 --- /dev/null +++ b/Integration/RESTMessageV2/UPS Tracking/trackUPS.js @@ -0,0 +1,43 @@ +(function executeUPSLookup() { + try { + var trackingNumber = '1Z12345E1512345676'; // replace or pass as a variable + + // Step 1: Get OAuth token from UPS + var tokenRequest = new sn_ws.RESTMessageV2(); + tokenRequest.setEndpoint('https://wwwcie.ups.com/security/v1/oauth/token'); + tokenRequest.setHttpMethod('POST'); + tokenRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + tokenRequest.setBasicAuth('YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET'); + tokenRequest.setRequestBody('grant_type=client_credentials'); + + var tokenResponse = tokenRequest.execute(); + var tokenBody = tokenResponse.getBody(); + var tokenObj = JSON.parse(tokenBody); + var accessToken = tokenObj.access_token; + + gs.info('UPS OAuth token retrieved successfully.'); + + // Step 2: Use token to request tracking info + var trackingRequest = new sn_ws.RESTMessageV2(); + trackingRequest.setEndpoint('https://wwwcie.ups.com/api/track/v1/details/' + trackingNumber); + trackingRequest.setHttpMethod('GET'); + trackingRequest.setRequestHeader('Authorization', 'Bearer ' + accessToken); + trackingRequest.setRequestHeader('transId', gs.generateGUID()); + trackingRequest.setRequestHeader('transactionSrc', 'ServiceNow'); + + var trackingResponse = trackingRequest.execute(); + var trackingBody = trackingResponse.getBody(); + var trackingObj = JSON.parse(trackingBody); + + gs.info('UPS Tracking Info: ' + JSON.stringify(trackingObj, null, 2)); + + // Example: log current status + if (trackingObj.trackResponse && trackingObj.trackResponse.shipment) { + var shipment = trackingObj.trackResponse.shipment[0]; + var status = shipment.package[0].activity[0].status.description; + gs.info('Current Status: ' + status); + } + } catch (ex) { + gs.error('Error pulling UPS tracking info: ' + ex.message); + } +})();