PipedreamHQ / PipedreamHQ/pipedream

[ACTION] DPD Shipping - Get Tracking Data with Weight (detail=3)

Open
#21,321 5 comments 0 reactions 0 assignees View on GitHub
action enhancement good first issue help wanted triaged
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.