@ikonintegration/module-contractor-api 1.0.4 → 1.0.6

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.
package/dist/Api.js ADDED
@@ -0,0 +1,899 @@
1
+ "use strict";
2
+ /* eslint-disable */
3
+ /* tslint:disable */
4
+ /*
5
+ * ---------------------------------------------------------------
6
+ * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##
7
+ * ## ##
8
+ * ## AUTHOR: acacode ##
9
+ * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##
10
+ * ---------------------------------------------------------------
11
+ */
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.Api = exports.HttpClient = exports.ContentType = exports.ListSubmissionsParams1TypeEnum = exports.ListSubmissionsParams1StatusEnum = exports.TypeEnum1 = exports.StatusEnum = exports.ListContractorsParams1TypeEnum = exports.TypeEnum = exports.GuestAttachmentSchemaContentTypeEnum = exports.GetPdfResponseSchemaContentTypeEnum = exports.SubmissionCodeItemSchemaSectionEnum = exports.UpdateSubmissionSchemaTypeEnum = exports.ExpenseInputSchemaTransportationTypeEnum = exports.ExpenseInputSchemaMealTypeEnum = exports.ExpenseInputSchemaTypeEnum = exports.CreateSubmissionSchemaTypeEnum = exports.UpdateContractorStatusSchemaStatusEnum = void 0;
17
+ /**
18
+ * The contractor's local status. Set to 'active' to enable or 'disabled' to disable the account.
19
+ * @example "active"
20
+ */
21
+ var UpdateContractorStatusSchemaStatusEnum;
22
+ (function (UpdateContractorStatusSchemaStatusEnum) {
23
+ UpdateContractorStatusSchemaStatusEnum["Active"] = "active";
24
+ UpdateContractorStatusSchemaStatusEnum["Disabled"] = "disabled";
25
+ })(UpdateContractorStatusSchemaStatusEnum || (exports.UpdateContractorStatusSchemaStatusEnum = UpdateContractorStatusSchemaStatusEnum = {}));
26
+ /**
27
+ * Submission type
28
+ * @example "Submission"
29
+ */
30
+ var CreateSubmissionSchemaTypeEnum;
31
+ (function (CreateSubmissionSchemaTypeEnum) {
32
+ CreateSubmissionSchemaTypeEnum["Submission"] = "Submission";
33
+ CreateSubmissionSchemaTypeEnum["Reimbursement"] = "Reimbursement";
34
+ })(CreateSubmissionSchemaTypeEnum || (exports.CreateSubmissionSchemaTypeEnum = CreateSubmissionSchemaTypeEnum = {}));
35
+ /**
36
+ * Expense type
37
+ * @example "Accommodation"
38
+ */
39
+ var ExpenseInputSchemaTypeEnum;
40
+ (function (ExpenseInputSchemaTypeEnum) {
41
+ ExpenseInputSchemaTypeEnum["Accommodation"] = "Accommodation";
42
+ ExpenseInputSchemaTypeEnum["Meal"] = "Meal";
43
+ ExpenseInputSchemaTypeEnum["Mileage"] = "Mileage";
44
+ ExpenseInputSchemaTypeEnum["Transportation"] = "Transportation";
45
+ ExpenseInputSchemaTypeEnum["Other"] = "Other";
46
+ })(ExpenseInputSchemaTypeEnum || (exports.ExpenseInputSchemaTypeEnum = ExpenseInputSchemaTypeEnum = {}));
47
+ /**
48
+ * Meal type (Meal expenses)
49
+ * @example "Lunch"
50
+ */
51
+ var ExpenseInputSchemaMealTypeEnum;
52
+ (function (ExpenseInputSchemaMealTypeEnum) {
53
+ ExpenseInputSchemaMealTypeEnum["Breakfast"] = "Breakfast";
54
+ ExpenseInputSchemaMealTypeEnum["Lunch"] = "Lunch";
55
+ ExpenseInputSchemaMealTypeEnum["Dinner"] = "Dinner";
56
+ })(ExpenseInputSchemaMealTypeEnum || (exports.ExpenseInputSchemaMealTypeEnum = ExpenseInputSchemaMealTypeEnum = {}));
57
+ /**
58
+ * Transportation type (Transportation expenses)
59
+ * @example "Taxi"
60
+ */
61
+ var ExpenseInputSchemaTransportationTypeEnum;
62
+ (function (ExpenseInputSchemaTransportationTypeEnum) {
63
+ ExpenseInputSchemaTransportationTypeEnum["AirTravel"] = "Air travel";
64
+ ExpenseInputSchemaTransportationTypeEnum["Taxi"] = "Taxi";
65
+ ExpenseInputSchemaTransportationTypeEnum["Ferry"] = "Ferry";
66
+ ExpenseInputSchemaTransportationTypeEnum["Rental"] = "Rental";
67
+ ExpenseInputSchemaTransportationTypeEnum["Other"] = "Other";
68
+ })(ExpenseInputSchemaTransportationTypeEnum || (exports.ExpenseInputSchemaTransportationTypeEnum = ExpenseInputSchemaTransportationTypeEnum = {}));
69
+ /** Submission type */
70
+ var UpdateSubmissionSchemaTypeEnum;
71
+ (function (UpdateSubmissionSchemaTypeEnum) {
72
+ UpdateSubmissionSchemaTypeEnum["Submission"] = "Submission";
73
+ UpdateSubmissionSchemaTypeEnum["Reimbursement"] = "Reimbursement";
74
+ })(UpdateSubmissionSchemaTypeEnum || (exports.UpdateSubmissionSchemaTypeEnum = UpdateSubmissionSchemaTypeEnum = {}));
75
+ /** The section to assign the code to */
76
+ var SubmissionCodeItemSchemaSectionEnum;
77
+ (function (SubmissionCodeItemSchemaSectionEnum) {
78
+ SubmissionCodeItemSchemaSectionEnum["Service"] = "Service";
79
+ SubmissionCodeItemSchemaSectionEnum["Reimbursement"] = "Reimbursement";
80
+ })(SubmissionCodeItemSchemaSectionEnum || (exports.SubmissionCodeItemSchemaSectionEnum = SubmissionCodeItemSchemaSectionEnum = {}));
81
+ /** Content type */
82
+ var GetPdfResponseSchemaContentTypeEnum;
83
+ (function (GetPdfResponseSchemaContentTypeEnum) {
84
+ GetPdfResponseSchemaContentTypeEnum["ApplicationPdf"] = "application/pdf";
85
+ })(GetPdfResponseSchemaContentTypeEnum || (exports.GetPdfResponseSchemaContentTypeEnum = GetPdfResponseSchemaContentTypeEnum = {}));
86
+ /**
87
+ * Content type (must be application/pdf for guest)
88
+ * @example "application/pdf"
89
+ */
90
+ var GuestAttachmentSchemaContentTypeEnum;
91
+ (function (GuestAttachmentSchemaContentTypeEnum) {
92
+ GuestAttachmentSchemaContentTypeEnum["ApplicationPdf"] = "application/pdf";
93
+ })(GuestAttachmentSchemaContentTypeEnum || (exports.GuestAttachmentSchemaContentTypeEnum = GuestAttachmentSchemaContentTypeEnum = {}));
94
+ /**
95
+ * Search field type: name for begins_with match, email for exact match
96
+ * @example "name"
97
+ */
98
+ var TypeEnum;
99
+ (function (TypeEnum) {
100
+ TypeEnum["Name"] = "name";
101
+ TypeEnum["Email"] = "email";
102
+ })(TypeEnum || (exports.TypeEnum = TypeEnum = {}));
103
+ /**
104
+ * Search field type: name for begins_with match, email for exact match
105
+ * @example "name"
106
+ */
107
+ var ListContractorsParams1TypeEnum;
108
+ (function (ListContractorsParams1TypeEnum) {
109
+ ListContractorsParams1TypeEnum["Name"] = "name";
110
+ ListContractorsParams1TypeEnum["Email"] = "email";
111
+ })(ListContractorsParams1TypeEnum || (exports.ListContractorsParams1TypeEnum = ListContractorsParams1TypeEnum = {}));
112
+ /**
113
+ * Filter by submission status
114
+ * @example "Submitted"
115
+ */
116
+ var StatusEnum;
117
+ (function (StatusEnum) {
118
+ StatusEnum["Draft"] = "Draft";
119
+ StatusEnum["Submitted"] = "Submitted";
120
+ StatusEnum["AdministratorApproved"] = "Administrator_Approved";
121
+ StatusEnum["Rejected"] = "Rejected";
122
+ StatusEnum["PaymentPending"] = "Payment_Pending";
123
+ StatusEnum["Paid"] = "Paid";
124
+ })(StatusEnum || (exports.StatusEnum = StatusEnum = {}));
125
+ /**
126
+ * Filter by submission type
127
+ * @example "Submission"
128
+ */
129
+ var TypeEnum1;
130
+ (function (TypeEnum1) {
131
+ TypeEnum1["Submission"] = "Submission";
132
+ TypeEnum1["Reimbursement"] = "Reimbursement";
133
+ })(TypeEnum1 || (exports.TypeEnum1 = TypeEnum1 = {}));
134
+ /**
135
+ * Filter by submission status
136
+ * @example "Submitted"
137
+ */
138
+ var ListSubmissionsParams1StatusEnum;
139
+ (function (ListSubmissionsParams1StatusEnum) {
140
+ ListSubmissionsParams1StatusEnum["Draft"] = "Draft";
141
+ ListSubmissionsParams1StatusEnum["Submitted"] = "Submitted";
142
+ ListSubmissionsParams1StatusEnum["AdministratorApproved"] = "Administrator_Approved";
143
+ ListSubmissionsParams1StatusEnum["Rejected"] = "Rejected";
144
+ ListSubmissionsParams1StatusEnum["PaymentPending"] = "Payment_Pending";
145
+ ListSubmissionsParams1StatusEnum["Paid"] = "Paid";
146
+ })(ListSubmissionsParams1StatusEnum || (exports.ListSubmissionsParams1StatusEnum = ListSubmissionsParams1StatusEnum = {}));
147
+ /**
148
+ * Filter by submission type
149
+ * @example "Submission"
150
+ */
151
+ var ListSubmissionsParams1TypeEnum;
152
+ (function (ListSubmissionsParams1TypeEnum) {
153
+ ListSubmissionsParams1TypeEnum["Submission"] = "Submission";
154
+ ListSubmissionsParams1TypeEnum["Reimbursement"] = "Reimbursement";
155
+ })(ListSubmissionsParams1TypeEnum || (exports.ListSubmissionsParams1TypeEnum = ListSubmissionsParams1TypeEnum = {}));
156
+ const axios_1 = __importDefault(require("axios"));
157
+ var ContentType;
158
+ (function (ContentType) {
159
+ ContentType["Json"] = "application/json";
160
+ ContentType["FormData"] = "multipart/form-data";
161
+ ContentType["UrlEncoded"] = "application/x-www-form-urlencoded";
162
+ ContentType["Text"] = "text/plain";
163
+ })(ContentType || (exports.ContentType = ContentType = {}));
164
+ class HttpClient {
165
+ constructor({ securityWorker, secure, format, ...axiosConfig } = {}) {
166
+ this.securityData = null;
167
+ this.setSecurityData = (data) => {
168
+ this.securityData = data;
169
+ };
170
+ this.request = async ({ secure, path, type, query, format, body, ...params }) => {
171
+ const secureParams = ((typeof secure === 'boolean' ? secure : this.secure) &&
172
+ this.securityWorker &&
173
+ (await this.securityWorker(this.securityData))) ||
174
+ {};
175
+ const requestParams = this.mergeRequestParams(params, secureParams);
176
+ const responseFormat = format || this.format || undefined;
177
+ if (type === ContentType.FormData && body && body !== null && typeof body === 'object') {
178
+ body = this.createFormData(body);
179
+ }
180
+ if (type === ContentType.Text && body && body !== null && typeof body !== 'string') {
181
+ body = JSON.stringify(body);
182
+ }
183
+ return this.instance
184
+ .request({
185
+ ...requestParams,
186
+ headers: {
187
+ ...(requestParams.headers || {}),
188
+ ...(type ? { 'Content-Type': type } : {}),
189
+ },
190
+ params: query,
191
+ responseType: responseFormat,
192
+ data: body,
193
+ url: path,
194
+ })
195
+ .then(response => response.data);
196
+ };
197
+ this.instance = axios_1.default.create({ ...axiosConfig, baseURL: axiosConfig.baseURL || 'http://localhost:8080' });
198
+ this.secure = secure;
199
+ this.format = format;
200
+ this.securityWorker = securityWorker;
201
+ }
202
+ mergeRequestParams(params1, params2) {
203
+ const method = params1.method || (params2 && params2.method);
204
+ return {
205
+ ...this.instance.defaults,
206
+ ...params1,
207
+ ...(params2 || {}),
208
+ headers: {
209
+ ...((method && this.instance.defaults.headers[method.toLowerCase()]) || {}),
210
+ ...(params1.headers || {}),
211
+ ...((params2 && params2.headers) || {}),
212
+ },
213
+ };
214
+ }
215
+ stringifyFormItem(formItem) {
216
+ if (typeof formItem === 'object' && formItem !== null) {
217
+ return JSON.stringify(formItem);
218
+ }
219
+ else {
220
+ return `${formItem}`;
221
+ }
222
+ }
223
+ createFormData(input) {
224
+ if (input instanceof FormData) {
225
+ return input;
226
+ }
227
+ return Object.keys(input || {}).reduce((formData, key) => {
228
+ const property = input[key];
229
+ const propertyContent = property instanceof Array ? property : [property];
230
+ for (const formItem of propertyContent) {
231
+ const isFileType = formItem instanceof Blob || formItem instanceof File;
232
+ formData.append(key, isFileType ? formItem : this.stringifyFormItem(formItem));
233
+ }
234
+ return formData;
235
+ }, new FormData());
236
+ }
237
+ }
238
+ exports.HttpClient = HttpClient;
239
+ /**
240
+ * @title Contractor Module API
241
+ * @version 1.0.6
242
+ * @baseUrl http://localhost:8080
243
+ * @contact Ikon Integration <ikon@ikonintegration.com> (http://example.com)
244
+ */
245
+ class Api extends HttpClient {
246
+ constructor() {
247
+ super(...arguments);
248
+ this.code = {
249
+ /**
250
+ * @description Creates a new charging code associated with a department. Only Super Administrators can create codes.
251
+ *
252
+ * @tags Codes
253
+ * @name CreateCode
254
+ * @summary Create Code
255
+ * @request POST:/code
256
+ * @secure
257
+ */
258
+ createCode: (data, params = {}) => this.request({
259
+ path: `/code`,
260
+ method: 'POST',
261
+ body: data,
262
+ secure: true,
263
+ type: ContentType.Json,
264
+ format: 'json',
265
+ ...params,
266
+ }),
267
+ /**
268
+ * @description Updates an existing charging code description. Only Super Administrators can update codes.
269
+ *
270
+ * @tags Codes
271
+ * @name UpdateCode
272
+ * @summary Update Code
273
+ * @request PUT:/code/{codeID}
274
+ * @secure
275
+ */
276
+ updateCode: (codeId, data, params = {}) => this.request({
277
+ path: `/code/${codeId}`,
278
+ method: 'PUT',
279
+ body: data,
280
+ secure: true,
281
+ type: ContentType.Json,
282
+ format: 'json',
283
+ ...params,
284
+ }),
285
+ /**
286
+ * @description Deletes a charging code. Prevents deletion if the code is referenced by existing submissions. Only Super Administrators can delete codes.
287
+ *
288
+ * @tags Codes
289
+ * @name DeleteCode
290
+ * @summary Delete Code
291
+ * @request DELETE:/code/{codeID}
292
+ * @secure
293
+ */
294
+ deleteCode: (codeId, params = {}) => this.request({
295
+ path: `/code/${codeId}`,
296
+ method: 'DELETE',
297
+ secure: true,
298
+ format: 'json',
299
+ ...params,
300
+ }),
301
+ };
302
+ this.codes = {
303
+ /**
304
+ * @description Returns all codes or codes filtered by department. Administrators and above can list codes.
305
+ *
306
+ * @tags Codes
307
+ * @name ListCodes
308
+ * @summary List Codes
309
+ * @request GET:/codes
310
+ * @secure
311
+ */
312
+ listCodes: (params = {}) => this.request({
313
+ path: `/codes`,
314
+ method: 'GET',
315
+ secure: true,
316
+ format: 'json',
317
+ ...params,
318
+ }),
319
+ };
320
+ this.contractor = {
321
+ /**
322
+ * @description Creates a new contractor account. Requires a unique email address and at least one job rate. Only Administrators and Super Administrators can create contractor accounts.
323
+ *
324
+ * @tags Contractors
325
+ * @name CreateContractor
326
+ * @summary Create Contractor
327
+ * @request POST:/contractor
328
+ * @secure
329
+ */
330
+ createContractor: (data, params = {}) => this.request({
331
+ path: `/contractor`,
332
+ method: 'POST',
333
+ body: data,
334
+ secure: true,
335
+ type: ContentType.Json,
336
+ format: 'json',
337
+ ...params,
338
+ }),
339
+ /**
340
+ * @description View a contractor profile. Contractors can view their own profile (includes effective rates). Administrators can view any contractor profile.
341
+ *
342
+ * @tags Contractors
343
+ * @name GetContractor
344
+ * @summary View Contractor Profile
345
+ * @request GET:/contractor/{userID}
346
+ * @secure
347
+ */
348
+ getContractor: (userId, params = {}) => this.request({
349
+ path: `/contractor/${userId}`,
350
+ method: 'GET',
351
+ secure: true,
352
+ format: 'json',
353
+ ...params,
354
+ }),
355
+ /**
356
+ * @description Sets user-specific rate maximums for a contractor. Only Administrators and Super Administrators can set rates. Values must be positive numbers with up to two decimal places.
357
+ *
358
+ * @tags Contractors
359
+ * @name UpdateRates
360
+ * @summary Set Contractor Rates
361
+ * @request PUT:/contractor/{userID}/rates
362
+ * @secure
363
+ */
364
+ updateRates: (userId, data, params = {}) => this.request({
365
+ path: `/contractor/${userId}/rates`,
366
+ method: 'PUT',
367
+ body: data,
368
+ secure: true,
369
+ type: ContentType.Json,
370
+ format: 'json',
371
+ ...params,
372
+ }),
373
+ /**
374
+ * @description Triggers a password reset for the specified contractor. Only Administrators and Super Administrators can trigger password resets.
375
+ *
376
+ * @tags Contractors
377
+ * @name CreateResetPassword
378
+ * @summary Reset Contractor Password
379
+ * @request POST:/contractor/{userID}/reset-password
380
+ * @secure
381
+ */
382
+ createResetPassword: (userId, params = {}) => this.request({
383
+ path: `/contractor/${userId}/reset-password`,
384
+ method: 'POST',
385
+ secure: true,
386
+ format: 'json',
387
+ ...params,
388
+ }),
389
+ /**
390
+ * @description Sets a contractor's local status to active or disabled. Disabling prevents all API access while preserving the IDM account. Only Administrators and Super Administrators can toggle status.
391
+ *
392
+ * @tags Contractors
393
+ * @name UpdateStatus
394
+ * @summary Enable/Disable Contractor
395
+ * @request PUT:/contractor/{userID}/status
396
+ * @secure
397
+ */
398
+ updateStatus: (userId, data, params = {}) => this.request({
399
+ path: `/contractor/${userId}/status`,
400
+ method: 'PUT',
401
+ body: data,
402
+ secure: true,
403
+ type: ContentType.Json,
404
+ format: 'json',
405
+ ...params,
406
+ }),
407
+ };
408
+ this.contractors = {
409
+ /**
410
+ * @description Search contractors by name (partial match) or email (exact match). Minimum 2 characters required.
411
+ *
412
+ * @tags Contractors
413
+ * @name ListContractors
414
+ * @summary Search Contractors
415
+ * @request GET:/contractors
416
+ * @secure
417
+ */
418
+ listContractors: (query, params = {}) => this.request({
419
+ path: `/contractors`,
420
+ method: 'GET',
421
+ query: query,
422
+ secure: true,
423
+ format: 'json',
424
+ ...params,
425
+ }),
426
+ };
427
+ this.department = {
428
+ /**
429
+ * @description Creates a new department. Requires a name (1-150 chars) and contact emails (max 10). SYSADMIN only.
430
+ *
431
+ * @tags Departments
432
+ * @name CreateDepartment
433
+ * @summary Create Department
434
+ * @request POST:/department
435
+ * @secure
436
+ */
437
+ createDepartment: (data, params = {}) => this.request({
438
+ path: `/department`,
439
+ method: 'POST',
440
+ body: data,
441
+ secure: true,
442
+ type: ContentType.Json,
443
+ format: 'json',
444
+ ...params,
445
+ }),
446
+ /**
447
+ * @description Updates an existing department name and/or contact emails. SYSADMIN only.
448
+ *
449
+ * @tags Departments
450
+ * @name UpdateDepartment
451
+ * @summary Update Department
452
+ * @request PUT:/department/{departmentID}
453
+ * @secure
454
+ */
455
+ updateDepartment: (departmentId, data, params = {}) => this.request({
456
+ path: `/department/${departmentId}`,
457
+ method: 'PUT',
458
+ body: data,
459
+ secure: true,
460
+ type: ContentType.Json,
461
+ format: 'json',
462
+ ...params,
463
+ }),
464
+ /**
465
+ * @description Deletes a department. Prevents deletion if department has active codes or associated administrators. SYSADMIN only.
466
+ *
467
+ * @tags Departments
468
+ * @name DeleteDepartment
469
+ * @summary Delete Department
470
+ * @request DELETE:/department/{departmentID}
471
+ * @secure
472
+ */
473
+ deleteDepartment: (departmentId, params = {}) => this.request({
474
+ path: `/department/${departmentId}`,
475
+ method: 'DELETE',
476
+ secure: true,
477
+ format: 'json',
478
+ ...params,
479
+ }),
480
+ /**
481
+ * @description Associates an administrator with a department. Each administrator can only belong to one department. SYSADMIN only.
482
+ *
483
+ * @tags Departments
484
+ * @name CreateAdmin
485
+ * @summary Associate Admin with Department
486
+ * @request POST:/department/{departmentID}/admin
487
+ * @secure
488
+ */
489
+ createAdmin: (departmentId, data, params = {}) => this.request({
490
+ path: `/department/${departmentId}/admin`,
491
+ method: 'POST',
492
+ body: data,
493
+ secure: true,
494
+ type: ContentType.Json,
495
+ format: 'json',
496
+ ...params,
497
+ }),
498
+ /**
499
+ * @description Removes an administrator association from a department. SYSADMIN only.
500
+ *
501
+ * @tags Departments
502
+ * @name DeleteAdmin
503
+ * @summary Remove Admin from Department
504
+ * @request DELETE:/department/{departmentID}/admin/{userID}
505
+ * @secure
506
+ */
507
+ deleteAdmin: (departmentId, userId, params = {}) => this.request({
508
+ path: `/department/${departmentId}/admin/${userId}`,
509
+ method: 'DELETE',
510
+ secure: true,
511
+ format: 'json',
512
+ ...params,
513
+ }),
514
+ };
515
+ this.departments = {
516
+ /**
517
+ * @description Returns all departments. For ADMIN/SYSADMIN users returns full department data. For lower roles (USER, ACCOUNTANT, NONE) returns only departmentID and name.
518
+ *
519
+ * @tags Departments
520
+ * @name ListDepartments
521
+ * @summary List All Departments
522
+ * @request GET:/departments
523
+ * @secure
524
+ */
525
+ listDepartments: (params = {}) => this.request({
526
+ path: `/departments`,
527
+ method: 'GET',
528
+ secure: true,
529
+ format: 'json',
530
+ ...params,
531
+ }),
532
+ };
533
+ this.settings = {
534
+ /**
535
+ * @description Retrieves system settings. Administrators have read-only access. Super Administrators have full access.
536
+ *
537
+ * @tags Settings
538
+ * @name ListSettings
539
+ * @summary Get System Settings
540
+ * @request GET:/settings
541
+ * @secure
542
+ */
543
+ listSettings: (params = {}) => this.request({
544
+ path: `/settings`,
545
+ method: 'GET',
546
+ secure: true,
547
+ format: 'json',
548
+ ...params,
549
+ }),
550
+ /**
551
+ * @description Updates the system-wide mileage rate. Only Super Administrators can modify system settings.
552
+ *
553
+ * @tags Settings
554
+ * @name UpdateRates
555
+ * @summary Update Mileage Rate
556
+ * @request PUT:/settings/rates
557
+ * @secure
558
+ */
559
+ updateRates: (data, params = {}) => this.request({
560
+ path: `/settings/rates`,
561
+ method: 'PUT',
562
+ body: data,
563
+ secure: true,
564
+ type: ContentType.Json,
565
+ format: 'json',
566
+ ...params,
567
+ }),
568
+ /**
569
+ * @description Updates all system-wide expense maximums (accommodation, meals, transportation). Only Super Administrators can modify system settings.
570
+ *
571
+ * @tags Settings
572
+ * @name UpdateMaximums
573
+ * @summary Update Expense Maximums
574
+ * @request PUT:/settings/maximums
575
+ * @secure
576
+ */
577
+ updateMaximums: (data, params = {}) => this.request({
578
+ path: `/settings/maximums`,
579
+ method: 'PUT',
580
+ body: data,
581
+ secure: true,
582
+ type: ContentType.Json,
583
+ format: 'json',
584
+ ...params,
585
+ }),
586
+ /**
587
+ * @description Updates the reminder interval (in days) for pending submission notifications. Only Super Administrators can modify system settings.
588
+ *
589
+ * @tags Settings
590
+ * @name UpdateReminders
591
+ * @summary Update Reminder Interval
592
+ * @request PUT:/settings/reminders
593
+ * @secure
594
+ */
595
+ updateReminders: (data, params = {}) => this.request({
596
+ path: `/settings/reminders`,
597
+ method: 'PUT',
598
+ body: data,
599
+ secure: true,
600
+ type: ContentType.Json,
601
+ format: 'json',
602
+ ...params,
603
+ }),
604
+ };
605
+ this.submission = {
606
+ /**
607
+ * @description Creates a new draft submission for the authenticated contractor. Validates invoice number uniqueness, calculates totals, and validates expenses against configured maximums.
608
+ *
609
+ * @tags Submissions
610
+ * @name CreateSubmission
611
+ * @summary Create draft submission
612
+ * @request POST:/submission
613
+ * @secure
614
+ */
615
+ createSubmission: (data, params = {}) => this.request({
616
+ path: `/submission`,
617
+ method: 'POST',
618
+ body: data,
619
+ secure: true,
620
+ type: ContentType.Json,
621
+ format: 'json',
622
+ ...params,
623
+ }),
624
+ /**
625
+ * @description Returns a single submission with all invoices, expenses, and assigned codes in a single DynamoDB query using an ElectroDB collection. Access is scoped by role: contractors see only their own, admins see their department, accountants/superadmins see any.
626
+ *
627
+ * @tags Submissions
628
+ * @name GetSubmission
629
+ * @summary View submission detail
630
+ * @request GET:/submission/{submissionID}
631
+ * @secure
632
+ */
633
+ getSubmission: (submissionId, params = {}) => this.request({
634
+ path: `/submission/${submissionId}`,
635
+ method: 'GET',
636
+ secure: true,
637
+ format: 'json',
638
+ ...params,
639
+ }),
640
+ /**
641
+ * @description Updates an existing submission. Edit permissions are determined by the caller role and the submission status. Contractors can fully edit Draft/Rejected submissions and update only PO on Submitted/Administrator_Approved. Admins can edit non-calculated fields on non-Paid submissions. Recalculates totals when line items change.
642
+ *
643
+ * @tags Submissions
644
+ * @name UpdateSubmission
645
+ * @summary Update submission
646
+ * @request PUT:/submission/{submissionID}
647
+ * @secure
648
+ */
649
+ updateSubmission: (submissionId, data, params = {}) => this.request({
650
+ path: `/submission/${submissionId}`,
651
+ method: 'PUT',
652
+ body: data,
653
+ secure: true,
654
+ type: ContentType.Json,
655
+ format: 'json',
656
+ ...params,
657
+ }),
658
+ /**
659
+ * @description Deletes a submission and all related invoices, expenses, and codes. Admin/SuperAdmin only. Cannot delete paid submissions. Notifies the contractor and any reviewing accountant.
660
+ *
661
+ * @tags Submissions
662
+ * @name DeleteSubmission
663
+ * @summary Delete submission
664
+ * @request DELETE:/submission/{submissionID}
665
+ * @secure
666
+ */
667
+ deleteSubmission: (submissionId, params = {}) => this.request({
668
+ path: `/submission/${submissionId}`,
669
+ method: 'DELETE',
670
+ secure: true,
671
+ format: 'json',
672
+ ...params,
673
+ }),
674
+ /**
675
+ * @description Admin: transitions Submitted → Administrator_Approved (notifies accountants + contractor). Accountant: transitions Administrator_Approved → Payment_Pending (notifies contractor).
676
+ *
677
+ * @tags Submissions
678
+ * @name CreateApprove
679
+ * @summary Approve a submission
680
+ * @request POST:/submission/{submissionID}/approve
681
+ * @secure
682
+ */
683
+ createApprove: (submissionId, params = {}) => this.request({
684
+ path: `/submission/${submissionId}/approve`,
685
+ method: 'POST',
686
+ secure: true,
687
+ format: 'json',
688
+ ...params,
689
+ }),
690
+ /**
691
+ * @description Assigns codes to Service and/or Reimbursement sections of a submission with optional notes. Only codes belonging to the submission's assigned department are allowed. Admin only.
692
+ *
693
+ * @tags Submissions
694
+ * @name UpdateCodes
695
+ * @summary Assign codes to submission sections
696
+ * @request PUT:/submission/{submissionID}/codes
697
+ * @secure
698
+ */
699
+ updateCodes: (submissionId, data, params = {}) => this.request({
700
+ path: `/submission/${submissionId}/codes`,
701
+ method: 'PUT',
702
+ body: data,
703
+ secure: true,
704
+ type: ContentType.Json,
705
+ format: 'json',
706
+ ...params,
707
+ }),
708
+ /**
709
+ * @description Validates file constraints (size, type, count) and returns a presigned S3 URL for uploading a file attachment to a submission line item. Supports both authenticated users (max 10 MB, any type, max 5 files per line item) and guest submissions (PDF only, max 1 MB, max 1 file per line item).
710
+ *
711
+ * @tags Submissions
712
+ * @name CreateFile
713
+ * @summary Get presigned upload URL for a file attachment
714
+ * @request POST:/submission/{submissionID}/file
715
+ * @secure
716
+ */
717
+ createFile: (submissionId, data, params = {}) => this.request({
718
+ path: `/submission/${submissionId}/file`,
719
+ method: 'POST',
720
+ body: data,
721
+ secure: true,
722
+ type: ContentType.Json,
723
+ format: 'json',
724
+ ...params,
725
+ }),
726
+ /**
727
+ * @description Returns a presigned S3 URL for downloading a file attachment associated with a submission line item.
728
+ *
729
+ * @tags Submissions
730
+ * @name GetFile
731
+ * @summary Get presigned download URL for a file attachment
732
+ * @request GET:/submission/{submissionID}/file/{fileID}
733
+ * @secure
734
+ */
735
+ getFile: (submissionId, fileId, params = {}) => this.request({
736
+ path: `/submission/${submissionId}/file/${fileId}`,
737
+ method: 'GET',
738
+ secure: true,
739
+ format: 'json',
740
+ ...params,
741
+ }),
742
+ /**
743
+ * @description Transitions a Payment_Pending submission to Paid. Only Accountants may perform this action. Notifies the approving administrator.
744
+ *
745
+ * @tags Submissions
746
+ * @name CreatePaid
747
+ * @summary Mark a submission as paid
748
+ * @request POST:/submission/{submissionID}/paid
749
+ * @secure
750
+ */
751
+ createPaid: (submissionId, params = {}) => this.request({
752
+ path: `/submission/${submissionId}/paid`,
753
+ method: 'POST',
754
+ secure: true,
755
+ format: 'json',
756
+ ...params,
757
+ }),
758
+ /**
759
+ * @description Generates and returns a PDF summary of the submission including invoices, expenses, and assigned codes. Returns the PDF as a base64-encoded string.
760
+ *
761
+ * @tags Submissions
762
+ * @name GetPdf
763
+ * @summary Generate submission summary PDF
764
+ * @request GET:/submission/{submissionID}/pdf
765
+ * @secure
766
+ */
767
+ getPdf: (submissionId, params = {}) => this.request({
768
+ path: `/submission/${submissionId}/pdf`,
769
+ method: 'GET',
770
+ secure: true,
771
+ format: 'json',
772
+ ...params,
773
+ }),
774
+ /**
775
+ * @description Updates the PO number on a submission. Contractors can update PO on Submitted or Administrator_Approved submissions. Admins can update PO on any non-Paid submission.
776
+ *
777
+ * @tags Submissions
778
+ * @name PutSubmission
779
+ * @summary Update submission PO number
780
+ * @request PUT:/submission/{submissionID}/po
781
+ * @secure
782
+ */
783
+ putSubmission: (submissionId, data, params = {}) => this.request({
784
+ path: `/submission/${submissionId}/po`,
785
+ method: 'PUT',
786
+ body: data,
787
+ secure: true,
788
+ type: ContentType.Json,
789
+ format: 'json',
790
+ ...params,
791
+ }),
792
+ /**
793
+ * @description Reassigns a submission to a new department. Removes all codes from the original department. Notifies new department admins and the contractor. Admin/SuperAdmin only.
794
+ *
795
+ * @tags Submissions
796
+ * @name CreateReassign
797
+ * @summary Reassign submission to a different department
798
+ * @request POST:/submission/{submissionID}/reassign
799
+ * @secure
800
+ */
801
+ createReassign: (submissionId, data, params = {}) => this.request({
802
+ path: `/submission/${submissionId}/reassign`,
803
+ method: 'POST',
804
+ body: data,
805
+ secure: true,
806
+ type: ContentType.Json,
807
+ format: 'json',
808
+ ...params,
809
+ }),
810
+ /**
811
+ * @description Admin rejects a Submitted submission; Accountant rejects an Administrator_Approved submission. RSA-sourced submissions cannot be rejected. Notifies the contractor.
812
+ *
813
+ * @tags Submissions
814
+ * @name CreateReject
815
+ * @summary Reject a submission
816
+ * @request POST:/submission/{submissionID}/reject
817
+ * @secure
818
+ */
819
+ createReject: (submissionId, params = {}) => this.request({
820
+ path: `/submission/${submissionId}/reject`,
821
+ method: 'POST',
822
+ secure: true,
823
+ format: 'json',
824
+ ...params,
825
+ }),
826
+ /**
827
+ * @description Transitions a Draft or Rejected submission to Submitted. Only the owning contractor may submit. Routes the submission to department administrators and sends notifications.
828
+ *
829
+ * @tags Submissions
830
+ * @name CreateSubmit
831
+ * @summary Submit a draft or rejected submission
832
+ * @request POST:/submission/{submissionID}/submit
833
+ * @secure
834
+ */
835
+ createSubmit: (submissionId, params = {}) => this.request({
836
+ path: `/submission/${submissionId}/submit`,
837
+ method: 'POST',
838
+ secure: true,
839
+ format: 'json',
840
+ ...params,
841
+ }),
842
+ /**
843
+ * @description Public endpoint for guest contractors to submit a single invoice without authentication. Requires reCAPTCHA verification. The submission goes directly to Submitted status (no Draft). The attachment field is optional — if omitted, the frontend should upload the file separately via POST /submission/{submissionID}/file after creation.
844
+ *
845
+ * @tags Submissions
846
+ * @name CreateGuest
847
+ * @summary Submit guest invoice
848
+ * @request POST:/submission/guest
849
+ * @secure
850
+ */
851
+ createGuest: (data, params = {}) => this.request({
852
+ path: `/submission/guest`,
853
+ method: 'POST',
854
+ body: data,
855
+ secure: true,
856
+ type: ContentType.Json,
857
+ format: 'json',
858
+ ...params,
859
+ }),
860
+ };
861
+ this.submissions = {
862
+ /**
863
+ * @description Search submissions with role-based scoping. Contractors see only their own submissions. Administrators see submissions for their department. Accountants and Super Administrators see all submissions.
864
+ *
865
+ * @tags Submissions
866
+ * @name ListSubmissions
867
+ * @summary Search Submissions
868
+ * @request GET:/submissions
869
+ * @secure
870
+ */
871
+ listSubmissions: (query, params = {}) => this.request({
872
+ path: `/submissions`,
873
+ method: 'GET',
874
+ query: query,
875
+ secure: true,
876
+ format: 'json',
877
+ ...params,
878
+ }),
879
+ /**
880
+ * @description Generate an Excel export of submissions scoped by role. Contractors see only their own submissions. Administrators see their department. Accountants and Super Administrators see all. Maximum 10,000 rows.
881
+ *
882
+ * @tags Submissions
883
+ * @name ListExport
884
+ * @summary Export Submissions to Excel
885
+ * @request GET:/submissions/export
886
+ * @secure
887
+ */
888
+ listExport: (params = {}) => this.request({
889
+ path: `/submissions/export`,
890
+ method: 'GET',
891
+ secure: true,
892
+ format: 'json',
893
+ ...params,
894
+ }),
895
+ };
896
+ }
897
+ }
898
+ exports.Api = Api;
899
+ //# sourceMappingURL=Api.js.map