vtlab-generic-functions 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,311 @@
1
+ const Joi = require('joi');
2
+
3
+ module.exports = {
4
+ /* /orders/retrieve */
5
+ 'orderRetrieveRequest': Joi.object({
6
+ 'auth': Joi.object().required(),
7
+ 'logId': Joi.string().max(150).required().trim(),
8
+ 'payload': Joi.array().items().required()
9
+ }),
10
+ 'orderRetrieveResponse': Joi.object({
11
+ 'status': Joi.number().optional(),
12
+ 'totalError': Joi.number().optional(),
13
+ 'success': Joi.array().items({
14
+ 'services': Joi.array().items(Joi.object()).min(1).required(),
15
+ 'currentDeliveryFrameFrom': Joi.string().isoDate().required().trim(),
16
+ 'currentDeliveryFrameTo': Joi.string().isoDate().required().trim(),
17
+ 'currentDeliveryFrameTimezone': Joi.string().min(1).max(50).trim(),
18
+ 'serviceLevel': Joi.string().alphanum().max(50).trim(),
19
+ 'requestOrigin': Joi.string().max(20).trim(),
20
+ 'consumer': Joi.object({
21
+ 'personalId': Joi.string().max(24).trim(),
22
+ 'firstName': Joi.string().max(50).required().trim(),
23
+ 'lastName': Joi.string().max(100).trim().allow(''),
24
+ 'email': Joi.string().pattern(/([\x21-\x7E]+)@(\w+)[.](\w+)(([.](\w+))*)/).trim().allow(''),
25
+ 'countryPrefix': Joi.string().pattern(/\+\d{1,5}/).trim(),
26
+ 'phone': Joi.number().integer().max(99999999999999).required(),
27
+ 'alternativeContactName': Joi.string().max(100).allow('').trim(),
28
+ 'alternativeContactPhonePrefix': Joi.string().pattern(/\+\d{1,5}/).allow('').trim(),
29
+ 'alternativeContactPhone': Joi.number().integer().max(99999999999999).allow(''),
30
+ 'notes': Joi.string().max(300).allow('').trim(),
31
+ 'externalCode': Joi.string().max(40).allow('').trim(),
32
+ }).required(),
33
+ 'deliveryAddress': Joi.object({
34
+ 'street': Joi.string().max(150).required().trim(),
35
+ 'number': Joi.string().max(10).required().trim(),
36
+ 'city': Joi.string().max(50).required().trim(),
37
+ 'region': Joi.string().max(50).required().trim(),
38
+ 'postalCode': Joi.string().max(10).required().trim(),
39
+ 'country': Joi.string().max(30).required().trim(),
40
+ 'countryCode': Joi.string().pattern(/^[A-Z]{0,5}$/).allow('').trim(),
41
+ 'gps': Joi.object({
42
+ 'latitude': Joi.number().precision(8),
43
+ 'longitude': Joi.number().precision(8),
44
+ }),
45
+ 'additionalInfo': Joi.string().max(150).allow('').trim(),
46
+ 'extraNotes': Joi.string().max(300).allow('').trim(),
47
+ 'googleMapsExtraData': Joi.object(),
48
+ }).required(),
49
+ 'docReference': Joi.string().max(50).allow('').trim().optional(),
50
+ 'docReferenceDate': Joi.string().isoDate().trim().optional(),
51
+ 'extraInfo': Joi.object(),
52
+ 'customStatus': Joi.string().max(50).allow('').trim().optional(),
53
+ 'marketplace': Joi.object({
54
+ 'uuid': Joi.string().max(50).allow('').trim(),
55
+ 'order': Joi.string().allow('').trim()
56
+ }),
57
+ 'jobOrigin': Joi.object({
58
+ 'contact': Joi.object({
59
+ 'personalId': Joi.string().max(24).trim(),
60
+ 'firstName': Joi.string().max(50).required().trim(),
61
+ 'lastName': Joi.string().max(100).trim().allow(''),
62
+ 'email': Joi.string().email({minDomainSegments: 2}).max(150).allow('').trim(),
63
+ 'countryPrefix': Joi.string().pattern(/\+\d{1,5}/).required().trim(),
64
+ 'phone': Joi.number().integer().max(99999999999999).required(),
65
+ 'alternativeContactName': Joi.string().max(100).allow('').trim(),
66
+ 'alternativeContactPhonePrefix': Joi.string().pattern(/\+\d{1,5}/).allow('').trim(),
67
+ 'alternativeContactPhone': Joi.number().integer().max(99999999999999).allow(''),
68
+ 'notes': Joi.string().max(300).allow('').trim(),
69
+ 'externalCode': Joi.string().max(40).allow('').trim(),
70
+ }).required(),
71
+ 'address': Joi.object({
72
+ 'street': Joi.string().max(150).required().trim(),
73
+ 'number': Joi.string().max(10).required().trim(),
74
+ 'city': Joi.string().max(50).required().trim(),
75
+ 'region': Joi.string().max(50).required().trim(),
76
+ 'postalCode': Joi.string().max(10).required().trim(),
77
+ 'country': Joi.string().max(30).required().trim(),
78
+ 'countryCode': Joi.string().pattern(/^[A-Z]{0,5}$/).trim(),
79
+ 'gps': Joi.object({
80
+ 'latitude': Joi.number().precision(8),
81
+ 'longitude': Joi.number().precision(8),
82
+ }).optional(),
83
+ 'additionalInfo': Joi.string().max(150).allow('').trim(),
84
+ 'extraNotes': Joi.string().max(300).allow('').trim(),
85
+ 'googleMapsExtraData': Joi.object(),
86
+ }).required(),
87
+ 'from': Joi.string().isoDate().required().trim(),
88
+ 'to': Joi.string().isoDate().required().trim(),
89
+ 'timezone': Joi.string().min(1).max(50).trim(),
90
+ }).optional(),
91
+ }).optional(),
92
+ 'error': Joi.array().optional()
93
+ }),
94
+
95
+ /* /orders/confirm */
96
+ 'orderConfirmRequest': Joi.object({
97
+ 'auth': Joi.object().required(),
98
+ 'logId': Joi.string().max(150).required().trim(),
99
+ 'payload': Joi.array().items().required()
100
+ }),
101
+ 'orderConfirmResponse': Joi.object({
102
+ 'status': Joi.number().optional(),
103
+ 'totalError': Joi.number().optional(),
104
+ 'success': Joi.array().items({
105
+ '_id': Joi.string().alphanum().min(24).max(24).required()
106
+ }).optional(),
107
+ 'error': Joi.array().optional()
108
+ }),
109
+
110
+ /* /orders/tracking */
111
+ 'orderTrackingRequest': Joi.object({
112
+ 'auth': Joi.object().required(),
113
+ 'logId': Joi.string().max(150).required().trim(),
114
+ 'payload': Joi.array().items().required()
115
+ }),
116
+ 'orderTrackingResponse': Joi.object({
117
+ 'status': Joi.number().optional(),
118
+ 'totalError': Joi.number().optional(),
119
+ 'success': Joi.array().items({
120
+ '_id': Joi.string().alphanum().min(24).max(24).required()
121
+ }).optional(),
122
+ 'error': Joi.array().optional()
123
+ }),
124
+
125
+ /* /orders/cancel */
126
+ 'orderCancelRequest': Joi.object({
127
+ 'auth': Joi.object().required(),
128
+ 'logId': Joi.string().max(150).required().trim(),
129
+ 'payload': Joi.array().items().required()
130
+ }),
131
+ 'orderCancelResponse': Joi.object({
132
+ 'status': Joi.number().optional(),
133
+ 'totalError': Joi.number().optional(),
134
+ 'success': Joi.array().items({
135
+ '_id': Joi.string().alphanum().min(24).max(24).required(),
136
+ 'message': Joi.string().max(300).allow('').trim()
137
+ }).optional(),
138
+ 'error': Joi.array().optional()
139
+ }),
140
+
141
+ /* /orders/new */
142
+ 'orderNewRequest': Joi.object({
143
+ 'auth': Joi.object().required(),
144
+ 'logId': Joi.string().max(150).required().trim(),
145
+ 'payload': Joi.array().items().required()
146
+ }),
147
+ 'orderNewResponse': Joi.object({
148
+ 'status': Joi.number().optional(),
149
+ 'totalError': Joi.number().optional(),
150
+ 'success': Joi.array().items({
151
+ '_id': Joi.string().alphanum().min(24).max(24).required(),
152
+ 'message': Joi.string().allow('').trim()
153
+ }).optional(),
154
+ 'error': Joi.array().optional()
155
+ }),
156
+
157
+ /* /orders */
158
+ 'orderListRequest': Joi.object({
159
+ 'auth': Joi.object().required(),
160
+ 'logId': Joi.string().max(150).required().trim(),
161
+ 'payload': Joi.array().items().required()
162
+ }),
163
+ 'orderListResponse': Joi.object({
164
+ 'status': Joi.number().optional(),
165
+ 'totalError': Joi.number().optional(),
166
+ 'success': Joi.array().items({
167
+ '_id': Joi.string().alphanum().min(24).max(24).required(),
168
+ 'trackingId': Joi.string().required(),
169
+ 'label': Joi.string().allow('').optional()
170
+ }).optional(),
171
+ 'error': Joi.array().optional()
172
+ }),
173
+
174
+ /* /labels */
175
+ 'labelsListRequest': Joi.object({
176
+ 'auth': Joi.object().required(),
177
+ 'logId': Joi.string().max(150).required().trim(),
178
+ 'payload': Joi.array().items().required()
179
+ }),
180
+ 'labelsListResponse': Joi.object({
181
+ 'status': Joi.number().optional(),
182
+ 'totalError': Joi.number().optional(),
183
+ 'success': Joi.array().items({
184
+ '_id': Joi.string().alphanum().min(24).max(24).required(),
185
+ 'label': Joi.string().max(50).required()
186
+ }).optional(),
187
+ 'error': Joi.array().optional()
188
+ }),
189
+
190
+ /* /pod */
191
+ 'podListRequest': Joi.object({
192
+ 'auth': Joi.object().required(),
193
+ 'logId': Joi.string().max(150).required().trim(),
194
+ 'payload': Joi.array().items().required()
195
+ }),
196
+ 'podListResponse': Joi.object({
197
+ 'status': Joi.number().optional(),
198
+ 'totalError': Joi.number().optional(),
199
+ 'success': Joi.array().items({
200
+ '_id': Joi.string().alphanum().min(24).max(24).required(),
201
+ 'pod': Joi.string().required()
202
+ }).optional(),
203
+ 'error': Joi.array().optional()
204
+ }),
205
+
206
+ /* /states */
207
+ 'statesListRequest': Joi.object({
208
+ 'auth': Joi.object().required(),
209
+ 'logId': Joi.string().max(150).required().trim(),
210
+ 'payload': Joi.array().items().required()
211
+ }),
212
+ 'statesListResponse': Joi.object({
213
+ 'status': Joi.number().optional(),
214
+ 'totalError': Joi.number().optional(),
215
+ 'success': Joi.array().items({
216
+ '_id': Joi.string().min(1).max(100).required(),
217
+ 'state': Joi.object({
218
+ 'carrier': Joi.string().min(3).max(50).required(),
219
+ 'name': Joi.string().min(1).required(),
220
+ 'code': Joi.string().allow('').optional(),
221
+ 'description': Joi.string().max(500).allow('').optional(),
222
+ 'date': Joi.string().isoDate().required(),
223
+ 'extraInfo': Joi.object().optional(),
224
+ 'timezone': Joi.string().min(1).max(50).trim().optional(),
225
+ }),
226
+ 'pod': Joi.string().max(50).optional()
227
+ }).optional(),
228
+ 'error': Joi.array().optional()
229
+ }),
230
+
231
+ 'dayCloseRequest': Joi.object({
232
+ 'auth': Joi.object().required(),
233
+ 'logId': Joi.string().max(150).required().trim(),
234
+ 'payload': Joi.array().items().required()
235
+ }),
236
+ 'dayCloseResponse': Joi.object({
237
+ 'Shipments': Joi.array().items({
238
+ 'Origin': Joi.string().required(),
239
+ 'Customer': Joi.string().max(50).required(),
240
+ 'Year': Joi.string().max(50).required(),
241
+ 'Tracking': Joi.string().max(50).required()
242
+ }).optional(),
243
+ 'Report': Joi.string().required()
244
+ }),
245
+ 'dayCloseResponseGeneric': Joi.object({
246
+ 'status': Joi.number().optional(),
247
+ 'totalError': Joi.number().optional(),
248
+ 'success': Joi.array().items({
249
+ 'reference': Joi.string().optional(),
250
+ 'message': Joi.string().max(300).allow('').trim().optional()
251
+ }).optional(),
252
+ 'error': Joi.array().optional(),
253
+ 'billOfLanding': Joi.string().optional()
254
+ }),
255
+
256
+ 'incidencesResponse': Joi.object({
257
+ 'status': Joi.number().optional(),
258
+ 'totalError': Joi.number().optional(),
259
+ 'success': Joi.array().items({
260
+ '_id': Joi.string().alphanum().min(24).max(24).required(),
261
+ 'CodIncidencia': Joi.string().allow('').optional(),
262
+ 'Descripcion': Joi.string().required(),
263
+ 'Fecha': Joi.string().isoDate().required().trim(),
264
+ }).optional(),
265
+ 'error': Joi.array().optional()
266
+ }),
267
+
268
+ /* JobEvent */
269
+ 'jobEvent': Joi.object().keys({
270
+ job: Joi.string().required(),
271
+ user: Joi.string().required(),
272
+ usertype: Joi.string().valid('user', 'auto').required(),
273
+ account: Joi.string().required(),
274
+ type: Joi.string().optional(),
275
+ description: Joi.object().keys({
276
+ es: Joi.string().optional(),
277
+ en: Joi.string().optional()
278
+ }).required(),
279
+ createdAt: Joi.date().required(),
280
+ updatedAt: Joi.date().required()
281
+ }).required(),
282
+
283
+
284
+ /* JobEvent */
285
+ 'integrationMessages': Joi.object().keys({
286
+ environment: Joi.string().valid('production', 'develop', 'demo', 'staging', 'testing', 'uat').required(),
287
+ uuid: Joi.string().required(),
288
+ message: Joi.string().max(300).truncate().required(),
289
+ code: Joi.string().required(),
290
+ process: Joi.string().required(),
291
+ type: Joi.string().valid('error', 'success', 'state').required(),
292
+ job: Joi.string().optional(),
293
+ additionalInfo: Joi.string().max(2000).truncate().allow('').optional()
294
+ }).required(),
295
+
296
+ /* generic */
297
+ 'genericRequest': Joi.object({
298
+ 'auth': Joi.object().required(),
299
+ 'logId': Joi.string().max(150).required().trim(),
300
+ 'payload': Joi.array().items().required()
301
+ }),
302
+ 'genericResponse': Joi.object({
303
+ 'status': Joi.number().optional(),
304
+ 'totalError': Joi.number().optional(),
305
+ 'success': Joi.array().items({
306
+ 'reference': Joi.string().required(),
307
+ 'message': Joi.string().max(300).allow('').trim()
308
+ }).optional(),
309
+ 'error': Joi.array().optional()
310
+ })
311
+ };