@celigo/api-specs 0.2.19 → 0.2.21

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/dist/tool.yml CHANGED
@@ -382,6 +382,86 @@ paths:
382
382
  - |-
383
383
  Updates an existing tool with the provided configuration.
384
384
  This is used for major updates to a tool's structure or behavior.
385
+ patch:
386
+ x-internal: false
387
+ summary: Patch a tool
388
+ description: |-
389
+ Partially updates a tool using a JSON Patch document (RFC 6902).
390
+ The `add`, `remove`, `replace`, and `move` operations are supported
391
+ (`copy` and `test` are rejected), and only on the following whitelisted
392
+ paths:
393
+
394
+ | Path | Description |
395
+ |------|-------------|
396
+ | `/name` | Tool display name |
397
+ | `/description` | Tool description |
398
+ | `/aiDescription` | AI-generated description object |
399
+ | `/input/debugUntil` | Tool Input debug capture expiry (ISO-8601, at most 1 hour in the future; 422 beyond the cap) |
400
+ | `/output/debugUntil` | Tool Output debug capture expiry (ISO-8601, at most 1 hour in the future; 422 beyond the cap) |
401
+
402
+ All other paths are rejected with 422 (`not a whitelisted property`).
403
+
404
+ PATCH is the intended way to update these fields without accidentally
405
+ resetting other tool configuration via `PUT`. In particular, it is how
406
+ you arm and disarm step debug capture: `replace` `/input/debugUntil` or
407
+ `/output/debugUntil` with a future ISO timestamp to start capturing, or
408
+ a past timestamp to stop. While armed, captured logs are readable at
409
+ `GET /v1/tools/{_id}/tool_input/requests` and
410
+ `GET /v1/tools/{_id}/tool_output/requests`.
411
+ operationId: patchTool
412
+ tags:
413
+ - Tools
414
+ parameters:
415
+ - name: _id
416
+ in: path
417
+ description: The unique identifier of the tool
418
+ required: true
419
+ schema:
420
+ type: string
421
+ format: objectId
422
+ x-celigo-refModel: tools
423
+ examples:
424
+ - 69d462d5b9c28ea0b7f82522
425
+ requestBody:
426
+ required: true
427
+ content:
428
+ application/json:
429
+ schema:
430
+ $ref: '#/components/schemas/JsonPatchRequest'
431
+ examples:
432
+ rename:
433
+ summary: Rename a tool
434
+ value:
435
+ - op: replace
436
+ path: /name
437
+ value: Updated Tool Name
438
+ update_description:
439
+ summary: Update tool description
440
+ value:
441
+ - op: replace
442
+ path: /description
443
+ value: Updated tool description
444
+ arm_input_debug:
445
+ summary: Arm input debug capture for 30 minutes
446
+ value:
447
+ - op: replace
448
+ path: /input/debugUntil
449
+ value: '2026-08-25T12:30:00.000Z'
450
+ disarm_output_debug:
451
+ summary: Disarm output debug capture
452
+ value:
453
+ - op: replace
454
+ path: /output/debugUntil
455
+ value: '2020-01-01T00:00:00.000Z'
456
+ responses:
457
+ '204':
458
+ description: Tool patched successfully.
459
+ '401':
460
+ $ref: '#/components/responses/401-unauthorized'
461
+ '404':
462
+ $ref: '#/components/responses/404-not-found'
463
+ '422':
464
+ $ref: '#/components/responses/422-unprocessable-entity'
385
465
  delete:
386
466
  x-internal: false
387
467
  summary: Delete a tool
@@ -1348,12 +1428,20 @@ paths:
1348
1428
  summary: List captured debug requests for a tool step
1349
1429
  description: |-
1350
1430
  Lists the debug request records captured for a specific step of a tool.
1351
- These are the raw outbound requests the step issued, retained for
1352
- troubleshooting. Use the `key` of an entry with
1353
- `GET /v1/tools/{_id}/{_stepId}/requests/{key}` to fetch the full detail
1354
- of a single captured request.
1431
+ These are the raw request/response payloads the step processed, retained
1432
+ for troubleshooting while debug capture is active for the step. Use the
1433
+ `key` of an entry with `GET /v1/tools/{_id}/{_stepId}/requests/{key}` to
1434
+ fetch the full detail of a single captured request.
1435
+
1436
+ When more records match than fit in one page, `nextPageURL` returns the
1437
+ relative URL for the next page.
1355
1438
 
1356
- Returns `{requests: []}` when the step has captured no debug requests.
1439
+ **Important:** Time parameters (`time_lte`, `time_gt`) must be epoch
1440
+ milliseconds (integers), not ISO 8601 strings. When `time_lte` is
1441
+ provided, `time_gt` is also required.
1442
+
1443
+ Requires the `manage:tool:logs` permission. Returns `{requests: []}` when
1444
+ the step has captured no debug requests.
1357
1445
  operationId: listToolStepRequests
1358
1446
  tags:
1359
1447
  - Tools
@@ -1372,14 +1460,91 @@ paths:
1372
1460
  in: path
1373
1461
  required: true
1374
1462
  description: |-
1375
- Export or import step id whose captured debug requests you want. Must be a
1376
- step ObjectId — reserved path segments such as `invocations`, `invoke`, and
1377
- `test` are not valid step ids.
1463
+ The step whose captured logs to list. Either the ObjectId of an
1464
+ export or import step defined directly in this tool's routers, or one
1465
+ of the virtual step ids `tool_input` / `tool_output` (logs captured
1466
+ via `input.debugUntil` / `output.debugUntil`). Steps nested inside a
1467
+ child tool are addressed on that child tool's id. Reserved path
1468
+ segments such as `invocations`, `invoke`, and `test` are not valid
1469
+ step ids.
1378
1470
  schema:
1379
1471
  type: string
1380
- format: objectId
1381
1472
  examples:
1382
1473
  - 67ee026136f4d1eeb529ad63
1474
+ - tool_input
1475
+ - tool_output
1476
+ - name: time_gt
1477
+ in: query
1478
+ required: false
1479
+ description: |-
1480
+ Lower bound of the time window (exclusive), as epoch milliseconds.
1481
+ Required when `time_lte` is provided.
1482
+ schema:
1483
+ type: integer
1484
+ format: int64
1485
+ examples:
1486
+ - 1776917000000
1487
+ - name: time_lte
1488
+ in: query
1489
+ required: false
1490
+ description: |-
1491
+ Upper bound of the time window (inclusive), as epoch milliseconds.
1492
+ Defaults to now if omitted. When provided, `time_gt` is also required.
1493
+ schema:
1494
+ type: integer
1495
+ format: int64
1496
+ examples:
1497
+ - 1776917346304
1498
+ - name: method
1499
+ in: query
1500
+ required: false
1501
+ description: |-
1502
+ Only return records with these HTTP methods. Repeat the parameter to
1503
+ filter on multiple values.
1504
+ style: form
1505
+ explode: true
1506
+ schema:
1507
+ type: array
1508
+ items:
1509
+ type: string
1510
+ examples:
1511
+ - - POST
1512
+ - GET
1513
+ - name: statusCode
1514
+ in: query
1515
+ required: false
1516
+ description: |-
1517
+ Only return records with these response status codes. Repeat the
1518
+ parameter to filter on multiple values.
1519
+ style: form
1520
+ explode: true
1521
+ schema:
1522
+ type: array
1523
+ items:
1524
+ type: string
1525
+ examples:
1526
+ - - '200'
1527
+ - '422'
1528
+ - name: stage
1529
+ in: query
1530
+ required: false
1531
+ description: |-
1532
+ Only return records for these processing stages. Repeat the parameter
1533
+ to filter on multiple values.
1534
+ style: form
1535
+ explode: true
1536
+ schema:
1537
+ type: array
1538
+ items:
1539
+ type: string
1540
+ - name: nextPageToken
1541
+ in: query
1542
+ required: false
1543
+ description: |-
1544
+ Continuation token for pagination. Do not construct this manually —
1545
+ follow the `nextPageURL` returned by the previous page instead.
1546
+ schema:
1547
+ type: string
1383
1548
  responses:
1384
1549
  '200':
1385
1550
  description: |-
@@ -1396,7 +1561,31 @@ paths:
1396
1561
  description: Captured debug request records.
1397
1562
  items:
1398
1563
  type: object
1564
+ description: Summary of one captured debug request.
1565
+ properties:
1566
+ key:
1567
+ type: string
1568
+ description: |-
1569
+ Identifier of the captured record; pass it to
1570
+ `GET /v1/tools/{_id}/{_stepId}/requests/{key}`.
1571
+ time:
1572
+ type: integer
1573
+ description: Capture time as epoch milliseconds.
1574
+ method:
1575
+ type: string
1576
+ description: HTTP method of the captured request.
1577
+ statusCode:
1578
+ type: string
1579
+ description: Response status code of the captured request.
1580
+ stage:
1581
+ type: string
1582
+ description: Processing stage the record was captured in.
1399
1583
  additionalProperties: true
1584
+ nextPageURL:
1585
+ type: string
1586
+ description: |-
1587
+ Relative URL of the next page. Present only when more
1588
+ records match than were returned.
1400
1589
  required:
1401
1590
  - requests
1402
1591
  examples:
@@ -1404,8 +1593,148 @@ paths:
1404
1593
  summary: No debug requests captured
1405
1594
  value:
1406
1595
  requests: []
1596
+ populated:
1597
+ summary: Captured debug requests for a tool step
1598
+ value:
1599
+ requests:
1600
+ - key: 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
1601
+ time: 1776917346304
1602
+ method: POST
1603
+ statusCode: '200'
1604
+ '401':
1605
+ $ref: '#/components/responses/401-unauthorized'
1606
+ '403':
1607
+ $ref: '#/components/responses/403-forbidden'
1608
+ '404':
1609
+ $ref: '#/components/responses/404-not-found'
1610
+ '422':
1611
+ description: 'Invalid time filter parameters. Error code: `invalid_or_missing_field`.'
1612
+ content:
1613
+ application/json:
1614
+ schema:
1615
+ $ref: '#/components/schemas/Error'
1616
+ examples:
1617
+ invalid_time:
1618
+ value:
1619
+ errors:
1620
+ - code: invalid_or_missing_field
1621
+ message: time_lte must be an epoch millisecond value, not an ISO string.
1622
+ missing_time_gt:
1623
+ value:
1624
+ errors:
1625
+ - code: invalid_or_missing_field
1626
+ message: 'Invalid or Missing Field: time_gt'
1627
+ delete:
1628
+ x-internal: false
1629
+ summary: Delete captured debug requests for a tool step
1630
+ description: |-
1631
+ Deletes captured debug request records for a specific step of a tool, by
1632
+ their `key` values from `GET /v1/tools/{_id}/{_stepId}/requests`. Between
1633
+ 1 and 1000 keys can be deleted per call.
1634
+
1635
+ The response lists the keys that were deleted and, separately, any keys
1636
+ that failed to delete along with the failure reason.
1637
+
1638
+ Requires the `manage:tool:logs:deletion` permission.
1639
+ operationId: deleteToolStepRequests
1640
+ tags:
1641
+ - Tools
1642
+ parameters:
1643
+ - name: _id
1644
+ in: path
1645
+ required: true
1646
+ description: The unique identifier of the tool.
1647
+ schema:
1648
+ type: string
1649
+ format: objectId
1650
+ x-celigo-refModel: tools
1651
+ examples:
1652
+ - 69d462d5b9c28ea0b7f82522
1653
+ - name: _stepId
1654
+ in: path
1655
+ required: true
1656
+ description: |-
1657
+ The step whose captured logs to delete. Either the ObjectId of an
1658
+ export or import step defined directly in this tool's routers, or one
1659
+ of the virtual step ids `tool_input` / `tool_output` (logs captured
1660
+ via `input.debugUntil` / `output.debugUntil`).
1661
+ schema:
1662
+ type: string
1663
+ examples:
1664
+ - 67ee026136f4d1eeb529ad63
1665
+ - tool_input
1666
+ - tool_output
1667
+ requestBody:
1668
+ required: true
1669
+ content:
1670
+ application/json:
1671
+ schema:
1672
+ type: object
1673
+ description: Keys of the captured debug requests to delete.
1674
+ properties:
1675
+ keys:
1676
+ type: array
1677
+ description: |-
1678
+ Keys of the records to delete, from the
1679
+ `GET /v1/tools/{_id}/{_stepId}/requests` listing.
1680
+ minItems: 1
1681
+ maxItems: 1000
1682
+ items:
1683
+ type: string
1684
+ required:
1685
+ - keys
1686
+ examples:
1687
+ default:
1688
+ summary: Delete two captured debug requests
1689
+ value:
1690
+ keys:
1691
+ - 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
1692
+ - 5481201048878-b21bf2bef9ff588b958882d2f4827f47-422-POST
1693
+ responses:
1694
+ '200':
1695
+ description: |-
1696
+ Deletion outcome. `deleted` lists the removed keys; `errors` lists
1697
+ keys that could not be removed with the failure reason.
1698
+ content:
1699
+ application/json:
1700
+ schema:
1701
+ type: object
1702
+ description: Deletion result envelope.
1703
+ properties:
1704
+ deleted:
1705
+ type: array
1706
+ description: Keys of the records that were deleted.
1707
+ items:
1708
+ type: string
1709
+ errors:
1710
+ type: array
1711
+ description: Records that failed to delete.
1712
+ items:
1713
+ type: object
1714
+ properties:
1715
+ key:
1716
+ type: string
1717
+ description: Key of the record that failed to delete.
1718
+ error:
1719
+ type: string
1720
+ description: Failure reason.
1721
+ required:
1722
+ - deleted
1723
+ - errors
1724
+ examples:
1725
+ default:
1726
+ summary: All requested records deleted
1727
+ value:
1728
+ deleted:
1729
+ - 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
1730
+ - 5481201048878-b21bf2bef9ff588b958882d2f4827f47-422-POST
1731
+ errors: []
1732
+ '400':
1733
+ $ref: '#/components/responses/400-bad-request'
1407
1734
  '401':
1408
1735
  $ref: '#/components/responses/401-unauthorized'
1736
+ '403':
1737
+ $ref: '#/components/responses/403-forbidden'
1409
1738
  '404':
1410
1739
  $ref: '#/components/responses/404-not-found'
1411
1740
  /v1/tools/{_id}/{_stepId}/requests/{key}:
@@ -1416,6 +1745,14 @@ paths:
1416
1745
  Returns the full detail of a single captured debug request for a tool
1417
1746
  step, identified by its `key`. Obtain the `key` from
1418
1747
  `GET /v1/tools/{_id}/{_stepId}/requests`.
1748
+
1749
+ The record carries the captured request/response payloads for the step,
1750
+ plus the `key`, record `id`, and capture `time`. For `tool_input`,
1751
+ `tool_output`, and ToolImport steps the stored body is the in-memory JSON
1752
+ record (not adaptor-masked). Router Import/Export bubbles keep existing
1753
+ adaptor masking.
1754
+
1755
+ Requires the `manage:tool:logs` permission.
1419
1756
  operationId: getToolStepRequest
1420
1757
  tags:
1421
1758
  - Tools
@@ -1434,14 +1771,19 @@ paths:
1434
1771
  in: path
1435
1772
  required: true
1436
1773
  description: |-
1437
- Export or import step id the captured request belongs to. Must be a step
1438
- ObjectId — reserved path segments such as `invocations`, `invoke`, and
1439
- `test` are not valid step ids.
1774
+ The step the captured request belongs to. Either the ObjectId of an
1775
+ export or import step defined directly in this tool's routers, or one
1776
+ of the virtual step ids `tool_input` / `tool_output` (logs captured
1777
+ via `input.debugUntil` / `output.debugUntil`). Steps nested inside a
1778
+ child tool are addressed on that child tool's id. Reserved path
1779
+ segments such as `invocations`, `invoke`, and `test` are not valid
1780
+ step ids.
1440
1781
  schema:
1441
1782
  type: string
1442
- format: objectId
1443
1783
  examples:
1444
1784
  - 67ee026136f4d1eeb529ad63
1785
+ - tool_input
1786
+ - tool_output
1445
1787
  - name: key
1446
1788
  in: path
1447
1789
  required: true
@@ -1457,18 +1799,131 @@ paths:
1457
1799
  application/json:
1458
1800
  schema:
1459
1801
  type: object
1460
- description: A single captured debug request record.
1802
+ description: |-
1803
+ A single captured debug request record, including the captured
1804
+ request/response payloads.
1805
+ properties:
1806
+ key:
1807
+ type: string
1808
+ description: Echoes the `key` path parameter.
1809
+ id:
1810
+ type: string
1811
+ description: Internal storage id parsed from the log filename.
1812
+ time:
1813
+ type: integer
1814
+ format: int64
1815
+ description: Epoch milliseconds when this pair was stored.
1816
+ request:
1817
+ type: object
1818
+ description: |-
1819
+ The captured request envelope. Synthetic `tool_input` /
1820
+ `tool_output` / ToolImport logs store the in-memory JSON
1821
+ record; router Import/Export bubbles store the adaptor HTTP
1822
+ request.
1823
+ properties:
1824
+ method:
1825
+ type: string
1826
+ description: HTTP method (`GET`, `POST`, …). Synthetic captures use `POST`.
1827
+ examples:
1828
+ - POST
1829
+ url:
1830
+ type: string
1831
+ description: |-
1832
+ Fully-resolved URL sent. Present on adaptor HTTP
1833
+ captures; omitted on synthetic `tool_input` /
1834
+ `tool_output` / ToolImport logs.
1835
+ headers:
1836
+ type: object
1837
+ description: |-
1838
+ Headers sent with the request. Adaptor HTTP captures
1839
+ mask credentials; synthetic captures have no adaptor
1840
+ masking.
1841
+ additionalProperties: true
1842
+ body:
1843
+ description: |-
1844
+ Captured request payload. Object for synthetic
1845
+ `tool_input` / `tool_output` / ToolImport logs (the
1846
+ in-memory JSON record). String for adaptor HTTP
1847
+ router-bubble captures.
1848
+ response:
1849
+ type: object
1850
+ description: The captured response envelope.
1851
+ properties:
1852
+ statusCode:
1853
+ type: integer
1854
+ description: HTTP status code (`200` on success, `422` on schema/transform failure for synthetic captures).
1855
+ examples:
1856
+ - 200
1857
+ headers:
1858
+ type: object
1859
+ description: Response headers. Empty object on synthetic captures that did not issue HTTP.
1860
+ additionalProperties: true
1861
+ body:
1862
+ description: |-
1863
+ Captured response payload. Object for synthetic
1864
+ `tool_input` / `tool_output` / ToolImport logs. String
1865
+ for adaptor HTTP router-bubble captures.
1866
+ receivedAt:
1867
+ type: integer
1868
+ format: int64
1869
+ description: Epoch milliseconds when this pair was captured. Present on synthetic logs.
1870
+ context:
1871
+ type: object
1872
+ description: |-
1873
+ Run correlation for synthetic logs keyed by tool id. Present
1874
+ on `tool_input` / `tool_output` / ToolImport captures so the
1875
+ originating flow or job can be recovered; omitted on adaptor
1876
+ HTTP router-bubble logs.
1877
+ properties:
1878
+ _rootContainerId:
1879
+ type: string
1880
+ description: Owning flow, API, or tool id of the run that produced this capture.
1881
+ _jobId:
1882
+ type: string
1883
+ description: Job id of the run that produced this capture.
1461
1884
  additionalProperties: true
1462
1885
  examples:
1463
- default:
1464
- summary: One captured debug request
1886
+ adaptor_http:
1887
+ summary: Router-bubble HTTP capture
1888
+ value:
1889
+ key: 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
1890
+ id: a10af1ade8fe477a847771c1e3716e36
1891
+ time: 1776917346304
1892
+ request:
1893
+ method: POST
1894
+ url: https://httpbin.org/post
1895
+ headers:
1896
+ content-type: application/json
1897
+ body: '{"orderId":"SO-1042"}'
1898
+ response:
1899
+ statusCode: 200
1900
+ headers:
1901
+ content-type: application/json
1902
+ body: '{"ok":true}'
1903
+ tool_input:
1904
+ summary: Synthetic Tool Input capture
1465
1905
  value:
1466
- key: 6a2e23bbcf5b64ca6b93b774
1467
- method: POST
1468
- url: https://httpbin.org/post
1469
- statusCode: 200
1906
+ key: 5481201053696-b20bf2bde8fe477a847771c1e3716e36-200-POST
1907
+ id: b20bf2bde8fe477a847771c1e3716e36
1908
+ time: 1776917346304
1909
+ request:
1910
+ method: POST
1911
+ headers: {}
1912
+ body:
1913
+ customerId: CUST-1001
1914
+ response:
1915
+ statusCode: 200
1916
+ headers: {}
1917
+ receivedAt: 1776917346304
1918
+ body:
1919
+ customerId: CUST-1001
1920
+ validated: true
1921
+ context:
1922
+ _jobId: 69d462d5b9c28ea0b7f82533
1470
1923
  '401':
1471
1924
  $ref: '#/components/responses/401-unauthorized'
1925
+ '403':
1926
+ $ref: '#/components/responses/403-forbidden'
1472
1927
  '404':
1473
1928
  $ref: '#/components/responses/404-not-found'
1474
1929
  components:
@@ -3894,6 +4349,18 @@ components:
3894
4349
  format: email
3895
4350
  transform:
3896
4351
  $ref: '#/components/schemas/Transform'
4352
+ debugUntil:
4353
+ type: string
4354
+ format: date-time
4355
+ description: |
4356
+ Enables debug capture for the tool input stage until this timestamp.
4357
+ While it is in the future, invocations write input-stage
4358
+ request/response logs, listed at
4359
+ `GET /v1/tools/{_id}/tool_input/requests`. At most 1 hour in the
4360
+ future. A past timestamp (or omitting the field) stops capture.
4361
+ Arm/disarm with `PATCH /v1/tools/{_id}` path `/input/debugUntil`.
4362
+ examples:
4363
+ - '2026-08-25T12:30:00.000Z'
3897
4364
  mockInput:
3898
4365
  type: object
3899
4366
  description: |
@@ -4039,6 +4506,18 @@ components:
4039
4506
  examples:
4040
4507
  - postProcessOutput
4041
4508
  - validateOutput
4509
+ debugUntil:
4510
+ type: string
4511
+ format: date-time
4512
+ description: |
4513
+ Enables debug capture for the tool output stage until this timestamp.
4514
+ While it is in the future, invocations write output-stage
4515
+ request/response logs, listed at
4516
+ `GET /v1/tools/{_id}/tool_output/requests`. At most 1 hour in the
4517
+ future. A past timestamp (or omitting the field) stops capture.
4518
+ Arm/disarm with `PATCH /v1/tools/{_id}` path `/output/debugUntil`.
4519
+ examples:
4520
+ - '2026-08-25T12:30:00.000Z'
4042
4521
  mockInput:
4043
4522
  type: object
4044
4523
  description: |
@@ -4597,6 +5076,41 @@ components:
4597
5076
  - message
4598
5077
  required:
4599
5078
  - errors
5079
+ JsonPatchOperation:
5080
+ type: object
5081
+ description: A single JSON Patch operation (RFC 6902).
5082
+ required:
5083
+ - op
5084
+ - path
5085
+ properties:
5086
+ op:
5087
+ type: string
5088
+ enum:
5089
+ - replace
5090
+ - add
5091
+ - remove
5092
+ x-enumDescriptions:
5093
+ replace: Replaces the value at the specified path.
5094
+ add: Sets the value at the specified path.
5095
+ remove: Removes the value at the specified path.
5096
+ description: The operation to perform.
5097
+ path:
5098
+ type: string
5099
+ description: |-
5100
+ JSON Pointer (RFC 6901) to the field to patch. Only
5101
+ whitelisted paths are accepted — unlisted paths return
5102
+ `422` with `"<path> is not a whitelisted property"`.
5103
+ value:
5104
+ description: The new value to set. Required for `replace` and `add`, omit for `remove`.
5105
+ JsonPatchRequest:
5106
+ type: array
5107
+ description: |-
5108
+ A JSON Patch document (RFC 6902). Send an array of patch
5109
+ operations on whitelisted fields — all other paths are rejected
5110
+ with 422.
5111
+ minItems: 1
5112
+ items:
5113
+ $ref: '#/components/schemas/JsonPatchOperation'
4600
5114
  IAResourceResponse:
4601
5115
  type: object
4602
5116
  description: Integration app response fields for resources that are part of integration apps
@@ -4887,11 +5401,13 @@ components:
4887
5401
  When true, rate-limit errors from the target system trigger automatic recovery: concurrency
4888
5402
  drops to 1, the rate-limited requests are retried with doubling waits (1 to 1024 minutes,
4889
5403
  after which the flag switches itself off), and concurrency climbs back toward
4890
- `targetConcurrencyLevel`. While true, `concurrencyLevel` is platform-managed and writes to
4891
- it are ignored — `targetConcurrencyLevel` is the lever.
5404
+ `targetConcurrencyLevel`. While true, `targetConcurrencyLevel` is the throughput lever: a
5405
+ `concurrencyLevel` sent in a PUT is ignored, and one sent in a PATCH is stored but the
5406
+ recovery machinery moves it back toward the target.
4892
5407
  x-celigo-ai-guidance:
4893
- - To change throughput while this is true, write `targetConcurrencyLevel`; a `concurrencyLevel` write returns 200 and changes nothing.
4894
- - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off copies the target back into `concurrencyLevel` and unsets the target.
5408
+ - To change throughput while this is true, write `targetConcurrencyLevel`; a `concurrencyLevel` sent in a PUT returns 200 and changes nothing.
5409
+ - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off unsets the target and leaves `concurrencyLevel` at its current value, which may be below the old target if a recovery was in progress. A `targetConcurrencyLevel` written while this is false is unset by the save.
5410
+ - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT must re-send the credentials — omitting them or echoing their masked `******` values clears them.
4895
5411
  enableMicroBatchForOneToMany:
4896
5412
  type: boolean
4897
5413
  default: true
@@ -6168,7 +6684,7 @@ components:
6168
6684
  Higher values increase throughput but may trigger API rate limits.
6169
6685
  Set this based on the target API's rate limit documentation.
6170
6686
  Values above the account's licensed maximum (25 standard, 50 with an Environments license) are silently clamped down.
6171
- Platform-managed while `autoRecoverRateLimitErrors` is true — writes are ignored; set `targetConcurrencyLevel` instead.
6687
+ Platform-managed while `autoRecoverRateLimitErrors` is true — a PUT ignores the value and the recovery machinery moves it toward the target; set `targetConcurrencyLevel` instead.
6172
6688
  minimum: 1
6173
6689
  maximum: 50
6174
6690
  default: 25
@@ -16602,7 +17118,7 @@ components:
16602
17118
  For most file imports, you need at minimum:
16603
17119
  - `fileName`: The output file name (supports Handlebars like `{{timestamp}}`)
16604
17120
  - `type`: The file format (json, csv, xml, xlsx)
16605
- - `skipAggregation`: Usually `false` for standard imports
17121
+ - `aggregation.type`: How the run's records are batched into files (`all` for one file per run)
16606
17122
 
16607
17123
  **Example (S3 Import)**
16608
17124
 
@@ -16610,7 +17126,7 @@ components:
16610
17126
  {
16611
17127
  "file": {
16612
17128
  "fileName": "customers-{{timestamp}}.json",
16613
- "skipAggregation": false,
17129
+ "aggregation": { "type": "all" },
16614
17130
  "type": "json"
16615
17131
  },
16616
17132
  "s3": {
@@ -16652,18 +17168,22 @@ components:
16652
17168
  skipAggregation:
16653
17169
  type: boolean
16654
17170
  description: |-
16655
- Controls whether records are aggregated into a single file or processed individually.
16656
-
16657
- **Values**
16658
- - `false` (DEFAULT): Records are aggregated into a single output file
16659
- - `true`: Each record is written as a separate file
16660
-
16661
- **When to use**
16662
- - **`false`**: Standard batch imports where all records go into one file
16663
- - **`true`**: When each record needs its own file (e.g., individual documents)
16664
-
16665
- **Default:** `false`
17171
+ Legacy companion of `aggregation.type`: `true` when the run's records are written one
17172
+ file per page, `false` when they are combined across the run or grouped by key.
17173
+ Validation reads the value sent — an EDI file definition needs `true` unless
17174
+ `aggregation.type` is `key`, and `batchSize` needs `true` — then the save rewrites it
17175
+ from `aggregation.type`, so send the two as a consistent pair.
16666
17176
  default: false
17177
+ x-celigo-ai-guidance:
17178
+ - |-
17179
+ Send `skipAggregation` and `aggregation.type` as a consistent pair, exactly as the UI
17180
+ does: `page` with `true`; `all` or `key` with `false`. Validation reads the SENT flag —
17181
+ a `file.type: filedefinition` import saved with `page` and no `skipAggregation: true`
17182
+ fails with 422 `not_supported` ("Aggregation is not supported for EDI files, please set
17183
+ skipAggregation to true in Imports"), and `batchSize` fails with 422 `not_supported`
17184
+ ("File imports do not support batching with aggregation") unless the sent flag is
17185
+ `true`. The SAVED flag is then derived from `aggregation.type`, so this flag alone never
17186
+ says which mode is active — read `aggregation.type`. It does not mean one file per record.
16667
17187
  type:
16668
17188
  type: string
16669
17189
  enum:
@@ -16769,7 +17289,15 @@ components:
16769
17289
  - When target system has file size limitations
16770
17290
 
16771
17291
  **Note**
16772
- - Only applicable when `skipAggregation` is `true`
17292
+ - Offered when records are written one file per page (`aggregation.type: page` with
17293
+ `skipAggregation: true`)
17294
+ x-celigo-ai-guidance:
17295
+ - |-
17296
+ Probed for `all` and `page`: the save rejects `batchSize` with 422 `not_supported`
17297
+ ("File imports do not support batching with aggregation") when the sent
17298
+ `skipAggregation` is not `true`, and accepts it with `page` + `skipAggregation: true`.
17299
+ The `key` + `batchSize` combination has not been probed (it needs a B2B Manager
17300
+ account) — treat it as unverified, neither allowed nor forbidden.
16773
17301
  encrypt:
16774
17302
  type: boolean
16775
17303
  description: |-
@@ -16875,21 +17403,45 @@ components:
16875
17403
  aggregation:
16876
17404
  type: object
16877
17405
  description: |-
16878
- Controls how records are batched into output files. Newer imports use this object; the
16879
- legacy skipAggregation flag is the older equivalent.
17406
+ Controls how a flow run's records are batched into output files — the transfer form's
17407
+ "How many files would you like to generate?" setting. The legacy `skipAggregation` flag
17408
+ mirrors `type` and is maintained by the platform.
16880
17409
  properties:
16881
17410
  type:
16882
17411
  type: string
16883
17412
  enum:
16884
17413
  - all
16885
17414
  - page
17415
+ - key
16886
17416
  x-enumDescriptions:
16887
- all: Aggregate every record from the flow run into a single output file.
16888
- page: Write one output file per page of records.
16889
- description: Whether all records across the flow run go to one file, or one file is written per page.
17417
+ all: One file per flow run — every record from the run (per export, or per request on real-time flows) in a single file
17418
+ page: One file per page of records
17419
+ key: One file per aggregation key — EDI file definitions only; records sharing the key derived from the file definition's document type are combined into one document
17420
+ description: |-
17421
+ Which batches of a run's records become separate output files. EDI file definitions
17422
+ (`file.type: filedefinition`) are written per page or per key, never per run; `key`
17423
+ is accepted only for them and only when the account has B2B Manager. The grouping
17424
+ key and the line-item loop it merges come from the EDI file definition's document
17425
+ type, so there is no separate key field to configure.
16890
17426
  examples:
16891
17427
  - all
16892
17428
  - page
17429
+ - key
17430
+ x-celigo-ai-guidance:
17431
+ - |-
17432
+ Validated on save: an unknown value fails with 422 `enum`; `key` fails with 422
17433
+ `not_supported` unless `file.type` is `filedefinition` ("Aggregation type key is
17434
+ only supported for file type filedefinition") and the account has B2B Manager
17435
+ ("Aggregation type key is only supported for B2B Manager").
17436
+ - |-
17437
+ For `file.type: filedefinition` send `page` (with `skipAggregation: true`) or `key`
17438
+ (with `false`); `all` is not an EDI option — the validator enforces this through the
17439
+ `skipAggregation` rule (see that field). For every other file type the choices are
17440
+ `all` and `page`. The UI offers exactly these splits.
17441
+ - |-
17442
+ A user asking where the "aggregation key" is configured is asking about this
17443
+ field: the key itself is derived from the file definition's document type, never
17444
+ entered.
16893
17445
  lookups:
16894
17446
  type: array
16895
17447
  description: |-
@@ -17140,14 +17692,22 @@ components:
17140
17692
  AI Agent configuration used by both AiAgentImport and GuardrailImport (ai_agent type).
17141
17693
 
17142
17694
  Configures which AI provider and model to use, along with instructions, parameter
17143
- tuning, output format, and available tools. Three providers are supported:
17144
-
17145
- - **openai**: OpenAI models (GPT-4, GPT-4o, GPT-4o-mini, GPT-5, etc.). Configure via the `openai` object.
17146
- - **gemini**: Google Gemini models via the LiteLLM proxy. Configure via `litellm` with overrides in `litellm._overrides.gemini`.
17147
- - **anthropic**: Anthropic Claude models via the LiteLLM proxy. Configure via `litellm` with overrides in `litellm._overrides.anthropic`.
17148
-
17149
- A `_connectionId` is optional (BYOK). If not provided on the parent import,
17150
- platform-managed credentials are used.
17695
+ tuning, output format, and available tools. Providers come in two families with
17696
+ two configuration formats:
17697
+
17698
+ - **Built-in providers** — each has its own configuration block.
17699
+ - **openai**: OpenAI models (GPT-4.1, GPT-5, etc.). Configure via the `openai` object.
17700
+ - **gemini**: Google Gemini models via the LiteLLM proxy. Configure via `litellm` with overrides in `litellm._overrides.gemini`.
17701
+ - **anthropic**: Anthropic Claude models via the LiteLLM proxy. Configure via `litellm` with overrides in `litellm._overrides.anthropic`.
17702
+ - **Catalog providers** — `mistral`, `xai`, `huggingface`, `deepseek`, `cohere`, `groq`. Added
17703
+ as catalog data rather than platform code, they share one generic flat format:
17704
+ `model`, `modelOptions`, `instructions`, `output`, and the `tools` / `prompts` /
17705
+ `resources` arrays directly on this object.
17706
+
17707
+ A `_connectionId` on the parent import selects bring-your-own-key (BYOK)
17708
+ credentials. Without one, built-in providers run on platform-managed
17709
+ credentials; catalog providers have no platform-managed credentials, so they
17710
+ save without a connection but cannot run until one is attached.
17151
17711
  required:
17152
17712
  - provider
17153
17713
  properties:
@@ -17157,18 +17717,224 @@ components:
17157
17717
  - openai
17158
17718
  - gemini
17159
17719
  - anthropic
17720
+ - mistral
17721
+ - xai
17722
+ - huggingface
17723
+ - deepseek
17724
+ - cohere
17725
+ - groq
17160
17726
  x-enumDescriptions:
17161
- openai: Use OpenAI models via the OpenAI Responses API.
17162
- gemini: Use Google Gemini models via the LiteLLM proxy.
17163
- anthropic: Use Anthropic Claude models via the LiteLLM proxy.
17727
+ openai: Use OpenAI models via the OpenAI Responses API (built-in; `openai` block).
17728
+ gemini: Use Google Gemini models via the LiteLLM proxy (built-in; `litellm` block).
17729
+ anthropic: Use Anthropic Claude models via the LiteLLM proxy (built-in; `litellm` block).
17730
+ mistral: Use Mistral models (catalog provider; generic flat format, BYOK).
17731
+ xai: Use xAI Grok models (catalog provider; generic flat format, BYOK).
17732
+ huggingface: Use Hugging Face inference endpoint models (catalog provider; generic flat format, BYOK).
17733
+ deepseek: Use DeepSeek models (catalog provider; generic flat format, BYOK).
17734
+ cohere: Use Cohere models (catalog provider; generic flat format, BYOK).
17735
+ groq: Use Groq-hosted models (catalog provider; generic flat format, BYOK).
17164
17736
  description: AI provider to use.
17165
17737
  x-celigo-ai-guidance:
17166
17738
  - |-
17167
- - **openai**: Uses OpenAI Responses API. Configure via the `openai` object.
17168
- - **gemini**: Uses Google Gemini via LiteLLM. Configure via `litellm` with
17169
- Gemini-specific overrides in `litellm._overrides.gemini`.
17170
- - **anthropic**: Uses Anthropic Claude via LiteLLM. Configure via `litellm` with
17171
- Claude-specific overrides in `litellm._overrides.anthropic`.
17739
+ The provider decides the configuration format, and the server rejects a
17740
+ mismatch with 422 `invalid_provider_config_format`: `openai` needs the
17741
+ `openai` block, `gemini` and `anthropic` need the `litellm` block (Gemini- or
17742
+ Claude-specific settings under `litellm._overrides`), and the catalog
17743
+ providers (`mistral`, `xai`, `huggingface`, `deepseek`, `cohere`, `groq`) need the
17744
+ generic flat format — `model` and `modelOptions` directly on this object,
17745
+ never an `openai` or `litellm` block.
17746
+ - |-
17747
+ Catalog providers are BYOK-only at run time: the agent saves without a
17748
+ `_connectionId`, but its first run fails with 422 `invalid_request` ("No API
17749
+ key configured for provider …"). Always attach an HTTP connection to the
17750
+ vendor's API (token auth) when the provider is a catalog provider.
17751
+ model:
17752
+ type: string
17753
+ description: |-
17754
+ Model identifier for a catalog provider (generic flat format) — for example
17755
+ `grok-4.6`. Built-in providers set the model inside their own block
17756
+ (`openai.model`, `litellm.model`) instead.
17757
+ x-celigo-ai-guidance:
17758
+ - |-
17759
+ Required for every catalog provider — omitting it or sending an empty string
17760
+ fails the save with 422 `missing_required_field`.
17761
+ - |-
17762
+ Without a `_connectionId` on the parent import the model must be one the
17763
+ catalog lists for the provider: an unknown id fails the save with 422
17764
+ `model_not_found`, a listed-but-disabled id with 422 `model_disabled`. With a
17765
+ `_connectionId` (BYOK) any model string saves — the server does not check it
17766
+ against the catalog or the vendor.
17767
+ modelOptions:
17768
+ type: object
17769
+ description: |-
17770
+ Model tuning for a catalog provider (generic flat format). Which keys, values, and
17771
+ ranges are accepted is defined per catalog model and validated on save when the
17772
+ model is a catalog entry.
17773
+ properties:
17774
+ maxOutputTokens:
17775
+ type: number
17776
+ description: Maximum number of tokens the model may generate.
17777
+ temperature:
17778
+ type: number
17779
+ description: Sampling temperature.
17780
+ topP:
17781
+ type: number
17782
+ description: Nucleus sampling threshold.
17783
+ reasoning_effort:
17784
+ type: string
17785
+ enum:
17786
+ - low
17787
+ - medium
17788
+ - high
17789
+ - xhigh
17790
+ x-enumDescriptions:
17791
+ low: Minimal reasoning before answering.
17792
+ medium: Moderate reasoning.
17793
+ high: Extensive reasoning.
17794
+ xhigh: Maximum reasoning.
17795
+ description: Reasoning depth for models that expose it.
17796
+ x-celigo-ai-guidance:
17797
+ - |-
17798
+ When the model is a catalog entry, the server validates this object against
17799
+ that model's schema and fails the save with 422 `invalid_model_options`
17800
+ naming the key: unknown keys are rejected, `reasoning_effort` must be one of
17801
+ the enum values where the model accepts it at all (xAI's `grok-4.6` does;
17802
+ DeepSeek's `deepseek-chat` rejects the key), and numeric bounds apply —
17803
+ on `grok-4.6`, `temperature` ≤ 2, `topP` ≤ 1, `maxOutputTokens` ≥ 100.
17804
+ - |-
17805
+ With a `_connectionId` and a model the catalog does not list, the object is
17806
+ passed through unvalidated — send only options the vendor's API accepts.
17807
+ instructions:
17808
+ type: string
17809
+ description: |-
17810
+ System prompt for a catalog provider (generic flat format). Built-in providers
17811
+ set it inside their own block (`openai.instructions`,
17812
+ `litellm._overrides.anthropic.systemInstruction`).
17813
+ output:
17814
+ type: object
17815
+ description: |-
17816
+ Output format for a catalog provider (generic flat format). Built-in providers
17817
+ configure it inside their own block (`openai.output`, `litellm.responseFormat`).
17818
+ properties:
17819
+ format:
17820
+ type: object
17821
+ description: Controls the structure of the model's output.
17822
+ properties:
17823
+ type:
17824
+ type: string
17825
+ enum:
17826
+ - text
17827
+ - json_schema
17828
+ x-enumDescriptions:
17829
+ text: Free-form text.
17830
+ json_schema: Structured JSON conforming to `jsonSchema`.
17831
+ description: Output type.
17832
+ x-celigo-ai-guidance:
17833
+ - |-
17834
+ `blob` is not accepted here — the save fails with 422
17835
+ `unsupported_output_format` naming the model (verified on `grok-4.6`).
17836
+ name:
17837
+ type: string
17838
+ description: Name of the JSON schema, for `json_schema` output.
17839
+ strict:
17840
+ type: boolean
17841
+ description: When true, the model must conform exactly to `jsonSchema`.
17842
+ jsonSchema:
17843
+ type: object
17844
+ additionalProperties: true
17845
+ description: JSON Schema the structured output must conform to, for `json_schema` output.
17846
+ verbose:
17847
+ type: string
17848
+ description: Level of detail in the model's response, for models that expose it.
17849
+ tools:
17850
+ type: array
17851
+ description: |-
17852
+ Tools available to a catalog-provider agent (generic flat format). Entries mirror
17853
+ the built-in providers' tool entries: a Celigo Tool by `_toolId`, an MCP server by
17854
+ `_mcpConnectionId`, or a vendor web-search tool.
17855
+ items:
17856
+ type: object
17857
+ properties:
17858
+ type:
17859
+ type: string
17860
+ enum:
17861
+ - tool
17862
+ - mcp
17863
+ - web_search
17864
+ x-enumDescriptions:
17865
+ tool: Reference a reusable Celigo Tool resource.
17866
+ mcp: Connect to an MCP server for additional external tools.
17867
+ web_search: Search the web for real-time information, where the vendor's model supports it.
17868
+ description: Type of tool entry.
17869
+ tool:
17870
+ type: object
17871
+ description: Reference to a Celigo Tool resource, used when type is "tool".
17872
+ properties:
17873
+ _toolId:
17874
+ type: string
17875
+ format: objectId
17876
+ x-celigo-refModel: tools
17877
+ description: The Celigo Tool to call.
17878
+ mcp:
17879
+ type: object
17880
+ description: MCP server connection, used when type is "mcp".
17881
+ properties:
17882
+ _mcpConnectionId:
17883
+ type: string
17884
+ format: objectId
17885
+ x-celigo-refModel: connections
17886
+ description: Connection to the MCP server.
17887
+ allowedTools:
17888
+ type: array
17889
+ description: |-
17890
+ Specific tools to allow from the MCP server (all if omitted). Each entry
17891
+ is either a plain tool name or an object carrying display metadata.
17892
+ items:
17893
+ type:
17894
+ - string
17895
+ - object
17896
+ config:
17897
+ type: object
17898
+ additionalProperties: true
17899
+ description: Tool-specific options for vendor-native tools (for example web-search settings).
17900
+ x-celigo-ai-guidance:
17901
+ - |-
17902
+ References are checked on save: an unknown `_toolId` or `_mcpConnectionId`
17903
+ fails with 422 `invalid_ref` naming the array index.
17904
+ prompts:
17905
+ type: array
17906
+ description: |-
17907
+ MCP prompt entries available to a catalog-provider agent (generic flat format).
17908
+ Each entry references one MCP connection and the prompt names allowed from it.
17909
+ items:
17910
+ type: object
17911
+ properties:
17912
+ type:
17913
+ type: string
17914
+ enum:
17915
+ - mcp
17916
+ x-enumDescriptions:
17917
+ mcp: Reference prompts exposed by an MCP server.
17918
+ description: Type of prompt entry. Always "mcp".
17919
+ mcp:
17920
+ type: object
17921
+ properties:
17922
+ _mcpConnectionId:
17923
+ type: string
17924
+ format: objectId
17925
+ x-celigo-refModel: connections
17926
+ description: Connection to the MCP server that exposes the prompts.
17927
+ allowedPrompts:
17928
+ type: array
17929
+ description: Prompt names the agent may fetch from the server.
17930
+ items:
17931
+ type: string
17932
+ x-celigo-ai-guidance:
17933
+ - |-
17934
+ An unknown `_mcpConnectionId` fails the save with 422 `invalid_ref` naming
17935
+ the array index.
17936
+ resources:
17937
+ $ref: '#/components/schemas/McpResources'
17172
17938
  openai:
17173
17939
  type: object
17174
17940
  description: |
@@ -17199,10 +17965,11 @@ components:
17199
17965
  x-celigo-ai-guidance:
17200
17966
  - |-
17201
17967
  With platform-managed credentials (no `_connectionId` on the parent
17202
- import), the model must be on the platform's allowlist — an
17203
- unlisted model fails the save with 422. A BYOK connection bypasses
17204
- the allowlist and the model string is passed through to the
17205
- provider as-is.
17968
+ import), the model must be one the platform hosts. The save does not
17969
+ check this — an unlisted model saves, and the agent's first run fails
17970
+ with 422 `invalid_model`, whose message lists the hosted models. A
17971
+ BYOK connection bypasses the hosted list and the model string is
17972
+ passed through to the provider as-is.
17206
17973
  reasoning:
17207
17974
  type: object
17208
17975
  description: Controls depth of reasoning for complex tasks.
@@ -17605,6 +18372,13 @@ components:
17605
18372
  - claude-sonnet-4-6
17606
18373
  - claude-opus-4-7
17607
18374
  x-celigo-ui-override: Required by the AI agent configuration form. Encoded here to mirror the form so builders produce connectable configurations.
18375
+ x-celigo-ai-guidance:
18376
+ - |-
18377
+ With platform-managed credentials (no `_connectionId` on the parent
18378
+ import), the model must be one the platform hosts for the provider —
18379
+ Gemini and Anthropic Claude both have a hosted list. The save does not
18380
+ check this — an unlisted model saves, and the agent's first run fails
18381
+ with 422 `invalid_model`, whose message lists the hosted models.
17608
18382
  temperature:
17609
18383
  type: number
17610
18384
  minimum: 0
@@ -18259,6 +19033,22 @@ components:
18259
19033
  litellm:
18260
19034
  required:
18261
19035
  - model
19036
+ else:
19037
+ if:
19038
+ properties:
19039
+ provider:
19040
+ enum:
19041
+ - mistral
19042
+ - xai
19043
+ - huggingface
19044
+ - deepseek
19045
+ - cohere
19046
+ - groq
19047
+ required:
19048
+ - provider
19049
+ then:
19050
+ required:
19051
+ - model
18262
19052
  GuardrailConfig:
18263
19053
  type: object
18264
19054
  description: |-
@@ -20028,7 +20818,7 @@ components:
20028
20818
  MongodbImport: MongoDB database import for document-based operations.
20029
20819
  DynamodbImport: Amazon DynamoDB import for NoSQL table operations.
20030
20820
  WrapperImport: Custom adaptor import built outside of Celigo (rarely used).
20031
- AiAgentImport: AI agent import using OpenAI, Gemini, or Anthropic Claude models for data processing.
20821
+ AiAgentImport: AI agent import using OpenAI, Gemini, Anthropic Claude, or a BYOK catalog provider (Mistral, xAI, Hugging Face, DeepSeek, Cohere, Groq) for data processing.
20032
20822
  GuardrailImport: Safety and compliance check import for PII detection, moderation, or AI evaluation.
20033
20823
  FileSystemImport: Local or network file system import.
20034
20824
  ToolImport: Import that executes a reusable Celigo Tool resource.
@@ -33152,9 +33942,9 @@ components:
33152
33942
  errors:
33153
33943
  - code: dependencies_not_deleted
33154
33944
  message: export 6902d88c10b42b2eaac9b2a1 must be deleted before you can delete connection 6398ddf316be761fb16a6523
33155
- 403-forbidden:
33945
+ 422-unprocessable-entity:
33156
33946
  description: |
33157
- Forbidden. The authenticated caller does not have permission to perform this operation.
33947
+ Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
33158
33948
  content:
33159
33949
  application/json:
33160
33950
  schema:
@@ -33163,11 +33953,11 @@ components:
33163
33953
  default:
33164
33954
  value:
33165
33955
  errors:
33166
- - code: forbidden
33167
- message: You do not have permission to access this resource.
33168
- 422-unprocessable-entity:
33956
+ - code: unprocessable_entity
33957
+ message: The request could not be processed due to a semantic error.
33958
+ 403-forbidden:
33169
33959
  description: |
33170
- Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
33960
+ Forbidden. The authenticated caller does not have permission to perform this operation.
33171
33961
  content:
33172
33962
  application/json:
33173
33963
  schema:
@@ -33176,7 +33966,7 @@ components:
33176
33966
  default:
33177
33967
  value:
33178
33968
  errors:
33179
- - code: unprocessable_entity
33180
- message: The request could not be processed due to a semantic error.
33969
+ - code: forbidden
33970
+ message: You do not have permission to access this resource.
33181
33971
  x-enable-proxy: true
33182
33972
  x-internal: false