@snokam/mcp-api 0.105.0 → 0.106.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.
@@ -1,4732 +0,0 @@
1
- {
2
- "openapi": "3.0.1",
3
- "info": {
4
- "title": "Sales API",
5
- "description": "Sales management API",
6
- "version": "v1.0.0"
7
- },
8
- "servers": [
9
- {
10
- "url": "https://sales.api.test.snokam.no"
11
- }
12
- ],
13
- "paths": {
14
- "/v1.0/GetHealth": {
15
- "get": {
16
- "tags": [
17
- "Health"
18
- ],
19
- "summary": "Health check",
20
- "description": "Returns a health check response.",
21
- "operationId": "GetHealth",
22
- "responses": {
23
- "200": {
24
- "description": "Service is healthy",
25
- "content": {
26
- "application/json": {
27
- "schema": {
28
- "type": "object"
29
- }
30
- }
31
- },
32
- "x-ms-summary": "Success"
33
- }
34
- }
35
- }
36
- },
37
- "/v1.0/tenders/{id}/match-consultants": {
38
- "post": {
39
- "tags": [
40
- "Tenders"
41
- ],
42
- "summary": "Start CV matching for a tender",
43
- "operationId": "StartCvMatching",
44
- "parameters": [
45
- {
46
- "name": "id",
47
- "in": "path",
48
- "required": true,
49
- "schema": {
50
- "type": "string"
51
- }
52
- }
53
- ],
54
- "responses": {
55
- "202": {
56
- "description": "Payload of Object",
57
- "content": {
58
- "application/json": {
59
- "schema": {
60
- "type": "object"
61
- }
62
- }
63
- }
64
- },
65
- "404": {
66
- "description": "No description"
67
- }
68
- },
69
- "security": [
70
- {
71
- "Implicit": [
72
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
73
- ]
74
- }
75
- ]
76
- }
77
- },
78
- "/v1.0/tenders/ingest": {
79
- "post": {
80
- "tags": [
81
- "Tenders"
82
- ],
83
- "summary": "Start tender ingestion",
84
- "operationId": "StartTenderIngestion",
85
- "requestBody": {
86
- "content": {
87
- "application/json": {
88
- "schema": {
89
- "$ref": "#/components/schemas/ingestionRequest"
90
- }
91
- }
92
- },
93
- "required": true
94
- },
95
- "responses": {
96
- "202": {
97
- "description": "Payload of Object",
98
- "content": {
99
- "application/json": {
100
- "schema": {
101
- "type": "object"
102
- }
103
- }
104
- }
105
- }
106
- },
107
- "security": [
108
- {
109
- "Implicit": [
110
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
111
- ]
112
- }
113
- ]
114
- }
115
- },
116
- "/v1.0/jobs/{jobId}": {
117
- "get": {
118
- "tags": [
119
- "Admin"
120
- ],
121
- "summary": "Get agent job by ID",
122
- "operationId": "GetAgentJob",
123
- "parameters": [
124
- {
125
- "name": "jobId",
126
- "in": "path",
127
- "required": true,
128
- "schema": {
129
- "type": "string"
130
- }
131
- }
132
- ],
133
- "responses": {
134
- "200": {
135
- "description": "Payload of AgentJob",
136
- "content": {
137
- "application/json": {
138
- "schema": {
139
- "$ref": "#/components/schemas/agentJob"
140
- }
141
- }
142
- }
143
- },
144
- "404": {
145
- "description": "No description"
146
- }
147
- },
148
- "security": [
149
- {
150
- "Implicit": [
151
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
152
- ]
153
- }
154
- ]
155
- }
156
- },
157
- "/v1.0/admin/reprocess-ingestion": {
158
- "post": {
159
- "tags": [
160
- "Admin"
161
- ],
162
- "summary": "Batch reprocess tender ingestion",
163
- "operationId": "ReprocessIngestion",
164
- "parameters": [
165
- {
166
- "name": "unmatchedOnly",
167
- "in": "query",
168
- "description": "If true, only reprocess tenders with no existing consultant matches",
169
- "schema": {
170
- "type": "boolean"
171
- }
172
- }
173
- ],
174
- "responses": {
175
- "200": {
176
- "description": "Payload of Object",
177
- "content": {
178
- "application/json": {
179
- "schema": {
180
- "type": "object"
181
- }
182
- }
183
- }
184
- }
185
- },
186
- "security": [
187
- {
188
- "Implicit": [
189
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
190
- ]
191
- }
192
- ]
193
- }
194
- },
195
- "/v1.0/scan/doffin": {
196
- "post": {
197
- "tags": [
198
- "Scan"
199
- ],
200
- "summary": "Trigger a Doffin scan immediately",
201
- "operationId": "TriggerDoffinScan",
202
- "responses": {
203
- "200": {
204
- "description": "Payload of Object",
205
- "content": {
206
- "application/json": {
207
- "schema": {
208
- "type": "object"
209
- }
210
- }
211
- }
212
- }
213
- },
214
- "security": [
215
- {
216
- "Implicit": [
217
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
218
- ]
219
- }
220
- ]
221
- }
222
- },
223
- "/v1.0/scan/email": {
224
- "post": {
225
- "tags": [
226
- "Scan"
227
- ],
228
- "summary": "Trigger an email scan immediately",
229
- "operationId": "TriggerEmailScan",
230
- "responses": {
231
- "200": {
232
- "description": "Payload of Object",
233
- "content": {
234
- "application/json": {
235
- "schema": {
236
- "type": "object"
237
- }
238
- }
239
- }
240
- }
241
- },
242
- "security": [
243
- {
244
- "Implicit": [
245
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
246
- ]
247
- }
248
- ]
249
- }
250
- },
251
- "/v1.0/scan/sites": {
252
- "post": {
253
- "tags": [
254
- "Scan"
255
- ],
256
- "summary": "Trigger an agentic site scan immediately over all configured sources",
257
- "operationId": "TriggerSiteScan",
258
- "responses": {
259
- "200": {
260
- "description": "Payload of Object",
261
- "content": {
262
- "application/json": {
263
- "schema": {
264
- "type": "object"
265
- }
266
- }
267
- }
268
- }
269
- },
270
- "security": [
271
- {
272
- "Implicit": [
273
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
274
- ]
275
- }
276
- ]
277
- }
278
- },
279
- "/v1.0/admin/reprocess-emails": {
280
- "post": {
281
- "tags": [
282
- "Admin"
283
- ],
284
- "summary": "Re-fetch all emails since N days ago and re-ingest them so raw content is stored as source_email blobs",
285
- "operationId": "ReprocessEmails",
286
- "parameters": [
287
- {
288
- "name": "daysSince",
289
- "in": "query",
290
- "description": "Number of days back to fetch emails (default: 90)",
291
- "schema": {
292
- "type": "string"
293
- }
294
- }
295
- ],
296
- "responses": {
297
- "200": {
298
- "description": "Payload of Object",
299
- "content": {
300
- "application/json": {
301
- "schema": {
302
- "type": "object"
303
- }
304
- }
305
- }
306
- }
307
- }
308
- }
309
- },
310
- "/v1.0/crawl/jobs/reap-zombies": {
311
- "post": {
312
- "tags": [
313
- "Crawl"
314
- ],
315
- "summary": "Manually fail pending/running jobs older than 15 min (same logic as the every-5-min timer)",
316
- "operationId": "ReapZombieJobsManual",
317
- "parameters": [
318
- {
319
- "name": "thresholdMinutes",
320
- "in": "query",
321
- "description": "Override the 15 min threshold (1-180)",
322
- "schema": {
323
- "type": "integer",
324
- "format": "int32"
325
- }
326
- }
327
- ],
328
- "responses": {
329
- "200": {
330
- "description": "Payload of ZombieReapResult",
331
- "content": {
332
- "application/json": {
333
- "schema": {
334
- "$ref": "#/components/schemas/zombieReapResult"
335
- }
336
- }
337
- }
338
- }
339
- },
340
- "security": [
341
- {
342
- "Implicit": [
343
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
344
- ]
345
- }
346
- ]
347
- }
348
- },
349
- "/v1.0/tenders/{tenderId}/audit": {
350
- "get": {
351
- "tags": [
352
- "Audit"
353
- ],
354
- "summary": "Recent audit events for a single tender, newest first",
355
- "operationId": "GetTenderAudit",
356
- "parameters": [
357
- {
358
- "name": "tenderId",
359
- "in": "path",
360
- "required": true,
361
- "schema": {
362
- "type": "string"
363
- }
364
- },
365
- {
366
- "name": "limit",
367
- "in": "query",
368
- "description": "Max events to return (default 50, max 500)",
369
- "schema": {
370
- "type": "integer",
371
- "format": "int32"
372
- }
373
- }
374
- ],
375
- "responses": {
376
- "200": {
377
- "description": "Payload of Array of AuditEvent",
378
- "content": {
379
- "application/json": {
380
- "schema": {
381
- "type": "array",
382
- "items": {
383
- "$ref": "#/components/schemas/auditEvent"
384
- }
385
- }
386
- }
387
- }
388
- }
389
- },
390
- "security": [
391
- {
392
- "Implicit": [
393
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
394
- ]
395
- }
396
- ]
397
- }
398
- },
399
- "/v1.0/audit/recent": {
400
- "get": {
401
- "tags": [
402
- "Audit"
403
- ],
404
- "summary": "Recent audit events across all tenders, newest first",
405
- "operationId": "GetRecentAudit",
406
- "parameters": [
407
- {
408
- "name": "limit",
409
- "in": "query",
410
- "description": "Max events to return (default 100, max 1000)",
411
- "schema": {
412
- "type": "integer",
413
- "format": "int32"
414
- }
415
- },
416
- {
417
- "name": "sinceHours",
418
- "in": "query",
419
- "description": "Only events from the last N hours (default 24)",
420
- "schema": {
421
- "type": "integer",
422
- "format": "int32"
423
- }
424
- }
425
- ],
426
- "responses": {
427
- "200": {
428
- "description": "Payload of Array of AuditEvent",
429
- "content": {
430
- "application/json": {
431
- "schema": {
432
- "type": "array",
433
- "items": {
434
- "$ref": "#/components/schemas/auditEvent"
435
- }
436
- }
437
- }
438
- }
439
- }
440
- },
441
- "security": [
442
- {
443
- "Implicit": [
444
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
445
- ]
446
- }
447
- ]
448
- }
449
- },
450
- "/v1.0/tenders/funnel": {
451
- "get": {
452
- "tags": [
453
- "Tenders"
454
- ],
455
- "summary": "Pipeline funnel analytics: stage counts, conversion rates, cycle times",
456
- "operationId": "GetTenderFunnel",
457
- "parameters": [
458
- {
459
- "name": "windowDays",
460
- "in": "query",
461
- "description": "Rolling window in days (default 30, max 365)",
462
- "schema": {
463
- "type": "integer",
464
- "format": "int32"
465
- }
466
- }
467
- ],
468
- "responses": {
469
- "200": {
470
- "description": "Payload of FunnelResponse",
471
- "content": {
472
- "application/json": {
473
- "schema": {
474
- "$ref": "#/components/schemas/funnelResponse"
475
- }
476
- }
477
- }
478
- }
479
- },
480
- "security": [
481
- {
482
- "Implicit": [
483
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
484
- ]
485
- }
486
- ]
487
- }
488
- },
489
- "/v1.0/tenders/stats": {
490
- "get": {
491
- "tags": [
492
- "Tenders"
493
- ],
494
- "summary": "Aggregated tender KPIs for the admin dashboard (by status/stage/health + activity window)",
495
- "operationId": "GetTenderStats",
496
- "parameters": [
497
- {
498
- "name": "windowDays",
499
- "in": "query",
500
- "description": "Rolling window for activity-based metrics (defaults to 30, max 365)",
501
- "schema": {
502
- "type": "integer",
503
- "format": "int32"
504
- }
505
- }
506
- ],
507
- "responses": {
508
- "200": {
509
- "description": "Payload of TenderStatsResponse",
510
- "content": {
511
- "application/json": {
512
- "schema": {
513
- "$ref": "#/components/schemas/tenderStatsResponse"
514
- }
515
- }
516
- }
517
- }
518
- },
519
- "security": [
520
- {
521
- "Implicit": [
522
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
523
- ]
524
- }
525
- ]
526
- }
527
- },
528
- "/v1.0/consultants/stats": {
529
- "get": {
530
- "tags": [
531
- "Consultants"
532
- ],
533
- "summary": "Aggregated consultant KPIs (total, availability split, avg fit score from latest matches)",
534
- "operationId": "GetConsultantStats",
535
- "responses": {
536
- "200": {
537
- "description": "Payload of ConsultantStatsResponse",
538
- "content": {
539
- "application/json": {
540
- "schema": {
541
- "$ref": "#/components/schemas/consultantStatsResponse"
542
- }
543
- }
544
- }
545
- }
546
- },
547
- "security": [
548
- {
549
- "Implicit": [
550
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
551
- ]
552
- }
553
- ]
554
- }
555
- },
556
- "/v1.0/backups": {
557
- "post": {
558
- "tags": [
559
- "Backups"
560
- ],
561
- "summary": "Snapshot all Cosmos containers + (optionally) tender documents to the shared backups storage account.",
562
- "operationId": "CreateSalesBackup",
563
- "requestBody": {
564
- "content": {
565
- "application/json": {
566
- "schema": {
567
- "$ref": "#/components/schemas/createBackupRequest"
568
- }
569
- }
570
- }
571
- },
572
- "responses": {
573
- "200": {
574
- "description": "Payload of BackupSummary",
575
- "content": {
576
- "application/json": {
577
- "schema": {
578
- "$ref": "#/components/schemas/backupSummary"
579
- }
580
- }
581
- }
582
- }
583
- },
584
- "security": [
585
- {
586
- "Implicit": [
587
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
588
- ]
589
- }
590
- ]
591
- }
592
- },
593
- "/v1.0/crawl/sources": {
594
- "get": {
595
- "tags": [
596
- "Crawl"
597
- ],
598
- "summary": "List configured crawl sources together with their learned patterns and last-activity timestamp",
599
- "operationId": "ListCrawlSources",
600
- "responses": {
601
- "200": {
602
- "description": "Payload of Array of CrawlSourceWithPattern",
603
- "content": {
604
- "application/json": {
605
- "schema": {
606
- "type": "array",
607
- "items": {
608
- "$ref": "#/components/schemas/crawlSourceWithPattern"
609
- }
610
- }
611
- }
612
- }
613
- }
614
- },
615
- "security": [
616
- {
617
- "Implicit": [
618
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
619
- ]
620
- }
621
- ]
622
- }
623
- },
624
- "/v1.0/crawl/sources/{name}": {
625
- "put": {
626
- "tags": [
627
- "Crawl"
628
- ],
629
- "summary": "Create or update a crawl source",
630
- "operationId": "UpsertCrawlSource",
631
- "parameters": [
632
- {
633
- "name": "name",
634
- "in": "path",
635
- "required": true,
636
- "schema": {
637
- "type": "string"
638
- }
639
- }
640
- ],
641
- "requestBody": {
642
- "content": {
643
- "application/json": {
644
- "schema": {
645
- "$ref": "#/components/schemas/crawlSourceUpsertRequest"
646
- }
647
- }
648
- }
649
- },
650
- "responses": {
651
- "200": {
652
- "description": "Payload of CrawlSourceConfig",
653
- "content": {
654
- "application/json": {
655
- "schema": {
656
- "$ref": "#/components/schemas/crawlSourceConfig"
657
- }
658
- }
659
- }
660
- },
661
- "400": {
662
- "description": "No description"
663
- }
664
- },
665
- "security": [
666
- {
667
- "Implicit": [
668
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
669
- ]
670
- }
671
- ]
672
- },
673
- "delete": {
674
- "tags": [
675
- "Crawl"
676
- ],
677
- "summary": "Delete a crawl source and its cached pattern",
678
- "operationId": "DeleteCrawlSource",
679
- "parameters": [
680
- {
681
- "name": "name",
682
- "in": "path",
683
- "required": true,
684
- "schema": {
685
- "type": "string"
686
- }
687
- }
688
- ],
689
- "responses": {
690
- "204": {
691
- "description": "No description"
692
- }
693
- },
694
- "security": [
695
- {
696
- "Implicit": [
697
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
698
- ]
699
- }
700
- ]
701
- }
702
- },
703
- "/v1.0/crawl/sources/{name}/pattern": {
704
- "delete": {
705
- "tags": [
706
- "Crawl"
707
- ],
708
- "summary": "Drop the cached URL pattern for a source so the next scan re-bootstraps it",
709
- "operationId": "InvalidateCrawlPattern",
710
- "parameters": [
711
- {
712
- "name": "name",
713
- "in": "path",
714
- "required": true,
715
- "schema": {
716
- "type": "string"
717
- }
718
- }
719
- ],
720
- "responses": {
721
- "204": {
722
- "description": "No description"
723
- }
724
- },
725
- "security": [
726
- {
727
- "Implicit": [
728
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
729
- ]
730
- }
731
- ]
732
- }
733
- },
734
- "/v1.0/crawl/discover-listing": {
735
- "post": {
736
- "tags": [
737
- "Crawl"
738
- ],
739
- "summary": "Given a site homepage or bare domain, locate the tender/project listing page on it",
740
- "operationId": "DiscoverCrawlListing",
741
- "requestBody": {
742
- "content": {
743
- "application/json": {
744
- "schema": {
745
- "$ref": "#/components/schemas/discoverListingRequest"
746
- }
747
- }
748
- }
749
- },
750
- "responses": {
751
- "200": {
752
- "description": "Payload of DiscoverListingResponse",
753
- "content": {
754
- "application/json": {
755
- "schema": {
756
- "$ref": "#/components/schemas/discoverListingResponse"
757
- }
758
- }
759
- }
760
- }
761
- },
762
- "security": [
763
- {
764
- "Implicit": [
765
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
766
- ]
767
- }
768
- ]
769
- }
770
- },
771
- "/v1.0/crawl/sources/{name}/scan": {
772
- "post": {
773
- "tags": [
774
- "Crawl"
775
- ],
776
- "summary": "Scan one source now and enqueue ingestion jobs for newly discovered notices",
777
- "operationId": "ScanCrawlSource",
778
- "parameters": [
779
- {
780
- "name": "name",
781
- "in": "path",
782
- "required": true,
783
- "schema": {
784
- "type": "string"
785
- }
786
- }
787
- ],
788
- "responses": {
789
- "200": {
790
- "description": "Payload of CrawlScanResponse",
791
- "content": {
792
- "application/json": {
793
- "schema": {
794
- "$ref": "#/components/schemas/crawlScanResponse"
795
- }
796
- }
797
- }
798
- },
799
- "404": {
800
- "description": "No description"
801
- }
802
- },
803
- "security": [
804
- {
805
- "Implicit": [
806
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
807
- ]
808
- }
809
- ]
810
- }
811
- },
812
- "/v1.0/crawl/sources/{name}/failed-tenders": {
813
- "delete": {
814
- "tags": [
815
- "Crawl"
816
- ],
817
- "summary": "Delete all tenders for this source whose ingestion failed (parse-failed / zero confidence)",
818
- "operationId": "DeleteFailedTenders",
819
- "parameters": [
820
- {
821
- "name": "name",
822
- "in": "path",
823
- "required": true,
824
- "schema": {
825
- "type": "string"
826
- }
827
- }
828
- ],
829
- "responses": {
830
- "200": {
831
- "description": "Payload of DeleteFailedTendersResponse",
832
- "content": {
833
- "application/json": {
834
- "schema": {
835
- "$ref": "#/components/schemas/deleteFailedTendersResponse"
836
- }
837
- }
838
- }
839
- }
840
- },
841
- "security": [
842
- {
843
- "Implicit": [
844
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
845
- ]
846
- }
847
- ]
848
- }
849
- },
850
- "/v1.0/crawl/stats": {
851
- "get": {
852
- "tags": [
853
- "Crawl"
854
- ],
855
- "summary": "High-level stats for the /admin ops dashboard",
856
- "operationId": "GetCrawlStats",
857
- "responses": {
858
- "200": {
859
- "description": "Payload of CrawlStatsResponse",
860
- "content": {
861
- "application/json": {
862
- "schema": {
863
- "$ref": "#/components/schemas/crawlStatsResponse"
864
- }
865
- }
866
- }
867
- }
868
- },
869
- "security": [
870
- {
871
- "Implicit": [
872
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
873
- ]
874
- }
875
- ]
876
- }
877
- },
878
- "/v1.0/crawl/stream": {
879
- "get": {
880
- "tags": [
881
- "Crawl"
882
- ],
883
- "summary": "Server-sent-events stream: pushes stats + activity every ~2s for the ops dashboard",
884
- "operationId": "StreamCrawlEvents",
885
- "responses": {},
886
- "security": [
887
- {
888
- "Implicit": [
889
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
890
- ]
891
- }
892
- ]
893
- }
894
- },
895
- "/v1.0/crawl/activity": {
896
- "get": {
897
- "tags": [
898
- "Crawl"
899
- ],
900
- "summary": "Recent ingestion jobs across all sources, newest first. Supports source/status/date/search filters and paging.",
901
- "operationId": "GetCrawlActivity",
902
- "parameters": [
903
- {
904
- "name": "source",
905
- "in": "query",
906
- "description": "Filter by sourceName (exact match)",
907
- "schema": {
908
- "type": "string"
909
- }
910
- },
911
- {
912
- "name": "status",
913
- "in": "query",
914
- "description": "Comma-separated statuses (pending,running,completed,failed)",
915
- "schema": {
916
- "type": "string"
917
- }
918
- },
919
- {
920
- "name": "from",
921
- "in": "query",
922
- "description": "ISO-8601 lower bound on startedAt",
923
- "schema": {
924
- "type": "string"
925
- }
926
- },
927
- {
928
- "name": "to",
929
- "in": "query",
930
- "description": "ISO-8601 upper bound on startedAt",
931
- "schema": {
932
- "type": "string"
933
- }
934
- },
935
- {
936
- "name": "search",
937
- "in": "query",
938
- "description": "Substring match across inputTitle/inputUrl/externalId/id/error",
939
- "schema": {
940
- "type": "string"
941
- }
942
- },
943
- {
944
- "name": "skip",
945
- "in": "query",
946
- "description": "Offset for paging (default 0)",
947
- "schema": {
948
- "type": "string"
949
- }
950
- },
951
- {
952
- "name": "limit",
953
- "in": "query",
954
- "description": "Max jobs to return (default 50, max 500)",
955
- "schema": {
956
- "type": "string"
957
- }
958
- }
959
- ],
960
- "responses": {
961
- "200": {
962
- "description": "Payload of CrawlActivityResponse",
963
- "content": {
964
- "application/json": {
965
- "schema": {
966
- "$ref": "#/components/schemas/crawlActivityResponse"
967
- }
968
- }
969
- }
970
- }
971
- },
972
- "security": [
973
- {
974
- "Implicit": [
975
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
976
- ]
977
- }
978
- ]
979
- }
980
- },
981
- "/v1.0/crawl/jobs/{jobId}/retry": {
982
- "post": {
983
- "tags": [
984
- "Crawl"
985
- ],
986
- "summary": "Delete the tender (if any) and enqueue a fresh ingestion for the same URL/title/externalId",
987
- "operationId": "RetryCrawlJob",
988
- "parameters": [
989
- {
990
- "name": "jobId",
991
- "in": "path",
992
- "required": true,
993
- "schema": {
994
- "type": "string"
995
- }
996
- }
997
- ],
998
- "responses": {
999
- "200": {
1000
- "description": "Payload of AgentJob",
1001
- "content": {
1002
- "application/json": {
1003
- "schema": {
1004
- "$ref": "#/components/schemas/agentJob"
1005
- }
1006
- }
1007
- }
1008
- },
1009
- "400": {
1010
- "description": "No description"
1011
- },
1012
- "404": {
1013
- "description": "No description"
1014
- }
1015
- },
1016
- "security": [
1017
- {
1018
- "Implicit": [
1019
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1020
- ]
1021
- }
1022
- ]
1023
- }
1024
- },
1025
- "/v1.0/crawl/jobs/{jobId}/cancel": {
1026
- "post": {
1027
- "tags": [
1028
- "Crawl"
1029
- ],
1030
- "summary": "Terminate the running orchestration and mark the job as failed (\"Cancelled by operator\")",
1031
- "operationId": "CancelCrawlJob",
1032
- "parameters": [
1033
- {
1034
- "name": "jobId",
1035
- "in": "path",
1036
- "required": true,
1037
- "schema": {
1038
- "type": "string"
1039
- }
1040
- }
1041
- ],
1042
- "responses": {
1043
- "200": {
1044
- "description": "Payload of AgentJob",
1045
- "content": {
1046
- "application/json": {
1047
- "schema": {
1048
- "$ref": "#/components/schemas/agentJob"
1049
- }
1050
- }
1051
- }
1052
- },
1053
- "404": {
1054
- "description": "No description"
1055
- },
1056
- "409": {
1057
- "description": "No description"
1058
- }
1059
- },
1060
- "security": [
1061
- {
1062
- "Implicit": [
1063
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1064
- ]
1065
- }
1066
- ]
1067
- }
1068
- },
1069
- "/v1.0/crawl/jobs/bulk-delete": {
1070
- "post": {
1071
- "tags": [
1072
- "Crawl"
1073
- ],
1074
- "summary": "Delete a batch of jobs and their backing tenders",
1075
- "operationId": "BulkDeleteCrawlJobs",
1076
- "requestBody": {
1077
- "content": {
1078
- "application/json": {
1079
- "schema": {
1080
- "$ref": "#/components/schemas/bulkDeleteJobsRequest"
1081
- }
1082
- }
1083
- }
1084
- },
1085
- "responses": {
1086
- "200": {
1087
- "description": "Payload of BulkDeleteJobsResponse",
1088
- "content": {
1089
- "application/json": {
1090
- "schema": {
1091
- "$ref": "#/components/schemas/bulkDeleteJobsResponse"
1092
- }
1093
- }
1094
- }
1095
- },
1096
- "400": {
1097
- "description": "No description"
1098
- }
1099
- },
1100
- "security": [
1101
- {
1102
- "Implicit": [
1103
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1104
- ]
1105
- }
1106
- ]
1107
- }
1108
- },
1109
- "/v1.0/crawl/sources/{name}/jobs": {
1110
- "get": {
1111
- "tags": [
1112
- "Crawl"
1113
- ],
1114
- "summary": "Recent ingestion jobs for this source, newest first",
1115
- "operationId": "ListCrawlJobs",
1116
- "parameters": [
1117
- {
1118
- "name": "name",
1119
- "in": "path",
1120
- "required": true,
1121
- "schema": {
1122
- "type": "string"
1123
- }
1124
- },
1125
- {
1126
- "name": "limit",
1127
- "in": "query",
1128
- "description": "Max jobs to return (default 50)",
1129
- "schema": {
1130
- "type": "string"
1131
- }
1132
- }
1133
- ],
1134
- "responses": {
1135
- "200": {
1136
- "description": "Payload of Array of AgentJob",
1137
- "content": {
1138
- "application/json": {
1139
- "schema": {
1140
- "type": "array",
1141
- "items": {
1142
- "$ref": "#/components/schemas/agentJob"
1143
- }
1144
- }
1145
- }
1146
- }
1147
- }
1148
- },
1149
- "security": [
1150
- {
1151
- "Implicit": [
1152
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1153
- ]
1154
- }
1155
- ]
1156
- }
1157
- },
1158
- "/v1.0/crawl/sources/{name}/preview": {
1159
- "post": {
1160
- "tags": [
1161
- "Crawl"
1162
- ],
1163
- "summary": "Run a one-off discovery crawl for a single source and return the notices it would enqueue (no ingestion)",
1164
- "operationId": "PreviewCrawlSource",
1165
- "parameters": [
1166
- {
1167
- "name": "name",
1168
- "in": "path",
1169
- "required": true,
1170
- "schema": {
1171
- "type": "string"
1172
- }
1173
- }
1174
- ],
1175
- "responses": {
1176
- "200": {
1177
- "description": "Payload of CrawlPreviewResponse",
1178
- "content": {
1179
- "application/json": {
1180
- "schema": {
1181
- "$ref": "#/components/schemas/crawlPreviewResponse"
1182
- }
1183
- }
1184
- }
1185
- },
1186
- "404": {
1187
- "description": "No description"
1188
- }
1189
- },
1190
- "security": [
1191
- {
1192
- "Implicit": [
1193
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1194
- ]
1195
- }
1196
- ]
1197
- }
1198
- },
1199
- "/v1.0/tenders/{id}/documents": {
1200
- "get": {
1201
- "tags": [
1202
- "Documents"
1203
- ],
1204
- "summary": "List documents for a tender",
1205
- "operationId": "ListTenderDocuments",
1206
- "parameters": [
1207
- {
1208
- "name": "id",
1209
- "in": "path",
1210
- "required": true,
1211
- "schema": {
1212
- "type": "string"
1213
- }
1214
- }
1215
- ],
1216
- "responses": {
1217
- "200": {
1218
- "description": "Payload of Array of TenderDocument",
1219
- "content": {
1220
- "application/json": {
1221
- "schema": {
1222
- "type": "array",
1223
- "items": {
1224
- "$ref": "#/components/schemas/tenderDocument"
1225
- }
1226
- }
1227
- }
1228
- }
1229
- },
1230
- "404": {
1231
- "description": "No description"
1232
- }
1233
- },
1234
- "security": [
1235
- {
1236
- "Implicit": [
1237
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1238
- ]
1239
- }
1240
- ]
1241
- },
1242
- "post": {
1243
- "tags": [
1244
- "Documents"
1245
- ],
1246
- "summary": "Upload a new document to a tender",
1247
- "operationId": "UploadTenderDocument",
1248
- "parameters": [
1249
- {
1250
- "name": "id",
1251
- "in": "path",
1252
- "required": true,
1253
- "schema": {
1254
- "type": "string"
1255
- }
1256
- }
1257
- ],
1258
- "responses": {
1259
- "200": {
1260
- "description": "Payload of TenderDocument",
1261
- "content": {
1262
- "application/json": {
1263
- "schema": {
1264
- "$ref": "#/components/schemas/tenderDocument"
1265
- }
1266
- }
1267
- }
1268
- },
1269
- "404": {
1270
- "description": "No description"
1271
- }
1272
- },
1273
- "security": [
1274
- {
1275
- "Implicit": [
1276
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1277
- ]
1278
- }
1279
- ]
1280
- }
1281
- },
1282
- "/v1.0/tenders/{id}/documents/{docId}/download-url": {
1283
- "get": {
1284
- "tags": [
1285
- "Documents"
1286
- ],
1287
- "summary": "Get a short-lived download URL for a document",
1288
- "operationId": "GetDocumentDownloadUrl",
1289
- "parameters": [
1290
- {
1291
- "name": "id",
1292
- "in": "path",
1293
- "required": true,
1294
- "schema": {
1295
- "type": "string"
1296
- }
1297
- },
1298
- {
1299
- "name": "docId",
1300
- "in": "path",
1301
- "required": true,
1302
- "schema": {
1303
- "type": "string"
1304
- }
1305
- }
1306
- ],
1307
- "responses": {
1308
- "200": {
1309
- "description": "Payload of Object",
1310
- "content": {
1311
- "application/json": {
1312
- "schema": {
1313
- "type": "object"
1314
- }
1315
- }
1316
- }
1317
- },
1318
- "404": {
1319
- "description": "No description"
1320
- }
1321
- },
1322
- "security": [
1323
- {
1324
- "Implicit": [
1325
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1326
- ]
1327
- }
1328
- ]
1329
- }
1330
- },
1331
- "/v1.0/tenders/{id}/documents/{docId}/download": {
1332
- "get": {
1333
- "tags": [
1334
- "Documents"
1335
- ],
1336
- "summary": "Download a single document",
1337
- "operationId": "DownloadDocument",
1338
- "parameters": [
1339
- {
1340
- "name": "id",
1341
- "in": "path",
1342
- "required": true,
1343
- "schema": {
1344
- "type": "string"
1345
- }
1346
- },
1347
- {
1348
- "name": "docId",
1349
- "in": "path",
1350
- "required": true,
1351
- "schema": {
1352
- "type": "string"
1353
- }
1354
- }
1355
- ],
1356
- "responses": {
1357
- "200": {
1358
- "description": "Payload of Array of Byte",
1359
- "content": {
1360
- "application/octet-stream": {
1361
- "schema": {
1362
- "type": "string",
1363
- "format": "binary"
1364
- }
1365
- }
1366
- }
1367
- },
1368
- "404": {
1369
- "description": "No description"
1370
- }
1371
- },
1372
- "security": [
1373
- {
1374
- "Implicit": [
1375
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1376
- ]
1377
- }
1378
- ]
1379
- }
1380
- },
1381
- "/v1.0/tenders/{id}/documents/download-all": {
1382
- "get": {
1383
- "tags": [
1384
- "Documents"
1385
- ],
1386
- "summary": "Download all tender documents as a ZIP archive",
1387
- "operationId": "DownloadAllDocuments",
1388
- "parameters": [
1389
- {
1390
- "name": "id",
1391
- "in": "path",
1392
- "required": true,
1393
- "schema": {
1394
- "type": "string"
1395
- }
1396
- }
1397
- ],
1398
- "responses": {
1399
- "200": {
1400
- "description": "Payload of Array of Byte",
1401
- "content": {
1402
- "application/zip": {
1403
- "schema": {
1404
- "type": "string",
1405
- "format": "binary"
1406
- }
1407
- }
1408
- }
1409
- },
1410
- "404": {
1411
- "description": "No description"
1412
- }
1413
- },
1414
- "security": [
1415
- {
1416
- "Implicit": [
1417
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1418
- ]
1419
- }
1420
- ]
1421
- }
1422
- },
1423
- "/v1.0/tenders/{id}/documents/{docId}": {
1424
- "patch": {
1425
- "tags": [
1426
- "Documents"
1427
- ],
1428
- "summary": "Patch tender document flags (e.g. set as competence matrix source)",
1429
- "operationId": "PatchTenderDocument",
1430
- "parameters": [
1431
- {
1432
- "name": "id",
1433
- "in": "path",
1434
- "required": true,
1435
- "schema": {
1436
- "type": "string"
1437
- }
1438
- },
1439
- {
1440
- "name": "docId",
1441
- "in": "path",
1442
- "required": true,
1443
- "schema": {
1444
- "type": "string"
1445
- }
1446
- }
1447
- ],
1448
- "requestBody": {
1449
- "content": {
1450
- "application/json": {
1451
- "schema": {
1452
- "$ref": "#/components/schemas/patchDocumentRequest"
1453
- }
1454
- }
1455
- },
1456
- "required": true
1457
- },
1458
- "responses": {
1459
- "200": {
1460
- "description": "Payload of PatchDocumentResponse",
1461
- "content": {
1462
- "application/json": {
1463
- "schema": {
1464
- "$ref": "#/components/schemas/patchDocumentResponse"
1465
- }
1466
- }
1467
- }
1468
- },
1469
- "404": {
1470
- "description": "No description"
1471
- }
1472
- },
1473
- "security": [
1474
- {
1475
- "Implicit": [
1476
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1477
- ]
1478
- }
1479
- ]
1480
- },
1481
- "delete": {
1482
- "tags": [
1483
- "Documents"
1484
- ],
1485
- "summary": "Delete a tender document (and its blob + related answers)",
1486
- "operationId": "DeleteTenderDocument",
1487
- "parameters": [
1488
- {
1489
- "name": "id",
1490
- "in": "path",
1491
- "required": true,
1492
- "schema": {
1493
- "type": "string"
1494
- }
1495
- },
1496
- {
1497
- "name": "docId",
1498
- "in": "path",
1499
- "required": true,
1500
- "schema": {
1501
- "type": "string"
1502
- }
1503
- }
1504
- ],
1505
- "responses": {
1506
- "204": {
1507
- "description": "No description"
1508
- },
1509
- "404": {
1510
- "description": "No description"
1511
- }
1512
- },
1513
- "security": [
1514
- {
1515
- "Implicit": [
1516
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1517
- ]
1518
- }
1519
- ]
1520
- }
1521
- },
1522
- "/v1.0/tenders/{id}/documents/{docId}/extract-questions": {
1523
- "post": {
1524
- "tags": [
1525
- "Documents"
1526
- ],
1527
- "summary": "Start extraction of fillable questions from a document",
1528
- "operationId": "StartQuestionExtraction",
1529
- "parameters": [
1530
- {
1531
- "name": "id",
1532
- "in": "path",
1533
- "required": true,
1534
- "schema": {
1535
- "type": "string"
1536
- }
1537
- },
1538
- {
1539
- "name": "docId",
1540
- "in": "path",
1541
- "required": true,
1542
- "schema": {
1543
- "type": "string"
1544
- }
1545
- }
1546
- ],
1547
- "responses": {
1548
- "202": {
1549
- "description": "Payload of Object",
1550
- "content": {
1551
- "application/json": {
1552
- "schema": {
1553
- "type": "object"
1554
- }
1555
- }
1556
- }
1557
- },
1558
- "404": {
1559
- "description": "No description"
1560
- }
1561
- },
1562
- "security": [
1563
- {
1564
- "Implicit": [
1565
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1566
- ]
1567
- }
1568
- ]
1569
- }
1570
- },
1571
- "/v1.0/tenders/{id}/documents/{docId}/fill-questions": {
1572
- "post": {
1573
- "tags": [
1574
- "Documents"
1575
- ],
1576
- "summary": "Start filling tender question answers per consultant",
1577
- "operationId": "StartQuestionFill",
1578
- "parameters": [
1579
- {
1580
- "name": "id",
1581
- "in": "path",
1582
- "required": true,
1583
- "schema": {
1584
- "type": "string"
1585
- }
1586
- },
1587
- {
1588
- "name": "docId",
1589
- "in": "path",
1590
- "required": true,
1591
- "schema": {
1592
- "type": "string"
1593
- }
1594
- }
1595
- ],
1596
- "requestBody": {
1597
- "content": {
1598
- "application/json": {
1599
- "schema": {
1600
- "$ref": "#/components/schemas/questionFillRequest"
1601
- }
1602
- }
1603
- },
1604
- "required": true
1605
- },
1606
- "responses": {
1607
- "202": {
1608
- "description": "Payload of Object",
1609
- "content": {
1610
- "application/json": {
1611
- "schema": {
1612
- "type": "object"
1613
- }
1614
- }
1615
- }
1616
- },
1617
- "404": {
1618
- "description": "No description"
1619
- }
1620
- },
1621
- "security": [
1622
- {
1623
- "Implicit": [
1624
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1625
- ]
1626
- }
1627
- ]
1628
- }
1629
- },
1630
- "/v1.0/consultants": {
1631
- "get": {
1632
- "tags": [
1633
- "Consultants"
1634
- ],
1635
- "summary": "List all known consultants (for manual selection)",
1636
- "operationId": "ListConsultants",
1637
- "parameters": [
1638
- {
1639
- "name": "query",
1640
- "in": "query",
1641
- "schema": {
1642
- "type": "string"
1643
- }
1644
- }
1645
- ],
1646
- "responses": {
1647
- "200": {
1648
- "description": "Payload of Array of ConsultantSummary",
1649
- "content": {
1650
- "application/json": {
1651
- "schema": {
1652
- "type": "array",
1653
- "items": {
1654
- "$ref": "#/components/schemas/consultantSummary"
1655
- }
1656
- }
1657
- }
1658
- }
1659
- }
1660
- },
1661
- "security": [
1662
- {
1663
- "Implicit": [
1664
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1665
- ]
1666
- }
1667
- ]
1668
- }
1669
- },
1670
- "/v1.0/realtime/negotiate": {
1671
- "post": {
1672
- "tags": [
1673
- "Realtime"
1674
- ],
1675
- "summary": "Issue a SignalR access token + URL for the sales-live hub",
1676
- "operationId": "NegotiateSignalR",
1677
- "requestBody": {
1678
- "content": {
1679
- "application/json": {
1680
- "schema": {
1681
- "$ref": "#/components/schemas/negotiateRequest"
1682
- }
1683
- }
1684
- }
1685
- },
1686
- "responses": {
1687
- "200": {
1688
- "description": "Payload of NegotiateResponse",
1689
- "content": {
1690
- "application/json": {
1691
- "schema": {
1692
- "$ref": "#/components/schemas/negotiateResponse"
1693
- }
1694
- }
1695
- }
1696
- },
1697
- "503": {
1698
- "description": "SignalR is not configured on this instance; fall back to SSE"
1699
- }
1700
- },
1701
- "security": [
1702
- {
1703
- "Implicit": [
1704
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1705
- ]
1706
- }
1707
- ]
1708
- }
1709
- },
1710
- "/v1.0/stream": {
1711
- "get": {
1712
- "tags": [
1713
- "Realtime"
1714
- ],
1715
- "summary": "Unified SSE stream: tender/job/crawl/consultant/audit events on one connection",
1716
- "operationId": "StreamAll",
1717
- "parameters": [
1718
- {
1719
- "name": "channels",
1720
- "in": "query",
1721
- "description": "Comma-separated namespaces to include (tender,job,crawl,consultant,audit). Default: all.",
1722
- "schema": {
1723
- "type": "string"
1724
- }
1725
- }
1726
- ],
1727
- "responses": {},
1728
- "security": [
1729
- {
1730
- "Implicit": [
1731
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1732
- ]
1733
- }
1734
- ]
1735
- }
1736
- },
1737
- "/v1.0/tenders/stream-redirect": {
1738
- "get": {
1739
- "tags": [
1740
- "Realtime"
1741
- ],
1742
- "summary": "Deprecated: redirects to /v1.0/stream?channels=tender,job",
1743
- "operationId": "DeprecatedTenderStream",
1744
- "responses": {},
1745
- "deprecated": true,
1746
- "security": [
1747
- {
1748
- "Implicit": [
1749
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1750
- ]
1751
- }
1752
- ]
1753
- }
1754
- },
1755
- "/v1.0/crawl/stream-redirect": {
1756
- "get": {
1757
- "tags": [
1758
- "Realtime"
1759
- ],
1760
- "summary": "Deprecated: redirects to /v1.0/stream?channels=crawl,job",
1761
- "operationId": "DeprecatedCrawlStream",
1762
- "responses": {},
1763
- "deprecated": true,
1764
- "security": [
1765
- {
1766
- "Implicit": [
1767
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1768
- ]
1769
- }
1770
- ]
1771
- }
1772
- },
1773
- "/v1.0/salesforce/opportunities": {
1774
- "get": {
1775
- "tags": [
1776
- "Salesforce"
1777
- ],
1778
- "summary": "List Salesforce Opportunities (open by default).",
1779
- "operationId": "ListSalesforceOpportunities",
1780
- "parameters": [
1781
- {
1782
- "name": "includeClosed",
1783
- "in": "query",
1784
- "schema": {
1785
- "type": "boolean"
1786
- },
1787
- "x-ms-summary": "Include closed opportunities (default false)."
1788
- },
1789
- {
1790
- "name": "limit",
1791
- "in": "query",
1792
- "schema": {
1793
- "type": "integer",
1794
- "format": "int32"
1795
- },
1796
- "x-ms-summary": "Row cap, max 200 (default 100)."
1797
- }
1798
- ],
1799
- "responses": {
1800
- "200": {
1801
- "description": "Payload of Array of SalesforceOpportunity",
1802
- "content": {
1803
- "application/json": {
1804
- "schema": {
1805
- "type": "array",
1806
- "items": {
1807
- "$ref": "#/components/schemas/salesforceOpportunity"
1808
- }
1809
- }
1810
- }
1811
- }
1812
- }
1813
- },
1814
- "security": [
1815
- {
1816
- "Implicit": [
1817
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1818
- ]
1819
- }
1820
- ]
1821
- }
1822
- },
1823
- "/v1.0/salesforce/opportunity-stages": {
1824
- "get": {
1825
- "tags": [
1826
- "Salesforce"
1827
- ],
1828
- "summary": "List the SF org's Opportunity pipeline stages in configured order.",
1829
- "operationId": "ListSalesforceOpportunityStages",
1830
- "responses": {
1831
- "200": {
1832
- "description": "Payload of Array of SalesforceOpportunityStage",
1833
- "content": {
1834
- "application/json": {
1835
- "schema": {
1836
- "type": "array",
1837
- "items": {
1838
- "$ref": "#/components/schemas/salesforceOpportunityStage"
1839
- }
1840
- }
1841
- }
1842
- }
1843
- }
1844
- },
1845
- "security": [
1846
- {
1847
- "Implicit": [
1848
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1849
- ]
1850
- }
1851
- ]
1852
- }
1853
- },
1854
- "/v1.0/salesforce/refresh": {
1855
- "post": {
1856
- "tags": [
1857
- "Salesforce"
1858
- ],
1859
- "summary": "Batch-refresh the cached Salesforce state on every linked Snøkam tender.",
1860
- "operationId": "RefreshAllSalesforceLinks",
1861
- "responses": {
1862
- "200": {
1863
- "description": "Payload of SalesforceRefreshResult",
1864
- "content": {
1865
- "application/json": {
1866
- "schema": {
1867
- "$ref": "#/components/schemas/salesforceRefreshResult"
1868
- }
1869
- }
1870
- }
1871
- }
1872
- },
1873
- "security": [
1874
- {
1875
- "Implicit": [
1876
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1877
- ]
1878
- }
1879
- ]
1880
- }
1881
- },
1882
- "/v1.0/tenders/{id}/salesforce/stage": {
1883
- "post": {
1884
- "tags": [
1885
- "Salesforce"
1886
- ],
1887
- "summary": "Move the linked SF Opportunity to a new stage and refresh the cache.",
1888
- "operationId": "UpdateTenderSalesforceStage",
1889
- "parameters": [
1890
- {
1891
- "name": "id",
1892
- "in": "path",
1893
- "required": true,
1894
- "schema": {
1895
- "type": "string"
1896
- }
1897
- }
1898
- ],
1899
- "requestBody": {
1900
- "description": "The SF stage masterLabel/apiName to switch to.",
1901
- "content": {
1902
- "application/json": {
1903
- "schema": {
1904
- "$ref": "#/components/schemas/updateSalesforceStageRequest"
1905
- }
1906
- }
1907
- },
1908
- "required": true
1909
- },
1910
- "responses": {
1911
- "200": {
1912
- "description": "Payload of Tender",
1913
- "content": {
1914
- "application/json": {
1915
- "schema": {
1916
- "$ref": "#/components/schemas/tender"
1917
- }
1918
- }
1919
- }
1920
- },
1921
- "400": {
1922
- "description": "Tender has no Salesforce link, or stageName is missing."
1923
- },
1924
- "404": {
1925
- "description": "No description"
1926
- }
1927
- },
1928
- "security": [
1929
- {
1930
- "Implicit": [
1931
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1932
- ]
1933
- }
1934
- ]
1935
- }
1936
- },
1937
- "/v1.0/salesforce/opportunities/{sfId}/import": {
1938
- "post": {
1939
- "tags": [
1940
- "Salesforce"
1941
- ],
1942
- "summary": "Create a Snøkam tender stub from an existing Salesforce Opportunity.",
1943
- "operationId": "ImportSalesforceOpportunity",
1944
- "parameters": [
1945
- {
1946
- "name": "sfId",
1947
- "in": "path",
1948
- "required": true,
1949
- "schema": {
1950
- "type": "string"
1951
- },
1952
- "x-ms-summary": "Salesforce Opportunity Id."
1953
- }
1954
- ],
1955
- "responses": {
1956
- "200": {
1957
- "description": "Payload of Tender",
1958
- "content": {
1959
- "application/json": {
1960
- "schema": {
1961
- "$ref": "#/components/schemas/tender"
1962
- }
1963
- }
1964
- }
1965
- },
1966
- "404": {
1967
- "description": "No description"
1968
- },
1969
- "409": {
1970
- "description": "A tender is already linked to this Opportunity."
1971
- }
1972
- },
1973
- "security": [
1974
- {
1975
- "Implicit": [
1976
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1977
- ]
1978
- }
1979
- ]
1980
- }
1981
- },
1982
- "/v1.0/tenders/{id}/salesforce": {
1983
- "post": {
1984
- "tags": [
1985
- "Salesforce"
1986
- ],
1987
- "summary": "Create a Salesforce Opportunity from a Snøkam tender and cache the link.",
1988
- "operationId": "PromoteTenderToSalesforce",
1989
- "parameters": [
1990
- {
1991
- "name": "id",
1992
- "in": "path",
1993
- "required": true,
1994
- "schema": {
1995
- "type": "string"
1996
- }
1997
- }
1998
- ],
1999
- "responses": {
2000
- "200": {
2001
- "description": "Payload of Tender",
2002
- "content": {
2003
- "application/json": {
2004
- "schema": {
2005
- "$ref": "#/components/schemas/tender"
2006
- }
2007
- }
2008
- }
2009
- },
2010
- "404": {
2011
- "description": "No description"
2012
- },
2013
- "409": {
2014
- "description": "Tender is already linked to a Salesforce Opportunity."
2015
- }
2016
- },
2017
- "security": [
2018
- {
2019
- "Implicit": [
2020
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2021
- ]
2022
- }
2023
- ]
2024
- }
2025
- },
2026
- "/v1.0/tenders/{id}/salesforce/refresh": {
2027
- "post": {
2028
- "tags": [
2029
- "Salesforce"
2030
- ],
2031
- "summary": "Re-sync cached Salesforce Opportunity state (stage / closed / won) onto the tender.",
2032
- "operationId": "RefreshTenderSalesforceLink",
2033
- "parameters": [
2034
- {
2035
- "name": "id",
2036
- "in": "path",
2037
- "required": true,
2038
- "schema": {
2039
- "type": "string"
2040
- }
2041
- }
2042
- ],
2043
- "responses": {
2044
- "200": {
2045
- "description": "Payload of Tender",
2046
- "content": {
2047
- "application/json": {
2048
- "schema": {
2049
- "$ref": "#/components/schemas/tender"
2050
- }
2051
- }
2052
- }
2053
- },
2054
- "404": {
2055
- "description": "No description"
2056
- }
2057
- },
2058
- "security": [
2059
- {
2060
- "Implicit": [
2061
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2062
- ]
2063
- }
2064
- ]
2065
- }
2066
- },
2067
- "/v1.0/tenders": {
2068
- "get": {
2069
- "tags": [
2070
- "Tenders"
2071
- ],
2072
- "summary": "List all tenders",
2073
- "operationId": "ListTenders",
2074
- "responses": {
2075
- "200": {
2076
- "description": "Payload of Array of Tender",
2077
- "content": {
2078
- "application/json": {
2079
- "schema": {
2080
- "type": "array",
2081
- "items": {
2082
- "$ref": "#/components/schemas/tender"
2083
- }
2084
- }
2085
- }
2086
- }
2087
- }
2088
- },
2089
- "security": [
2090
- {
2091
- "Implicit": [
2092
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2093
- ]
2094
- }
2095
- ]
2096
- },
2097
- "post": {
2098
- "tags": [
2099
- "Tenders"
2100
- ],
2101
- "summary": "Create a new tender",
2102
- "operationId": "CreateTender",
2103
- "requestBody": {
2104
- "content": {
2105
- "application/json": {
2106
- "schema": {
2107
- "$ref": "#/components/schemas/tender"
2108
- }
2109
- }
2110
- },
2111
- "required": true
2112
- },
2113
- "responses": {
2114
- "201": {
2115
- "description": "Payload of Tender",
2116
- "content": {
2117
- "application/json": {
2118
- "schema": {
2119
- "$ref": "#/components/schemas/tender"
2120
- }
2121
- }
2122
- }
2123
- }
2124
- },
2125
- "security": [
2126
- {
2127
- "Implicit": [
2128
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2129
- ]
2130
- }
2131
- ]
2132
- }
2133
- },
2134
- "/v1.0/tenders/{id}": {
2135
- "get": {
2136
- "tags": [
2137
- "Tenders"
2138
- ],
2139
- "summary": "Get a tender by its URL slug (or internal id for admin use).",
2140
- "operationId": "GetTender",
2141
- "parameters": [
2142
- {
2143
- "name": "id",
2144
- "in": "path",
2145
- "description": "URL slug (canonical) or the internal guid id (admin/legacy).",
2146
- "required": true,
2147
- "schema": {
2148
- "type": "string"
2149
- }
2150
- }
2151
- ],
2152
- "responses": {
2153
- "200": {
2154
- "description": "Payload of Tender",
2155
- "content": {
2156
- "application/json": {
2157
- "schema": {
2158
- "$ref": "#/components/schemas/tender"
2159
- }
2160
- }
2161
- }
2162
- },
2163
- "404": {
2164
- "description": "No description"
2165
- }
2166
- },
2167
- "security": [
2168
- {
2169
- "Implicit": [
2170
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2171
- ]
2172
- }
2173
- ]
2174
- },
2175
- "put": {
2176
- "tags": [
2177
- "Tenders"
2178
- ],
2179
- "summary": "Update a tender",
2180
- "operationId": "UpdateTender",
2181
- "parameters": [
2182
- {
2183
- "name": "id",
2184
- "in": "path",
2185
- "required": true,
2186
- "schema": {
2187
- "type": "string"
2188
- }
2189
- }
2190
- ],
2191
- "requestBody": {
2192
- "content": {
2193
- "application/json": {
2194
- "schema": {
2195
- "$ref": "#/components/schemas/tender"
2196
- }
2197
- }
2198
- },
2199
- "required": true
2200
- },
2201
- "responses": {
2202
- "200": {
2203
- "description": "Payload of Tender",
2204
- "content": {
2205
- "application/json": {
2206
- "schema": {
2207
- "$ref": "#/components/schemas/tender"
2208
- }
2209
- }
2210
- }
2211
- },
2212
- "404": {
2213
- "description": "No description"
2214
- }
2215
- },
2216
- "security": [
2217
- {
2218
- "Implicit": [
2219
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2220
- ]
2221
- }
2222
- ]
2223
- },
2224
- "delete": {
2225
- "tags": [
2226
- "Tenders"
2227
- ],
2228
- "summary": "Delete a tender",
2229
- "operationId": "DeleteTender",
2230
- "parameters": [
2231
- {
2232
- "name": "id",
2233
- "in": "path",
2234
- "required": true,
2235
- "schema": {
2236
- "type": "string"
2237
- }
2238
- }
2239
- ],
2240
- "responses": {
2241
- "204": {
2242
- "description": "No description"
2243
- },
2244
- "404": {
2245
- "description": "No description"
2246
- }
2247
- },
2248
- "security": [
2249
- {
2250
- "Implicit": [
2251
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2252
- ]
2253
- }
2254
- ]
2255
- }
2256
- },
2257
- "/v1.0/tenders/backfill-slugs": {
2258
- "post": {
2259
- "tags": [
2260
- "Tenders"
2261
- ],
2262
- "summary": "Assign a slug to every tender that doesn't have one yet. Idempotent — safe to re-run.",
2263
- "operationId": "BackfillTenderSlugs",
2264
- "responses": {
2265
- "200": {
2266
- "description": "Payload of BackfillSlugsResult",
2267
- "content": {
2268
- "application/json": {
2269
- "schema": {
2270
- "$ref": "#/components/schemas/backfillSlugsResult"
2271
- }
2272
- }
2273
- }
2274
- }
2275
- },
2276
- "security": [
2277
- {
2278
- "Implicit": [
2279
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2280
- ]
2281
- }
2282
- ]
2283
- }
2284
- },
2285
- "/v1.0/tenders/{id}/reingest": {
2286
- "post": {
2287
- "tags": [
2288
- "Tenders"
2289
- ],
2290
- "summary": "Re-run the ingestion pipeline on an existing tender, re-parsing documents and refreshing AI match / summary / classification.",
2291
- "operationId": "ReingestTender",
2292
- "parameters": [
2293
- {
2294
- "name": "id",
2295
- "in": "path",
2296
- "required": true,
2297
- "schema": {
2298
- "type": "string"
2299
- }
2300
- }
2301
- ],
2302
- "responses": {
2303
- "200": {
2304
- "description": "Payload of AgentJob",
2305
- "content": {
2306
- "application/json": {
2307
- "schema": {
2308
- "$ref": "#/components/schemas/agentJob"
2309
- }
2310
- }
2311
- }
2312
- },
2313
- "404": {
2314
- "description": "No description"
2315
- }
2316
- },
2317
- "security": [
2318
- {
2319
- "Implicit": [
2320
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2321
- ]
2322
- }
2323
- ]
2324
- }
2325
- },
2326
- "/v1.0/tenders/{id}/jobs/{jobId}/snapshot": {
2327
- "get": {
2328
- "tags": [
2329
- "Tenders"
2330
- ],
2331
- "summary": "Return the tender as it looked right after a given agent job ran (time-travel view).",
2332
- "operationId": "GetTenderJobSnapshot",
2333
- "parameters": [
2334
- {
2335
- "name": "id",
2336
- "in": "path",
2337
- "required": true,
2338
- "schema": {
2339
- "type": "string"
2340
- }
2341
- },
2342
- {
2343
- "name": "jobId",
2344
- "in": "path",
2345
- "required": true,
2346
- "schema": {
2347
- "type": "string"
2348
- }
2349
- }
2350
- ],
2351
- "responses": {
2352
- "200": {
2353
- "description": "Payload of Tender",
2354
- "content": {
2355
- "application/json": {
2356
- "schema": {
2357
- "$ref": "#/components/schemas/tender"
2358
- }
2359
- }
2360
- }
2361
- },
2362
- "404": {
2363
- "description": "No description"
2364
- }
2365
- },
2366
- "security": [
2367
- {
2368
- "Implicit": [
2369
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2370
- ]
2371
- }
2372
- ]
2373
- }
2374
- },
2375
- "/v1.0/tenders/{id}/cv-proposal": {
2376
- "put": {
2377
- "tags": [
2378
- "Tenders"
2379
- ],
2380
- "summary": "Set or replace the Flowcase proposal + tailored-CV mapping attached to a tender.",
2381
- "operationId": "SetTenderCvProposal",
2382
- "parameters": [
2383
- {
2384
- "name": "id",
2385
- "in": "path",
2386
- "required": true,
2387
- "schema": {
2388
- "type": "string"
2389
- }
2390
- }
2391
- ],
2392
- "requestBody": {
2393
- "content": {
2394
- "application/json": {
2395
- "schema": {
2396
- "$ref": "#/components/schemas/tenderCvProposal"
2397
- }
2398
- }
2399
- },
2400
- "required": true
2401
- },
2402
- "responses": {
2403
- "200": {
2404
- "description": "Payload of Tender",
2405
- "content": {
2406
- "application/json": {
2407
- "schema": {
2408
- "$ref": "#/components/schemas/tender"
2409
- }
2410
- }
2411
- }
2412
- },
2413
- "404": {
2414
- "description": "No description"
2415
- }
2416
- },
2417
- "security": [
2418
- {
2419
- "Implicit": [
2420
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2421
- ]
2422
- }
2423
- ]
2424
- }
2425
- },
2426
- "/v1.0/tenders/{id}/cv-proposal/variants": {
2427
- "post": {
2428
- "tags": [
2429
- "Tenders"
2430
- ],
2431
- "summary": "Upsert a single tailored-CV variant on a tender's proposal (per consultant).",
2432
- "operationId": "UpsertTenderCvVariant",
2433
- "parameters": [
2434
- {
2435
- "name": "id",
2436
- "in": "path",
2437
- "required": true,
2438
- "schema": {
2439
- "type": "string"
2440
- }
2441
- }
2442
- ],
2443
- "requestBody": {
2444
- "content": {
2445
- "application/json": {
2446
- "schema": {
2447
- "$ref": "#/components/schemas/tenderCvVariant"
2448
- }
2449
- }
2450
- },
2451
- "required": true
2452
- },
2453
- "responses": {
2454
- "200": {
2455
- "description": "Payload of Tender",
2456
- "content": {
2457
- "application/json": {
2458
- "schema": {
2459
- "$ref": "#/components/schemas/tender"
2460
- }
2461
- }
2462
- }
2463
- },
2464
- "404": {
2465
- "description": "No description"
2466
- }
2467
- },
2468
- "security": [
2469
- {
2470
- "Implicit": [
2471
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2472
- ]
2473
- }
2474
- ]
2475
- }
2476
- },
2477
- "/v1.0/tenders/{id}/cv-proposal/variants/{email}": {
2478
- "delete": {
2479
- "tags": [
2480
- "Tenders"
2481
- ],
2482
- "summary": "Remove a tailored-CV variant from a tender's proposal by consultant email.",
2483
- "operationId": "RemoveTenderCvVariant",
2484
- "parameters": [
2485
- {
2486
- "name": "id",
2487
- "in": "path",
2488
- "required": true,
2489
- "schema": {
2490
- "type": "string"
2491
- }
2492
- },
2493
- {
2494
- "name": "email",
2495
- "in": "path",
2496
- "required": true,
2497
- "schema": {
2498
- "type": "string"
2499
- }
2500
- }
2501
- ],
2502
- "responses": {
2503
- "200": {
2504
- "description": "Payload of Tender",
2505
- "content": {
2506
- "application/json": {
2507
- "schema": {
2508
- "$ref": "#/components/schemas/tender"
2509
- }
2510
- }
2511
- }
2512
- },
2513
- "404": {
2514
- "description": "No description"
2515
- }
2516
- },
2517
- "security": [
2518
- {
2519
- "Implicit": [
2520
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2521
- ]
2522
- }
2523
- ]
2524
- }
2525
- },
2526
- "/v1.0/tenders/{id}/consultants": {
2527
- "post": {
2528
- "tags": [
2529
- "Tenders"
2530
- ],
2531
- "summary": "Assign a consultant to a tender. Idempotent: assigning the same email twice refreshes Name/Note but does not create duplicates.",
2532
- "operationId": "AssignConsultant",
2533
- "parameters": [
2534
- {
2535
- "name": "id",
2536
- "in": "path",
2537
- "required": true,
2538
- "schema": {
2539
- "type": "string"
2540
- }
2541
- }
2542
- ],
2543
- "requestBody": {
2544
- "content": {
2545
- "application/json": {
2546
- "schema": {
2547
- "$ref": "#/components/schemas/assignedConsultant"
2548
- }
2549
- }
2550
- },
2551
- "required": true
2552
- },
2553
- "responses": {
2554
- "200": {
2555
- "description": "Payload of Tender",
2556
- "content": {
2557
- "application/json": {
2558
- "schema": {
2559
- "$ref": "#/components/schemas/tender"
2560
- }
2561
- }
2562
- }
2563
- },
2564
- "404": {
2565
- "description": "No description"
2566
- }
2567
- },
2568
- "security": [
2569
- {
2570
- "Implicit": [
2571
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2572
- ]
2573
- }
2574
- ]
2575
- }
2576
- },
2577
- "/v1.0/tenders/{id}/slack-messages": {
2578
- "post": {
2579
- "tags": [
2580
- "Tenders"
2581
- ],
2582
- "summary": "Queue a Slack message for a tender (Service Bus → notifications-function).",
2583
- "operationId": "SendTenderSlackMessage",
2584
- "parameters": [
2585
- {
2586
- "name": "id",
2587
- "in": "path",
2588
- "required": true,
2589
- "schema": {
2590
- "type": "string"
2591
- }
2592
- }
2593
- ],
2594
- "requestBody": {
2595
- "content": {
2596
- "application/json": {
2597
- "schema": {
2598
- "$ref": "#/components/schemas/sendTenderSlackMessageRequest"
2599
- }
2600
- }
2601
- },
2602
- "required": true
2603
- },
2604
- "responses": {
2605
- "204": {
2606
- "description": "No description"
2607
- },
2608
- "400": {
2609
- "description": "No description"
2610
- },
2611
- "404": {
2612
- "description": "No description"
2613
- }
2614
- },
2615
- "security": [
2616
- {
2617
- "Implicit": [
2618
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2619
- ]
2620
- }
2621
- ]
2622
- }
2623
- },
2624
- "/v1.0/tenders/{id}/consultants/{email}": {
2625
- "delete": {
2626
- "tags": [
2627
- "Tenders"
2628
- ],
2629
- "summary": "Remove a consultant assignment from a tender. No-op if the email isn't assigned.",
2630
- "operationId": "UnassignConsultant",
2631
- "parameters": [
2632
- {
2633
- "name": "id",
2634
- "in": "path",
2635
- "required": true,
2636
- "schema": {
2637
- "type": "string"
2638
- }
2639
- },
2640
- {
2641
- "name": "email",
2642
- "in": "path",
2643
- "required": true,
2644
- "schema": {
2645
- "type": "string"
2646
- }
2647
- }
2648
- ],
2649
- "responses": {
2650
- "200": {
2651
- "description": "Payload of Tender",
2652
- "content": {
2653
- "application/json": {
2654
- "schema": {
2655
- "$ref": "#/components/schemas/tender"
2656
- }
2657
- }
2658
- }
2659
- },
2660
- "404": {
2661
- "description": "No description"
2662
- }
2663
- },
2664
- "security": [
2665
- {
2666
- "Implicit": [
2667
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2668
- ]
2669
- }
2670
- ]
2671
- }
2672
- },
2673
- "/v1.0/tenders/{id}/jobs": {
2674
- "get": {
2675
- "tags": [
2676
- "Tenders"
2677
- ],
2678
- "summary": "Recent agent jobs (ingestion, CV matching, …) for a tender — newest first.",
2679
- "operationId": "ListTenderJobs",
2680
- "parameters": [
2681
- {
2682
- "name": "id",
2683
- "in": "path",
2684
- "required": true,
2685
- "schema": {
2686
- "type": "string"
2687
- }
2688
- },
2689
- {
2690
- "name": "limit",
2691
- "in": "query",
2692
- "schema": {
2693
- "type": "integer",
2694
- "format": "int32"
2695
- },
2696
- "x-ms-summary": "Max rows (default 10, capped at 100)."
2697
- }
2698
- ],
2699
- "responses": {
2700
- "200": {
2701
- "description": "Payload of Array of AgentJob",
2702
- "content": {
2703
- "application/json": {
2704
- "schema": {
2705
- "type": "array",
2706
- "items": {
2707
- "$ref": "#/components/schemas/agentJob"
2708
- }
2709
- }
2710
- }
2711
- }
2712
- }
2713
- },
2714
- "security": [
2715
- {
2716
- "Implicit": [
2717
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2718
- ]
2719
- }
2720
- ]
2721
- }
2722
- },
2723
- "/v1.0/admin/tenders": {
2724
- "delete": {
2725
- "tags": [
2726
- "Admin"
2727
- ],
2728
- "summary": "Delete all tenders",
2729
- "operationId": "DeleteAllTenders",
2730
- "responses": {
2731
- "200": {
2732
- "description": "Payload of Object",
2733
- "content": {
2734
- "application/json": {
2735
- "schema": {
2736
- "type": "object"
2737
- }
2738
- }
2739
- }
2740
- }
2741
- }
2742
- }
2743
- },
2744
- "/v1.0/admin/reprocess-matches": {
2745
- "post": {
2746
- "tags": [
2747
- "Admin"
2748
- ],
2749
- "summary": "Trigger CV matching on all tenders",
2750
- "operationId": "ReprocessMatches",
2751
- "parameters": [
2752
- {
2753
- "name": "unmatchedOnly",
2754
- "in": "query",
2755
- "description": "If true, only re-match tenders with no existing consultant matches",
2756
- "schema": {
2757
- "type": "boolean"
2758
- }
2759
- }
2760
- ],
2761
- "responses": {
2762
- "200": {
2763
- "description": "Payload of Object",
2764
- "content": {
2765
- "application/json": {
2766
- "schema": {
2767
- "type": "object"
2768
- }
2769
- }
2770
- }
2771
- }
2772
- },
2773
- "security": [
2774
- {
2775
- "Implicit": [
2776
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2777
- ]
2778
- }
2779
- ]
2780
- }
2781
- },
2782
- "/v1.0/tenders/export.csv": {
2783
- "get": {
2784
- "tags": [
2785
- "Tenders"
2786
- ],
2787
- "summary": "Export tenders matching the given filters as RFC 4180 CSV",
2788
- "operationId": "ExportTendersCsv",
2789
- "parameters": [
2790
- {
2791
- "name": "stage",
2792
- "in": "query",
2793
- "description": "Filter by status.stage (e.g. discovery, qualification)",
2794
- "schema": {
2795
- "type": "string"
2796
- }
2797
- },
2798
- {
2799
- "name": "state",
2800
- "in": "query",
2801
- "description": "Filter by status.state (e.g. active, irrelevant, ingestion_failed)",
2802
- "schema": {
2803
- "type": "string"
2804
- }
2805
- },
2806
- {
2807
- "name": "fromDate",
2808
- "in": "query",
2809
- "description": "Only include tenders with foundAt >= fromDate (ISO 8601)",
2810
- "schema": {
2811
- "type": "string",
2812
- "format": "date-time"
2813
- }
2814
- },
2815
- {
2816
- "name": "toDate",
2817
- "in": "query",
2818
- "description": "Only include tenders with foundAt <= toDate (ISO 8601)",
2819
- "schema": {
2820
- "type": "string",
2821
- "format": "date-time"
2822
- }
2823
- }
2824
- ],
2825
- "responses": {
2826
- "200": {
2827
- "description": "Payload of String",
2828
- "content": {
2829
- "text/csv": {
2830
- "schema": {
2831
- "type": "string"
2832
- }
2833
- }
2834
- },
2835
- "x-ms-summary": "CSV file with one tender per row"
2836
- }
2837
- },
2838
- "security": [
2839
- {
2840
- "Implicit": [
2841
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2842
- ]
2843
- }
2844
- ]
2845
- }
2846
- },
2847
- "/v1.0/tenders/stream": {
2848
- "get": {
2849
- "tags": [
2850
- "Tenders"
2851
- ],
2852
- "summary": "Server-sent-events stream of tender.created / tender.updated / tender.deleted events",
2853
- "operationId": "StreamTenderEvents",
2854
- "responses": {},
2855
- "security": [
2856
- {
2857
- "Implicit": [
2858
- "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2859
- ]
2860
- }
2861
- ]
2862
- }
2863
- }
2864
- },
2865
- "components": {
2866
- "schemas": {
2867
- "agentJob": {
2868
- "type": "object",
2869
- "properties": {
2870
- "id": {
2871
- "type": "string",
2872
- "nullable": true
2873
- },
2874
- "type": {
2875
- "type": "string",
2876
- "nullable": true
2877
- },
2878
- "jobType": {
2879
- "type": "string",
2880
- "nullable": true
2881
- },
2882
- "tenderId": {
2883
- "type": "string",
2884
- "nullable": true
2885
- },
2886
- "status": {
2887
- "type": "string",
2888
- "nullable": true
2889
- },
2890
- "error": {
2891
- "type": "string",
2892
- "nullable": true
2893
- },
2894
- "result": {
2895
- "type": "string",
2896
- "nullable": true
2897
- },
2898
- "startedAt": {
2899
- "type": "string",
2900
- "format": "date-time",
2901
- "nullable": true
2902
- },
2903
- "completedAt": {
2904
- "type": "string",
2905
- "format": "date-time",
2906
- "nullable": true
2907
- },
2908
- "triggeredBy": {
2909
- "type": "string",
2910
- "nullable": true
2911
- },
2912
- "orchestrationId": {
2913
- "type": "string",
2914
- "nullable": true
2915
- },
2916
- "externalId": {
2917
- "type": "string",
2918
- "nullable": true
2919
- },
2920
- "sourceName": {
2921
- "type": "string",
2922
- "nullable": true
2923
- },
2924
- "inputUrl": {
2925
- "type": "string",
2926
- "nullable": true
2927
- },
2928
- "inputTitle": {
2929
- "type": "string",
2930
- "nullable": true
2931
- },
2932
- "logs": {
2933
- "type": "array",
2934
- "items": {
2935
- "$ref": "#/components/schemas/agentJobLogEntry"
2936
- },
2937
- "nullable": true
2938
- },
2939
- "afterSnapshot": {
2940
- "type": "string",
2941
- "nullable": true
2942
- }
2943
- }
2944
- },
2945
- "agentJobLogEntry": {
2946
- "type": "object",
2947
- "properties": {
2948
- "at": {
2949
- "type": "string",
2950
- "format": "date-time",
2951
- "nullable": true
2952
- },
2953
- "level": {
2954
- "type": "string",
2955
- "nullable": true
2956
- },
2957
- "message": {
2958
- "type": "string",
2959
- "nullable": true
2960
- },
2961
- "data": {
2962
- "type": "object",
2963
- "additionalProperties": {
2964
- "type": "object"
2965
- },
2966
- "nullable": true
2967
- }
2968
- }
2969
- },
2970
- "assignedConsultant": {
2971
- "type": "object",
2972
- "properties": {
2973
- "email": {
2974
- "type": "string",
2975
- "nullable": true
2976
- },
2977
- "name": {
2978
- "type": "string",
2979
- "nullable": true
2980
- },
2981
- "assignedAt": {
2982
- "type": "string",
2983
- "format": "date-time",
2984
- "nullable": true
2985
- },
2986
- "assignedBy": {
2987
- "type": "string",
2988
- "nullable": true
2989
- },
2990
- "note": {
2991
- "type": "string",
2992
- "nullable": true
2993
- }
2994
- }
2995
- },
2996
- "auditEvent": {
2997
- "type": "object",
2998
- "properties": {
2999
- "id": {
3000
- "type": "string",
3001
- "nullable": true
3002
- },
3003
- "type": {
3004
- "type": "string",
3005
- "nullable": true
3006
- },
3007
- "tenderId": {
3008
- "type": "string",
3009
- "nullable": true
3010
- },
3011
- "actorEmail": {
3012
- "type": "string",
3013
- "nullable": true
3014
- },
3015
- "actorSource": {
3016
- "type": "string",
3017
- "nullable": true
3018
- },
3019
- "summary": {
3020
- "type": "string",
3021
- "nullable": true
3022
- },
3023
- "beforeSnapshot": {
3024
- "$ref": "#/components/schemas/auditSnapshot"
3025
- },
3026
- "afterSnapshot": {
3027
- "$ref": "#/components/schemas/auditSnapshot"
3028
- },
3029
- "timestamp": {
3030
- "type": "string",
3031
- "format": "date-time",
3032
- "nullable": true
3033
- }
3034
- }
3035
- },
3036
- "auditSnapshot": {
3037
- "type": "object",
3038
- "properties": {
3039
- "stage": {
3040
- "type": "string",
3041
- "nullable": true
3042
- },
3043
- "state": {
3044
- "type": "string",
3045
- "nullable": true
3046
- },
3047
- "consultantMatchCount": {
3048
- "type": "integer",
3049
- "format": "int32",
3050
- "nullable": true
3051
- },
3052
- "selectedConsultantIds": {
3053
- "type": "array",
3054
- "items": {
3055
- "type": "string"
3056
- },
3057
- "nullable": true
3058
- }
3059
- },
3060
- "nullable": true
3061
- },
3062
- "backfillSlugsResult": {
3063
- "type": "object",
3064
- "properties": {
3065
- "total": {
3066
- "type": "integer",
3067
- "format": "int32"
3068
- },
3069
- "alreadyHad": {
3070
- "type": "integer",
3071
- "format": "int32"
3072
- },
3073
- "updated": {
3074
- "type": "integer",
3075
- "format": "int32"
3076
- }
3077
- }
3078
- },
3079
- "backupSummary": {
3080
- "type": "object",
3081
- "properties": {
3082
- "blobAccount": {
3083
- "type": "string"
3084
- },
3085
- "container": {
3086
- "type": "string"
3087
- },
3088
- "prefix": {
3089
- "type": "string"
3090
- },
3091
- "containers": {
3092
- "type": "array",
3093
- "items": {
3094
- "$ref": "#/components/schemas/containerBackup"
3095
- }
3096
- },
3097
- "documentsCopied": {
3098
- "type": "integer",
3099
- "format": "int32"
3100
- },
3101
- "documentsBytes": {
3102
- "type": "integer",
3103
- "format": "int64"
3104
- },
3105
- "documentsFailures": {
3106
- "type": "integer",
3107
- "format": "int32"
3108
- },
3109
- "startedAt": {
3110
- "type": "string",
3111
- "format": "date-time"
3112
- },
3113
- "completedAt": {
3114
- "type": "string",
3115
- "format": "date-time"
3116
- }
3117
- }
3118
- },
3119
- "bulkDeleteJobError": {
3120
- "type": "object",
3121
- "properties": {
3122
- "jobId": {
3123
- "type": "string"
3124
- },
3125
- "message": {
3126
- "type": "string"
3127
- }
3128
- }
3129
- },
3130
- "bulkDeleteJobsRequest": {
3131
- "type": "object",
3132
- "properties": {
3133
- "jobIds": {
3134
- "type": "array",
3135
- "items": {
3136
- "type": "string"
3137
- }
3138
- }
3139
- }
3140
- },
3141
- "bulkDeleteJobsResponse": {
3142
- "type": "object",
3143
- "properties": {
3144
- "deleted": {
3145
- "type": "integer",
3146
- "format": "int32"
3147
- },
3148
- "errors": {
3149
- "type": "array",
3150
- "items": {
3151
- "$ref": "#/components/schemas/bulkDeleteJobError"
3152
- }
3153
- }
3154
- }
3155
- },
3156
- "consultantAnswers": {
3157
- "type": "object",
3158
- "properties": {
3159
- "consultantId": {
3160
- "type": "string",
3161
- "nullable": true
3162
- },
3163
- "email": {
3164
- "type": "string",
3165
- "nullable": true
3166
- },
3167
- "name": {
3168
- "type": "string",
3169
- "nullable": true
3170
- },
3171
- "generatedAt": {
3172
- "type": "string",
3173
- "format": "date-time",
3174
- "nullable": true
3175
- },
3176
- "filledDocumentId": {
3177
- "type": "string",
3178
- "nullable": true
3179
- }
3180
- }
3181
- },
3182
- "consultantMatch": {
3183
- "type": "object",
3184
- "properties": {
3185
- "consultantId": {
3186
- "type": "string",
3187
- "nullable": true
3188
- },
3189
- "name": {
3190
- "type": "string",
3191
- "nullable": true
3192
- },
3193
- "fitScore": {
3194
- "type": "number",
3195
- "format": "double",
3196
- "nullable": true
3197
- },
3198
- "availabilityStatus": {
3199
- "type": "string",
3200
- "nullable": true
3201
- },
3202
- "availableFrom": {
3203
- "type": "string",
3204
- "nullable": true
3205
- },
3206
- "matchedTechnologies": {
3207
- "type": "array",
3208
- "items": {
3209
- "type": "string"
3210
- },
3211
- "nullable": true
3212
- },
3213
- "missingTechnologies": {
3214
- "type": "array",
3215
- "items": {
3216
- "type": "string"
3217
- },
3218
- "nullable": true
3219
- },
3220
- "selected": {
3221
- "type": "boolean",
3222
- "nullable": true
3223
- },
3224
- "fitExplanation": {
3225
- "type": "string",
3226
- "nullable": true
3227
- },
3228
- "cvSummary": {
3229
- "type": "string",
3230
- "nullable": true
3231
- },
3232
- "seniority": {
3233
- "type": "string",
3234
- "nullable": true
3235
- },
3236
- "email": {
3237
- "type": "string",
3238
- "nullable": true
3239
- },
3240
- "notifiedAt": {
3241
- "type": "string",
3242
- "format": "date-time",
3243
- "nullable": true
3244
- },
3245
- "consultantChannelNotifiedAt": {
3246
- "type": "string",
3247
- "format": "date-time",
3248
- "nullable": true
3249
- }
3250
- }
3251
- },
3252
- "consultantStatsResponse": {
3253
- "type": "object",
3254
- "properties": {
3255
- "total": {
3256
- "type": "integer",
3257
- "format": "int32"
3258
- },
3259
- "available": {
3260
- "type": "integer",
3261
- "format": "int32"
3262
- },
3263
- "onAssignment": {
3264
- "type": "integer",
3265
- "format": "int32"
3266
- },
3267
- "unknownAvailability": {
3268
- "type": "integer",
3269
- "format": "int32"
3270
- },
3271
- "avgFitScore": {
3272
- "type": "number",
3273
- "format": "double",
3274
- "nullable": true
3275
- }
3276
- }
3277
- },
3278
- "consultantSummary": {
3279
- "type": "object",
3280
- "properties": {
3281
- "userId": {
3282
- "type": "string",
3283
- "nullable": true
3284
- },
3285
- "email": {
3286
- "type": "string",
3287
- "nullable": true
3288
- },
3289
- "name": {
3290
- "type": "string",
3291
- "nullable": true
3292
- },
3293
- "technologies": {
3294
- "type": "array",
3295
- "items": {
3296
- "type": "string"
3297
- },
3298
- "nullable": true
3299
- },
3300
- "roles": {
3301
- "type": "array",
3302
- "items": {
3303
- "type": "string"
3304
- },
3305
- "nullable": true
3306
- },
3307
- "yearsExperience": {
3308
- "type": "integer",
3309
- "format": "int32",
3310
- "nullable": true
3311
- }
3312
- }
3313
- },
3314
- "containerBackup": {
3315
- "type": "object",
3316
- "properties": {
3317
- "name": {
3318
- "type": "string"
3319
- },
3320
- "blobPath": {
3321
- "type": "string"
3322
- },
3323
- "itemCount": {
3324
- "type": "integer",
3325
- "format": "int32"
3326
- },
3327
- "compressedBytes": {
3328
- "type": "integer",
3329
- "format": "int64"
3330
- }
3331
- }
3332
- },
3333
- "crawlActivityResponse": {
3334
- "type": "object",
3335
- "properties": {
3336
- "items": {
3337
- "type": "array",
3338
- "items": {
3339
- "$ref": "#/components/schemas/agentJob"
3340
- }
3341
- },
3342
- "total": {
3343
- "type": "integer",
3344
- "format": "int32"
3345
- }
3346
- }
3347
- },
3348
- "crawledNotice": {
3349
- "type": "object",
3350
- "properties": {
3351
- "sourceName": {
3352
- "type": "string"
3353
- },
3354
- "id": {
3355
- "type": "string"
3356
- },
3357
- "title": {
3358
- "type": "string"
3359
- },
3360
- "url": {
3361
- "type": "string"
3362
- }
3363
- }
3364
- },
3365
- "crawlPattern": {
3366
- "type": "object",
3367
- "properties": {
3368
- "sourceName": {
3369
- "type": "string"
3370
- },
3371
- "detailUrlRegex": {
3372
- "type": "string"
3373
- },
3374
- "paginationUrlRegex": {
3375
- "type": "string"
3376
- },
3377
- "sampleCount": {
3378
- "type": "integer",
3379
- "format": "int32"
3380
- },
3381
- "bootstrappedAt": {
3382
- "type": "string",
3383
- "format": "date-time"
3384
- }
3385
- }
3386
- },
3387
- "crawlPreviewResponse": {
3388
- "type": "object",
3389
- "properties": {
3390
- "sourceName": {
3391
- "type": "string"
3392
- },
3393
- "notices": {
3394
- "type": "array",
3395
- "items": {
3396
- "$ref": "#/components/schemas/crawledNotice"
3397
- }
3398
- },
3399
- "pattern": {
3400
- "$ref": "#/components/schemas/crawlPattern"
3401
- },
3402
- "startedAt": {
3403
- "type": "string",
3404
- "format": "date-time"
3405
- },
3406
- "finishedAt": {
3407
- "type": "string",
3408
- "format": "date-time"
3409
- },
3410
- "warnings": {
3411
- "type": "array",
3412
- "items": {
3413
- "type": "string"
3414
- }
3415
- }
3416
- }
3417
- },
3418
- "crawlScanResponse": {
3419
- "type": "object",
3420
- "properties": {
3421
- "sourceName": {
3422
- "type": "string"
3423
- },
3424
- "discovered": {
3425
- "type": "integer",
3426
- "format": "int32"
3427
- },
3428
- "queued": {
3429
- "type": "integer",
3430
- "format": "int32"
3431
- },
3432
- "merged": {
3433
- "type": "integer",
3434
- "format": "int32"
3435
- }
3436
- }
3437
- },
3438
- "crawlSourceConfig": {
3439
- "type": "object",
3440
- "properties": {
3441
- "name": {
3442
- "type": "string"
3443
- },
3444
- "seedUrl": {
3445
- "type": "string"
3446
- },
3447
- "maxPages": {
3448
- "type": "integer",
3449
- "format": "int32"
3450
- },
3451
- "enabled": {
3452
- "type": "boolean"
3453
- },
3454
- "createdAt": {
3455
- "type": "string",
3456
- "format": "date-time"
3457
- },
3458
- "updatedAt": {
3459
- "type": "string",
3460
- "format": "date-time"
3461
- }
3462
- }
3463
- },
3464
- "crawlSourceUpsertRequest": {
3465
- "type": "object",
3466
- "properties": {
3467
- "seedUrl": {
3468
- "type": "string"
3469
- },
3470
- "maxPages": {
3471
- "type": "integer",
3472
- "format": "int32",
3473
- "nullable": true
3474
- },
3475
- "enabled": {
3476
- "type": "boolean",
3477
- "nullable": true
3478
- }
3479
- }
3480
- },
3481
- "crawlSourceWithPattern": {
3482
- "type": "object",
3483
- "properties": {
3484
- "source": {
3485
- "$ref": "#/components/schemas/crawlSourceConfig"
3486
- },
3487
- "pattern": {
3488
- "$ref": "#/components/schemas/crawlPattern"
3489
- },
3490
- "lastActivityAt": {
3491
- "type": "string",
3492
- "format": "date-time",
3493
- "nullable": true
3494
- }
3495
- }
3496
- },
3497
- "crawlStatsResponse": {
3498
- "type": "object",
3499
- "properties": {
3500
- "sourceCount": {
3501
- "type": "integer",
3502
- "format": "int32"
3503
- },
3504
- "enabledSourceCount": {
3505
- "type": "integer",
3506
- "format": "int32"
3507
- },
3508
- "tendersActive": {
3509
- "type": "integer",
3510
- "format": "int32"
3511
- },
3512
- "tendersIrrelevant": {
3513
- "type": "integer",
3514
- "format": "int32"
3515
- },
3516
- "tendersIngestionFailed": {
3517
- "type": "integer",
3518
- "format": "int32"
3519
- },
3520
- "jobsPending": {
3521
- "type": "integer",
3522
- "format": "int32"
3523
- },
3524
- "jobsRunning": {
3525
- "type": "integer",
3526
- "format": "int32"
3527
- },
3528
- "jobsCompleted": {
3529
- "type": "integer",
3530
- "format": "int32"
3531
- },
3532
- "jobsFailed": {
3533
- "type": "integer",
3534
- "format": "int32"
3535
- },
3536
- "sources": {
3537
- "type": "array",
3538
- "items": {
3539
- "$ref": "#/components/schemas/sourceSummary"
3540
- }
3541
- }
3542
- }
3543
- },
3544
- "createBackupRequest": {
3545
- "type": "object",
3546
- "properties": {
3547
- "includeDocuments": {
3548
- "type": "boolean"
3549
- }
3550
- }
3551
- },
3552
- "deleteFailedTendersResponse": {
3553
- "type": "object",
3554
- "properties": {
3555
- "sourceName": {
3556
- "type": "string"
3557
- },
3558
- "matched": {
3559
- "type": "integer",
3560
- "format": "int32"
3561
- },
3562
- "deleted": {
3563
- "type": "integer",
3564
- "format": "int32"
3565
- }
3566
- }
3567
- },
3568
- "discoverListingRequest": {
3569
- "type": "object",
3570
- "properties": {
3571
- "homeUrl": {
3572
- "type": "string"
3573
- }
3574
- }
3575
- },
3576
- "discoverListingResponse": {
3577
- "type": "object",
3578
- "properties": {
3579
- "candidates": {
3580
- "type": "array",
3581
- "items": {
3582
- "$ref": "#/components/schemas/listingCandidate"
3583
- }
3584
- }
3585
- }
3586
- },
3587
- "externalSourceRef": {
3588
- "type": "object",
3589
- "properties": {
3590
- "system": {
3591
- "type": "string",
3592
- "nullable": true
3593
- },
3594
- "externalId": {
3595
- "type": "string",
3596
- "nullable": true
3597
- },
3598
- "url": {
3599
- "type": "string",
3600
- "nullable": true
3601
- },
3602
- "discoveredAt": {
3603
- "type": "string",
3604
- "format": "date-time",
3605
- "nullable": true
3606
- }
3607
- }
3608
- },
3609
- "extractedQuestion": {
3610
- "type": "object",
3611
- "properties": {
3612
- "id": {
3613
- "type": "string",
3614
- "nullable": true
3615
- },
3616
- "text": {
3617
- "type": "string",
3618
- "nullable": true
3619
- },
3620
- "kind": {
3621
- "type": "string",
3622
- "nullable": true
3623
- },
3624
- "expectedAnswerShape": {
3625
- "type": "string",
3626
- "nullable": true
3627
- },
3628
- "section": {
3629
- "type": "string",
3630
- "nullable": true
3631
- },
3632
- "sourceExcerpt": {
3633
- "type": "string",
3634
- "nullable": true
3635
- },
3636
- "placeholder": {
3637
- "type": "string",
3638
- "nullable": true
3639
- },
3640
- "currentValue": {
3641
- "type": "string",
3642
- "nullable": true
3643
- },
3644
- "sourceStrategy": {
3645
- "type": "string",
3646
- "nullable": true
3647
- },
3648
- "suggestedDataSource": {
3649
- "type": "string",
3650
- "nullable": true
3651
- },
3652
- "location": {
3653
- "$ref": "#/components/schemas/questionLocation"
3654
- }
3655
- }
3656
- },
3657
- "extractedQuestionSet": {
3658
- "type": "object",
3659
- "properties": {
3660
- "isFillable": {
3661
- "type": "boolean",
3662
- "nullable": true
3663
- },
3664
- "questions": {
3665
- "type": "array",
3666
- "items": {
3667
- "$ref": "#/components/schemas/extractedQuestion"
3668
- },
3669
- "nullable": true
3670
- },
3671
- "extractedAt": {
3672
- "type": "string",
3673
- "format": "date-time",
3674
- "nullable": true
3675
- }
3676
- },
3677
- "nullable": true
3678
- },
3679
- "funnelResponse": {
3680
- "type": "object",
3681
- "properties": {
3682
- "windowDays": {
3683
- "type": "integer",
3684
- "format": "int32"
3685
- },
3686
- "countByStage": {
3687
- "type": "object",
3688
- "additionalProperties": {
3689
- "type": "integer",
3690
- "format": "int32"
3691
- }
3692
- },
3693
- "conversionRates": {
3694
- "type": "object",
3695
- "additionalProperties": {
3696
- "type": "number",
3697
- "format": "double"
3698
- }
3699
- },
3700
- "avgCycleDays": {
3701
- "type": "object",
3702
- "additionalProperties": {
3703
- "type": "number",
3704
- "format": "double"
3705
- }
3706
- },
3707
- "wonCount": {
3708
- "type": "integer",
3709
- "format": "int32"
3710
- },
3711
- "lostCount": {
3712
- "type": "integer",
3713
- "format": "int32"
3714
- },
3715
- "winRatePct": {
3716
- "type": "number",
3717
- "format": "double",
3718
- "nullable": true
3719
- },
3720
- "stageTransitionsInWindow": {
3721
- "type": "object",
3722
- "additionalProperties": {
3723
- "type": "integer",
3724
- "format": "int32"
3725
- }
3726
- }
3727
- }
3728
- },
3729
- "ingestionAttachment": {
3730
- "type": "object",
3731
- "properties": {
3732
- "name": {
3733
- "type": "string",
3734
- "nullable": true
3735
- },
3736
- "contentType": {
3737
- "type": "string",
3738
- "nullable": true
3739
- },
3740
- "blobPath": {
3741
- "type": "string",
3742
- "nullable": true
3743
- },
3744
- "sizeBytes": {
3745
- "type": "integer",
3746
- "format": "int64",
3747
- "nullable": true
3748
- }
3749
- }
3750
- },
3751
- "ingestionRequest": {
3752
- "type": "object",
3753
- "properties": {
3754
- "sourceType": {
3755
- "type": "string",
3756
- "nullable": true
3757
- },
3758
- "content": {
3759
- "type": "string",
3760
- "nullable": true
3761
- },
3762
- "title": {
3763
- "type": "string",
3764
- "nullable": true
3765
- },
3766
- "existingTenderId": {
3767
- "type": "string",
3768
- "nullable": true
3769
- },
3770
- "externalId": {
3771
- "type": "string",
3772
- "nullable": true
3773
- },
3774
- "attachments": {
3775
- "type": "array",
3776
- "items": {
3777
- "$ref": "#/components/schemas/ingestionAttachment"
3778
- },
3779
- "nullable": true
3780
- }
3781
- }
3782
- },
3783
- "listingCandidate": {
3784
- "type": "object",
3785
- "properties": {
3786
- "url": {
3787
- "type": "string"
3788
- },
3789
- "label": {
3790
- "type": "string"
3791
- },
3792
- "confidence": {
3793
- "type": "number",
3794
- "format": "double"
3795
- }
3796
- }
3797
- },
3798
- "negotiateRequest": {
3799
- "type": "object",
3800
- "properties": {
3801
- "groups": {
3802
- "type": "array",
3803
- "items": {
3804
- "type": "string"
3805
- }
3806
- }
3807
- }
3808
- },
3809
- "negotiateResponse": {
3810
- "type": "object",
3811
- "properties": {
3812
- "url": {
3813
- "type": "string"
3814
- },
3815
- "accessToken": {
3816
- "type": "string"
3817
- },
3818
- "hubName": {
3819
- "type": "string"
3820
- },
3821
- "groups": {
3822
- "type": "array",
3823
- "items": {
3824
- "type": "string"
3825
- }
3826
- }
3827
- }
3828
- },
3829
- "patchDocumentRequest": {
3830
- "type": "object",
3831
- "properties": {
3832
- "isCompetenceMatrixSource": {
3833
- "type": "boolean",
3834
- "nullable": true
3835
- }
3836
- }
3837
- },
3838
- "patchDocumentResponse": {
3839
- "type": "object",
3840
- "properties": {
3841
- "document": {
3842
- "$ref": "#/components/schemas/tenderDocument"
3843
- },
3844
- "extractionJob": {
3845
- "$ref": "#/components/schemas/agentJob"
3846
- }
3847
- }
3848
- },
3849
- "questionFillRequest": {
3850
- "type": "object",
3851
- "properties": {
3852
- "consultantEmails": {
3853
- "type": "array",
3854
- "items": {
3855
- "type": "string"
3856
- },
3857
- "nullable": true
3858
- }
3859
- }
3860
- },
3861
- "questionLocation": {
3862
- "type": "object",
3863
- "properties": {
3864
- "xmlPart": {
3865
- "type": "string",
3866
- "nullable": true
3867
- },
3868
- "bodyIndex": {
3869
- "type": "integer",
3870
- "format": "int32",
3871
- "nullable": true
3872
- },
3873
- "tableIndex": {
3874
- "type": "integer",
3875
- "format": "int32",
3876
- "nullable": true
3877
- },
3878
- "rowIndex": {
3879
- "type": "integer",
3880
- "format": "int32",
3881
- "nullable": true
3882
- },
3883
- "colIndex": {
3884
- "type": "integer",
3885
- "format": "int32",
3886
- "nullable": true
3887
- },
3888
- "sdtId": {
3889
- "type": "string",
3890
- "nullable": true
3891
- },
3892
- "sheetName": {
3893
- "type": "string",
3894
- "nullable": true
3895
- },
3896
- "cellReference": {
3897
- "type": "string",
3898
- "nullable": true
3899
- }
3900
- },
3901
- "nullable": true
3902
- },
3903
- "salesforceAttributes": {
3904
- "type": "object",
3905
- "properties": {
3906
- "type": {
3907
- "type": "string",
3908
- "nullable": true
3909
- },
3910
- "url": {
3911
- "type": "string",
3912
- "nullable": true
3913
- }
3914
- },
3915
- "nullable": true
3916
- },
3917
- "salesforceOpportunity": {
3918
- "type": "object",
3919
- "properties": {
3920
- "attributes": {
3921
- "$ref": "#/components/schemas/salesforceAttributes"
3922
- },
3923
- "Id": {
3924
- "type": "string",
3925
- "nullable": true
3926
- },
3927
- "Name": {
3928
- "type": "string",
3929
- "nullable": true
3930
- },
3931
- "StageName": {
3932
- "type": "string",
3933
- "nullable": true
3934
- },
3935
- "CloseDate": {
3936
- "type": "string",
3937
- "format": "date-time",
3938
- "nullable": true
3939
- },
3940
- "IsClosed": {
3941
- "type": "boolean",
3942
- "nullable": true
3943
- },
3944
- "IsWon": {
3945
- "type": "boolean",
3946
- "nullable": true
3947
- },
3948
- "Amount": {
3949
- "type": "number",
3950
- "format": "double",
3951
- "nullable": true
3952
- },
3953
- "Account": {
3954
- "$ref": "#/components/schemas/salesforceReference"
3955
- },
3956
- "Owner": {
3957
- "$ref": "#/components/schemas/salesforceReference"
3958
- },
3959
- "Snokam_Tender_Id__c": {
3960
- "type": "string",
3961
- "nullable": true
3962
- }
3963
- }
3964
- },
3965
- "salesforceOpportunityStage": {
3966
- "type": "object",
3967
- "properties": {
3968
- "MasterLabel": {
3969
- "type": "string",
3970
- "nullable": true
3971
- },
3972
- "ApiName": {
3973
- "type": "string",
3974
- "nullable": true
3975
- },
3976
- "IsActive": {
3977
- "type": "boolean",
3978
- "nullable": true
3979
- },
3980
- "IsClosed": {
3981
- "type": "boolean",
3982
- "nullable": true
3983
- },
3984
- "IsWon": {
3985
- "type": "boolean",
3986
- "nullable": true
3987
- },
3988
- "SortOrder": {
3989
- "type": "integer",
3990
- "format": "int32",
3991
- "nullable": true
3992
- }
3993
- }
3994
- },
3995
- "salesforceReference": {
3996
- "type": "object",
3997
- "properties": {
3998
- "Name": {
3999
- "type": "string",
4000
- "nullable": true
4001
- },
4002
- "Id": {
4003
- "type": "string",
4004
- "nullable": true
4005
- },
4006
- "Email": {
4007
- "type": "string",
4008
- "nullable": true
4009
- }
4010
- },
4011
- "nullable": true
4012
- },
4013
- "salesforceRefreshResult": {
4014
- "type": "object",
4015
- "properties": {
4016
- "checked": {
4017
- "type": "integer",
4018
- "format": "int32"
4019
- },
4020
- "updated": {
4021
- "type": "integer",
4022
- "format": "int32"
4023
- }
4024
- }
4025
- },
4026
- "sendTenderSlackMessageRequest": {
4027
- "type": "object",
4028
- "properties": {
4029
- "employeeName": {
4030
- "type": "string",
4031
- "nullable": true
4032
- },
4033
- "message": {
4034
- "type": "string",
4035
- "nullable": true
4036
- }
4037
- }
4038
- },
4039
- "sourceFile": {
4040
- "type": "object",
4041
- "properties": {
4042
- "name": {
4043
- "type": "string",
4044
- "nullable": true
4045
- },
4046
- "url": {
4047
- "type": "string",
4048
- "nullable": true
4049
- }
4050
- }
4051
- },
4052
- "sourceSummary": {
4053
- "type": "object",
4054
- "properties": {
4055
- "name": {
4056
- "type": "string"
4057
- },
4058
- "seedUrl": {
4059
- "type": "string"
4060
- },
4061
- "enabled": {
4062
- "type": "boolean"
4063
- },
4064
- "hasPattern": {
4065
- "type": "boolean"
4066
- },
4067
- "patternSampleCount": {
4068
- "type": "integer",
4069
- "format": "int32"
4070
- },
4071
- "patternBootstrappedAt": {
4072
- "type": "string",
4073
- "format": "date-time",
4074
- "nullable": true
4075
- }
4076
- }
4077
- },
4078
- "tender": {
4079
- "type": "object",
4080
- "properties": {
4081
- "id": {
4082
- "type": "string",
4083
- "nullable": true
4084
- },
4085
- "type": {
4086
- "type": "string",
4087
- "nullable": true
4088
- },
4089
- "slug": {
4090
- "type": "string",
4091
- "nullable": true
4092
- },
4093
- "source": {
4094
- "$ref": "#/components/schemas/tenderSource"
4095
- },
4096
- "info": {
4097
- "$ref": "#/components/schemas/tenderInfo"
4098
- },
4099
- "dates": {
4100
- "$ref": "#/components/schemas/tenderDates"
4101
- },
4102
- "status": {
4103
- "$ref": "#/components/schemas/tenderStatus"
4104
- },
4105
- "classification": {
4106
- "$ref": "#/components/schemas/tenderClassification"
4107
- },
4108
- "parser": {
4109
- "$ref": "#/components/schemas/tenderParser"
4110
- },
4111
- "todos": {
4112
- "type": "array",
4113
- "items": {
4114
- "$ref": "#/components/schemas/tenderTodo"
4115
- },
4116
- "nullable": true
4117
- },
4118
- "documents": {
4119
- "type": "array",
4120
- "items": {
4121
- "$ref": "#/components/schemas/tenderDocument"
4122
- },
4123
- "nullable": true
4124
- },
4125
- "consultantMatches": {
4126
- "type": "array",
4127
- "items": {
4128
- "$ref": "#/components/schemas/consultantMatch"
4129
- },
4130
- "nullable": true
4131
- },
4132
- "assignedConsultants": {
4133
- "type": "array",
4134
- "items": {
4135
- "$ref": "#/components/schemas/assignedConsultant"
4136
- },
4137
- "nullable": true
4138
- },
4139
- "cvProposal": {
4140
- "$ref": "#/components/schemas/tenderCvProposal"
4141
- },
4142
- "audit": {
4143
- "$ref": "#/components/schemas/tenderAudit"
4144
- },
4145
- "description": {
4146
- "type": "string",
4147
- "nullable": true
4148
- },
4149
- "summary": {
4150
- "type": "string",
4151
- "nullable": true
4152
- },
4153
- "timeline": {
4154
- "type": "array",
4155
- "items": {
4156
- "$ref": "#/components/schemas/timelineEvent"
4157
- },
4158
- "nullable": true
4159
- },
4160
- "blobContainer": {
4161
- "type": "string",
4162
- "nullable": true
4163
- },
4164
- "salesforce": {
4165
- "$ref": "#/components/schemas/tenderSalesforce"
4166
- }
4167
- }
4168
- },
4169
- "tenderAudit": {
4170
- "type": "object",
4171
- "properties": {
4172
- "createdAt": {
4173
- "type": "string",
4174
- "format": "date-time",
4175
- "nullable": true
4176
- },
4177
- "updatedAt": {
4178
- "type": "string",
4179
- "format": "date-time",
4180
- "nullable": true
4181
- },
4182
- "updatedBy": {
4183
- "type": "string",
4184
- "nullable": true
4185
- }
4186
- },
4187
- "nullable": true
4188
- },
4189
- "tenderClassification": {
4190
- "type": "object",
4191
- "properties": {
4192
- "technologies": {
4193
- "type": "array",
4194
- "items": {
4195
- "type": "string"
4196
- },
4197
- "nullable": true
4198
- },
4199
- "competenceAreas": {
4200
- "type": "array",
4201
- "items": {
4202
- "type": "string"
4203
- },
4204
- "nullable": true
4205
- },
4206
- "domains": {
4207
- "type": "array",
4208
- "items": {
4209
- "type": "string"
4210
- },
4211
- "nullable": true
4212
- },
4213
- "languageRequirements": {
4214
- "type": "array",
4215
- "items": {
4216
- "type": "string"
4217
- },
4218
- "nullable": true
4219
- },
4220
- "seniorityRequirements": {
4221
- "type": "array",
4222
- "items": {
4223
- "type": "string"
4224
- },
4225
- "nullable": true
4226
- },
4227
- "securityRequirements": {
4228
- "type": "array",
4229
- "items": {
4230
- "type": "string"
4231
- },
4232
- "nullable": true
4233
- }
4234
- },
4235
- "nullable": true
4236
- },
4237
- "tenderCvProposal": {
4238
- "type": "object",
4239
- "properties": {
4240
- "proposalId": {
4241
- "type": "string",
4242
- "nullable": true
4243
- },
4244
- "createdAt": {
4245
- "type": "string",
4246
- "format": "date-time",
4247
- "nullable": true
4248
- },
4249
- "createdBy": {
4250
- "type": "string",
4251
- "nullable": true
4252
- },
4253
- "variants": {
4254
- "type": "array",
4255
- "items": {
4256
- "$ref": "#/components/schemas/tenderCvVariant"
4257
- },
4258
- "nullable": true
4259
- }
4260
- }
4261
- },
4262
- "tenderCvVariant": {
4263
- "type": "object",
4264
- "properties": {
4265
- "consultantEmail": {
4266
- "type": "string",
4267
- "nullable": true
4268
- },
4269
- "consultantName": {
4270
- "type": "string",
4271
- "nullable": true
4272
- },
4273
- "userId": {
4274
- "type": "string",
4275
- "nullable": true
4276
- },
4277
- "tailoredCvId": {
4278
- "type": "string",
4279
- "nullable": true
4280
- },
4281
- "attachmentId": {
4282
- "type": "string",
4283
- "nullable": true
4284
- },
4285
- "createdAt": {
4286
- "type": "string",
4287
- "format": "date-time",
4288
- "nullable": true
4289
- }
4290
- }
4291
- },
4292
- "tenderDates": {
4293
- "type": "object",
4294
- "properties": {
4295
- "foundAt": {
4296
- "type": "string",
4297
- "format": "date-time",
4298
- "nullable": true
4299
- },
4300
- "publishedAt": {
4301
- "type": "string",
4302
- "format": "date-time",
4303
- "nullable": true
4304
- },
4305
- "deadlineAt": {
4306
- "type": "string",
4307
- "format": "date-time",
4308
- "nullable": true
4309
- },
4310
- "lastUpdatedAt": {
4311
- "type": "string",
4312
- "format": "date-time",
4313
- "nullable": true
4314
- }
4315
- },
4316
- "nullable": true
4317
- },
4318
- "tenderDocument": {
4319
- "type": "object",
4320
- "properties": {
4321
- "id": {
4322
- "type": "string",
4323
- "nullable": true
4324
- },
4325
- "type": {
4326
- "type": "string",
4327
- "nullable": true
4328
- },
4329
- "title": {
4330
- "type": "string",
4331
- "nullable": true
4332
- },
4333
- "consultantId": {
4334
- "type": "string",
4335
- "nullable": true
4336
- },
4337
- "status": {
4338
- "type": "string",
4339
- "nullable": true
4340
- },
4341
- "reviewStatus": {
4342
- "type": "string",
4343
- "nullable": true
4344
- },
4345
- "sharepointUrl": {
4346
- "type": "string",
4347
- "nullable": true
4348
- },
4349
- "generatedAt": {
4350
- "type": "string",
4351
- "format": "date-time",
4352
- "nullable": true
4353
- },
4354
- "lastReviewedAt": {
4355
- "type": "string",
4356
- "format": "date-time",
4357
- "nullable": true
4358
- },
4359
- "blobPath": {
4360
- "type": "string",
4361
- "nullable": true
4362
- },
4363
- "blobUrl": {
4364
- "type": "string",
4365
- "nullable": true
4366
- },
4367
- "sourceUrl": {
4368
- "type": "string",
4369
- "nullable": true
4370
- },
4371
- "mimeType": {
4372
- "type": "string",
4373
- "nullable": true
4374
- },
4375
- "sizeBytes": {
4376
- "type": "integer",
4377
- "format": "int64",
4378
- "nullable": true
4379
- },
4380
- "downloadedAt": {
4381
- "type": "string",
4382
- "format": "date-time",
4383
- "nullable": true
4384
- },
4385
- "textContent": {
4386
- "type": "string",
4387
- "nullable": true
4388
- },
4389
- "isCompetenceMatrixSource": {
4390
- "type": "boolean",
4391
- "nullable": true
4392
- },
4393
- "classificationReasoning": {
4394
- "type": "string",
4395
- "nullable": true
4396
- },
4397
- "extractedQuestions": {
4398
- "$ref": "#/components/schemas/extractedQuestionSet"
4399
- },
4400
- "questionAnswers": {
4401
- "type": "array",
4402
- "items": {
4403
- "$ref": "#/components/schemas/consultantAnswers"
4404
- },
4405
- "nullable": true
4406
- },
4407
- "extractionStatus": {
4408
- "type": "string",
4409
- "nullable": true
4410
- },
4411
- "extractionError": {
4412
- "type": "string",
4413
- "nullable": true
4414
- },
4415
- "extractionStartedAt": {
4416
- "type": "string",
4417
- "format": "date-time",
4418
- "nullable": true
4419
- }
4420
- }
4421
- },
4422
- "tenderInfo": {
4423
- "type": "object",
4424
- "properties": {
4425
- "title": {
4426
- "type": "string",
4427
- "nullable": true
4428
- },
4429
- "customer": {
4430
- "type": "string",
4431
- "nullable": true
4432
- },
4433
- "country": {
4434
- "type": "string",
4435
- "nullable": true
4436
- },
4437
- "location": {
4438
- "type": "string",
4439
- "nullable": true
4440
- },
4441
- "workMode": {
4442
- "type": "string",
4443
- "nullable": true
4444
- }
4445
- },
4446
- "nullable": true
4447
- },
4448
- "tenderParser": {
4449
- "type": "object",
4450
- "properties": {
4451
- "lastRunAt": {
4452
- "type": "string",
4453
- "format": "date-time",
4454
- "nullable": true
4455
- },
4456
- "status": {
4457
- "type": "string",
4458
- "nullable": true
4459
- },
4460
- "version": {
4461
- "type": "string",
4462
- "nullable": true
4463
- },
4464
- "confidence": {
4465
- "type": "number",
4466
- "format": "double",
4467
- "nullable": true
4468
- },
4469
- "warnings": {
4470
- "type": "array",
4471
- "items": {
4472
- "type": "string"
4473
- },
4474
- "nullable": true
4475
- }
4476
- },
4477
- "nullable": true
4478
- },
4479
- "tenderSalesforce": {
4480
- "type": "object",
4481
- "properties": {
4482
- "opportunityId": {
4483
- "type": "string",
4484
- "nullable": true
4485
- },
4486
- "stageName": {
4487
- "type": "string",
4488
- "nullable": true
4489
- },
4490
- "isClosed": {
4491
- "type": "boolean",
4492
- "nullable": true
4493
- },
4494
- "isWon": {
4495
- "type": "boolean",
4496
- "nullable": true
4497
- },
4498
- "url": {
4499
- "type": "string",
4500
- "nullable": true
4501
- },
4502
- "lastSyncedAt": {
4503
- "type": "string",
4504
- "format": "date-time",
4505
- "nullable": true
4506
- }
4507
- },
4508
- "nullable": true
4509
- },
4510
- "tenderSource": {
4511
- "type": "object",
4512
- "properties": {
4513
- "externalTenderId": {
4514
- "type": "string",
4515
- "nullable": true
4516
- },
4517
- "sourceSystem": {
4518
- "type": "string",
4519
- "nullable": true
4520
- },
4521
- "sourceUrl": {
4522
- "type": "string",
4523
- "nullable": true
4524
- },
4525
- "sourceFiles": {
4526
- "type": "array",
4527
- "items": {
4528
- "$ref": "#/components/schemas/sourceFile"
4529
- },
4530
- "nullable": true
4531
- },
4532
- "additionalSources": {
4533
- "type": "array",
4534
- "items": {
4535
- "$ref": "#/components/schemas/externalSourceRef"
4536
- },
4537
- "nullable": true
4538
- }
4539
- },
4540
- "nullable": true
4541
- },
4542
- "tenderStatsResponse": {
4543
- "type": "object",
4544
- "properties": {
4545
- "byStatus": {
4546
- "type": "object",
4547
- "additionalProperties": {
4548
- "type": "integer",
4549
- "format": "int32"
4550
- }
4551
- },
4552
- "byStage": {
4553
- "type": "object",
4554
- "additionalProperties": {
4555
- "type": "integer",
4556
- "format": "int32"
4557
- }
4558
- },
4559
- "byHealth": {
4560
- "type": "object",
4561
- "additionalProperties": {
4562
- "type": "integer",
4563
- "format": "int32"
4564
- }
4565
- },
4566
- "total": {
4567
- "type": "integer",
4568
- "format": "int32"
4569
- },
4570
- "windowDays": {
4571
- "type": "integer",
4572
- "format": "int32"
4573
- },
4574
- "tendersInWindow": {
4575
- "type": "integer",
4576
- "format": "int32"
4577
- },
4578
- "consultantsMatched": {
4579
- "type": "integer",
4580
- "format": "int32"
4581
- },
4582
- "avgTimeToMatchHours": {
4583
- "type": "number",
4584
- "format": "double",
4585
- "nullable": true
4586
- }
4587
- }
4588
- },
4589
- "tenderStatus": {
4590
- "type": "object",
4591
- "properties": {
4592
- "stage": {
4593
- "type": "string",
4594
- "nullable": true
4595
- },
4596
- "state": {
4597
- "type": "string",
4598
- "nullable": true
4599
- },
4600
- "health": {
4601
- "type": "string",
4602
- "nullable": true
4603
- }
4604
- },
4605
- "nullable": true
4606
- },
4607
- "tenderTodo": {
4608
- "type": "object",
4609
- "properties": {
4610
- "id": {
4611
- "type": "string",
4612
- "nullable": true
4613
- },
4614
- "title": {
4615
- "type": "string",
4616
- "nullable": true
4617
- },
4618
- "description": {
4619
- "type": "string",
4620
- "nullable": true
4621
- },
4622
- "source": {
4623
- "type": "string",
4624
- "nullable": true
4625
- },
4626
- "category": {
4627
- "type": "string",
4628
- "nullable": true
4629
- },
4630
- "priority": {
4631
- "type": "string",
4632
- "nullable": true
4633
- },
4634
- "status": {
4635
- "type": "string",
4636
- "nullable": true
4637
- },
4638
- "assignedTo": {
4639
- "type": "string",
4640
- "nullable": true
4641
- },
4642
- "dueAt": {
4643
- "type": "string",
4644
- "format": "date-time",
4645
- "nullable": true
4646
- },
4647
- "completedAt": {
4648
- "type": "string",
4649
- "format": "date-time",
4650
- "nullable": true
4651
- }
4652
- }
4653
- },
4654
- "timelineEvent": {
4655
- "type": "object",
4656
- "properties": {
4657
- "id": {
4658
- "type": "string",
4659
- "nullable": true
4660
- },
4661
- "title": {
4662
- "type": "string",
4663
- "nullable": true
4664
- },
4665
- "description": {
4666
- "type": "string",
4667
- "nullable": true
4668
- },
4669
- "dueAt": {
4670
- "type": "string",
4671
- "format": "date-time",
4672
- "nullable": true
4673
- },
4674
- "category": {
4675
- "type": "string",
4676
- "nullable": true
4677
- },
4678
- "mandatory": {
4679
- "type": "boolean",
4680
- "nullable": true
4681
- },
4682
- "status": {
4683
- "type": "string",
4684
- "nullable": true
4685
- }
4686
- }
4687
- },
4688
- "updateSalesforceStageRequest": {
4689
- "type": "object",
4690
- "properties": {
4691
- "stageName": {
4692
- "type": "string"
4693
- }
4694
- }
4695
- },
4696
- "zombieReapResult": {
4697
- "type": "object",
4698
- "properties": {
4699
- "scanned": {
4700
- "type": "integer",
4701
- "format": "int32"
4702
- },
4703
- "reaped": {
4704
- "type": "integer",
4705
- "format": "int32"
4706
- },
4707
- "reapedJobIds": {
4708
- "type": "array",
4709
- "items": {
4710
- "type": "string"
4711
- }
4712
- }
4713
- }
4714
- }
4715
- },
4716
- "securitySchemes": {
4717
- "Implicit": {
4718
- "type": "oauth2",
4719
- "flows": {
4720
- "implicit": {
4721
- "authorizationUrl": "https://login.microsoftonline.com/a8533784-aa3c-403b-a61a-1533ecc6e3ed/oauth2/v2.0/authorize",
4722
- "tokenUrl": "https://login.microsoftonline.com/a8533784-aa3c-403b-a61a-1533ecc6e3ed/oauth2/v2.0/token",
4723
- "refreshUrl": "https://login.microsoftonline.com/a8533784-aa3c-403b-a61a-1533ecc6e3ed/oauth2/v2.0/token",
4724
- "scopes": {
4725
- "api://d7f15838-af74-4048-88b3-503089de0064/.default": "Default function scope"
4726
- }
4727
- }
4728
- }
4729
- }
4730
- }
4731
- }
4732
- }