Skip to main content

Package Tracking

4 API calls in this section.

Track Package by Tracking Number

Express Shipping / Order / Package Tracking
GET/express-shipping/order/track/GL1706371234567?language=en

API: Track Package by Tracking Number Endpoint: GET /express-shipping/order/track/{tracking_number} Purpose: Retrieve detailed package information by tracking number. Returns package status, payment information, and delivery details. Authentication: - Bearer token: Authorization: Bearer {{access_token}} (required) - API Key: X-API-Key: {{api_key}} (alternative authentication method) Path Parameters: - tracking_number (string, required): Package tracking number (format: GL followed by timestamp, e.g., GL1706371234567) Query Parameters: - language (optional): Preferred language for response messages (en, ar, ku) Business Logic: 1. Validate tenant has active express shipping service 2. Locate package using the provided tracking number 3. Verify access permissions (tenant-scoped) 4. Return comprehensive package information Package Status Values: - claimed - Package claimed by customer, pending pickup - received - Package received at facility - in_transit - Package in transit to destination - in_transit_international - Package in international transit - in_warehouse - Package at local warehouse - out_for_delivery - Package out for delivery - delivered - Package delivered to customer - exception - Delivery exception occurred Payment Status Values: - pending - Payment not yet made - paid - Payment completed - failed - Payment failed - refunded - Payment refunded Error Responses: 400 - Missing Tracking Number: 404 - Package Not Found: 403 - Access Denied: 500 - Internal Server Error:

Most OnDi APIs require an authenticated session or service token. Public endpoints are marked by their path and module context.
Request
curl
1curl --request GET "$ONDI_BASE_URL/express-shipping/order/track/GL1706371234567?language=en" \2  --header "X-EXPRESS-KEY: {{express_access_token}}"

Query parameters

languageOptional
query string

en

Preferred language for response messages (en, ar, ku)

Headers

X-EXPRESS-KEYOptional
header string

{{express_access_token}}

Short-lived JWT from OTP verification (required)

Responses

Success Response - Package Details200OK
Response body
json
1{2  "success": true,3  "data": {4    "tracking_number": "GL1706371234567",5    "order_id": "TREND-ORD-98765",6    "status": "in_transit",7    "payment_status": "paid",8    "declared_value": 125.5,9    "currency": "USD",10    "store_name": "Trendyol",11    "quantity": 3,12    "weight": 350,13    "delivery_fee": 15,14    "claimed_at": "2024-01-27T10:00:00Z",15    "created_at": "2024-01-27T10:00:00Z",16    "last_updated": "2024-01-28T14:30:00Z"17  }18}
Error - Package Not Found404Not Found
Response body
json
1{2  "success": false,3  "message": "Package with tracking number GL9999999999999 not found"4}
Error - Missing Tracking Number400Bad Request
Response body
json
1{2  "success": false,3  "message": "Missing required parameter: tracking_number"4}
404 - Package Not Found404
Response body
json
1{2  "success": false,3  "message": "Package with tracking number GL1706371234567 not found"4}
403 - Access Denied403
Response body
json
1{2  "success": false,3  "message": "Access denied. Package does not belong to your account."4}
500 - Internal Server Error500
Response body
json
1{2  "success": false,3  "message": "Failed to retrieve package details. Please try again."4}

Track Package by Order ID

Express Shipping / Order / Package Tracking
GET/express-shipping/order/track-by-order/TREND-ORD-98765?language=en

API: Track Package by Order ID Endpoint: GET /express-shipping/order/track-by-order/{order_id} Purpose: Retrieve minimal package tracking information by order ID. Returns current status, status history, payment status, claimed_at, and store_name. Authentication: - Bearer token: Authorization: Bearer {{access_token}} (required) Path Parameters: - order_id (string, required): Store order identifier (e.g., TREND-ORD-98765) Error Responses: 400 - Missing Order ID: 404 - Package Not Found: 403 - Express Shipping Not Configured:

Send a bearer token in the Authorization header for an authenticated OnDi user session.
Request
curl
1curl --request GET "$ONDI_BASE_URL/express-shipping/order/track-by-order/TREND-ORD-98765?language=en" \2  --header "Authorization: Bearer {{access_token}}"

Query parameters

languageOptional
query string

en

Preferred language for response messages (en, ar, ku)

Headers

AuthorizationOptional
header string

Bearer {{access_token}}

Bearer token authentication (required)

Responses

Success - Status by Order ID200OK
Response body
json
1{2  "success": true,3  "data": {4    "status": "claimed",5    "status_history": [],6    "payment_status": "pending",7    "claimed_at": "2024-01-15T10:30:00Z",8    "store_name": "Trendyol"9  }10}
Error - Package Not Found404Not Found
Response body
json
1{2  "success": false,3  "message": "Package with order_id TREND-ORD-99999 not found"4}
Error - Missing Order ID400Bad Request
Response body
json
1{2  "success": false,3  "message": "Missing required parameter: order_id"4}
403 - Express Shipping Not Configured403
Response body
json
1{2  "success": false,3  "message": "Express shipping service is not configured for this tenant"4}

List Customer Packages

Express Shipping / Order / Package Tracking
GET/express-shipping/order/customer/GAL1704067200000?customer_id=GAL1704067200000&language=en&limit=20&offset=0

API: List Customer Packages Endpoint: GET /express-shipping/order/customer/{customer_id} Purpose: Retrieve a list of all packages for a specific customer. Supports pagination and filtering. Authentication: - Bearer token: Authorization: Bearer {{access_token}} (required) - API Key: X-API-Key: {{api_key}} (alternative authentication method) Path Parameters: - customer_id (string, required): Customer identifier in the URL path Query Parameters: - language (string, optional): Preferred language for response messages (en, ar, ku) - limit (integer, optional): Maximum number of packages to return (default: 50, max: 100) - offset (integer, optional): Number of packages to skip for pagination (default: 0) - status (string, optional): Filter by package status (claimed, received, in_transit, delivered, etc.) Business Logic: 1. Validate tenant has active express shipping service 2. Verify customer exists and access permissions 3. Apply pagination and filtering 4. Return list of customer packages with summary information Error Responses: 400 - Missing Customer ID: 400 - Invalid Pagination: 404 - Customer Not Found: 500 - Internal Server Error:

Send a bearer token in the Authorization header for an authenticated OnDi user session.
Request
curl
1curl --request GET "$ONDI_BASE_URL/express-shipping/order/customer/GAL1704067200000?customer_id=GAL1704067200000&language=en&limit=20&offset=0" \2  --header "Authorization: Bearer {{access_token}}"

Query parameters

customer_idOptional
query string

GAL1704067200000

Customer identifier (required)

languageOptional
query string

en

Preferred language for response messages (en, ar, ku)

limitOptional
query string

20

Maximum number of packages to return (default: 50, max: 100)

offsetOptional
query string

0

Number of packages to skip for pagination (default: 0)

Headers

AuthorizationOptional
header string

Bearer {{access_token}}

Bearer token authentication (required)

Responses

Success Response - Package List200OK
Response body
json
1{2  "success": true,3  "data": {4    "packages": [5      {6        "tracking_number": "GL1706371234567",7        "order_id": "TREND-ORD-98765",8        "status": "in_transit",9        "payment_status": "paid",10        "declared_value": 125.5,11        "currency": "USD",12        "store_name": "Trendyol",13        "claimed_at": "2024-01-27T10:00:00Z",14        "created_at": "2024-01-27T10:00:00Z"15      },16      {17        "tracking_number": "GL1706371234568",18        "order_id": "AMZN-ORD-12345",19        "status": "delivered",20        "payment_status": "paid",21        "declared_value": 89.99,22        "currency": "USD",23        "store_name": "Amazon",24        "claimed_at": "2024-01-25T08:30:00Z",25        "created_at": "2024-01-25T08:30:00Z"26      }27    ],28    "total": 2,29    "limit": 20,30    "offset": 0,31    "has_more": false32  }33}
Success Response - Empty List200OK
Response body
json
1{2  "success": true,3  "data": {4    "packages": [],5    "total": 0,6    "limit": 20,7    "offset": 0,8    "has_more": false9  }10}
Error - Missing Customer ID400Bad Request
Response body
json
1{2  "success": false,3  "message": "Missing required parameter: customer_id"4}
400 - Invalid Pagination400
Response body
json
1{2  "success": false,3  "message": "Invalid pagination parameters. Limit must be between 1 and 100."4}
404 - Customer Not Found404
Response body
json
1{2  "success": false,3  "message": "Customer not found with ID: GAL1704067200000"4}
500 - Internal Server Error500
Response body
json
1{2  "success": false,3  "message": "Failed to retrieve customer packages. Please try again."4}
Express Shipping / Order / Package Tracking
GET/express-shipping/order/list?page=1&limit=20&search=GL123&customer_id=GAL1704067200000&status=claimed&payment_status=pending&language=en

API: List All Packages with Pagination and Search Endpoint: GET /express-shipping/order/list Purpose: Retrieve all packages for a tenant with comprehensive filtering, search, and pagination capabilities. Ideal for admin dashboards and package management interfaces. Authentication: - Bearer token: Authorization: Bearer {{access_token}} (required) - API Key: X-API-Key: {{api_key}} (alternative authentication method) Query Parameters: - page (integer, optional): Page number for pagination (default: 1) - limit (integer, optional): Maximum number of packages per page (default: 20, max: 100) - search (string, optional): Search by tracking number or order ID (case-insensitive partial match) - customer_id (string, optional): Filter by specific customer ID - status (string, optional): Filter by package status (claimed, received, in_transit, delivered, etc.) - payment_status (string, optional): Filter by payment status (pending, paid, failed, refunded) - language (string, optional): Preferred language for response messages (en, ar, ku) Business Logic: 1. Validate tenant has active express shipping service 2. Apply all filters and search criteria 3. Execute paginated query with proper sorting (newest first) 4. Include customer information for each package 5. Return comprehensive package list with pagination metadata Error Responses: 400 - Invalid Pagination: 403 - Express Shipping Not Configured: 404 - Customer Not Found (when filtering by customer_id): 500 - Internal Server Error: Usage Examples: 1. List all packages (first page): GET /express-shipping/order/list-all 2. Search by tracking number: GET /express-shipping/order/list-all?search=GL123 3. Filter by customer: GET /express-shipping/order/list-all?customer_id=GAL1704067200000 4. Filter by status: GET /express-shipping/order/list-all?status=claimed 5. Combine filters with pagination: GET /express-shipping/order/list-all?status=claimed&search=TREND&page=2&limit=10 6. Filter by payment status: GET /express-shipping/order/list-all?payment_status=pending&limit=50

Send a bearer token in the Authorization header for an authenticated OnDi user session.
Request
curl
1curl --request GET "$ONDI_BASE_URL/express-shipping/order/list?page=1&limit=20&search=GL123&customer_id=GAL1704067200000&status=claimed&payment_status=pending&language=en" \2  --header "Authorization: Bearer {{access_token}}"

Query parameters

pageOptional
query string

1

Page number for pagination (default: 1)

limitOptional
query string

20

Maximum number of packages per page (default: 20, max: 100)

searchOptional
query string

GL123

Search by tracking number or order ID (optional)

customer_idOptional
query string

GAL1704067200000

Filter by specific customer ID (optional)

statusOptional
query string

claimed

Filter by package status (optional)

payment_statusOptional
query string

pending

Filter by payment status (optional)

languageOptional
query string

en

Preferred language for response messages (en, ar, ku)

Headers

AuthorizationOptional
header string

Bearer {{access_token}}

Bearer token authentication (required)

Responses

Success Response - All Packages List200OK
Response body
json
1{2  "success": true,3  "data": {4    "packages": [5      {6        "tracking_number": "GL1706371234567",7        "order_id": "TREND-ORD-98765",8        "status": "claimed",9        "payment_status": "pending",10        "declared_value": 125.5,11        "currency": "USD",12        "store_name": "Trendyol",13        "weight": 1500,14        "quantity": 3,15        "claimed_at": "2024-01-27T10:00:00Z",16        "created_at": "2024-01-27T10:00:00Z",17        "updated_at": "2024-01-28T14:30:00Z",18        "customer": {19          "customer_id": "GAL1704067200000",20          "name": "John Doe",21          "email": "john@example.com",22          "phone": "+964751234567"23        }24      },25      {26        "tracking_number": "GL1706371234568",27        "order_id": "AMZN-ORD-12345",28        "status": "delivered",29        "payment_status": "paid",30        "declared_value": 89.99,31        "currency": "USD",32        "store_name": "Amazon",33        "weight": 800,34        "quantity": 1,35        "claimed_at": "2024-01-25T08:30:00Z",36        "created_at": "2024-01-25T08:30:00Z",37        "updated_at": "2024-01-26T12:15:00Z",38        "customer": {39          "customer_id": "GAL1704067200001",40          "name": "Jane Smith",41          "email": "jane@example.com",42          "phone": "+964751234568"43        }44      }45    ],46    "pagination": {47      "page": 1,48      "limit": 20,49      "total": 150,50      "total_pages": 851    }52  }53}
Success Response - Search Results200OK
Response body
json
1{2  "success": true,3  "data": {4    "packages": [5      {6        "tracking_number": "GL1234567890123",7        "order_id": "TREND-ORD-12345",8        "status": "in_transit",9        "payment_status": "paid",10        "declared_value": 75.25,11        "currency": "USD",12        "store_name": "Trendyol",13        "weight": 1200,14        "quantity": 2,15        "claimed_at": "2024-01-26T15:45:00Z",16        "created_at": "2024-01-26T15:45:00Z",17        "updated_at": "2024-01-27T09:20:00Z",18        "customer": {19          "customer_id": "GAL1704067200002",20          "name": "Ahmed Al-Mahmoud",21          "email": "ahmed@example.com",22          "phone": "+964751234569"23        }24      }25    ],26    "pagination": {27      "page": 1,28      "limit": 10,29      "total": 1,30      "total_pages": 131    }32  }33}
Success Response - Empty Results200OK
Response body
json
1{2  "success": true,3  "data": {4    "packages": [],5    "pagination": {6      "page": 1,7      "limit": 20,8      "total": 0,9      "total_pages": 010    }11  }12}
Error - Invalid Pagination400Bad Request
Response body
json
1{2  "success": false,3  "message": "Invalid pagination parameters. Page must be >= 1 and limit must be between 1 and 100."4}
Error - Express Shipping Not Configured403Forbidden
Response body
json
1{2  "success": false,3  "message": "Express shipping service is not configured for this tenant"4}
404 - Customer Not Found (when filtering by customer_id)404
Response body
json
1{2  "success": false,3  "message": "Customer not found with ID: GAL1704067200000"4}
500 - Internal Server Error500
Response body
json
1{2  "success": false,3  "message": "Failed to retrieve packages. Please try again."4}