-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreateExchangeShipment.ts
More file actions
95 lines (94 loc) · 3.82 KB
/
Copy pathcreateExchangeShipment.ts
File metadata and controls
95 lines (94 loc) · 3.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import {
DEFAULT_DATA_TYPES_FOR_SERVICES,
DEFAULT_PARAMETERS_FOR_SERVICES,
DEFAULT_SIGNATURE_FOR_SERVICES, postShipmentHelper
} from "../../helpers";
import {ActionSdk, HerculesFunctionContext} from "@code0-tech/hercules";
import { PrintingOptions } from "../../types/glsPrintingOptions";
import {AddressSchema} from "../../types/glsAddress";
import {ShipmentWithoutServices} from "../../types/glsShipment";
import {CustomContent} from "../../types/glsCustomContent";
import {ReturnOptions} from "../../types/glsReturnOptions";
import {CreateParcelsResponse} from "../../types/glsCreateParcelsResponse";
export default (sdk: ActionSdk) => {
return sdk.registerFunctionDefinitions(
{
definition: {
runtimeName: "createExchangeShipment",
documentation: [
{
code: "en-US",
content: "Delivers a new parcel while simultaneously picking up an existing one (exchange)."
}
],
displayMessage: [
{
code: "en-US",
content: "Create exchange shipment"
}
],
name: [
{
code: "en-US",
content: "Create exchange shipment",
}
],
description: [
{
code: "en-US",
content: "Delivers a new parcel while simultaneously picking up an existing one (exchange).",
}
],
signature: `(address: GLS_ADDRESS, ${DEFAULT_SIGNATURE_FOR_SERVICES}, expectedWeight?: number): GLS_CREATE_PARCELS_RESPONSE`,
parameters: [
{
runtimeName: "address",
name: [
{
code: "en-US",
content: "Address",
}
],
description: [
{
code: "en-US",
content: "The address of the exchange shipment.",
}
]
},
...DEFAULT_PARAMETERS_FOR_SERVICES,
{
runtimeName: "expectedWeight",
name: [
{
code: "en-US",
content: "Expected weight",
}
],
description: [
{
code: "en-US",
content: "The expected weight for the exchange shipment.",
}
]
}
],
linkedDataTypes: [
...DEFAULT_DATA_TYPES_FOR_SERVICES,
"GLS_ADDRESS"
]
},
handler: async (context: HerculesFunctionContext,
address: AddressSchema,
shipment: ShipmentWithoutServices, printingOptions: PrintingOptions, customContent?: CustomContent, returnOptions?: ReturnOptions,
expectedWeight?: number): Promise<CreateParcelsResponse> => {
return postShipmentHelper(context, [{
Exchange: {
Address: address,
ExpectedWeight: expectedWeight
}
}], shipment, printingOptions, customContent, returnOptions)
}
},
)
}