PipedreamHQ / PipedreamHQ/pipedream
[ACTION] DPD Shipping - Get Tracking Data with Weight (detail=3)
- Dominant language
- JavaScript
- Stars
- 11.7k
- Forks
- 5.8k
- Avg merge
- 3d 10h
- Merged PRs (30d)
- 102
Description
_for neople_
**Is there a specific app this action is for?**
DPD Shipping
**Please provide a link to the relevant API docs for the specific service / operation.**
DPD API documentation (general): https://www.dpd.com/wp-content/uploads/sites/235/2023/04/DPD-API-documentation-v1-2-1.pdf
---
## What should this action do?
Expand the existing **Get Tracking Data** action (or add a new action) to support retrieving **parcel weight** from the DPD API.
Currently, the integration uses the DPD LoginService + ParcelLifeCycleService endpoints and returns tracking status/history without weight data. Weight data is only returned when using `detail=3` (the "advanced" detail level) on the REST API.
---
## API Details
**Endpoint:** `GET /status/tracking`
**Authentication:** Bearer token — obtained first from `POST /auth/tokens` (username/password → JWT), then passed as `Authorization: Bearer {token}` header.
**Query parameters:**
| Parameter | Required | Description |
|-----------|----------|-------------|
| `pknr` | Yes | Parcel number(s), 14 digits. Separate multiple with `|`. Max 30 per request. |
| `detail` | Yes | Must be `3` to get weight data. Default `0` does not include weight. |
| `show_all` | Optional | `0` = latest status only (default), `1` = full event history |
| `lang` | Optional | Only relevant when `detail=0`, can be ignored when using `detail=3` |
**Example request:**
```
GET https://esiunta.dpd.lt/api/v1/status/tracking?pknr=12345678901234&detail=3&show_all=1
Authorization: Bearer {token}
Accept: application/json
```
**Response:** Array of parcel objects, each containing a `details` array. Entries where `statusCode` is `05` or `10` include the `Weight` field.
---
## Proposed action inputs
- **Country / Environment** (select): Lithuania / Latvia / Estonia (determines base URL); plus sandbox toggle
- - **Parcel number(s)** (`pknr`): 14-digit parcel label number(s), pipe-separated for multiple (max 30)
- - - **Detail level** (`detail`): default to `3` to include weight; or expose as a prop with `3` as default
- - - - **Show all events** (`show_all`): checkbox/boolean, default `false` (latest status only)
---
## Context
The existing Pipedream DPD integration supports:
- Single action: **Get Tracking Data** using `LoginService/V2_1/getAuth` + `ParcelLifeCycleService/V2_0/getTrackingData`
- - Accepts a 14-character parcel label number and returns tracking status/history
- - - Supports configurable message language
The Baltics platform uses a different REST API than the Geopost/Meta API used for Benelux. This request is specifically for the Baltics platform (LT/LV/EE). Weight data is a key business requirement — it appears in the response for parcels with `statusCode` `05` or `10` when `detail=3` is set.
Contributor guide
Research direction
Start by locating the existing DPD Get Tracking Data action and compare its LoginService/ParcelLifeCycleService flow with the linked DPD REST API documentation. Verify the Baltics authentication and tracking endpoints, then confirm completion by returning parcel weight from responses using detail=3 while preserving the existing tracking data behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100