Skip to content

Commit e538276

Browse files
authored
[Components] dachser new components (#18188)
1 parent 8c66e63 commit e538276

File tree

6 files changed

+291
-10
lines changed

6 files changed

+291
-10
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
import app from "../../dachser.app.mjs";
2+
3+
export default {
4+
name: "Get Delivery Order Status",
5+
description: "Retrieve the delivery order status using reference and customer details. [See the documentation](https://api-portal.dachser.com/bi.b2b.portal/api/library/deliveryorderstatus?6)",
6+
key: "dachser-get-delivery-order-status",
7+
version: "0.0.1",
8+
type: "action",
9+
props: {
10+
app,
11+
info: {
12+
type: "alert",
13+
alertType: "info",
14+
content: "At least one shipment reference or an order date is necessary to get the status.",
15+
},
16+
referenceNumber1: {
17+
type: "string",
18+
label: "Reference Number 1",
19+
description: "Reference number 1.",
20+
optional: true,
21+
},
22+
referenceNumber2: {
23+
type: "string",
24+
label: "Reference Number 2",
25+
description: "Reference number 2.",
26+
optional: true,
27+
},
28+
referenceNumber3: {
29+
type: "string",
30+
label: "Reference Number 3",
31+
description: "Reference number 3.",
32+
optional: true,
33+
},
34+
purchaseOrderNumber: {
35+
type: "string",
36+
label: "Purchase Order Number",
37+
description: "Purchase order number.",
38+
optional: true,
39+
},
40+
deliveryOrderDate: {
41+
type: "string",
42+
label: "Delivery Order Date",
43+
description: "Delivery order date in `YYYY-MM-DD` format.",
44+
optional: true,
45+
},
46+
eventCode: {
47+
type: "string",
48+
label: "Event Code",
49+
description: "Event code.",
50+
optional: true,
51+
},
52+
customerId: {
53+
propDefinition: [
54+
app,
55+
"customerId",
56+
],
57+
},
58+
acceptLanguage: {
59+
propDefinition: [
60+
app,
61+
"acceptLanguage",
62+
],
63+
},
64+
},
65+
async run({ $ }) {
66+
const {
67+
app,
68+
acceptLanguage,
69+
referenceNumber1,
70+
referenceNumber2,
71+
referenceNumber3,
72+
purchaseOrderNumber,
73+
deliveryOrderDate,
74+
eventCode,
75+
customerId,
76+
} = this;
77+
78+
const response = await app.getDeliveryOrderStatus({
79+
$,
80+
params: {
81+
"reference-number1": referenceNumber1,
82+
"reference-number2": referenceNumber2,
83+
"reference-number3": referenceNumber3,
84+
"purchase-order-number": purchaseOrderNumber,
85+
"delivery-order-date": deliveryOrderDate,
86+
"event-code": eventCode,
87+
"customer-id": customerId,
88+
},
89+
headers: {
90+
"Accept-Language": acceptLanguage,
91+
},
92+
});
93+
94+
$.export("$summary", `Successfully retrieved delivery order status for \`${response.deliveryOrders?.length ?? 0}\` delivery orders.`);
95+
96+
return response;
97+
},
98+
};
99+
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import app from "../../dachser.app.mjs";
2+
3+
export default {
4+
name: "Get Shipment History",
5+
description: "Retrieve the full history for a shipment by tracking number and customer ID. [See the documentation](https://api-portal.dachser.com/bi.b2b.portal/api/library/shipmenthistory?5)",
6+
key: "dachser-get-shipment-history",
7+
version: "0.0.1",
8+
type: "action",
9+
props: {
10+
app,
11+
trackingNumber: {
12+
propDefinition: [
13+
app,
14+
"trackingNumber",
15+
],
16+
},
17+
customerId: {
18+
propDefinition: [
19+
app,
20+
"customerId",
21+
],
22+
},
23+
acceptLanguage: {
24+
propDefinition: [
25+
app,
26+
"acceptLanguage",
27+
],
28+
},
29+
},
30+
async run({ $ }) {
31+
const {
32+
app,
33+
acceptLanguage,
34+
trackingNumber,
35+
customerId,
36+
} = this;
37+
38+
const response = await app.getShipmentHistory({
39+
$,
40+
params: {
41+
"tracking-number": trackingNumber,
42+
"customer-id": customerId,
43+
},
44+
headers: {
45+
"Accept-Language": acceptLanguage,
46+
},
47+
});
48+
49+
$.export("$summary", `Successfully retrieved shipment history for \`${response.shipments?.length ?? 0}\` shipments.`);
50+
51+
return response;
52+
},
53+
};
54+
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import app from "../../dachser.app.mjs";
2+
3+
export default {
4+
name: "Get Shipment Status",
5+
description: "Retrieve the current status for a shipment by tracking number and customer ID. [See the documentation](https://api-portal.dachser.com/bi.b2b.portal/api/library/shipmentstatus?1)",
6+
key: "dachser-get-shipment-status",
7+
version: "0.0.1",
8+
type: "action",
9+
props: {
10+
app,
11+
trackingNumber: {
12+
propDefinition: [
13+
app,
14+
"trackingNumber",
15+
],
16+
},
17+
customerId: {
18+
propDefinition: [
19+
app,
20+
"customerId",
21+
],
22+
},
23+
acceptLanguage: {
24+
propDefinition: [
25+
app,
26+
"acceptLanguage",
27+
],
28+
},
29+
},
30+
async run({ $ }) {
31+
const {
32+
app,
33+
acceptLanguage,
34+
trackingNumber,
35+
customerId,
36+
} = this;
37+
38+
const response = await app.getShipmentStatus({
39+
$,
40+
params: {
41+
"tracking-number": trackingNumber,
42+
"customer-id": customerId,
43+
},
44+
headers: {
45+
"Accept-Language": acceptLanguage,
46+
},
47+
});
48+
49+
$.export("$summary", `Successfully retrieved shipment status for \`${response.shipments?.length ?? 0}\` shipments.`);
50+
51+
return response;
52+
},
53+
};
54+

components/dachser/dachser.app.mjs

Lines changed: 73 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,79 @@
1+
import { axios } from "@pipedream/platform";
2+
13
export default {
24
type: "app",
35
app: "dachser",
4-
propDefinitions: {},
6+
propDefinitions: {
7+
trackingNumber: {
8+
type: "string",
9+
label: "Tracking Number",
10+
description: `The shipment tracking number. The search can be done by:
11+
12+
- DACHSER Customer order number
13+
- consignment number
14+
- Delivery Note Number
15+
- Purchase Order Number
16+
- SSCC (bar codes)
17+
- House Bill of Lading (HB/L)
18+
- House AirWay Bill (HAWB)
19+
- Container number
20+
- Invoice Number
21+
- Batch Number
22+
- Packing List Number.
23+
`,
24+
},
25+
customerId: {
26+
type: "string",
27+
label: "Customer ID",
28+
description: "Your Dachser customer identifier. Separate multiple values by comma.",
29+
optional: true,
30+
},
31+
acceptLanguage: {
32+
type: "string",
33+
label: "Accept-Language",
34+
description: "Translation of service code descriptions. (ISO 639-1 standard language codes.) Examples: `en-US`, `de-DE`, `fr-FR`.",
35+
optional: true,
36+
},
37+
},
538
methods: {
6-
// this.$auth contains connected account data
7-
authKeys() {
8-
console.log(Object.keys(this.$auth));
39+
getUrl(path) {
40+
return `https://api-gateway.dachser.com/rest/v2${path}`;
41+
},
42+
headers(headers) {
43+
const { api_token: apiToken } = this.$auth;
44+
return {
45+
"Accept": "application/json",
46+
"X-API-Key": apiToken,
47+
"Accept-Language": "en-US",
48+
...headers,
49+
};
50+
},
51+
makeRequest({
52+
$ = this, path, headers, ...args
53+
} = {}) {
54+
return axios($, {
55+
...args,
56+
url: this.getUrl(path),
57+
headers: this.headers(headers),
58+
});
59+
},
60+
getShipmentStatus(args = {}) {
61+
return this.makeRequest({
62+
path: "/shipmentstatus",
63+
...args,
64+
});
65+
},
66+
getShipmentHistory(args = {}) {
67+
return this.makeRequest({
68+
path: "/shipmenthistory",
69+
...args,
70+
});
71+
},
72+
getDeliveryOrderStatus(args = {}) {
73+
return this.makeRequest({
74+
path: "/deliveryorderstatus",
75+
...args,
76+
});
977
},
1078
},
11-
};
79+
};

components/dachser/package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pipedream/dachser",
3-
"version": "0.0.1",
3+
"version": "0.1.0",
44
"description": "Pipedream Dachser Components",
55
"main": "dachser.app.mjs",
66
"keywords": [
@@ -11,5 +11,8 @@
1111
"author": "Pipedream <[email protected]> (https://pipedream.com/)",
1212
"publishConfig": {
1313
"access": "public"
14+
},
15+
"dependencies": {
16+
"@pipedream/platform": "^3.1.0"
1417
}
15-
}
18+
}

pnpm-lock.yaml

Lines changed: 6 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)