@snokam/mcp-api 0.61.1 → 0.62.0

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