@orchesty/connector-pinya 1.0.0 → 1.0.1

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.
Files changed (47) hide show
  1. package/dist/package.json +4 -1
  2. package/package.json +4 -1
  3. package/CHANGELOG.md +0 -7
  4. package/coverage/clover.xml +0 -167
  5. package/coverage/coverage-final.json +0 -6
  6. package/coverage/lcov-report/base.css +0 -224
  7. package/coverage/lcov-report/block-navigation.js +0 -87
  8. package/coverage/lcov-report/favicon.png +0 -0
  9. package/coverage/lcov-report/index.html +0 -161
  10. package/coverage/lcov-report/prettify.css +0 -1
  11. package/coverage/lcov-report/prettify.js +0 -2
  12. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  13. package/coverage/lcov-report/sorter.js +0 -210
  14. package/coverage/lcov-report/src/Batch/PinyaAbsencesBatch.ts.html +0 -346
  15. package/coverage/lcov-report/src/Batch/PinyaEmployeesBatch.ts.html +0 -835
  16. package/coverage/lcov-report/src/Batch/index.html +0 -131
  17. package/coverage/lcov-report/src/Connector/PinyaJobTitlesConnector.ts.html +0 -220
  18. package/coverage/lcov-report/src/Connector/index.html +0 -116
  19. package/coverage/lcov-report/src/PinyaApplication.ts.html +0 -643
  20. package/coverage/lcov-report/src/index.html +0 -116
  21. package/coverage/lcov-report/test/dataProvider.ts.html +0 -280
  22. package/coverage/lcov-report/test/index.html +0 -116
  23. package/coverage/lcov.info +0 -257
  24. package/jest.config.js +0 -13
  25. package/src/Batch/PinyaAbsencesBatch.ts +0 -87
  26. package/src/Batch/PinyaEmployeesBatch.ts +0 -250
  27. package/src/Batch/__tests__/Data/PinyaAbsencesBatch/empty-input.json +0 -6
  28. package/src/Batch/__tests__/Data/PinyaAbsencesBatch/empty-mock.json +0 -9
  29. package/src/Batch/__tests__/Data/PinyaAbsencesBatch/empty-output.json +0 -7
  30. package/src/Batch/__tests__/Data/PinyaAbsencesBatch/input.json +0 -6
  31. package/src/Batch/__tests__/Data/PinyaAbsencesBatch/mock.json +0 -26
  32. package/src/Batch/__tests__/Data/PinyaAbsencesBatch/output.json +0 -11
  33. package/src/Batch/__tests__/Data/PinyaEmployeesBatch/input.json +0 -6
  34. package/src/Batch/__tests__/Data/PinyaEmployeesBatch/mock.json +0 -203
  35. package/src/Batch/__tests__/Data/PinyaEmployeesBatch/output.json +0 -11
  36. package/src/Batch/__tests__/PinyaAbsencesBatch.ts +0 -21
  37. package/src/Batch/__tests__/PinyaEmployeesBatch.ts +0 -17
  38. package/src/Connector/PinyaJobTitlesConnector.ts +0 -45
  39. package/src/Connector/__tests__/Data/PinyaJobTitlesConnector/input.json +0 -6
  40. package/src/Connector/__tests__/Data/PinyaJobTitlesConnector/mock.json +0 -20
  41. package/src/Connector/__tests__/Data/PinyaJobTitlesConnector/output.json +0 -14
  42. package/src/Connector/__tests__/PinyaJobTitlesConnector.ts +0 -17
  43. package/src/PinyaApplication.ts +0 -186
  44. package/test/dataProvider.ts +0 -65
  45. package/tsconfig.json +0 -8
  46. package/tsconfig.prod.json +0 -13
  47. package/tsconfig.prod.tsbuildinfo +0 -1
@@ -1,257 +0,0 @@
1
- TN:
2
- SF:src/PinyaApplication.ts
3
- FN:28,(anonymous_10)
4
- FN:32,(anonymous_11)
5
- FN:36,(anonymous_12)
6
- FN:40,(anonymous_13)
7
- FN:44,(anonymous_14)
8
- FN:53,(anonymous_15)
9
- FN:61,(anonymous_16)
10
- FN:82,(anonymous_17)
11
- FN:86,(anonymous_18)
12
- FN:116,(anonymous_19)
13
- FN:133,(anonymous_20)
14
- FN:158,(anonymous_21)
15
- FN:174,(anonymous_22)
16
- FNF:13
17
- FNH:5
18
- FNDA:3,(anonymous_10)
19
- FNDA:7,(anonymous_11)
20
- FNDA:0,(anonymous_12)
21
- FNDA:0,(anonymous_13)
22
- FNDA:0,(anonymous_14)
23
- FNDA:0,(anonymous_15)
24
- FNDA:4,(anonymous_16)
25
- FNDA:0,(anonymous_17)
26
- FNDA:4,(anonymous_18)
27
- FNDA:4,(anonymous_19)
28
- FNDA:0,(anonymous_20)
29
- FNDA:0,(anonymous_21)
30
- FNDA:0,(anonymous_22)
31
- DA:1,3
32
- DA:3,3
33
- DA:4,3
34
- DA:5,3
35
- DA:6,3
36
- DA:7,3
37
- DA:9,3
38
- DA:11,3
39
- DA:13,3
40
- DA:14,3
41
- DA:16,3
42
- DA:18,3
43
- DA:19,3
44
- DA:20,3
45
- DA:21,3
46
- DA:23,3
47
- DA:24,3
48
- DA:26,3
49
- DA:28,3
50
- DA:29,3
51
- DA:33,7
52
- DA:37,0
53
- DA:41,0
54
- DA:45,0
55
- DA:50,0
56
- DA:54,0
57
- DA:56,0
58
- DA:68,4
59
- DA:69,4
60
- DA:75,4
61
- DA:76,0
62
- DA:79,4
63
- DA:83,0
64
- DA:91,4
65
- DA:93,4
66
- DA:108,4
67
- DA:117,4
68
- DA:118,4
69
- DA:119,4
70
- DA:121,4
71
- DA:123,4
72
- DA:125,0
73
- DA:130,4
74
- DA:137,0
75
- DA:147,0
76
- DA:149,0
77
- DA:158,3
78
- DA:159,0
79
- DA:160,0
80
- DA:167,0
81
- DA:168,0
82
- DA:175,0
83
- DA:176,0
84
- DA:177,0
85
- LF:54
86
- LH:35
87
- BRDA:56,0,0,0
88
- BRDA:56,0,1,0
89
- BRDA:56,0,2,0
90
- BRDA:75,1,0,0
91
- BRDA:75,1,1,4
92
- BRDA:123,2,0,0
93
- BRDA:123,2,1,4
94
- BRDA:174,3,0,0
95
- BRF:8
96
- BRH:2
97
- end_of_record
98
- TN:
99
- SF:src/Batch/PinyaAbsencesBatch.ts
100
- FN:9,(anonymous_1)
101
- FN:13,(anonymous_2)
102
- FN:17,(anonymous_3)
103
- FN:45,(anonymous_4)
104
- FN:52,(anonymous_5)
105
- FN:56,(anonymous_6)
106
- FNF:6
107
- FNH:6
108
- FNDA:3,(anonymous_1)
109
- FNDA:3,(anonymous_2)
110
- FNDA:2,(anonymous_3)
111
- FNDA:2,(anonymous_4)
112
- FNDA:2,(anonymous_5)
113
- FNDA:2,(anonymous_6)
114
- DA:1,3
115
- DA:2,3
116
- DA:5,3
117
- DA:7,3
118
- DA:9,3
119
- DA:10,3
120
- DA:14,3
121
- DA:18,2
122
- DA:20,2
123
- DA:26,2
124
- DA:27,2
125
- DA:28,2
126
- DA:29,1
127
- DA:39,2
128
- DA:40,2
129
- DA:42,2
130
- DA:46,2
131
- DA:48,2
132
- DA:53,2
133
- DA:57,2
134
- DA:58,0
135
- DA:60,2
136
- LF:22
137
- LH:21
138
- BRDA:9,0,0,3
139
- BRDA:9,1,0,3
140
- BRDA:28,2,0,1
141
- BRDA:28,2,1,1
142
- BRDA:57,3,0,0
143
- BRDA:57,3,1,2
144
- BRF:6
145
- BRH:5
146
- end_of_record
147
- TN:
148
- SF:src/Batch/PinyaEmployeesBatch.ts
149
- FN:9,(anonymous_1)
150
- FN:13,(anonymous_2)
151
- FN:17,(anonymous_3)
152
- FN:34,(anonymous_4)
153
- FN:41,(anonymous_5)
154
- FN:45,(anonymous_6)
155
- FNF:6
156
- FNH:6
157
- FNDA:3,(anonymous_1)
158
- FNDA:3,(anonymous_2)
159
- FNDA:1,(anonymous_3)
160
- FNDA:1,(anonymous_4)
161
- FNDA:1,(anonymous_5)
162
- FNDA:1,(anonymous_6)
163
- DA:1,3
164
- DA:2,3
165
- DA:5,3
166
- DA:7,3
167
- DA:9,3
168
- DA:10,3
169
- DA:14,3
170
- DA:18,1
171
- DA:20,1
172
- DA:26,1
173
- DA:27,1
174
- DA:28,1
175
- DA:29,1
176
- DA:31,1
177
- DA:35,1
178
- DA:37,1
179
- DA:42,1
180
- DA:46,1
181
- DA:47,0
182
- DA:49,1
183
- LF:20
184
- LH:19
185
- BRDA:9,0,0,3
186
- BRDA:9,1,0,3
187
- BRDA:46,2,0,0
188
- BRDA:46,2,1,1
189
- BRF:4
190
- BRH:3
191
- end_of_record
192
- TN:
193
- SF:src/Connector/PinyaJobTitlesConnector.ts
194
- FN:9,(anonymous_1)
195
- FN:13,(anonymous_2)
196
- FNF:2
197
- FNH:2
198
- FNDA:3,(anonymous_1)
199
- FNDA:1,(anonymous_2)
200
- DA:1,3
201
- DA:2,3
202
- DA:5,3
203
- DA:7,3
204
- DA:10,3
205
- DA:14,1
206
- DA:20,1
207
- DA:21,1
208
- DA:23,1
209
- LF:9
210
- LH:9
211
- BRF:0
212
- BRH:0
213
- end_of_record
214
- TN:
215
- SF:test/dataProvider.ts
216
- FN:15,initPinyaIntegrationTest
217
- FNF:1
218
- FNH:1
219
- FNDA:3,initPinyaIntegrationTest
220
- DA:1,3
221
- DA:2,3
222
- DA:3,3
223
- DA:4,3
224
- DA:5,3
225
- DA:6,3
226
- DA:7,3
227
- DA:8,3
228
- DA:9,3
229
- DA:10,3
230
- DA:11,3
231
- DA:12,3
232
- DA:13,3
233
- DA:15,3
234
- DA:16,3
235
- DA:17,3
236
- DA:18,3
237
- DA:24,3
238
- DA:25,0
239
- DA:27,3
240
- DA:29,3
241
- DA:30,0
242
- DA:32,3
243
- DA:34,3
244
- DA:35,3
245
- DA:37,3
246
- DA:43,3
247
- DA:49,3
248
- DA:56,3
249
- LF:29
250
- LH:27
251
- BRDA:24,0,0,0
252
- BRDA:24,0,1,3
253
- BRDA:29,1,0,0
254
- BRDA:29,1,1,3
255
- BRF:4
256
- BRH:2
257
- end_of_record
package/jest.config.js DELETED
@@ -1,13 +0,0 @@
1
- const baseConfig = require('../../jest.config.js');
2
-
3
- module.exports = {
4
- ...baseConfig,
5
- roots: ["<rootDir>/src"],
6
- setupFiles: ["<rootDir>/../../.jest/testEnvs.ts"],
7
- setupFilesAfterEnv: ["<rootDir>/../../.jest/testLifecycle.ts"],
8
- globalSetup: "<rootDir>/../../.jest/globalSetup.ts",
9
- moduleNameMapper: {
10
- "^@orchesty/nodejs-connectors/test/(.*)$": "<rootDir>/../../test/$1",
11
- "^@orchesty/nodejs-connectors/lib/(.*)$": "<rootDir>/../../lib/$1",
12
- },
13
- }
@@ -1,87 +0,0 @@
1
- import ABatchNode from '@orchesty/nodejs-sdk/dist/lib/Batch/ABatchNode';
2
- import { HttpMethods } from '@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods';
3
- import BatchProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/BatchProcessDto';
4
-
5
- export const PINYA_ABSENCES_BATCH = 'pinya-absences-batch';
6
-
7
- export default class PinyaAbsencesBatch extends ABatchNode {
8
-
9
- public constructor(resultAsBatch = false, protected batchSize = 50) {
10
- super(resultAsBatch);
11
- }
12
-
13
- public getName(): string {
14
- return PINYA_ABSENCES_BATCH;
15
- }
16
-
17
- public async processAction(dto: BatchProcessDto): Promise<BatchProcessDto> {
18
- const appInstall = await this.getApplicationInstallFromProcess(dto);
19
-
20
- const req = await this.getApplication().getRequestDto(
21
- dto,
22
- appInstall,
23
- HttpMethods.GET,
24
- `absences?${this.processFilter(dto)}`,
25
- );
26
- const resp = await this.getSender().send<Response>(req, { success: ['<300', '404'] });
27
- let response = resp.getJsonBody();
28
- if (!('data' in response)) { // Instead of empty data, Pinya returns an error
29
- response = {
30
- pageNumber: 0,
31
- pageSize: 1,
32
- lastPage: 0,
33
- totalItemsCount: 0,
34
- count: 0,
35
- data: [],
36
- };
37
- }
38
-
39
- await this.processResult(dto, response);
40
- this.doPagination(dto, response);
41
-
42
- return dto;
43
- }
44
-
45
- protected processFilter(dto: BatchProcessDto): string {
46
- const page = Number(dto.getBatchCursor('0'));
47
-
48
- return `PageNumber=${page}&PageSize=${this.batchSize}`;
49
- }
50
-
51
- // eslint-disable-next-line @typescript-eslint/require-await
52
- protected async processResult(dto: BatchProcessDto, response: Response): Promise<BatchProcessDto> {
53
- return dto.setItemList(response.data, this.resultAsBatch);
54
- }
55
-
56
- protected doPagination(dto: BatchProcessDto, response: Response): void {
57
- if (response.lastPage > response.pageNumber) {
58
- dto.setBatchCursor((response.pageNumber + 1).toString());
59
- } else {
60
- dto.removeBatchCursor();
61
- }
62
- }
63
-
64
- }
65
-
66
- export interface PinyaAbsencesOutput {
67
- id: number;
68
- dateFrom: string;
69
- dateTo: string;
70
- absenceState: string;
71
- amount: number;
72
- description: string;
73
- employeeNumber: string;
74
- absenceTypeCode: string;
75
- absenceTypeTitle: string;
76
- absenceTypeShortcut: string;
77
- isWorktime: boolean;
78
- }
79
-
80
- export interface Response {
81
- pageNumber: number;
82
- pageSize: number;
83
- lastPage: number;
84
- totalItemsCount: number;
85
- count: number;
86
- data: PinyaAbsencesOutput[];
87
- }
@@ -1,250 +0,0 @@
1
- import ABatchNode from '@orchesty/nodejs-sdk/dist/lib/Batch/ABatchNode';
2
- import { HttpMethods } from '@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods';
3
- import BatchProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/BatchProcessDto';
4
-
5
- export const PINYA_EMPLOYEES_BATCH = 'pinya-employees-batch';
6
-
7
- export default class PinyaEmployeesBatch extends ABatchNode {
8
-
9
- public constructor(resultAsBatch = false, protected batchSize = 50) {
10
- super(resultAsBatch);
11
- }
12
-
13
- public getName(): string {
14
- return PINYA_EMPLOYEES_BATCH;
15
- }
16
-
17
- public async processAction(dto: BatchProcessDto): Promise<BatchProcessDto> {
18
- const appInstall = await this.getApplicationInstallFromProcess(dto);
19
-
20
- const req = await this.getApplication().getRequestDto(
21
- dto,
22
- appInstall,
23
- HttpMethods.GET,
24
- `employees?${this.processFilter(dto)}`,
25
- );
26
- const resp = await this.getSender().send<Response>(req);
27
- const response = resp.getJsonBody();
28
- await this.processResult(dto, response);
29
- this.doPagination(dto, response);
30
-
31
- return dto;
32
- }
33
-
34
- protected processFilter(dto: BatchProcessDto): string {
35
- const page = Number(dto.getBatchCursor('0'));
36
-
37
- return `PageNumber=${page}&PageSize=${this.batchSize}`;
38
- }
39
-
40
- // eslint-disable-next-line @typescript-eslint/require-await
41
- protected async processResult(dto: BatchProcessDto, response: Response): Promise<BatchProcessDto> {
42
- return dto.setItemList(response.data, this.resultAsBatch);
43
- }
44
-
45
- protected doPagination(dto: BatchProcessDto, response: Response): void {
46
- if (response.lastPage > response.pageNumber) {
47
- dto.setBatchCursor((response.pageNumber + 1).toString());
48
- } else {
49
- dto.removeBatchCursor();
50
- }
51
- }
52
-
53
- }
54
-
55
- export interface PinyaEmployeesOutput {
56
- employeeBasic: {
57
- employeeGuid: string;
58
- employeeNumber: string;
59
- startDate: string;
60
- endDate: string;
61
- terminationWay: string;
62
- terminationReason: string;
63
- firstname: string;
64
- lastname: string;
65
- middlename: string;
66
- isFabisActivated?: boolean;
67
- degrees: string;
68
- degreesBehind: string;
69
- workEmail: string;
70
- workPhoneNumber: string;
71
- workMobilePhoneNumber: string;
72
- languageSkills: {
73
- id: number;
74
- title: string;
75
- code: string;
76
- }[];
77
- computerSkills: {
78
- id: number;
79
- title: string;
80
- code: string;
81
- } [];
82
- skills: string;
83
- contractNumber: string;
84
- contractStartDate: string;
85
- endOfProbation: string;
86
- contractEndDate: string;
87
- contractType: {
88
- id: number;
89
- title: string;
90
- code: string;
91
- },
92
- contractValidity: string;
93
- fte: number;
94
- employmentStatus: {
95
- id: number;
96
- title: string;
97
- code: string;
98
- },
99
- company: {
100
- id: number;
101
- title: string;
102
- code: string;
103
- },
104
- location: {
105
- id: number;
106
- title: string;
107
- code: string;
108
- },
109
- workplace: {
110
- id: number;
111
- title: string;
112
- code: string;
113
- },
114
- division: {
115
- id: number;
116
- title: string;
117
- code: string;
118
- },
119
- department: {
120
- id: number;
121
- title: string;
122
- code: string;
123
- },
124
- jobTitle: {
125
- id: number;
126
- title: string;
127
- code: string;
128
- },
129
- jobLevel: {
130
- id: number;
131
- title: string;
132
- code: string;
133
- },
134
- specialization: {
135
- id: number;
136
- title: string;
137
- code: string;
138
- },
139
- superior: {
140
- employeeGuid: string;
141
- employeeNumber: string;
142
- employeeName: string;
143
- },
144
- approver: {
145
- employeeGuid: string;
146
- employeeNumber: string;
147
- employeeName: string;
148
- },
149
- dayShift: number;
150
- weekHours: number;
151
- hoursSchedule: string;
152
- vacationClaim: number;
153
- unpaidLeaveClaim: number;
154
- sickDaysClaim: number;
155
- homeOfficeClaim: number;
156
- },
157
- employeePersonal: {
158
- birthDate: string;
159
- gender: {
160
- id: number;
161
- title: string;
162
- code: string;
163
- },
164
- maritalStatus: {
165
- id: number;
166
- title: string;
167
- code: string;
168
- },
169
- nationality: string;
170
- healthInsuranceProvider: {
171
- id: number;
172
- title: string;
173
- code: string;
174
- },
175
- healthInsuranceNumber: string;
176
- taxNumber: string;
177
- personalEmail: string;
178
- maidenname: string;
179
- birthCertNumber: string;
180
- birthPlace: string;
181
- numberOfChildren: number;
182
- street: string;
183
- houseNumber: string;
184
- postalCode: string;
185
- city: string;
186
- country: string;
187
- contactStreet: string;
188
- contactHouseNumber: string;
189
- contactPostalCode: string;
190
- contactCity: string;
191
- contactCountry: string;
192
- personalPhoneNumber: string;
193
- emergencyName: string;
194
- emergencyPhone: string;
195
- idCardNumber: string;
196
- idCardValidTo: string;
197
- passportNumber: string;
198
- passportValidTo: string;
199
- drivingLicenceNumber: string;
200
- drivingLicenceValidTo: string;
201
- drivingLicenceGroup: string;
202
- bankName: string;
203
- bankPrefix: string;
204
- bankAccount: string;
205
- bankCode: string;
206
- iban: string;
207
- customFields: {
208
- additionalProp1: string;
209
- additionalProp2: string;
210
- additionalProp3: string;
211
- }
212
- },
213
- employeeWage: {
214
- currency: {
215
- id: number;
216
- title: string;
217
- code: string;
218
- },
219
- basicWage: number;
220
- personalBonus: number;
221
- grossWage: number;
222
- netWage: number;
223
- hourlyWage: number;
224
- agreementExpenses: number;
225
- invoiceExpenses: number;
226
- expenses: number;
227
- transportationBonus: number;
228
- retirementInsurrance: number;
229
- otherBonus: number;
230
- bonus: {
231
- id: number,
232
- title: string;
233
- code: string;
234
- },
235
- customFields: {
236
- additionalProp1: string;
237
- additionalProp2: string;
238
- additionalProp3: string;
239
- }
240
- }
241
- }
242
-
243
- export interface Response {
244
- pageNumber: number;
245
- pageSize: number;
246
- lastPage: number;
247
- totalItemsCount: number;
248
- count: number;
249
- data: PinyaEmployeesOutput[];
250
- }
@@ -1,6 +0,0 @@
1
- {
2
- "headers": {
3
- "user": "TestUser"
4
- },
5
- "data": {}
6
- }
@@ -1,9 +0,0 @@
1
- {
2
- "http": "GET https://api.pinya.hr/absences?PageNumber=0&PageSize=50",
3
- "code": 404,
4
- "body": {
5
- "errorMessages": [
6
- "Absence records with specified parameters were not found. Filter parameters: {\"PageNumber\":0,\"PageSize\":50}"
7
- ]
8
- }
9
- }
@@ -1,7 +0,0 @@
1
- {
2
- "headers": {
3
- "user": "TestUser"
4
- },
5
- "data": [
6
- ]
7
- }
@@ -1,6 +0,0 @@
1
- {
2
- "headers": {
3
- "user": "TestUser"
4
- },
5
- "data": {}
6
- }
@@ -1,26 +0,0 @@
1
- {
2
- "http": "GET https://api.pinya.hr/absences?PageNumber=0&PageSize=50",
3
- "code": 200,
4
- "body": {
5
- "pageNumber": 1,
6
- "pageSize": 50,
7
- "lastPage": 1,
8
- "totalItemsCount": 1,
9
- "count": 1,
10
- "data": [
11
- {
12
- "id": 0,
13
- "dateFrom": "2024-04-30T10:02:11.630Z",
14
- "dateTo": "2024-04-30T10:02:11.630Z",
15
- "absenceState": "pending",
16
- "amount": 0,
17
- "description": "string",
18
- "employeeNumber": "string",
19
- "absenceTypeCode": "string",
20
- "absenceTypeTitle": "string",
21
- "absenceTypeShortcut": "string",
22
- "isWorktime": true
23
- }
24
- ]
25
- }
26
- }
@@ -1,11 +0,0 @@
1
- {
2
- "headers": {
3
- "user": "TestUser"
4
- },
5
- "data": [
6
- {
7
- "body": "{\"id\":0,\"dateFrom\":\"2024-04-30T10:02:11.630Z\",\"dateTo\":\"2024-04-30T10:02:11.630Z\",\"absenceState\":\"pending\",\"amount\":0,\"description\":\"string\",\"employeeNumber\":\"string\",\"absenceTypeCode\":\"string\",\"absenceTypeTitle\":\"string\",\"absenceTypeShortcut\":\"string\",\"isWorktime\":true}",
8
- "headers": {}
9
- }
10
- ]
11
- }
@@ -1,6 +0,0 @@
1
- {
2
- "headers": {
3
- "user": "TestUser"
4
- },
5
- "data": {}
6
- }