OTR Business Events API External - Version (9/29/2025)

Overview

The OTR Business Event API ingests over-the-road (OTR) business events produced by vendors and internal systems. Clients submit a typed payload (OTRBusinessEventInput) describing the event, including device/asset context, event category/type, measured values, a geolocation point, and a short time-series of supporting datapoints.

Authentication & Access

Signing libraries:
Use any AWS SDK SigV4 signer for your language

Protocol & Endpoint

(Your Gateway may route directly to the Lambda with an aws_proxy integration; the REST path above is the recommended public shape.)

Operation

Publish OTR Business Event

POST /OTRBusinessEvent

Submit a single OTR event.

Each environment has a separate URL

Environment Endpoint URL
1Betahttps://beta-na.api.freight-pulse.ats.amazon.dev/OTRBusinessEvent
2Gamma NAhttps://gamma-na.api.freight-pulse.ats.amazon.dev/OTRBusinessEvent
3Gamma EUhttps://gamma-eu.api.freight-pulse.ats.amazon.dev/OTRBusinessEvent
4Gamma JPhttps://gamma-jp.api.freight-pulse.ats.amazon.dev/OTRBusinessEvent
5Prod NAhttps://prod-na.api.freight-pulse.ats.amazon.dev/OTRBusinessEvent
6Prod EUhttps://prod-eu.api.freight-pulse.ats.amazon.dev/OTRBusinessEvent
7Prod JPhttps://prod-jp.api.freight-pulse.ats.amazon.dev/OTRBusinessEvent

Headers

Request Body

OTRBusinessEventInput

Success Response

Error Responses

Onboarding & Testing Requirements

Before sending data to production environments, API users must first onboard and test in Gamma:
  • Test in Gamma First: All API users must validate their implementation using the appropriate Gamma environment (NA, EU, or JP) before sending any data to Production
  • Production Deployment: Only after successful testing in Gamma should you begin sending data to Production endpoints

Gamma Testing Checklist:

Environment Progression:

This approach ensures data quality and reduces the risk of production issues.

Schema

OTRBusinessEventInput

Required fields are marked .

Field Type Required Description
1eventIdstring (UUID)Unique identifier for this event (often used for idempotency).
2eventTimestampstring (ISO-8601)When the event occurred at the source.
3assetIdstringVendor or canonical asset identifier.
4assetTypeAssetTypeAsset class (e.g., TRAILER).
5deviceIdstringHardware device identifier associated with the event.
6deviceManufacturerDeviceManufacturerDevice OEM (e.g., XIRGO, PHILLIPS).
7assetPartAssetPartAsset subsystem/part affected (e.g., TIRE).
8eventCategoryEventCategoryHigh-level category (MAINTENANCE, SAFETY, CARGO).
9eventTypeEventTypeSpecific event type (see enum).
10currentValuenumberCurrent observed value.
11triggerValuenumberThreshold/trigger value that caused the event.
12dataUnitDataUnitUnit for currentValue/triggerValue (e.g., PSI).
13triggerRulestringRule name/description that fired.
14dataPointsDataPoint[]Series of supporting datapoints (value/time/unit).
15geoPointGeoPointLatitude/longitude where the event was observed.
16vendorNameVendorNameEvent producer/vendor.
17additionalInformationAdditionalInformationVendor-specific extras (e.g., IMAGE_ID).
18versionintegerPayload schema/version from the producer.

DataPoint

Field Type Req Description
1valuenumberMeasured value.
2timeStampstring (ISO-8601)When this measurement was taken.
3dataUnitDataUnitUnit for the value.

GeoPoint

Field Type Req Description
1latitudenumberDecimal degrees.
2longitudenumberDecimal degrees.

AdditionalInformation

Field Type Req Description
1imageIdstringReference to an associated image/artifact.
2severitySeverityThe severity of the event

Enums

Enum Values
1DeviceManufacturerXIRGO, PHILLIPS
2AssetTypeTRAILER, TRACTOR, BOX_TRUCK, HOSTLER
3AssetPartTIRE, ABS, LIGHT, ENGINE, DOOR, CARGO_COMPARTMENT
4EventCategoryMAINTENANCE, SAFETY, CARGO
5EventTypeBRAKE_ABS_FAULT, BRAKE_EBPMS, COLD_INFLATION_PRESSURE, CONFIRMED_DOOR_OPEN, FAST_TIRE_LEAK, IDENTIFIED_PERSONNEL, LOW_TIRE_PRESSURE, PREDICTIVE_MAINTENANCE, TIRE_FAST_LEAK, TRAILER_AGGRESIVE_TURN, TRAILER_EMPTY, TRAILER_HARSH_ACCELERATION, TRAILER_HARSH_BRAKING, TRAILER_LOADED, TRAILER_MAJOR_COLLISION_ACCIDENT_DETECTION, TRAILER_ROLL_OVER_DETECTION, TRAILER_ROLL_OVER_RISK, TRAILER_VOLUME
6DataUnitPERCENT, PSI, BOOLEAN
7VendorNamePCT, AWS, APERIA_HALO, AXSCEND, UPTAKE, GEOTAB, BENDIX
8SeverityMINOR, MAJOR, CRITICAL

Examples

Full payload

{  
    "eventId": "d1c1b2f3-4455-4e4a-9f5a-111122223333",  
    "eventTimestamp": "2025-08-18T10:15:30Z",  
    "assetId": "V503768",  
    "assetType": "TRAILER",  
    "deviceId": "861836057633161",  
    "deviceManufacturer": "PHILLIPS",  
    "assetPart": "TIRE",  
    "eventCategory": "MAINTENANCE",  
    "eventType": "COLD_INFLATION_PRESSURE",  
    "currentValue": 72.0,  
    "triggerValue": 80.0,  
    "dataUnit": "PSI",  
    "triggerRule": "Event triggered when 3 datapoints crossed the 80 PSI threshold",
    "dataPoints": [  
        {"value": 78.0, "timeStamp": "2025-08-18T09:50:00Z", "dataUnit": "PSI"},  
        {"value": 75.5, "timeStamp": "2025-08-18T10:05:00Z", "dataUnit": "PSI"},  
        {"value": 72.0, "timeStamp": "2025-08-18T10:15:00Z", "dataUnit": "PSI"}  
    ],  
    "geoPoint": {"latitude": 33.4484, "longitude": -112.074},  
    "vendorName": "PCT",  
    "additionalInformation": {   
        "imageId": "img_20250818_101530_abc123",  
        "severity": "MINOR"  
    },  
    "version": 1  
}

Errors Catalog

HTTP Code When it happens What you should do
1400InvalidInputExceptionMissing required fields, bad enum, wrong types, invalid ranges, malformed timestamps, inconsistent units.Fix the payload; validate locally before retrying.
2400MalformedBodyBody isn't valid JSON/CBOR or can't be parsed.Send valid JSON/CBOR; check Content-Type.
3400UnsupportedOperationHitting the RPC without the required operation mapping.Use the documented URL/operation.
4401Unauthorized (rare with IAM auth)No auth provided or credentials disabled. Some gateways use 403 instead.Sign with SigV4 and ensure credentials are active.
5403AccessDeniedCaller's AWS account/user/role is not allow-listed.Use an allow-listed account/role or request access.
6403InvalidSignatureSigV4 signature invalid, wrong region/service, or clock skew.Re-sign in correct region/service; sync clock (±5 min).
7404NotFoundWrong path / environment URL, or resource route not found.Verify the environment URL and path.
8405MethodNotAllowedUsing GET/PUT/DELETE on this operation.Use POST.
9408RequestTimeoutUpstream timeout before Lambda processed request.Retry with backoff; reduce body size if large.
10415UnsupportedMediaTypeWrong Content-Type (e.g., JSON expected but CBOR sent, or vice-versa).Set Content-Type: application/json (or application/x-amz-cbor for CBOR deployments).
11500InternalServerExceptionUnhandled server error.Retry with backoff; contact support if persistent.
12502BadGateway / UpstreamErrorLambda/bridge mapping error; enrichment/dependency failed.Retry; if persistent, investigate dependency health.
13503ServiceUnavailableTemporary outage, cold start storm, or dependency unavailable.Retry with exponential backoff.
14504GatewayTimeoutRequest reached the gateway timeout limit.Retry; for large payloads, consider smaller batches.

Idempotency & Dedupe

(Behavioral; not explicitly encoded in the model)
Most deployments treat eventId as the idempotency key. Re-submitting the same payload with the same eventId will not create a second record; servers typically return 200 OK (ack) without side effects.

Notes for Implementers