# Attributes

EtaData `Object`

The main response object contains two main properties: `fixedData` and `dynamicData`.

## FixedData `Object`

Contains static information about the order that does not change during delivery. `null` if `isStaticDataRequired` is `false`.

### Child attributes

- order `Order`
  - Basic order details.
- customer `Customer`
  - Details of the customer receiving the order.
- restaurant `Restaurant`
  - Details of the pickup location.
- carrier `Carrier`
  - Details of the assigned delivery driver/carrier.
- isExpired `Boolean`
  - Flag indicating if the tracking link/data has expired.

### Order `Object`

Basic order details.

#### Child attributes

- orderNumber `String`
  - The public-facing order number.

### Customer `Object`

Details of the customer receiving the order.

#### Child attributes

- name `String`
  - Customer's name.
- address `String`
  - Customer's delivery address.
- latitude `Double`
  - Latitude of the delivery address.
- longitude `Double`
  - Longitude of the delivery address.

### Restaurant `Object`

Details of the pickup location.

#### Child attributes

- name `String`
  - Restaurant/store name.
- address `String`
  - Restaurant/store address.
- latitude `Double`
  - Latitude of the restaurant/store.
- longitude `Double`
  - Longitude of the restaurant/store.

### Carrier `Object`

Details of the assigned delivery driver/carrier.

#### Child attributes

- id `Integer`
  - The unique ID of the carrier. `-1` if not assigned.
- name `String`
  - The carrier's name. "Not assigned" if no carrier is assigned yet.
- phoneNumber `String`
  - The contact phone number. This may be the carrier's direct number, a masked proxy number, or the restaurant's number, depending on system settings.
- imagePath `String`
  - The file name or path for the carrier's profile image. Defaults to a placeholder if not set.

## DynamicData `Object`

Contains dynamic, real-time information about the order's progress and the carrier's location.

### Child attributes

- orderStatus `OrderStatus`
  - Contains various timestamps and the current status of the order.
- carrierLocation `CarrierLocation`
  - The real-time geographical coordinates of the carrier.
- estimatedTimeInMinutes `String`
  - The estimated time of arrival in minutes. Can be "INF" if ETA is not available.
- detailEta `DetailEta`
  - A more detailed breakdown of the ETA calculation.

### OrderStatus `Object`

Contains various timestamps and the current status of the order.

#### Child attributes

- startTime `String`
  - Timestamp when the carrier started the delivery. (`nullable`)
- pickedTime `String`
  - Timestamp when the order was picked up from the restaurant. (`nullable`)
- arrivedTime `String`
  - Timestamp when the carrier arrived at the customer location. (`nullable`)
- deliveryTime `String`
  - Timestamp when the order was successfully delivered. (`nullable`)
- failedDeliveryTime `String`
  - Timestamp of a failed delivery attempt. (`nullable`)
- status `String`
  - The current status of the order (e.g., `ASSIGNED`, `IN_TRANSIT`, `DELIVERED`).

### CarrierLocation `Object`

The real-time geographical coordinates of the carrier.

#### Child attributes

- latitude `Double`
  - The current latitude of the carrier.
- longitude `Double`
  - The current longitude of the carrier.

### DetailEta `Object`

A more detailed breakdown of the ETA calculation.

#### Child attributes

- estimatedTimeInMinutes `Double`
  - The final estimated time of arrival in minutes. `-1.0` indicates not available.
- pickUpTime `Double`
  - Estimated time in minutes for the carrier to reach the pickup location.
- travelDistance `Double`
  - The total travel distance for the delivery route in the system's configured units (e.g., miles or km).
- travelDistanceTime `Double`
  - The estimated time in minutes based purely on the travel distance and speed.
- deliveryTime `Double`
  - Estimated time in minutes to travel from the pickup location to the final delivery destination.
- orderPosition `Integer`
  - For batch/stacked orders, this is the position of the current order in the carrier's delivery queue. `-1` if not a batch order.
- startedOrder `Integer`
  - For batch/stacked orders, this indicates which order in the sequence the carrier is currently fulfilling. `-1` if not a batch order.
- calprog `String`
  - A debug string representing the internal steps and values used in the ETA calculation.

## EtaDataPublic Object

```json
{
    "fixedData": {
        "order": {
            "orderNumber": "your_order_number"
        },
        "customer": {
            "name": "John Doe",
            "address": "State Farm Arena, State Farm Drive, Atlanta, GA, USA",
            "latitude": 33.7574062,
            "longitude": -84.396233
        },
        "restaurant": {
            "name": "My Restaurant",
            "address": "5th Avenue, New York, NY, USA",
            "latitude": 40.7744123,
            "longitude": -73.9656103
        },
        "carrier": {
            "id": 321743,
            "name": "Alice Johnson",
            "phoneNumber": "+12101234567",
            "imagePath": "William_Martin.png"
        },
        "isExpired": false
    },
    "dynamicData": {
        "orderStatus": {
            "startTime": "2025-06-24T16:28:29.000Z",
            "pickedTime": "2025-06-24T16:28:33.000Z",
            "arrivedTime": null,
            "deliveryTime": null,
            "failedDeliveryTime": null,
            "status": "PICKED_UP"
        },
        "carrierLocation": {
            "latitude": 37.822334,
            "longitude": -81.224434
        },
        "estimatedTimeInMinutes": "12",
        "detailEta": {
            "estimatedTimeInMinutes": 12.0,
            "pickUpTime": 0.0,
            "travelDistance": 3745.3496704217405,
            "travelDistanceTime": 11.636290872102045,
            "deliveryTime": 0.0,
            "orderPosition": 1,
            "startedOrder": 0,
            "calprog": ""
        }
    }
}
```
