@snokam/mcp-api 2.15.0 → 2.16.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snokam/mcp-api",
3
- "version": "2.15.0",
3
+ "version": "2.16.0",
4
4
  "description": "MCP server exposing Snokam backend APIs as tools for Claude Code and other MCP clients",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1515,6 +1515,214 @@
1515
1515
  ]
1516
1516
  }
1517
1517
  },
1518
+ "/v1.0/salesforce/opportunities": {
1519
+ "get": {
1520
+ "tags": [
1521
+ "Salesforce"
1522
+ ],
1523
+ "summary": "List Salesforce Opportunities (open by default).",
1524
+ "operationId": "ListSalesforceOpportunities",
1525
+ "parameters": [
1526
+ {
1527
+ "name": "includeClosed",
1528
+ "in": "query",
1529
+ "schema": {
1530
+ "type": "boolean"
1531
+ },
1532
+ "x-ms-summary": "Include closed opportunities (default false)."
1533
+ },
1534
+ {
1535
+ "name": "limit",
1536
+ "in": "query",
1537
+ "schema": {
1538
+ "type": "integer",
1539
+ "format": "int32"
1540
+ },
1541
+ "x-ms-summary": "Row cap, max 200 (default 100)."
1542
+ }
1543
+ ],
1544
+ "responses": {
1545
+ "200": {
1546
+ "description": "Payload of Array of SalesforceOpportunity",
1547
+ "content": {
1548
+ "application/json": {
1549
+ "schema": {
1550
+ "type": "array",
1551
+ "items": {
1552
+ "$ref": "#/components/schemas/salesforceOpportunity"
1553
+ }
1554
+ }
1555
+ }
1556
+ }
1557
+ }
1558
+ },
1559
+ "security": [
1560
+ {
1561
+ "Implicit": [
1562
+ "api://7e877854-e62d-4637-a655-1da7141f7ac9/.default"
1563
+ ]
1564
+ }
1565
+ ]
1566
+ }
1567
+ },
1568
+ "/v1.0/salesforce/refresh": {
1569
+ "post": {
1570
+ "tags": [
1571
+ "Salesforce"
1572
+ ],
1573
+ "summary": "Batch-refresh the cached Salesforce state on every linked Snøkam tender.",
1574
+ "operationId": "RefreshAllSalesforceLinks",
1575
+ "responses": {
1576
+ "200": {
1577
+ "description": "Payload of SalesforceRefreshResult",
1578
+ "content": {
1579
+ "application/json": {
1580
+ "schema": {
1581
+ "$ref": "#/components/schemas/salesforceRefreshResult"
1582
+ }
1583
+ }
1584
+ }
1585
+ }
1586
+ },
1587
+ "security": [
1588
+ {
1589
+ "Implicit": [
1590
+ "api://7e877854-e62d-4637-a655-1da7141f7ac9/.default"
1591
+ ]
1592
+ }
1593
+ ]
1594
+ }
1595
+ },
1596
+ "/v1.0/salesforce/opportunities/{sfId}/import": {
1597
+ "post": {
1598
+ "tags": [
1599
+ "Salesforce"
1600
+ ],
1601
+ "summary": "Create a Snøkam tender stub from an existing Salesforce Opportunity.",
1602
+ "operationId": "ImportSalesforceOpportunity",
1603
+ "parameters": [
1604
+ {
1605
+ "name": "sfId",
1606
+ "in": "path",
1607
+ "required": true,
1608
+ "schema": {
1609
+ "type": "string"
1610
+ },
1611
+ "x-ms-summary": "Salesforce Opportunity Id."
1612
+ }
1613
+ ],
1614
+ "responses": {
1615
+ "200": {
1616
+ "description": "Payload of Tender",
1617
+ "content": {
1618
+ "application/json": {
1619
+ "schema": {
1620
+ "$ref": "#/components/schemas/tender"
1621
+ }
1622
+ }
1623
+ }
1624
+ },
1625
+ "404": {
1626
+ "description": "No description"
1627
+ },
1628
+ "409": {
1629
+ "description": "A tender is already linked to this Opportunity."
1630
+ }
1631
+ },
1632
+ "security": [
1633
+ {
1634
+ "Implicit": [
1635
+ "api://7e877854-e62d-4637-a655-1da7141f7ac9/.default"
1636
+ ]
1637
+ }
1638
+ ]
1639
+ }
1640
+ },
1641
+ "/v1.0/tenders/{id}/salesforce": {
1642
+ "post": {
1643
+ "tags": [
1644
+ "Salesforce"
1645
+ ],
1646
+ "summary": "Create a Salesforce Opportunity from a Snøkam tender and cache the link.",
1647
+ "operationId": "PromoteTenderToSalesforce",
1648
+ "parameters": [
1649
+ {
1650
+ "name": "id",
1651
+ "in": "path",
1652
+ "required": true,
1653
+ "schema": {
1654
+ "type": "string"
1655
+ }
1656
+ }
1657
+ ],
1658
+ "responses": {
1659
+ "200": {
1660
+ "description": "Payload of Tender",
1661
+ "content": {
1662
+ "application/json": {
1663
+ "schema": {
1664
+ "$ref": "#/components/schemas/tender"
1665
+ }
1666
+ }
1667
+ }
1668
+ },
1669
+ "404": {
1670
+ "description": "No description"
1671
+ },
1672
+ "409": {
1673
+ "description": "Tender is already linked to a Salesforce Opportunity."
1674
+ }
1675
+ },
1676
+ "security": [
1677
+ {
1678
+ "Implicit": [
1679
+ "api://7e877854-e62d-4637-a655-1da7141f7ac9/.default"
1680
+ ]
1681
+ }
1682
+ ]
1683
+ }
1684
+ },
1685
+ "/v1.0/tenders/{id}/salesforce/refresh": {
1686
+ "post": {
1687
+ "tags": [
1688
+ "Salesforce"
1689
+ ],
1690
+ "summary": "Re-sync cached Salesforce Opportunity state (stage / closed / won) onto the tender.",
1691
+ "operationId": "RefreshTenderSalesforceLink",
1692
+ "parameters": [
1693
+ {
1694
+ "name": "id",
1695
+ "in": "path",
1696
+ "required": true,
1697
+ "schema": {
1698
+ "type": "string"
1699
+ }
1700
+ }
1701
+ ],
1702
+ "responses": {
1703
+ "200": {
1704
+ "description": "Payload of Tender",
1705
+ "content": {
1706
+ "application/json": {
1707
+ "schema": {
1708
+ "$ref": "#/components/schemas/tender"
1709
+ }
1710
+ }
1711
+ }
1712
+ },
1713
+ "404": {
1714
+ "description": "No description"
1715
+ }
1716
+ },
1717
+ "security": [
1718
+ {
1719
+ "Implicit": [
1720
+ "api://7e877854-e62d-4637-a655-1da7141f7ac9/.default"
1721
+ ]
1722
+ }
1723
+ ]
1724
+ }
1725
+ },
1518
1726
  "/v1.0/tenders/stats": {
1519
1727
  "get": {
1520
1728
  "tags": [
@@ -1834,6 +2042,97 @@
1834
2042
  ]
1835
2043
  }
1836
2044
  },
2045
+ "/v1.0/tenders/{id}/reingest": {
2046
+ "post": {
2047
+ "tags": [
2048
+ "Tenders"
2049
+ ],
2050
+ "summary": "Re-run the ingestion pipeline on an existing tender, re-parsing documents and refreshing AI match / summary / classification.",
2051
+ "operationId": "ReingestTender",
2052
+ "parameters": [
2053
+ {
2054
+ "name": "id",
2055
+ "in": "path",
2056
+ "required": true,
2057
+ "schema": {
2058
+ "type": "string"
2059
+ }
2060
+ }
2061
+ ],
2062
+ "responses": {
2063
+ "200": {
2064
+ "description": "Payload of AgentJob",
2065
+ "content": {
2066
+ "application/json": {
2067
+ "schema": {
2068
+ "$ref": "#/components/schemas/agentJob"
2069
+ }
2070
+ }
2071
+ }
2072
+ },
2073
+ "404": {
2074
+ "description": "No description"
2075
+ }
2076
+ },
2077
+ "security": [
2078
+ {
2079
+ "Implicit": [
2080
+ "api://7e877854-e62d-4637-a655-1da7141f7ac9/.default"
2081
+ ]
2082
+ }
2083
+ ]
2084
+ }
2085
+ },
2086
+ "/v1.0/tenders/{id}/jobs": {
2087
+ "get": {
2088
+ "tags": [
2089
+ "Tenders"
2090
+ ],
2091
+ "summary": "Recent agent jobs (ingestion, CV matching, …) for a tender — newest first.",
2092
+ "operationId": "ListTenderJobs",
2093
+ "parameters": [
2094
+ {
2095
+ "name": "id",
2096
+ "in": "path",
2097
+ "required": true,
2098
+ "schema": {
2099
+ "type": "string"
2100
+ }
2101
+ },
2102
+ {
2103
+ "name": "limit",
2104
+ "in": "query",
2105
+ "schema": {
2106
+ "type": "integer",
2107
+ "format": "int32"
2108
+ },
2109
+ "x-ms-summary": "Max rows (default 10, capped at 100)."
2110
+ }
2111
+ ],
2112
+ "responses": {
2113
+ "200": {
2114
+ "description": "Payload of Array of AgentJob",
2115
+ "content": {
2116
+ "application/json": {
2117
+ "schema": {
2118
+ "type": "array",
2119
+ "items": {
2120
+ "$ref": "#/components/schemas/agentJob"
2121
+ }
2122
+ }
2123
+ }
2124
+ }
2125
+ }
2126
+ },
2127
+ "security": [
2128
+ {
2129
+ "Implicit": [
2130
+ "api://7e877854-e62d-4637-a655-1da7141f7ac9/.default"
2131
+ ]
2132
+ }
2133
+ ]
2134
+ }
2135
+ },
1837
2136
  "/v1.0/admin/tenders": {
1838
2137
  "delete": {
1839
2138
  "tags": [
@@ -2895,6 +3194,95 @@
2895
3194
  },
2896
3195
  "nullable": true
2897
3196
  },
3197
+ "salesforceAttributes": {
3198
+ "type": "object",
3199
+ "properties": {
3200
+ "type": {
3201
+ "type": "string",
3202
+ "nullable": true
3203
+ },
3204
+ "url": {
3205
+ "type": "string",
3206
+ "nullable": true
3207
+ }
3208
+ },
3209
+ "nullable": true
3210
+ },
3211
+ "salesforceOpportunity": {
3212
+ "type": "object",
3213
+ "properties": {
3214
+ "attributes": {
3215
+ "$ref": "#/components/schemas/salesforceAttributes"
3216
+ },
3217
+ "Id": {
3218
+ "type": "string",
3219
+ "nullable": true
3220
+ },
3221
+ "Name": {
3222
+ "type": "string",
3223
+ "nullable": true
3224
+ },
3225
+ "StageName": {
3226
+ "type": "string",
3227
+ "nullable": true
3228
+ },
3229
+ "CloseDate": {
3230
+ "type": "string",
3231
+ "format": "date-time",
3232
+ "nullable": true
3233
+ },
3234
+ "IsClosed": {
3235
+ "type": "boolean",
3236
+ "nullable": true
3237
+ },
3238
+ "IsWon": {
3239
+ "type": "boolean",
3240
+ "nullable": true
3241
+ },
3242
+ "Amount": {
3243
+ "type": "number",
3244
+ "format": "double",
3245
+ "nullable": true
3246
+ },
3247
+ "Account": {
3248
+ "$ref": "#/components/schemas/salesforceReference"
3249
+ },
3250
+ "Owner": {
3251
+ "$ref": "#/components/schemas/salesforceReference"
3252
+ },
3253
+ "Snokam_Tender_Id__c": {
3254
+ "type": "string",
3255
+ "nullable": true
3256
+ }
3257
+ }
3258
+ },
3259
+ "salesforceReference": {
3260
+ "type": "object",
3261
+ "properties": {
3262
+ "Name": {
3263
+ "type": "string",
3264
+ "nullable": true
3265
+ },
3266
+ "Id": {
3267
+ "type": "string",
3268
+ "nullable": true
3269
+ }
3270
+ },
3271
+ "nullable": true
3272
+ },
3273
+ "salesforceRefreshResult": {
3274
+ "type": "object",
3275
+ "properties": {
3276
+ "checked": {
3277
+ "type": "integer",
3278
+ "format": "int32"
3279
+ },
3280
+ "updated": {
3281
+ "type": "integer",
3282
+ "format": "int32"
3283
+ }
3284
+ }
3285
+ },
2898
3286
  "sourceFile": {
2899
3287
  "type": "object",
2900
3288
  "properties": {
@@ -3005,6 +3393,9 @@
3005
3393
  "blobContainer": {
3006
3394
  "type": "string",
3007
3395
  "nullable": true
3396
+ },
3397
+ "salesforce": {
3398
+ "$ref": "#/components/schemas/tenderSalesforce"
3008
3399
  }
3009
3400
  }
3010
3401
  },
@@ -3263,6 +3654,37 @@
3263
3654
  },
3264
3655
  "nullable": true
3265
3656
  },
3657
+ "tenderSalesforce": {
3658
+ "type": "object",
3659
+ "properties": {
3660
+ "opportunityId": {
3661
+ "type": "string",
3662
+ "nullable": true
3663
+ },
3664
+ "stageName": {
3665
+ "type": "string",
3666
+ "nullable": true
3667
+ },
3668
+ "isClosed": {
3669
+ "type": "boolean",
3670
+ "nullable": true
3671
+ },
3672
+ "isWon": {
3673
+ "type": "boolean",
3674
+ "nullable": true
3675
+ },
3676
+ "url": {
3677
+ "type": "string",
3678
+ "nullable": true
3679
+ },
3680
+ "lastSyncedAt": {
3681
+ "type": "string",
3682
+ "format": "date-time",
3683
+ "nullable": true
3684
+ }
3685
+ },
3686
+ "nullable": true
3687
+ },
3266
3688
  "tenderSource": {
3267
3689
  "type": "object",
3268
3690
  "properties": {
@@ -1515,6 +1515,214 @@
1515
1515
  ]
1516
1516
  }
1517
1517
  },
1518
+ "/v1.0/salesforce/opportunities": {
1519
+ "get": {
1520
+ "tags": [
1521
+ "Salesforce"
1522
+ ],
1523
+ "summary": "List Salesforce Opportunities (open by default).",
1524
+ "operationId": "ListSalesforceOpportunities",
1525
+ "parameters": [
1526
+ {
1527
+ "name": "includeClosed",
1528
+ "in": "query",
1529
+ "schema": {
1530
+ "type": "boolean"
1531
+ },
1532
+ "x-ms-summary": "Include closed opportunities (default false)."
1533
+ },
1534
+ {
1535
+ "name": "limit",
1536
+ "in": "query",
1537
+ "schema": {
1538
+ "type": "integer",
1539
+ "format": "int32"
1540
+ },
1541
+ "x-ms-summary": "Row cap, max 200 (default 100)."
1542
+ }
1543
+ ],
1544
+ "responses": {
1545
+ "200": {
1546
+ "description": "Payload of Array of SalesforceOpportunity",
1547
+ "content": {
1548
+ "application/json": {
1549
+ "schema": {
1550
+ "type": "array",
1551
+ "items": {
1552
+ "$ref": "#/components/schemas/salesforceOpportunity"
1553
+ }
1554
+ }
1555
+ }
1556
+ }
1557
+ }
1558
+ },
1559
+ "security": [
1560
+ {
1561
+ "Implicit": [
1562
+ "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1563
+ ]
1564
+ }
1565
+ ]
1566
+ }
1567
+ },
1568
+ "/v1.0/salesforce/refresh": {
1569
+ "post": {
1570
+ "tags": [
1571
+ "Salesforce"
1572
+ ],
1573
+ "summary": "Batch-refresh the cached Salesforce state on every linked Snøkam tender.",
1574
+ "operationId": "RefreshAllSalesforceLinks",
1575
+ "responses": {
1576
+ "200": {
1577
+ "description": "Payload of SalesforceRefreshResult",
1578
+ "content": {
1579
+ "application/json": {
1580
+ "schema": {
1581
+ "$ref": "#/components/schemas/salesforceRefreshResult"
1582
+ }
1583
+ }
1584
+ }
1585
+ }
1586
+ },
1587
+ "security": [
1588
+ {
1589
+ "Implicit": [
1590
+ "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1591
+ ]
1592
+ }
1593
+ ]
1594
+ }
1595
+ },
1596
+ "/v1.0/salesforce/opportunities/{sfId}/import": {
1597
+ "post": {
1598
+ "tags": [
1599
+ "Salesforce"
1600
+ ],
1601
+ "summary": "Create a Snøkam tender stub from an existing Salesforce Opportunity.",
1602
+ "operationId": "ImportSalesforceOpportunity",
1603
+ "parameters": [
1604
+ {
1605
+ "name": "sfId",
1606
+ "in": "path",
1607
+ "required": true,
1608
+ "schema": {
1609
+ "type": "string"
1610
+ },
1611
+ "x-ms-summary": "Salesforce Opportunity Id."
1612
+ }
1613
+ ],
1614
+ "responses": {
1615
+ "200": {
1616
+ "description": "Payload of Tender",
1617
+ "content": {
1618
+ "application/json": {
1619
+ "schema": {
1620
+ "$ref": "#/components/schemas/tender"
1621
+ }
1622
+ }
1623
+ }
1624
+ },
1625
+ "404": {
1626
+ "description": "No description"
1627
+ },
1628
+ "409": {
1629
+ "description": "A tender is already linked to this Opportunity."
1630
+ }
1631
+ },
1632
+ "security": [
1633
+ {
1634
+ "Implicit": [
1635
+ "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1636
+ ]
1637
+ }
1638
+ ]
1639
+ }
1640
+ },
1641
+ "/v1.0/tenders/{id}/salesforce": {
1642
+ "post": {
1643
+ "tags": [
1644
+ "Salesforce"
1645
+ ],
1646
+ "summary": "Create a Salesforce Opportunity from a Snøkam tender and cache the link.",
1647
+ "operationId": "PromoteTenderToSalesforce",
1648
+ "parameters": [
1649
+ {
1650
+ "name": "id",
1651
+ "in": "path",
1652
+ "required": true,
1653
+ "schema": {
1654
+ "type": "string"
1655
+ }
1656
+ }
1657
+ ],
1658
+ "responses": {
1659
+ "200": {
1660
+ "description": "Payload of Tender",
1661
+ "content": {
1662
+ "application/json": {
1663
+ "schema": {
1664
+ "$ref": "#/components/schemas/tender"
1665
+ }
1666
+ }
1667
+ }
1668
+ },
1669
+ "404": {
1670
+ "description": "No description"
1671
+ },
1672
+ "409": {
1673
+ "description": "Tender is already linked to a Salesforce Opportunity."
1674
+ }
1675
+ },
1676
+ "security": [
1677
+ {
1678
+ "Implicit": [
1679
+ "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1680
+ ]
1681
+ }
1682
+ ]
1683
+ }
1684
+ },
1685
+ "/v1.0/tenders/{id}/salesforce/refresh": {
1686
+ "post": {
1687
+ "tags": [
1688
+ "Salesforce"
1689
+ ],
1690
+ "summary": "Re-sync cached Salesforce Opportunity state (stage / closed / won) onto the tender.",
1691
+ "operationId": "RefreshTenderSalesforceLink",
1692
+ "parameters": [
1693
+ {
1694
+ "name": "id",
1695
+ "in": "path",
1696
+ "required": true,
1697
+ "schema": {
1698
+ "type": "string"
1699
+ }
1700
+ }
1701
+ ],
1702
+ "responses": {
1703
+ "200": {
1704
+ "description": "Payload of Tender",
1705
+ "content": {
1706
+ "application/json": {
1707
+ "schema": {
1708
+ "$ref": "#/components/schemas/tender"
1709
+ }
1710
+ }
1711
+ }
1712
+ },
1713
+ "404": {
1714
+ "description": "No description"
1715
+ }
1716
+ },
1717
+ "security": [
1718
+ {
1719
+ "Implicit": [
1720
+ "api://d7f15838-af74-4048-88b3-503089de0064/.default"
1721
+ ]
1722
+ }
1723
+ ]
1724
+ }
1725
+ },
1518
1726
  "/v1.0/tenders/stats": {
1519
1727
  "get": {
1520
1728
  "tags": [
@@ -1834,6 +2042,97 @@
1834
2042
  ]
1835
2043
  }
1836
2044
  },
2045
+ "/v1.0/tenders/{id}/reingest": {
2046
+ "post": {
2047
+ "tags": [
2048
+ "Tenders"
2049
+ ],
2050
+ "summary": "Re-run the ingestion pipeline on an existing tender, re-parsing documents and refreshing AI match / summary / classification.",
2051
+ "operationId": "ReingestTender",
2052
+ "parameters": [
2053
+ {
2054
+ "name": "id",
2055
+ "in": "path",
2056
+ "required": true,
2057
+ "schema": {
2058
+ "type": "string"
2059
+ }
2060
+ }
2061
+ ],
2062
+ "responses": {
2063
+ "200": {
2064
+ "description": "Payload of AgentJob",
2065
+ "content": {
2066
+ "application/json": {
2067
+ "schema": {
2068
+ "$ref": "#/components/schemas/agentJob"
2069
+ }
2070
+ }
2071
+ }
2072
+ },
2073
+ "404": {
2074
+ "description": "No description"
2075
+ }
2076
+ },
2077
+ "security": [
2078
+ {
2079
+ "Implicit": [
2080
+ "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2081
+ ]
2082
+ }
2083
+ ]
2084
+ }
2085
+ },
2086
+ "/v1.0/tenders/{id}/jobs": {
2087
+ "get": {
2088
+ "tags": [
2089
+ "Tenders"
2090
+ ],
2091
+ "summary": "Recent agent jobs (ingestion, CV matching, …) for a tender — newest first.",
2092
+ "operationId": "ListTenderJobs",
2093
+ "parameters": [
2094
+ {
2095
+ "name": "id",
2096
+ "in": "path",
2097
+ "required": true,
2098
+ "schema": {
2099
+ "type": "string"
2100
+ }
2101
+ },
2102
+ {
2103
+ "name": "limit",
2104
+ "in": "query",
2105
+ "schema": {
2106
+ "type": "integer",
2107
+ "format": "int32"
2108
+ },
2109
+ "x-ms-summary": "Max rows (default 10, capped at 100)."
2110
+ }
2111
+ ],
2112
+ "responses": {
2113
+ "200": {
2114
+ "description": "Payload of Array of AgentJob",
2115
+ "content": {
2116
+ "application/json": {
2117
+ "schema": {
2118
+ "type": "array",
2119
+ "items": {
2120
+ "$ref": "#/components/schemas/agentJob"
2121
+ }
2122
+ }
2123
+ }
2124
+ }
2125
+ }
2126
+ },
2127
+ "security": [
2128
+ {
2129
+ "Implicit": [
2130
+ "api://d7f15838-af74-4048-88b3-503089de0064/.default"
2131
+ ]
2132
+ }
2133
+ ]
2134
+ }
2135
+ },
1837
2136
  "/v1.0/admin/tenders": {
1838
2137
  "delete": {
1839
2138
  "tags": [
@@ -2895,6 +3194,95 @@
2895
3194
  },
2896
3195
  "nullable": true
2897
3196
  },
3197
+ "salesforceAttributes": {
3198
+ "type": "object",
3199
+ "properties": {
3200
+ "type": {
3201
+ "type": "string",
3202
+ "nullable": true
3203
+ },
3204
+ "url": {
3205
+ "type": "string",
3206
+ "nullable": true
3207
+ }
3208
+ },
3209
+ "nullable": true
3210
+ },
3211
+ "salesforceOpportunity": {
3212
+ "type": "object",
3213
+ "properties": {
3214
+ "attributes": {
3215
+ "$ref": "#/components/schemas/salesforceAttributes"
3216
+ },
3217
+ "Id": {
3218
+ "type": "string",
3219
+ "nullable": true
3220
+ },
3221
+ "Name": {
3222
+ "type": "string",
3223
+ "nullable": true
3224
+ },
3225
+ "StageName": {
3226
+ "type": "string",
3227
+ "nullable": true
3228
+ },
3229
+ "CloseDate": {
3230
+ "type": "string",
3231
+ "format": "date-time",
3232
+ "nullable": true
3233
+ },
3234
+ "IsClosed": {
3235
+ "type": "boolean",
3236
+ "nullable": true
3237
+ },
3238
+ "IsWon": {
3239
+ "type": "boolean",
3240
+ "nullable": true
3241
+ },
3242
+ "Amount": {
3243
+ "type": "number",
3244
+ "format": "double",
3245
+ "nullable": true
3246
+ },
3247
+ "Account": {
3248
+ "$ref": "#/components/schemas/salesforceReference"
3249
+ },
3250
+ "Owner": {
3251
+ "$ref": "#/components/schemas/salesforceReference"
3252
+ },
3253
+ "Snokam_Tender_Id__c": {
3254
+ "type": "string",
3255
+ "nullable": true
3256
+ }
3257
+ }
3258
+ },
3259
+ "salesforceReference": {
3260
+ "type": "object",
3261
+ "properties": {
3262
+ "Name": {
3263
+ "type": "string",
3264
+ "nullable": true
3265
+ },
3266
+ "Id": {
3267
+ "type": "string",
3268
+ "nullable": true
3269
+ }
3270
+ },
3271
+ "nullable": true
3272
+ },
3273
+ "salesforceRefreshResult": {
3274
+ "type": "object",
3275
+ "properties": {
3276
+ "checked": {
3277
+ "type": "integer",
3278
+ "format": "int32"
3279
+ },
3280
+ "updated": {
3281
+ "type": "integer",
3282
+ "format": "int32"
3283
+ }
3284
+ }
3285
+ },
2898
3286
  "sourceFile": {
2899
3287
  "type": "object",
2900
3288
  "properties": {
@@ -3005,6 +3393,9 @@
3005
3393
  "blobContainer": {
3006
3394
  "type": "string",
3007
3395
  "nullable": true
3396
+ },
3397
+ "salesforce": {
3398
+ "$ref": "#/components/schemas/tenderSalesforce"
3008
3399
  }
3009
3400
  }
3010
3401
  },
@@ -3263,6 +3654,37 @@
3263
3654
  },
3264
3655
  "nullable": true
3265
3656
  },
3657
+ "tenderSalesforce": {
3658
+ "type": "object",
3659
+ "properties": {
3660
+ "opportunityId": {
3661
+ "type": "string",
3662
+ "nullable": true
3663
+ },
3664
+ "stageName": {
3665
+ "type": "string",
3666
+ "nullable": true
3667
+ },
3668
+ "isClosed": {
3669
+ "type": "boolean",
3670
+ "nullable": true
3671
+ },
3672
+ "isWon": {
3673
+ "type": "boolean",
3674
+ "nullable": true
3675
+ },
3676
+ "url": {
3677
+ "type": "string",
3678
+ "nullable": true
3679
+ },
3680
+ "lastSyncedAt": {
3681
+ "type": "string",
3682
+ "format": "date-time",
3683
+ "nullable": true
3684
+ }
3685
+ },
3686
+ "nullable": true
3687
+ },
3266
3688
  "tenderSource": {
3267
3689
  "type": "object",
3268
3690
  "properties": {