@snokam/mcp-api 0.154.0 → 0.155.0

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.
@@ -11,22 +11,28 @@
11
11
  }
12
12
  ],
13
13
  "paths": {
14
- "/v1.0/crypto/account": {
14
+ "/v1.0/hours/last-month/me": {
15
15
  "get": {
16
16
  "tags": [
17
- "Crypto"
17
+ "Hours"
18
18
  ],
19
- "operationId": "GetBtcAccount",
19
+ "summary": "Gets my hours for last month",
20
+ "description": "Retrieves the hours logged by the current user for the last month.",
21
+ "operationId": "GetMyHoursLastMonth",
20
22
  "responses": {
21
23
  "200": {
22
- "description": "The BTC account details",
24
+ "description": "Hours retrieved",
23
25
  "content": {
24
26
  "application/json": {
25
27
  "schema": {
26
- "$ref": "#/components/schemas/cryptoAccount"
28
+ "type": "array",
29
+ "items": {
30
+ "$ref": "#/components/schemas/timeTransactionRecord"
31
+ }
27
32
  }
28
33
  }
29
- }
34
+ },
35
+ "x-ms-summary": "Success"
30
36
  }
31
37
  },
32
38
  "security": [
@@ -34,29 +40,32 @@
34
40
  "Implicit": [
35
41
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
36
42
  ]
37
- },
38
- {
39
- "ApiKey": []
40
43
  }
41
44
  ]
42
45
  }
43
46
  },
44
- "/v1.0/crypto/account/eur": {
47
+ "/v1.0/hours/summary/last-month/me": {
45
48
  "get": {
46
49
  "tags": [
47
- "Crypto"
50
+ "Hours"
48
51
  ],
49
- "operationId": "GetEurAccount",
52
+ "summary": "Gets my hours by activity for last month",
53
+ "description": "Retrieves the hours logged by the current user by activity for the last month.",
54
+ "operationId": "GetMyHoursByActivityLastMonth",
50
55
  "responses": {
51
56
  "200": {
52
- "description": "The EUR account details",
57
+ "description": "Hours by activity retrieved",
53
58
  "content": {
54
59
  "application/json": {
55
60
  "schema": {
56
- "$ref": "#/components/schemas/cryptoAccount"
61
+ "type": "array",
62
+ "items": {
63
+ "$ref": "#/components/schemas/timeTransactionSummary"
64
+ }
57
65
  }
58
66
  }
59
- }
67
+ },
68
+ "x-ms-summary": "Success"
60
69
  }
61
70
  },
62
71
  "security": [
@@ -64,52 +73,54 @@
64
73
  "Implicit": [
65
74
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
66
75
  ]
67
- },
68
- {
69
- "ApiKey": []
70
76
  }
71
77
  ]
72
78
  }
73
79
  },
74
- "/v1.0/crypto/summaries": {
80
+ "/v1.0/hours/summary": {
75
81
  "get": {
76
82
  "tags": [
77
- "Crypto"
83
+ "Hours"
78
84
  ],
79
- "operationId": "GetCryptoSummaries",
85
+ "summary": "Gets my hours by activity",
86
+ "description": "Retrieves the hours logged by the current user by activity.",
87
+ "operationId": "GetHoursByActivity",
80
88
  "parameters": [
81
89
  {
82
90
  "name": "from",
83
91
  "in": "query",
84
- "description": "From datetime",
92
+ "description": "",
85
93
  "schema": {
86
94
  "type": "string",
87
95
  "format": "date-time"
88
- }
96
+ },
97
+ "x-ms-summary": "Date from"
89
98
  },
90
99
  {
91
100
  "name": "to",
92
101
  "in": "query",
93
- "description": "To datetime",
102
+ "description": "",
94
103
  "schema": {
95
104
  "type": "string",
96
105
  "format": "date-time"
97
- }
106
+ },
107
+ "x-ms-summary": "Date to"
98
108
  }
99
109
  ],
100
110
  "responses": {
101
111
  "200": {
102
- "description": "List of transaction summaries",
112
+ "description": "Hours by activity retrieved",
103
113
  "content": {
104
114
  "application/json": {
105
115
  "schema": {
106
116
  "type": "array",
107
117
  "items": {
108
- "$ref": "#/components/schemas/employeeTransactionSummary"
118
+ "$ref": "#/components/schemas/employeeTimeTransactionSummary"
109
119
  }
110
120
  }
111
121
  }
112
- }
122
+ },
123
+ "x-ms-summary": "Success"
113
124
  }
114
125
  },
115
126
  "security": [
@@ -124,51 +135,32 @@
124
135
  ]
125
136
  }
126
137
  },
127
- "/v1.0/crypto/summary": {
138
+ "/v1.0/hours/summary/last-month": {
128
139
  "get": {
129
140
  "tags": [
130
- "Crypto"
131
- ],
132
- "operationId": "GetCryptoSummary",
133
- "parameters": [
134
- {
135
- "name": "userEmail",
136
- "in": "query",
137
- "description": "Email of the user",
138
- "required": true,
139
- "schema": {
140
- "type": "string"
141
- }
142
- },
143
- {
144
- "name": "from",
145
- "in": "query",
146
- "description": "From datetime",
147
- "schema": {
148
- "type": "string",
149
- "format": "date-time"
150
- }
151
- },
152
- {
153
- "name": "to",
154
- "in": "query",
155
- "description": "To datetime",
156
- "schema": {
157
- "type": "string",
158
- "format": "date-time"
159
- }
160
- }
141
+ "Hours"
161
142
  ],
143
+ "summary": "Gets hours by activity for last month",
144
+ "description": "Retrieves the hours logged by all users by activity for the last month.",
145
+ "operationId": "GetHoursByActivityLastMonth",
162
146
  "responses": {
163
147
  "200": {
164
- "description": "Transaction summary for the specified user",
148
+ "description": "Hours by activity retrieved",
165
149
  "content": {
166
150
  "application/json": {
167
151
  "schema": {
168
- "$ref": "#/components/schemas/transactionSummary"
152
+ "type": "array",
153
+ "items": {
154
+ "$ref": "#/components/schemas/employeeTimeTransactionSummary"
155
+ }
169
156
  }
170
157
  }
171
- }
158
+ },
159
+ "x-ms-summary": "Success"
160
+ },
161
+ "401": {
162
+ "description": "Unauthorized access",
163
+ "x-ms-summary": "Unauthorized"
172
164
  }
173
165
  },
174
166
  "security": [
@@ -183,42 +175,32 @@
183
175
  ]
184
176
  }
185
177
  },
186
- "/v1.0/crypto/summary/me": {
178
+ "/v1.0/hours/last-month": {
187
179
  "get": {
188
180
  "tags": [
189
- "Crypto"
190
- ],
191
- "operationId": "GetMyCryptoSummary",
192
- "parameters": [
193
- {
194
- "name": "from",
195
- "in": "query",
196
- "description": "From datetime",
197
- "schema": {
198
- "type": "string",
199
- "format": "date-time"
200
- }
201
- },
202
- {
203
- "name": "to",
204
- "in": "query",
205
- "description": "To datetime",
206
- "schema": {
207
- "type": "string",
208
- "format": "date-time"
209
- }
210
- }
181
+ "Hours"
211
182
  ],
183
+ "summary": "Gets hours for last month",
184
+ "description": "Retrieves the hours logged by all users for the last month.",
185
+ "operationId": "GetHoursLastMonth",
212
186
  "responses": {
213
187
  "200": {
214
- "description": "Transaction summary for the authenticated user",
188
+ "description": "Hours retrieved",
215
189
  "content": {
216
190
  "application/json": {
217
191
  "schema": {
218
- "$ref": "#/components/schemas/transactionSummary"
192
+ "type": "array",
193
+ "items": {
194
+ "$ref": "#/components/schemas/employeeHoursLastMonth"
195
+ }
219
196
  }
220
197
  }
221
- }
198
+ },
199
+ "x-ms-summary": "Success"
200
+ },
201
+ "401": {
202
+ "description": "Unauthorized access",
203
+ "x-ms-summary": "Unauthorized"
222
204
  }
223
205
  },
224
206
  "security": [
@@ -226,49 +208,51 @@
226
208
  "Implicit": [
227
209
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
228
210
  ]
211
+ },
212
+ {
213
+ "ApiKey": []
229
214
  }
230
215
  ]
231
216
  }
232
217
  },
233
- "/v1.0/crypto/transactions": {
218
+ "/v1.0/hours/current-month/locked/users": {
234
219
  "get": {
235
220
  "tags": [
236
- "Crypto"
221
+ "Hours"
237
222
  ],
238
- "operationId": "GetCryptoTransactions",
223
+ "summary": "Gets users with locked timesheets for current month",
224
+ "description": "Retrieves a list of users with locked timesheets for the current month.",
225
+ "operationId": "GetUsersWithLockedTimesheetsCurrentMonth",
239
226
  "parameters": [
240
227
  {
241
- "name": "from",
242
- "in": "query",
243
- "description": "From datetime",
244
- "schema": {
245
- "type": "string",
246
- "format": "date-time"
247
- }
248
- },
249
- {
250
- "name": "to",
228
+ "name": "monthOffset",
251
229
  "in": "query",
252
- "description": "To datetime",
230
+ "description": "The month offset to apply when retrieving locked timesheets.",
253
231
  "schema": {
254
- "type": "string",
255
- "format": "date-time"
256
- }
232
+ "type": "integer",
233
+ "format": "int32"
234
+ },
235
+ "x-ms-summary": "Month offset"
257
236
  }
258
237
  ],
259
238
  "responses": {
260
239
  "200": {
261
- "description": "List of transactions",
240
+ "description": "Users with locked timesheets retrieved",
262
241
  "content": {
263
242
  "application/json": {
264
243
  "schema": {
265
244
  "type": "array",
266
245
  "items": {
267
- "$ref": "#/components/schemas/transaction"
246
+ "type": "string"
268
247
  }
269
248
  }
270
249
  }
271
- }
250
+ },
251
+ "x-ms-summary": "Success"
252
+ },
253
+ "400": {
254
+ "description": "Invalid month offset value",
255
+ "x-ms-summary": "Bad Request"
272
256
  }
273
257
  },
274
258
  "security": [
@@ -283,33 +267,29 @@
283
267
  ]
284
268
  }
285
269
  },
286
- "/v1.0/crypto/transactions/{id}": {
270
+ "/v1.0/hours/current-year/statistics": {
287
271
  "get": {
288
272
  "tags": [
289
- "Crypto"
290
- ],
291
- "operationId": "GetCryptoTransaction",
292
- "parameters": [
293
- {
294
- "name": "id",
295
- "in": "path",
296
- "description": "ID of the transaction",
297
- "required": true,
298
- "schema": {
299
- "type": "string"
300
- }
301
- }
273
+ "Hours"
302
274
  ],
275
+ "summary": "Gets hours by activity statistics for current year",
276
+ "description": "Retrieves the hours logged by activity statistics for the current year.",
277
+ "operationId": "GetHoursByActivityStatisticsCurrentYear",
303
278
  "responses": {
304
279
  "200": {
305
- "description": "Details of a specific transaction",
280
+ "description": "Hours by activity statistics retrieved",
306
281
  "content": {
307
282
  "application/json": {
308
283
  "schema": {
309
- "$ref": "#/components/schemas/response_transaction"
284
+ "type": "object",
285
+ "additionalProperties": {
286
+ "type": "number",
287
+ "format": "double"
288
+ }
310
289
  }
311
290
  }
312
- }
291
+ },
292
+ "x-ms-summary": "Success"
313
293
  }
314
294
  },
315
295
  "security": [
@@ -324,22 +304,25 @@
324
304
  ]
325
305
  }
326
306
  },
327
- "/v1.0/crypto/statistics": {
307
+ "/v1.0/projects/me": {
328
308
  "get": {
329
309
  "tags": [
330
- "Crypto"
310
+ "Projects"
331
311
  ],
332
- "operationId": "GetCryptoStatistics",
312
+ "summary": "Gets my projects",
313
+ "description": "Retrieves my projects.",
314
+ "operationId": "GetMyProjects",
333
315
  "responses": {
334
316
  "200": {
335
- "description": "Crypto statistics",
317
+ "description": "My projects retrieved",
336
318
  "content": {
337
319
  "application/json": {
338
320
  "schema": {
339
- "$ref": "#/components/schemas/response_statistics"
321
+ "$ref": "#/components/schemas/employeeProjects"
340
322
  }
341
323
  }
342
- }
324
+ },
325
+ "x-ms-summary": "Success"
343
326
  }
344
327
  },
345
328
  "security": [
@@ -347,32 +330,32 @@
347
330
  "Implicit": [
348
331
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
349
332
  ]
350
- },
351
- {
352
- "ApiKey": []
353
333
  }
354
334
  ]
355
335
  }
356
336
  },
357
- "/v1.0/crypto/employees": {
337
+ "/v1.0/projects/all": {
358
338
  "get": {
359
339
  "tags": [
360
- "Crypto"
340
+ "Projects"
361
341
  ],
362
- "operationId": "GetEmployeesWithInnovativeSalary",
363
- "responses": {
342
+ "summary": "Gets all projects",
343
+ "description": "Retrieves all projects.",
344
+ "operationId": "GetAllProjects",
345
+ "responses": {
364
346
  "200": {
365
- "description": "List of employees with innovative salary",
347
+ "description": "My projects retrieved",
366
348
  "content": {
367
349
  "application/json": {
368
350
  "schema": {
369
351
  "type": "array",
370
352
  "items": {
371
- "$ref": "#/components/schemas/sanityEmployee"
353
+ "$ref": "#/components/schemas/employeeProjects"
372
354
  }
373
355
  }
374
356
  }
375
- }
357
+ },
358
+ "x-ms-summary": "Success"
376
359
  }
377
360
  },
378
361
  "security": [
@@ -387,25 +370,27 @@
387
370
  ]
388
371
  }
389
372
  },
390
- "/v1.0/crypto/salary/daily/me": {
373
+ "/v1.0/projects/average-hourly-rate": {
391
374
  "get": {
392
375
  "tags": [
393
- "Crypto"
376
+ "Projects"
394
377
  ],
395
- "operationId": "GetMyDailyCryptoSalary",
378
+ "summary": "Gets average hourly rate",
379
+ "description": "Average hourly rate across active projects. Cached in blob storage, auto-refreshed hourly. Returns null if none found.",
380
+ "operationId": "GetAverageHourlyRate",
396
381
  "responses": {
397
382
  "200": {
398
- "description": "Get my daily salary",
383
+ "description": "Payload of Nullable containing Int32",
399
384
  "content": {
400
385
  "application/json": {
401
386
  "schema": {
402
- "$ref": "#/components/schemas/todaysSalarySummary"
387
+ "type": "integer",
388
+ "format": "int32",
389
+ "nullable": true
403
390
  }
404
391
  }
405
- }
406
- },
407
- "204": {
408
- "description": "No registered hours"
392
+ },
393
+ "x-ms-summary": "Success"
409
394
  }
410
395
  },
411
396
  "security": [
@@ -413,29 +398,32 @@
413
398
  "Implicit": [
414
399
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
415
400
  ]
401
+ },
402
+ {
403
+ "ApiKey": []
416
404
  }
417
405
  ]
418
406
  }
419
407
  },
420
- "/v1.0/crypto/salaries/daily": {
408
+ "/v1.0/salary/last-month/me": {
421
409
  "get": {
422
410
  "tags": [
423
- "Crypto"
411
+ "Salary"
424
412
  ],
425
- "operationId": "GetDailyCryptoSalaries",
413
+ "summary": "Gets my salary for last month",
414
+ "description": "Retrieves the salary of the current user for the last month.",
415
+ "operationId": "GetMySalaryLastMonth",
426
416
  "responses": {
427
417
  "200": {
428
- "description": "Get daily salaries",
418
+ "description": "Salary retrieved",
429
419
  "content": {
430
420
  "application/json": {
431
421
  "schema": {
432
- "type": "array",
433
- "items": {
434
- "$ref": "#/components/schemas/todaysSalarySummary"
435
- }
422
+ "$ref": "#/components/schemas/detailedSalaryWithSalaryLines"
436
423
  }
437
424
  }
438
- }
425
+ },
426
+ "x-ms-summary": "Success"
439
427
  }
440
428
  },
441
429
  "security": [
@@ -443,32 +431,29 @@
443
431
  "Implicit": [
444
432
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
445
433
  ]
446
- },
447
- {
448
- "ApiKey": []
449
434
  }
450
435
  ]
451
436
  }
452
437
  },
453
- "/v1.0/crypto/salaries/daily/pay": {
438
+ "/v1.0/salary/this-month/me": {
454
439
  "get": {
455
440
  "tags": [
456
- "Crypto"
441
+ "Salary"
457
442
  ],
458
- "operationId": "PayDailyCryptoSalaries",
443
+ "summary": "Gets my salary for this month",
444
+ "description": "Retrieves the salary of the current user this month.",
445
+ "operationId": "GetMySalaryThisMonth",
459
446
  "responses": {
460
447
  "200": {
461
- "description": "Pay daily salaries with CoinBase",
448
+ "description": "Salary retrieved",
462
449
  "content": {
463
450
  "application/json": {
464
451
  "schema": {
465
- "type": "array",
466
- "items": {
467
- "$ref": "#/components/schemas/response_transaction"
468
- }
452
+ "$ref": "#/components/schemas/detailedSalaryWithSalaryLines"
469
453
  }
470
454
  }
471
- }
455
+ },
456
+ "x-ms-summary": "Success"
472
457
  }
473
458
  },
474
459
  "security": [
@@ -476,29 +461,36 @@
476
461
  "Implicit": [
477
462
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
478
463
  ]
479
- },
480
- {
481
- "ApiKey": []
482
464
  }
483
465
  ]
484
466
  }
485
467
  },
486
- "/v1.0/crypto/user": {
468
+ "/v1.0/salary/last-month": {
487
469
  "get": {
488
470
  "tags": [
489
- "Crypto"
471
+ "Salary"
490
472
  ],
491
- "operationId": "GetCryptoUser",
473
+ "summary": "Gets salaries for last month",
474
+ "description": "Retrieves the salaries of all users for the last month.",
475
+ "operationId": "GetSalariesLastMonth",
492
476
  "responses": {
493
477
  "200": {
494
- "description": "Details of the authenticated user",
478
+ "description": "Salaries retrieved",
495
479
  "content": {
496
480
  "application/json": {
497
481
  "schema": {
498
- "$ref": "#/components/schemas/cryptoUser"
482
+ "type": "array",
483
+ "items": {
484
+ "$ref": "#/components/schemas/employeeDetailedSalary"
485
+ }
499
486
  }
500
487
  }
501
- }
488
+ },
489
+ "x-ms-summary": "Success"
490
+ },
491
+ "401": {
492
+ "description": "Unauthorized access",
493
+ "x-ms-summary": "Unauthorized"
502
494
  }
503
495
  },
504
496
  "security": [
@@ -513,23 +505,32 @@
513
505
  ]
514
506
  }
515
507
  },
516
- "/v1.0/crypto/btc-nok": {
508
+ "/v1.0/salary/this-month": {
517
509
  "get": {
518
510
  "tags": [
519
- "Crypto"
511
+ "Salary"
520
512
  ],
521
- "operationId": "GetBtcToNokSpotPrice",
513
+ "summary": "Gets salaries for last month",
514
+ "description": "Retrieves the salaries of all users this month.",
515
+ "operationId": "GetSalariesThisMonth",
522
516
  "responses": {
523
517
  "200": {
524
- "description": "Current BTC to NOK spot price",
518
+ "description": "Salaries retrieved",
525
519
  "content": {
526
520
  "application/json": {
527
521
  "schema": {
528
- "type": "number",
529
- "format": "double"
522
+ "type": "array",
523
+ "items": {
524
+ "$ref": "#/components/schemas/employeeDetailedSalary"
525
+ }
530
526
  }
531
527
  }
532
- }
528
+ },
529
+ "x-ms-summary": "Success"
530
+ },
531
+ "401": {
532
+ "description": "Unauthorized access",
533
+ "x-ms-summary": "Unauthorized"
533
534
  }
534
535
  },
535
536
  "security": [
@@ -544,23 +545,25 @@
544
545
  ]
545
546
  }
546
547
  },
547
- "/v1.0/crypto/sync": {
548
+ "/v1.0/salary/estimate/me": {
548
549
  "get": {
549
550
  "tags": [
550
- "Crypto"
551
+ "Salary"
551
552
  ],
552
- "operationId": "SyncCryptoTransactions",
553
+ "summary": "Estimates my salary",
554
+ "description": "Estimates the salary of the current user based on logged hours.",
555
+ "operationId": "EstimateMySalary",
553
556
  "responses": {
554
557
  "200": {
555
- "description": "Sync Coinbase transactions to Cosmos DB",
558
+ "description": "Salary estimated",
556
559
  "content": {
557
560
  "application/json": {
558
561
  "schema": {
559
- "type": "number",
560
- "format": "double"
562
+ "$ref": "#/components/schemas/estimatedSalary"
561
563
  }
562
564
  }
563
- }
565
+ },
566
+ "x-ms-summary": "Success"
564
567
  }
565
568
  },
566
569
  "security": [
@@ -568,30 +571,36 @@
568
571
  "Implicit": [
569
572
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
570
573
  ]
571
- },
572
- {
573
- "ApiKey": []
574
574
  }
575
575
  ]
576
576
  }
577
577
  },
578
- "/v1.0/crypto/validation": {
578
+ "/v1.0/salary/estimate": {
579
579
  "get": {
580
580
  "tags": [
581
- "Crypto"
581
+ "Salary"
582
582
  ],
583
- "operationId": "ValidateCryptoDatabase",
583
+ "summary": "Estimates salaries",
584
+ "description": "Estimates the salaries of all users based on logged hours.",
585
+ "operationId": "EstimateSalaries",
584
586
  "responses": {
585
587
  "200": {
586
- "description": "Check that transaction counts match between Coinbase and Cosmos DB",
588
+ "description": "Salaries estimated",
587
589
  "content": {
588
590
  "application/json": {
589
591
  "schema": {
590
- "type": "number",
591
- "format": "double"
592
+ "type": "array",
593
+ "items": {
594
+ "$ref": "#/components/schemas/employeeEstimatedSalary"
595
+ }
592
596
  }
593
597
  }
594
- }
598
+ },
599
+ "x-ms-summary": "Success"
600
+ },
601
+ "401": {
602
+ "description": "Unauthorized access",
603
+ "x-ms-summary": "Unauthorized"
595
604
  }
596
605
  },
597
606
  "security": [
@@ -606,47 +615,23 @@
606
615
  ]
607
616
  }
608
617
  },
609
- "/v1.0/vouchers/gadgets": {
618
+ "/v1.0/salary-lines": {
610
619
  "get": {
611
620
  "tags": [
612
- "Vouchers"
613
- ],
614
- "summary": "Gets all gadget vouchers",
615
- "description": "Retrieves the gadget vouchers of all users for the current year.",
616
- "operationId": "GetAllGadgetsVouchers",
617
- "parameters": [
618
- {
619
- "name": "from",
620
- "in": "query",
621
- "description": "",
622
- "required": true,
623
- "schema": {
624
- "type": "string",
625
- "format": "date-time"
626
- },
627
- "x-ms-summary": "Date from"
628
- },
629
- {
630
- "name": "to",
631
- "in": "query",
632
- "description": "",
633
- "required": true,
634
- "schema": {
635
- "type": "string",
636
- "format": "date-time"
637
- },
638
- "x-ms-summary": "Date to"
639
- }
621
+ "Salary"
640
622
  ],
623
+ "summary": "Gets salary lines",
624
+ "description": "Retrieves the salary lines for all users.",
625
+ "operationId": "GetSalaryLines",
641
626
  "responses": {
642
627
  "200": {
643
- "description": "Vouchers retrieved",
628
+ "description": "Salary lines retrieved",
644
629
  "content": {
645
630
  "application/json": {
646
631
  "schema": {
647
632
  "type": "array",
648
633
  "items": {
649
- "$ref": "#/components/schemas/employeeVouchers"
634
+ "$ref": "#/components/schemas/accountingSalaryLine"
650
635
  }
651
636
  }
652
637
  }
@@ -670,52 +655,32 @@
670
655
  ]
671
656
  }
672
657
  },
673
- "/v1.0/vouchers/gadgets/me": {
658
+ "/v1.0/pay-items": {
674
659
  "get": {
675
660
  "tags": [
676
- "Vouchers"
677
- ],
678
- "summary": "Gets my gadget vouchers",
679
- "description": "Retrieves the gadget vouchers of the current user for the current year.",
680
- "operationId": "GetMyGadgetBudgetVouchers",
681
- "parameters": [
682
- {
683
- "name": "from",
684
- "in": "query",
685
- "description": "",
686
- "required": true,
687
- "schema": {
688
- "type": "string",
689
- "format": "date-time"
690
- },
691
- "x-ms-summary": "Date from"
692
- },
693
- {
694
- "name": "to",
695
- "in": "query",
696
- "description": "",
697
- "required": true,
698
- "schema": {
699
- "type": "string",
700
- "format": "date-time"
701
- },
702
- "x-ms-summary": "Date to"
703
- }
661
+ "Pay Items"
704
662
  ],
663
+ "summary": "Gets pay items",
664
+ "description": "Retrieves the pay items for all users.",
665
+ "operationId": "GetPayItems",
705
666
  "responses": {
706
667
  "200": {
707
- "description": "Vouchers retrieved",
668
+ "description": "Pay items retrieved",
708
669
  "content": {
709
670
  "application/json": {
710
671
  "schema": {
711
672
  "type": "array",
712
673
  "items": {
713
- "$ref": "#/components/schemas/gadgetVoucher"
674
+ "$ref": "#/components/schemas/accountingPayItem"
714
675
  }
715
676
  }
716
677
  }
717
678
  },
718
679
  "x-ms-summary": "Success"
680
+ },
681
+ "401": {
682
+ "description": "Unauthorized access",
683
+ "x-ms-summary": "Unauthorized"
719
684
  }
720
685
  },
721
686
  "security": [
@@ -723,37 +688,68 @@
723
688
  "Implicit": [
724
689
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
725
690
  ]
691
+ },
692
+ {
693
+ "ApiKey": []
726
694
  }
727
695
  ]
728
696
  }
729
697
  },
730
- "/v1.0/protected/health/{provider}": {
731
- "get": {
698
+ "/v1.0/import/salary/last-month": {
699
+ "post": {
732
700
  "tags": [
733
- "Health"
701
+ "Salary"
734
702
  ],
735
- "summary": "Checks an integration's connectivity",
736
- "operationId": "AccountingIntegrationHealth",
737
- "parameters": [
738
- {
739
- "name": "provider",
740
- "in": "path",
741
- "required": true,
703
+ "summary": "Imports salary for last month",
704
+ "description": "Imports the salary for the last month for specified employees.",
705
+ "operationId": "ImportSalaryLastMonth",
706
+ "parameters": [
707
+ {
708
+ "name": "includeCryptoVouchers",
709
+ "in": "query",
710
+ "description": "Decide if we want to include and import crypto vouchers",
742
711
  "schema": {
743
- "type": "string"
744
- }
712
+ "type": "boolean"
713
+ },
714
+ "x-ms-summary": "Include crypto vouchers"
745
715
  }
746
716
  ],
717
+ "requestBody": {
718
+ "description": "List of employee IDs to filter",
719
+ "content": {
720
+ "application/json": {
721
+ "schema": {
722
+ "type": "array",
723
+ "items": {
724
+ "type": "string"
725
+ }
726
+ }
727
+ }
728
+ },
729
+ "required": true
730
+ },
747
731
  "responses": {
748
732
  "200": {
749
- "description": "Health result",
733
+ "description": "Salary imported successfully",
750
734
  "content": {
751
735
  "application/json": {
752
736
  "schema": {
753
- "$ref": "#/components/schemas/integrationHealthResult"
737
+ "type": "array",
738
+ "items": {
739
+ "$ref": "#/components/schemas/employeeImport"
740
+ }
754
741
  }
755
742
  }
756
- }
743
+ },
744
+ "x-ms-summary": "Success"
745
+ },
746
+ "401": {
747
+ "description": "Unauthorized access",
748
+ "x-ms-summary": "Unauthorized"
749
+ },
750
+ "409": {
751
+ "description": "Conflict occurred while importing salary",
752
+ "x-ms-summary": "Conflict"
757
753
  }
758
754
  },
759
755
  "security": [
@@ -768,28 +764,32 @@
768
764
  ]
769
765
  }
770
766
  },
771
- "/v1.0/hours/last-month/me": {
767
+ "/v1.0/users": {
772
768
  "get": {
773
769
  "tags": [
774
- "Hours"
770
+ "Users"
775
771
  ],
776
- "summary": "Gets my hours for last month",
777
- "description": "Retrieves the hours logged by the current user for the last month.",
778
- "operationId": "GetMyHoursLastMonth",
772
+ "summary": "Gets a list of users",
773
+ "description": "Retrieves a list of users.",
774
+ "operationId": "GetUsers",
779
775
  "responses": {
780
776
  "200": {
781
- "description": "Hours retrieved",
777
+ "description": "Get power office users",
782
778
  "content": {
783
779
  "application/json": {
784
780
  "schema": {
785
781
  "type": "array",
786
782
  "items": {
787
- "$ref": "#/components/schemas/timeTransactionRecord"
783
+ "$ref": "#/components/schemas/accountingUser"
788
784
  }
789
785
  }
790
786
  }
791
787
  },
792
788
  "x-ms-summary": "Success"
789
+ },
790
+ "401": {
791
+ "description": "Unauthorized access",
792
+ "x-ms-summary": "Unauthorized"
793
793
  }
794
794
  },
795
795
  "security": [
@@ -797,27 +797,54 @@
797
797
  "Implicit": [
798
798
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
799
799
  ]
800
+ },
801
+ {
802
+ "ApiKey": []
800
803
  }
801
804
  ]
802
805
  }
803
806
  },
804
- "/v1.0/hours/summary/last-month/me": {
807
+ "/v1.0/vouchers/me": {
805
808
  "get": {
806
809
  "tags": [
807
- "Hours"
810
+ "Vouchers"
811
+ ],
812
+ "summary": "Gets my vouchers",
813
+ "description": "Retrieves the vouchers of the current user for the current year.",
814
+ "operationId": "GetMyVouchers",
815
+ "parameters": [
816
+ {
817
+ "name": "from",
818
+ "in": "query",
819
+ "description": "",
820
+ "required": true,
821
+ "schema": {
822
+ "type": "string",
823
+ "format": "date-time"
824
+ },
825
+ "x-ms-summary": "Date from"
826
+ },
827
+ {
828
+ "name": "to",
829
+ "in": "query",
830
+ "description": "",
831
+ "required": true,
832
+ "schema": {
833
+ "type": "string",
834
+ "format": "date-time"
835
+ },
836
+ "x-ms-summary": "Date to"
837
+ }
808
838
  ],
809
- "summary": "Gets my hours by activity for last month",
810
- "description": "Retrieves the hours logged by the current user by activity for the last month.",
811
- "operationId": "GetMyHoursByActivityLastMonth",
812
839
  "responses": {
813
840
  "200": {
814
- "description": "Hours by activity retrieved",
841
+ "description": "Vouchers retrieved",
815
842
  "content": {
816
843
  "application/json": {
817
844
  "schema": {
818
845
  "type": "array",
819
846
  "items": {
820
- "$ref": "#/components/schemas/timeTransactionSummary"
847
+ "$ref": "#/components/schemas/gadgetVoucher"
821
848
  }
822
849
  }
823
850
  }
@@ -834,19 +861,20 @@
834
861
  ]
835
862
  }
836
863
  },
837
- "/v1.0/hours/summary": {
864
+ "/v1.0/vouchers": {
838
865
  "get": {
839
866
  "tags": [
840
- "Hours"
867
+ "Vouchers"
841
868
  ],
842
- "summary": "Gets my hours by activity",
843
- "description": "Retrieves the hours logged by the current user by activity.",
844
- "operationId": "GetHoursByActivity",
869
+ "summary": "Gets all vouchers",
870
+ "description": "Retrieves the vouchers of all users for the current year.",
871
+ "operationId": "GetAllVouchers",
845
872
  "parameters": [
846
873
  {
847
874
  "name": "from",
848
875
  "in": "query",
849
876
  "description": "",
877
+ "required": true,
850
878
  "schema": {
851
879
  "type": "string",
852
880
  "format": "date-time"
@@ -857,6 +885,7 @@
857
885
  "name": "to",
858
886
  "in": "query",
859
887
  "description": "",
888
+ "required": true,
860
889
  "schema": {
861
890
  "type": "string",
862
891
  "format": "date-time"
@@ -866,18 +895,22 @@
866
895
  ],
867
896
  "responses": {
868
897
  "200": {
869
- "description": "Hours by activity retrieved",
898
+ "description": "Vouchers retrieved",
870
899
  "content": {
871
900
  "application/json": {
872
901
  "schema": {
873
902
  "type": "array",
874
903
  "items": {
875
- "$ref": "#/components/schemas/employeeTimeTransactionSummary"
904
+ "$ref": "#/components/schemas/employeeVouchers"
876
905
  }
877
906
  }
878
907
  }
879
908
  },
880
909
  "x-ms-summary": "Success"
910
+ },
911
+ "401": {
912
+ "description": "Unauthorized access",
913
+ "x-ms-summary": "Unauthorized"
881
914
  }
882
915
  },
883
916
  "security": [
@@ -892,23 +925,56 @@
892
925
  ]
893
926
  }
894
927
  },
895
- "/v1.0/hours/summary/last-month": {
928
+ "/v1.0/vouchers/transactions": {
896
929
  "get": {
897
930
  "tags": [
898
- "Hours"
931
+ "Vouchers"
932
+ ],
933
+ "summary": "Gets all account transactions",
934
+ "description": "Retrieves the account transactions between the specified dates.",
935
+ "operationId": "GetAllAccountTransactions",
936
+ "parameters": [
937
+ {
938
+ "name": "from",
939
+ "in": "query",
940
+ "description": "",
941
+ "required": true,
942
+ "schema": {
943
+ "type": "string",
944
+ "format": "date-time"
945
+ },
946
+ "x-ms-summary": "Date from"
947
+ },
948
+ {
949
+ "name": "to",
950
+ "in": "query",
951
+ "description": "",
952
+ "required": true,
953
+ "schema": {
954
+ "type": "string",
955
+ "format": "date-time"
956
+ },
957
+ "x-ms-summary": "Date to"
958
+ },
959
+ {
960
+ "name": "includeBeginningBalance",
961
+ "in": "query",
962
+ "description": "",
963
+ "schema": {
964
+ "type": "boolean"
965
+ },
966
+ "x-ms-summary": "Date to"
967
+ }
899
968
  ],
900
- "summary": "Gets hours by activity for last month",
901
- "description": "Retrieves the hours logged by all users by activity for the last month.",
902
- "operationId": "GetHoursByActivityLastMonth",
903
969
  "responses": {
904
970
  "200": {
905
- "description": "Hours by activity retrieved",
971
+ "description": "Account transactions retrieved",
906
972
  "content": {
907
973
  "application/json": {
908
974
  "schema": {
909
975
  "type": "array",
910
976
  "items": {
911
- "$ref": "#/components/schemas/employeeTimeTransactionSummary"
977
+ "$ref": "#/components/schemas/accountTransactionDto"
912
978
  }
913
979
  }
914
980
  }
@@ -932,32 +998,22 @@
932
998
  ]
933
999
  }
934
1000
  },
935
- "/v1.0/hours/last-month": {
1001
+ "/v1.0/crypto/account": {
936
1002
  "get": {
937
1003
  "tags": [
938
- "Hours"
1004
+ "Crypto"
939
1005
  ],
940
- "summary": "Gets hours for last month",
941
- "description": "Retrieves the hours logged by all users for the last month.",
942
- "operationId": "GetHoursLastMonth",
1006
+ "operationId": "GetBtcAccount",
943
1007
  "responses": {
944
1008
  "200": {
945
- "description": "Hours retrieved",
1009
+ "description": "The BTC account details",
946
1010
  "content": {
947
1011
  "application/json": {
948
1012
  "schema": {
949
- "type": "array",
950
- "items": {
951
- "$ref": "#/components/schemas/employeeHoursLastMonth"
952
- }
1013
+ "$ref": "#/components/schemas/cryptoAccount"
953
1014
  }
954
1015
  }
955
- },
956
- "x-ms-summary": "Success"
957
- },
958
- "401": {
959
- "description": "Unauthorized access",
960
- "x-ms-summary": "Unauthorized"
1016
+ }
961
1017
  }
962
1018
  },
963
1019
  "security": [
@@ -972,44 +1028,22 @@
972
1028
  ]
973
1029
  }
974
1030
  },
975
- "/v1.0/hours/current-month/locked/users": {
1031
+ "/v1.0/crypto/account/eur": {
976
1032
  "get": {
977
1033
  "tags": [
978
- "Hours"
979
- ],
980
- "summary": "Gets users with locked timesheets for current month",
981
- "description": "Retrieves a list of users with locked timesheets for the current month.",
982
- "operationId": "GetUsersWithLockedTimesheetsCurrentMonth",
983
- "parameters": [
984
- {
985
- "name": "monthOffset",
986
- "in": "query",
987
- "description": "The month offset to apply when retrieving locked timesheets.",
988
- "schema": {
989
- "type": "integer",
990
- "format": "int32"
991
- },
992
- "x-ms-summary": "Month offset"
993
- }
1034
+ "Crypto"
994
1035
  ],
1036
+ "operationId": "GetEurAccount",
995
1037
  "responses": {
996
1038
  "200": {
997
- "description": "Users with locked timesheets retrieved",
1039
+ "description": "The EUR account details",
998
1040
  "content": {
999
1041
  "application/json": {
1000
1042
  "schema": {
1001
- "type": "array",
1002
- "items": {
1003
- "type": "string"
1004
- }
1043
+ "$ref": "#/components/schemas/cryptoAccount"
1005
1044
  }
1006
1045
  }
1007
- },
1008
- "x-ms-summary": "Success"
1009
- },
1010
- "400": {
1011
- "description": "Invalid month offset value",
1012
- "x-ms-summary": "Bad Request"
1046
+ }
1013
1047
  }
1014
1048
  },
1015
1049
  "security": [
@@ -1024,29 +1058,45 @@
1024
1058
  ]
1025
1059
  }
1026
1060
  },
1027
- "/v1.0/hours/current-year/statistics": {
1061
+ "/v1.0/crypto/summaries": {
1028
1062
  "get": {
1029
1063
  "tags": [
1030
- "Hours"
1064
+ "Crypto"
1065
+ ],
1066
+ "operationId": "GetCryptoSummaries",
1067
+ "parameters": [
1068
+ {
1069
+ "name": "from",
1070
+ "in": "query",
1071
+ "description": "From datetime",
1072
+ "schema": {
1073
+ "type": "string",
1074
+ "format": "date-time"
1075
+ }
1076
+ },
1077
+ {
1078
+ "name": "to",
1079
+ "in": "query",
1080
+ "description": "To datetime",
1081
+ "schema": {
1082
+ "type": "string",
1083
+ "format": "date-time"
1084
+ }
1085
+ }
1031
1086
  ],
1032
- "summary": "Gets hours by activity statistics for current year",
1033
- "description": "Retrieves the hours logged by activity statistics for the current year.",
1034
- "operationId": "GetHoursByActivityStatisticsCurrentYear",
1035
1087
  "responses": {
1036
1088
  "200": {
1037
- "description": "Hours by activity statistics retrieved",
1089
+ "description": "List of transaction summaries",
1038
1090
  "content": {
1039
1091
  "application/json": {
1040
1092
  "schema": {
1041
- "type": "object",
1042
- "additionalProperties": {
1043
- "type": "number",
1044
- "format": "double"
1093
+ "type": "array",
1094
+ "items": {
1095
+ "$ref": "#/components/schemas/employeeTransactionSummary"
1045
1096
  }
1046
1097
  }
1047
1098
  }
1048
- },
1049
- "x-ms-summary": "Success"
1099
+ }
1050
1100
  }
1051
1101
  },
1052
1102
  "security": [
@@ -1061,25 +1111,51 @@
1061
1111
  ]
1062
1112
  }
1063
1113
  },
1064
- "/v1.0/projects/me": {
1114
+ "/v1.0/crypto/summary": {
1065
1115
  "get": {
1066
1116
  "tags": [
1067
- "Projects"
1117
+ "Crypto"
1118
+ ],
1119
+ "operationId": "GetCryptoSummary",
1120
+ "parameters": [
1121
+ {
1122
+ "name": "userEmail",
1123
+ "in": "query",
1124
+ "description": "Email of the user",
1125
+ "required": true,
1126
+ "schema": {
1127
+ "type": "string"
1128
+ }
1129
+ },
1130
+ {
1131
+ "name": "from",
1132
+ "in": "query",
1133
+ "description": "From datetime",
1134
+ "schema": {
1135
+ "type": "string",
1136
+ "format": "date-time"
1137
+ }
1138
+ },
1139
+ {
1140
+ "name": "to",
1141
+ "in": "query",
1142
+ "description": "To datetime",
1143
+ "schema": {
1144
+ "type": "string",
1145
+ "format": "date-time"
1146
+ }
1147
+ }
1068
1148
  ],
1069
- "summary": "Gets my projects",
1070
- "description": "Retrieves my projects.",
1071
- "operationId": "GetMyProjects",
1072
1149
  "responses": {
1073
1150
  "200": {
1074
- "description": "My projects retrieved",
1151
+ "description": "Transaction summary for the specified user",
1075
1152
  "content": {
1076
1153
  "application/json": {
1077
1154
  "schema": {
1078
- "$ref": "#/components/schemas/employeeProjects"
1155
+ "$ref": "#/components/schemas/transactionSummary"
1079
1156
  }
1080
1157
  }
1081
- },
1082
- "x-ms-summary": "Success"
1158
+ }
1083
1159
  }
1084
1160
  },
1085
1161
  "security": [
@@ -1087,32 +1163,49 @@
1087
1163
  "Implicit": [
1088
1164
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1089
1165
  ]
1166
+ },
1167
+ {
1168
+ "ApiKey": []
1090
1169
  }
1091
1170
  ]
1092
1171
  }
1093
1172
  },
1094
- "/v1.0/projects/all": {
1173
+ "/v1.0/crypto/summary/me": {
1095
1174
  "get": {
1096
1175
  "tags": [
1097
- "Projects"
1176
+ "Crypto"
1177
+ ],
1178
+ "operationId": "GetMyCryptoSummary",
1179
+ "parameters": [
1180
+ {
1181
+ "name": "from",
1182
+ "in": "query",
1183
+ "description": "From datetime",
1184
+ "schema": {
1185
+ "type": "string",
1186
+ "format": "date-time"
1187
+ }
1188
+ },
1189
+ {
1190
+ "name": "to",
1191
+ "in": "query",
1192
+ "description": "To datetime",
1193
+ "schema": {
1194
+ "type": "string",
1195
+ "format": "date-time"
1196
+ }
1197
+ }
1098
1198
  ],
1099
- "summary": "Gets all projects",
1100
- "description": "Retrieves all projects.",
1101
- "operationId": "GetAllProjects",
1102
1199
  "responses": {
1103
1200
  "200": {
1104
- "description": "My projects retrieved",
1201
+ "description": "Transaction summary for the authenticated user",
1105
1202
  "content": {
1106
1203
  "application/json": {
1107
1204
  "schema": {
1108
- "type": "array",
1109
- "items": {
1110
- "$ref": "#/components/schemas/employeeProjects"
1111
- }
1205
+ "$ref": "#/components/schemas/transactionSummary"
1112
1206
  }
1113
1207
  }
1114
- },
1115
- "x-ms-summary": "Success"
1208
+ }
1116
1209
  }
1117
1210
  },
1118
1211
  "security": [
@@ -1120,34 +1213,49 @@
1120
1213
  "Implicit": [
1121
1214
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1122
1215
  ]
1123
- },
1124
- {
1125
- "ApiKey": []
1126
1216
  }
1127
1217
  ]
1128
1218
  }
1129
1219
  },
1130
- "/v1.0/projects/average-hourly-rate": {
1220
+ "/v1.0/crypto/transactions": {
1131
1221
  "get": {
1132
1222
  "tags": [
1133
- "Projects"
1223
+ "Crypto"
1224
+ ],
1225
+ "operationId": "GetCryptoTransactions",
1226
+ "parameters": [
1227
+ {
1228
+ "name": "from",
1229
+ "in": "query",
1230
+ "description": "From datetime",
1231
+ "schema": {
1232
+ "type": "string",
1233
+ "format": "date-time"
1234
+ }
1235
+ },
1236
+ {
1237
+ "name": "to",
1238
+ "in": "query",
1239
+ "description": "To datetime",
1240
+ "schema": {
1241
+ "type": "string",
1242
+ "format": "date-time"
1243
+ }
1244
+ }
1134
1245
  ],
1135
- "summary": "Gets average hourly rate",
1136
- "description": "Average hourly rate across active projects. Cached in blob storage, auto-refreshed hourly. Returns null if none found.",
1137
- "operationId": "GetAverageHourlyRate",
1138
1246
  "responses": {
1139
1247
  "200": {
1140
- "description": "Payload of Nullable containing Int32",
1248
+ "description": "List of transactions",
1141
1249
  "content": {
1142
1250
  "application/json": {
1143
1251
  "schema": {
1144
- "type": "integer",
1145
- "format": "int32",
1146
- "nullable": true
1252
+ "type": "array",
1253
+ "items": {
1254
+ "$ref": "#/components/schemas/transaction"
1255
+ }
1147
1256
  }
1148
1257
  }
1149
- },
1150
- "x-ms-summary": "Success"
1258
+ }
1151
1259
  }
1152
1260
  },
1153
1261
  "security": [
@@ -1162,25 +1270,33 @@
1162
1270
  ]
1163
1271
  }
1164
1272
  },
1165
- "/v1.0/salary/last-month/me": {
1273
+ "/v1.0/crypto/transactions/{id}": {
1166
1274
  "get": {
1167
1275
  "tags": [
1168
- "Salary"
1276
+ "Crypto"
1277
+ ],
1278
+ "operationId": "GetCryptoTransaction",
1279
+ "parameters": [
1280
+ {
1281
+ "name": "id",
1282
+ "in": "path",
1283
+ "description": "ID of the transaction",
1284
+ "required": true,
1285
+ "schema": {
1286
+ "type": "string"
1287
+ }
1288
+ }
1169
1289
  ],
1170
- "summary": "Gets my salary for last month",
1171
- "description": "Retrieves the salary of the current user for the last month.",
1172
- "operationId": "GetMySalaryLastMonth",
1173
1290
  "responses": {
1174
1291
  "200": {
1175
- "description": "Salary retrieved",
1292
+ "description": "Details of a specific transaction",
1176
1293
  "content": {
1177
1294
  "application/json": {
1178
1295
  "schema": {
1179
- "$ref": "#/components/schemas/detailedSalaryWithSalaryLines"
1296
+ "$ref": "#/components/schemas/response_transaction"
1180
1297
  }
1181
1298
  }
1182
- },
1183
- "x-ms-summary": "Success"
1299
+ }
1184
1300
  }
1185
1301
  },
1186
1302
  "security": [
@@ -1188,29 +1304,29 @@
1188
1304
  "Implicit": [
1189
1305
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1190
1306
  ]
1307
+ },
1308
+ {
1309
+ "ApiKey": []
1191
1310
  }
1192
1311
  ]
1193
1312
  }
1194
1313
  },
1195
- "/v1.0/salary/this-month/me": {
1314
+ "/v1.0/crypto/statistics": {
1196
1315
  "get": {
1197
1316
  "tags": [
1198
- "Salary"
1317
+ "Crypto"
1199
1318
  ],
1200
- "summary": "Gets my salary for this month",
1201
- "description": "Retrieves the salary of the current user this month.",
1202
- "operationId": "GetMySalaryThisMonth",
1319
+ "operationId": "GetCryptoStatistics",
1203
1320
  "responses": {
1204
1321
  "200": {
1205
- "description": "Salary retrieved",
1322
+ "description": "Crypto statistics",
1206
1323
  "content": {
1207
1324
  "application/json": {
1208
1325
  "schema": {
1209
- "$ref": "#/components/schemas/detailedSalaryWithSalaryLines"
1326
+ "$ref": "#/components/schemas/response_statistics"
1210
1327
  }
1211
1328
  }
1212
- },
1213
- "x-ms-summary": "Success"
1329
+ }
1214
1330
  }
1215
1331
  },
1216
1332
  "security": [
@@ -1218,36 +1334,32 @@
1218
1334
  "Implicit": [
1219
1335
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1220
1336
  ]
1337
+ },
1338
+ {
1339
+ "ApiKey": []
1221
1340
  }
1222
1341
  ]
1223
1342
  }
1224
1343
  },
1225
- "/v1.0/salary/last-month": {
1344
+ "/v1.0/crypto/employees": {
1226
1345
  "get": {
1227
1346
  "tags": [
1228
- "Salary"
1347
+ "Crypto"
1229
1348
  ],
1230
- "summary": "Gets salaries for last month",
1231
- "description": "Retrieves the salaries of all users for the last month.",
1232
- "operationId": "GetSalariesLastMonth",
1349
+ "operationId": "GetEmployeesWithInnovativeSalary",
1233
1350
  "responses": {
1234
1351
  "200": {
1235
- "description": "Salaries retrieved",
1352
+ "description": "List of employees with innovative salary",
1236
1353
  "content": {
1237
1354
  "application/json": {
1238
1355
  "schema": {
1239
1356
  "type": "array",
1240
1357
  "items": {
1241
- "$ref": "#/components/schemas/employeeDetailedSalary"
1358
+ "$ref": "#/components/schemas/sanityEmployee"
1242
1359
  }
1243
1360
  }
1244
1361
  }
1245
- },
1246
- "x-ms-summary": "Success"
1247
- },
1248
- "401": {
1249
- "description": "Unauthorized access",
1250
- "x-ms-summary": "Unauthorized"
1362
+ }
1251
1363
  }
1252
1364
  },
1253
1365
  "security": [
@@ -1262,32 +1374,25 @@
1262
1374
  ]
1263
1375
  }
1264
1376
  },
1265
- "/v1.0/salary/this-month": {
1377
+ "/v1.0/crypto/salary/daily/me": {
1266
1378
  "get": {
1267
1379
  "tags": [
1268
- "Salary"
1380
+ "Crypto"
1269
1381
  ],
1270
- "summary": "Gets salaries for last month",
1271
- "description": "Retrieves the salaries of all users this month.",
1272
- "operationId": "GetSalariesThisMonth",
1382
+ "operationId": "GetMyDailyCryptoSalary",
1273
1383
  "responses": {
1274
1384
  "200": {
1275
- "description": "Salaries retrieved",
1385
+ "description": "Get my daily salary",
1276
1386
  "content": {
1277
1387
  "application/json": {
1278
1388
  "schema": {
1279
- "type": "array",
1280
- "items": {
1281
- "$ref": "#/components/schemas/employeeDetailedSalary"
1282
- }
1389
+ "$ref": "#/components/schemas/todaysSalarySummary"
1283
1390
  }
1284
1391
  }
1285
- },
1286
- "x-ms-summary": "Success"
1392
+ }
1287
1393
  },
1288
- "401": {
1289
- "description": "Unauthorized access",
1290
- "x-ms-summary": "Unauthorized"
1394
+ "204": {
1395
+ "description": "No registered hours"
1291
1396
  }
1292
1397
  },
1293
1398
  "security": [
@@ -1295,32 +1400,29 @@
1295
1400
  "Implicit": [
1296
1401
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1297
1402
  ]
1298
- },
1299
- {
1300
- "ApiKey": []
1301
1403
  }
1302
1404
  ]
1303
1405
  }
1304
1406
  },
1305
- "/v1.0/salary/estimate/me": {
1407
+ "/v1.0/crypto/salaries/daily": {
1306
1408
  "get": {
1307
1409
  "tags": [
1308
- "Salary"
1410
+ "Crypto"
1309
1411
  ],
1310
- "summary": "Estimates my salary",
1311
- "description": "Estimates the salary of the current user based on logged hours.",
1312
- "operationId": "EstimateMySalary",
1412
+ "operationId": "GetDailyCryptoSalaries",
1313
1413
  "responses": {
1314
1414
  "200": {
1315
- "description": "Salary estimated",
1415
+ "description": "Get daily salaries",
1316
1416
  "content": {
1317
1417
  "application/json": {
1318
1418
  "schema": {
1319
- "$ref": "#/components/schemas/estimatedSalary"
1419
+ "type": "array",
1420
+ "items": {
1421
+ "$ref": "#/components/schemas/todaysSalarySummary"
1422
+ }
1320
1423
  }
1321
1424
  }
1322
- },
1323
- "x-ms-summary": "Success"
1425
+ }
1324
1426
  }
1325
1427
  },
1326
1428
  "security": [
@@ -1328,36 +1430,32 @@
1328
1430
  "Implicit": [
1329
1431
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1330
1432
  ]
1433
+ },
1434
+ {
1435
+ "ApiKey": []
1331
1436
  }
1332
1437
  ]
1333
1438
  }
1334
1439
  },
1335
- "/v1.0/salary/estimate": {
1440
+ "/v1.0/crypto/salaries/daily/pay": {
1336
1441
  "get": {
1337
1442
  "tags": [
1338
- "Salary"
1443
+ "Crypto"
1339
1444
  ],
1340
- "summary": "Estimates salaries",
1341
- "description": "Estimates the salaries of all users based on logged hours.",
1342
- "operationId": "EstimateSalaries",
1445
+ "operationId": "PayDailyCryptoSalaries",
1343
1446
  "responses": {
1344
1447
  "200": {
1345
- "description": "Salaries estimated",
1448
+ "description": "Pay daily salaries with CoinBase",
1346
1449
  "content": {
1347
1450
  "application/json": {
1348
1451
  "schema": {
1349
1452
  "type": "array",
1350
1453
  "items": {
1351
- "$ref": "#/components/schemas/employeeEstimatedSalary"
1454
+ "$ref": "#/components/schemas/response_transaction"
1352
1455
  }
1353
1456
  }
1354
1457
  }
1355
- },
1356
- "x-ms-summary": "Success"
1357
- },
1358
- "401": {
1359
- "description": "Unauthorized access",
1360
- "x-ms-summary": "Unauthorized"
1458
+ }
1361
1459
  }
1362
1460
  },
1363
1461
  "security": [
@@ -1372,32 +1470,22 @@
1372
1470
  ]
1373
1471
  }
1374
1472
  },
1375
- "/v1.0/salary-lines": {
1473
+ "/v1.0/crypto/user": {
1376
1474
  "get": {
1377
1475
  "tags": [
1378
- "Salary"
1476
+ "Crypto"
1379
1477
  ],
1380
- "summary": "Gets salary lines",
1381
- "description": "Retrieves the salary lines for all users.",
1382
- "operationId": "GetSalaryLines",
1478
+ "operationId": "GetCryptoUser",
1383
1479
  "responses": {
1384
1480
  "200": {
1385
- "description": "Salary lines retrieved",
1481
+ "description": "Details of the authenticated user",
1386
1482
  "content": {
1387
1483
  "application/json": {
1388
1484
  "schema": {
1389
- "type": "array",
1390
- "items": {
1391
- "$ref": "#/components/schemas/accountingSalaryLine"
1392
- }
1485
+ "$ref": "#/components/schemas/cryptoUser"
1393
1486
  }
1394
1487
  }
1395
- },
1396
- "x-ms-summary": "Success"
1397
- },
1398
- "401": {
1399
- "description": "Unauthorized access",
1400
- "x-ms-summary": "Unauthorized"
1488
+ }
1401
1489
  }
1402
1490
  },
1403
1491
  "security": [
@@ -1412,32 +1500,23 @@
1412
1500
  ]
1413
1501
  }
1414
1502
  },
1415
- "/v1.0/pay-items": {
1503
+ "/v1.0/crypto/btc-nok": {
1416
1504
  "get": {
1417
1505
  "tags": [
1418
- "Pay Items"
1506
+ "Crypto"
1419
1507
  ],
1420
- "summary": "Gets pay items",
1421
- "description": "Retrieves the pay items for all users.",
1422
- "operationId": "GetPayItems",
1508
+ "operationId": "GetBtcToNokSpotPrice",
1423
1509
  "responses": {
1424
1510
  "200": {
1425
- "description": "Pay items retrieved",
1511
+ "description": "Current BTC to NOK spot price",
1426
1512
  "content": {
1427
1513
  "application/json": {
1428
1514
  "schema": {
1429
- "type": "array",
1430
- "items": {
1431
- "$ref": "#/components/schemas/accountingPayItem"
1432
- }
1515
+ "type": "number",
1516
+ "format": "double"
1433
1517
  }
1434
1518
  }
1435
- },
1436
- "x-ms-summary": "Success"
1437
- },
1438
- "401": {
1439
- "description": "Unauthorized access",
1440
- "x-ms-summary": "Unauthorized"
1519
+ }
1441
1520
  }
1442
1521
  },
1443
1522
  "security": [
@@ -1452,61 +1531,23 @@
1452
1531
  ]
1453
1532
  }
1454
1533
  },
1455
- "/v1.0/import/salary/last-month": {
1456
- "post": {
1534
+ "/v1.0/crypto/sync": {
1535
+ "get": {
1457
1536
  "tags": [
1458
- "Salary"
1459
- ],
1460
- "summary": "Imports salary for last month",
1461
- "description": "Imports the salary for the last month for specified employees.",
1462
- "operationId": "ImportSalaryLastMonth",
1463
- "parameters": [
1464
- {
1465
- "name": "includeCryptoVouchers",
1466
- "in": "query",
1467
- "description": "Decide if we want to include and import crypto vouchers",
1468
- "schema": {
1469
- "type": "boolean"
1470
- },
1471
- "x-ms-summary": "Include crypto vouchers"
1472
- }
1537
+ "Crypto"
1473
1538
  ],
1474
- "requestBody": {
1475
- "description": "List of employee IDs to filter",
1476
- "content": {
1477
- "application/json": {
1478
- "schema": {
1479
- "type": "array",
1480
- "items": {
1481
- "type": "string"
1482
- }
1483
- }
1484
- }
1485
- },
1486
- "required": true
1487
- },
1539
+ "operationId": "SyncCryptoTransactions",
1488
1540
  "responses": {
1489
1541
  "200": {
1490
- "description": "Salary imported successfully",
1542
+ "description": "Sync Coinbase transactions to Cosmos DB",
1491
1543
  "content": {
1492
1544
  "application/json": {
1493
1545
  "schema": {
1494
- "type": "array",
1495
- "items": {
1496
- "$ref": "#/components/schemas/employeeImport"
1497
- }
1546
+ "type": "number",
1547
+ "format": "double"
1498
1548
  }
1499
1549
  }
1500
- },
1501
- "x-ms-summary": "Success"
1502
- },
1503
- "401": {
1504
- "description": "Unauthorized access",
1505
- "x-ms-summary": "Unauthorized"
1506
- },
1507
- "409": {
1508
- "description": "Conflict occurred while importing salary",
1509
- "x-ms-summary": "Conflict"
1550
+ }
1510
1551
  }
1511
1552
  },
1512
1553
  "security": [
@@ -1521,32 +1562,23 @@
1521
1562
  ]
1522
1563
  }
1523
1564
  },
1524
- "/v1.0/users": {
1565
+ "/v1.0/crypto/validation": {
1525
1566
  "get": {
1526
1567
  "tags": [
1527
- "Users"
1568
+ "Crypto"
1528
1569
  ],
1529
- "summary": "Gets a list of users",
1530
- "description": "Retrieves a list of users.",
1531
- "operationId": "GetUsers",
1570
+ "operationId": "ValidateCryptoDatabase",
1532
1571
  "responses": {
1533
1572
  "200": {
1534
- "description": "Get power office users",
1573
+ "description": "Check that transaction counts match between Coinbase and Cosmos DB",
1535
1574
  "content": {
1536
1575
  "application/json": {
1537
1576
  "schema": {
1538
- "type": "array",
1539
- "items": {
1540
- "$ref": "#/components/schemas/accountingUser"
1541
- }
1577
+ "type": "number",
1578
+ "format": "double"
1542
1579
  }
1543
1580
  }
1544
- },
1545
- "x-ms-summary": "Success"
1546
- },
1547
- "401": {
1548
- "description": "Unauthorized access",
1549
- "x-ms-summary": "Unauthorized"
1581
+ }
1550
1582
  }
1551
1583
  },
1552
1584
  "security": [
@@ -1561,14 +1593,14 @@
1561
1593
  ]
1562
1594
  }
1563
1595
  },
1564
- "/v1.0/vouchers/me": {
1596
+ "/v1.0/vouchers/gadgets": {
1565
1597
  "get": {
1566
1598
  "tags": [
1567
1599
  "Vouchers"
1568
1600
  ],
1569
- "summary": "Gets my vouchers",
1570
- "description": "Retrieves the vouchers of the current user for the current year.",
1571
- "operationId": "GetMyVouchers",
1601
+ "summary": "Gets all gadget vouchers",
1602
+ "description": "Retrieves the gadget vouchers of all users for the current year.",
1603
+ "operationId": "GetAllGadgetsVouchers",
1572
1604
  "parameters": [
1573
1605
  {
1574
1606
  "name": "from",
@@ -1601,12 +1633,16 @@
1601
1633
  "schema": {
1602
1634
  "type": "array",
1603
1635
  "items": {
1604
- "$ref": "#/components/schemas/gadgetVoucher"
1636
+ "$ref": "#/components/schemas/employeeVouchers"
1605
1637
  }
1606
1638
  }
1607
1639
  }
1608
1640
  },
1609
1641
  "x-ms-summary": "Success"
1642
+ },
1643
+ "401": {
1644
+ "description": "Unauthorized access",
1645
+ "x-ms-summary": "Unauthorized"
1610
1646
  }
1611
1647
  },
1612
1648
  "security": [
@@ -1614,18 +1650,21 @@
1614
1650
  "Implicit": [
1615
1651
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1616
1652
  ]
1653
+ },
1654
+ {
1655
+ "ApiKey": []
1617
1656
  }
1618
1657
  ]
1619
1658
  }
1620
1659
  },
1621
- "/v1.0/vouchers": {
1660
+ "/v1.0/vouchers/gadgets/me": {
1622
1661
  "get": {
1623
1662
  "tags": [
1624
1663
  "Vouchers"
1625
1664
  ],
1626
- "summary": "Gets all vouchers",
1627
- "description": "Retrieves the vouchers of all users for the current year.",
1628
- "operationId": "GetAllVouchers",
1665
+ "summary": "Gets my gadget vouchers",
1666
+ "description": "Retrieves the gadget vouchers of the current user for the current year.",
1667
+ "operationId": "GetMyGadgetBudgetVouchers",
1629
1668
  "parameters": [
1630
1669
  {
1631
1670
  "name": "from",
@@ -1658,16 +1697,12 @@
1658
1697
  "schema": {
1659
1698
  "type": "array",
1660
1699
  "items": {
1661
- "$ref": "#/components/schemas/employeeVouchers"
1700
+ "$ref": "#/components/schemas/gadgetVoucher"
1662
1701
  }
1663
1702
  }
1664
1703
  }
1665
1704
  },
1666
1705
  "x-ms-summary": "Success"
1667
- },
1668
- "401": {
1669
- "description": "Unauthorized access",
1670
- "x-ms-summary": "Unauthorized"
1671
1706
  }
1672
1707
  },
1673
1708
  "security": [
@@ -1675,72 +1710,37 @@
1675
1710
  "Implicit": [
1676
1711
  "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1677
1712
  ]
1678
- },
1679
- {
1680
- "ApiKey": []
1681
1713
  }
1682
1714
  ]
1683
1715
  }
1684
1716
  },
1685
- "/v1.0/vouchers/transactions": {
1717
+ "/v1.0/protected/health/{provider}": {
1686
1718
  "get": {
1687
1719
  "tags": [
1688
- "Vouchers"
1720
+ "Health"
1689
1721
  ],
1690
- "summary": "Gets all account transactions",
1691
- "description": "Retrieves the account transactions between the specified dates.",
1692
- "operationId": "GetAllAccountTransactions",
1722
+ "summary": "Checks an integration's connectivity",
1723
+ "operationId": "AccountingIntegrationHealth",
1693
1724
  "parameters": [
1694
1725
  {
1695
- "name": "from",
1696
- "in": "query",
1697
- "description": "",
1698
- "required": true,
1699
- "schema": {
1700
- "type": "string",
1701
- "format": "date-time"
1702
- },
1703
- "x-ms-summary": "Date from"
1704
- },
1705
- {
1706
- "name": "to",
1707
- "in": "query",
1708
- "description": "",
1726
+ "name": "provider",
1727
+ "in": "path",
1709
1728
  "required": true,
1710
1729
  "schema": {
1711
- "type": "string",
1712
- "format": "date-time"
1713
- },
1714
- "x-ms-summary": "Date to"
1715
- },
1716
- {
1717
- "name": "includeBeginningBalance",
1718
- "in": "query",
1719
- "description": "",
1720
- "schema": {
1721
- "type": "boolean"
1722
- },
1723
- "x-ms-summary": "Date to"
1730
+ "type": "string"
1731
+ }
1724
1732
  }
1725
1733
  ],
1726
1734
  "responses": {
1727
1735
  "200": {
1728
- "description": "Account transactions retrieved",
1736
+ "description": "Health result",
1729
1737
  "content": {
1730
1738
  "application/json": {
1731
1739
  "schema": {
1732
- "type": "array",
1733
- "items": {
1734
- "$ref": "#/components/schemas/accountTransactionDto"
1735
- }
1740
+ "$ref": "#/components/schemas/integrationHealthResult"
1736
1741
  }
1737
1742
  }
1738
- },
1739
- "x-ms-summary": "Success"
1740
- },
1741
- "401": {
1742
- "description": "Unauthorized access",
1743
- "x-ms-summary": "Unauthorized"
1743
+ }
1744
1744
  }
1745
1745
  },
1746
1746
  "security": [
@@ -2656,6 +2656,31 @@
2656
2656
  },
2657
2657
  "nullable": true
2658
2658
  },
2659
+ "breakdownRow": {
2660
+ "type": "object",
2661
+ "properties": {
2662
+ "label": {
2663
+ "type": "string"
2664
+ },
2665
+ "value": {
2666
+ "type": "string"
2667
+ },
2668
+ "kind": {
2669
+ "enum": [
2670
+ "Rate",
2671
+ "Hours",
2672
+ "Ratio",
2673
+ "Amount",
2674
+ "Deduction",
2675
+ "Subtotal",
2676
+ "Total",
2677
+ "Note"
2678
+ ],
2679
+ "type": "string",
2680
+ "default": "Rate"
2681
+ }
2682
+ }
2683
+ },
2659
2684
  "componentBlocksInnerOneOfChildrenInner": {
2660
2685
  "type": "object",
2661
2686
  "properties": {
@@ -2798,6 +2823,12 @@
2798
2823
  },
2799
2824
  "displayValue": {
2800
2825
  "type": "string"
2826
+ },
2827
+ "breakdown": {
2828
+ "type": "array",
2829
+ "items": {
2830
+ "$ref": "#/components/schemas/breakdownRow"
2831
+ }
2801
2832
  }
2802
2833
  }
2803
2834
  },
@@ -2896,6 +2927,12 @@
2896
2927
  },
2897
2928
  "displayValue": {
2898
2929
  "type": "string"
2930
+ },
2931
+ "breakdown": {
2932
+ "type": "array",
2933
+ "items": {
2934
+ "$ref": "#/components/schemas/breakdownRow"
2935
+ }
2899
2936
  }
2900
2937
  }
2901
2938
  },
@@ -3245,6 +3282,12 @@
3245
3282
  },
3246
3283
  "displayValue": {
3247
3284
  "type": "string"
3285
+ },
3286
+ "breakdown": {
3287
+ "type": "array",
3288
+ "items": {
3289
+ "$ref": "#/components/schemas/breakdownRow"
3290
+ }
3248
3291
  }
3249
3292
  }
3250
3293
  },