@celigo/api-specs 0.2.1 → 0.2.2-IO-190100-EPIC-fb

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/ai-agent.yml CHANGED
@@ -3428,8 +3428,10 @@ components:
3428
3428
 
3429
3429
  - **Lookup steps**: `{"statusCode": 200, "data": [<result records>],
3430
3430
  "errors": []}` — `data` holds the records the lookup returned, so
3431
- extracts must start from it (e.g. `data[0].name`). A bare result-record
3432
- field name (e.g. `name`) resolves to nothing and merges nothing.
3431
+ extracts must start from it: `data[0].name` copies a field of the
3432
+ first result, `data` copies the whole result array. A bare
3433
+ result-record field name (e.g. `name`) resolves to nothing and merges
3434
+ nothing.
3433
3435
  - **Import steps**: `{"id": "<destination record id>", "statusCode": 200,
3434
3436
  "ignored": false, "errors": [], "_json": <raw destination response>}` —
3435
3437
  use `id` for the destination-assigned id and `_json.<path>` for fields
@@ -3449,11 +3451,26 @@ components:
3449
3451
  responseMapping is fully replaced on PUT: omitting it resets the step
3450
3452
  to empty `{"fields": [], "lists": []}`. Always send the complete
3451
3453
  intended mapping for every step.
3454
+ - |-
3455
+ To carry several lookup results onto the record, use `extract: "data"`
3456
+ (the whole result array) or a `lists` entry whose extracts use
3457
+ `data[*].x` — never `data[*].x` in `fields[].extract`, which merges
3458
+ nothing: the record simply never gains the field.
3452
3459
  examples:
3453
3460
  - fields:
3454
3461
  - extract: id
3455
3462
  generate: ContactId
3456
3463
  lists: []
3464
+ - fields:
3465
+ - extract: data[0].customer.name
3466
+ generate: customerName
3467
+ lists:
3468
+ - generate: matchedOrders
3469
+ fields:
3470
+ - extract: data[*].id
3471
+ generate: orderId
3472
+ - extract: data[*].total
3473
+ generate: amount
3457
3474
  properties:
3458
3475
  fields:
3459
3476
  type: array
@@ -3468,13 +3485,17 @@ components:
3468
3485
  description: |
3469
3486
  Path within the canonical response envelope to copy the value
3470
3487
  from. For lookup steps, paths start from the envelope's `data`
3471
- array (`data[0].x` and `data.0.x` are equivalent); for import
3472
- steps, use the envelope fields `id`, `statusCode`, `ignored`,
3473
- or `_json.<path>` for the raw response body. Paths that skip
3474
- the envelope (bare response field names) resolve to nothing.
3488
+ array (`data[0].x` and `data.0.x` are equivalent; `data` alone
3489
+ copies every result); for import steps, use the envelope fields
3490
+ `id`, `statusCode`, `ignored`, or `_json.<path>` for the raw
3491
+ response body. Paths that skip the envelope (bare response
3492
+ field names) resolve to nothing, and a `[*]` wildcard is not
3493
+ honored here — `data[*].x` merges nothing; iterate arrays with
3494
+ `lists` instead.
3475
3495
  examples:
3476
3496
  - data[0].customer.name
3477
3497
  - data.0.fields.Product Name
3498
+ - data
3478
3499
  - id
3479
3500
  - _json.orderNumber
3480
3501
  generate:
@@ -3492,8 +3513,10 @@ components:
3492
3513
  description: |
3493
3514
  Array mappings that build a target array on the in-flight record
3494
3515
  from an array inside the response envelope — one output item per
3495
- response item. Not needed for one-to-many (fan-out) merge-back,
3496
- which uses plain field mappings.
3516
+ element of the array the item extracts mark with `[*]` (`data[*].x`
3517
+ for lookups, `_json.<arrayPath>[*].x` for imports); an empty source
3518
+ array yields an empty target array. Not needed for one-to-many
3519
+ (fan-out) merge-back, which uses plain field mappings.
3497
3520
  items:
3498
3521
  type: object
3499
3522
  properties:
@@ -3517,12 +3540,16 @@ components:
3517
3540
  extract:
3518
3541
  type: string
3519
3542
  description: |
3520
- Source field within each response-array item, relative
3521
- to the item itself.
3543
+ Full envelope path to the source value, with `[*]`
3544
+ marking the array to iterate — `data[*].productId` for a
3545
+ lookup, `_json.items[*].sku` for an import. A path without
3546
+ `[*]` (e.g. `statusCode`) repeats the same envelope value
3547
+ on every item; an item-relative name (`productId`)
3548
+ resolves to nothing and produces empty objects.
3522
3549
  examples:
3523
- - productId
3524
- - quantity
3525
- - price
3550
+ - data[*].productId
3551
+ - data[*].quantity
3552
+ - _json.items[*].sku
3526
3553
  generate:
3527
3554
  type: string
3528
3555
  description: Target field within each mapped array item.
@@ -2827,13 +2827,18 @@ components:
2827
2827
  description: |-
2828
2828
  OAuth scopes requested during authorization. Scope values are defined by Salesforce — `full`
2829
2829
  grants complete API access and `refresh_token` enables long-lived refresh tokens. Defaults
2830
- to `full` and `refresh_token` when omitted.
2830
+ to `full` and `refresh_token` when omitted. A saved empty array is the normal stored state:
2831
+ the connection form does not expose this field, and every save from the connection editor
2832
+ resets values written through the API.
2831
2833
  default:
2832
2834
  - full
2833
2835
  - refresh_token
2834
2836
  examples:
2835
2837
  - - full
2836
2838
  - refresh_token
2839
+ x-celigo-ai-guidance:
2840
+ - 'Never set or repair this field to fix an authentication failure: an empty or absent list is the normal stored state, and UI saves reset API-written values.'
2841
+ - For a custom Connected App (`salesforce._iClientId` set), requested scopes are configured on the iClient's `oauth2.scope` and constrained by the Connected App inside Salesforce — not on the connection.
2837
2842
  concurrencyLevel:
2838
2843
  type: number
2839
2844
  description: |-
@@ -578,8 +578,38 @@ components:
578
578
  profile, e.g. `{{{ediProfile.isa01}}}` or
579
579
  `{{{ediProfile.tpInterchangeId}}}`.
580
580
 
581
+ The linked EDI profile's fields resolve under
582
+ `ediProfile.*`. X12 profiles: `isa01`, `isa02`, `isa03`,
583
+ `isa04`, `tpIdQualifier`, `tpInterchangeId`, `myIdQualifier`,
584
+ `myInterchangeId`, `isa11`, `isa12`, `isa14`, `isa15`,
585
+ `isa16`, `tpGroupId`, `myGroupId`, `gs07`, `gs08`. EDIFACT
586
+ profiles: `unb010_0001`, `unb010_0002`, `tpIdQualifier`,
587
+ `myIdQualifier`, `tpInterchangeId`, `myInterchangeId`,
588
+ `versionNumber`, `releaseNumber`, `controllingAgency`. Both
589
+ standards also expose the profile's `name`, `description`,
590
+ `fileType`, and `controlNumber` (the rolling interchange
591
+ control number — for generate-direction control-number
592
+ positions such as ISA13). There are no `isa05`–`isa08`
593
+ keys: the sender/receiver qualifier and ID positions bind to
594
+ `tpIdQualifier` / `tpInterchangeId` / `myIdQualifier` /
595
+ `myInterchangeId` (`tp*` is the trading partner's identity,
596
+ `my*` is yours — which pair lands in ISA05/06 vs ISA07/08
597
+ depends on who sends the document). Field meanings are
598
+ documented in the EDI Profiles spec.
599
+
581
600
  Use triple-stash (`{{{...}}}`) to avoid HTML escaping for
582
601
  EDI control characters.
602
+ x-celigo-ai-guidance:
603
+ - |-
604
+ Never extrapolate positional profile keys: ISA05-ISA08 have no
605
+ isaNN key — bind them to tpIdQualifier, tpInterchangeId,
606
+ myIdQualifier, myInterchangeId, choosing the tp*/my* pair by
607
+ document direction (tp* = trading partner's identity).
608
+ - |-
609
+ A referenceValue naming a key outside the profile's field set
610
+ saves without error but fails at parse/preview time with
611
+ "Handlebar expression pattern is incorrect. Please correct it
612
+ to an appropriate pattern for : <key>".
583
613
  examples:
584
614
  - '{{{ediProfile.isa01}}}'
585
615
  - '{{{ediProfile.tpInterchangeId}}}'
package/dist/flow.yml CHANGED
@@ -4079,8 +4079,10 @@ components:
4079
4079
 
4080
4080
  - **Lookup steps**: `{"statusCode": 200, "data": [<result records>],
4081
4081
  "errors": []}` — `data` holds the records the lookup returned, so
4082
- extracts must start from it (e.g. `data[0].name`). A bare result-record
4083
- field name (e.g. `name`) resolves to nothing and merges nothing.
4082
+ extracts must start from it: `data[0].name` copies a field of the
4083
+ first result, `data` copies the whole result array. A bare
4084
+ result-record field name (e.g. `name`) resolves to nothing and merges
4085
+ nothing.
4084
4086
  - **Import steps**: `{"id": "<destination record id>", "statusCode": 200,
4085
4087
  "ignored": false, "errors": [], "_json": <raw destination response>}` —
4086
4088
  use `id` for the destination-assigned id and `_json.<path>` for fields
@@ -4100,11 +4102,26 @@ components:
4100
4102
  responseMapping is fully replaced on PUT: omitting it resets the step
4101
4103
  to empty `{"fields": [], "lists": []}`. Always send the complete
4102
4104
  intended mapping for every step.
4105
+ - |-
4106
+ To carry several lookup results onto the record, use `extract: "data"`
4107
+ (the whole result array) or a `lists` entry whose extracts use
4108
+ `data[*].x` — never `data[*].x` in `fields[].extract`, which merges
4109
+ nothing: the record simply never gains the field.
4103
4110
  examples:
4104
4111
  - fields:
4105
4112
  - extract: id
4106
4113
  generate: ContactId
4107
4114
  lists: []
4115
+ - fields:
4116
+ - extract: data[0].customer.name
4117
+ generate: customerName
4118
+ lists:
4119
+ - generate: matchedOrders
4120
+ fields:
4121
+ - extract: data[*].id
4122
+ generate: orderId
4123
+ - extract: data[*].total
4124
+ generate: amount
4108
4125
  properties:
4109
4126
  fields:
4110
4127
  type: array
@@ -4119,13 +4136,17 @@ components:
4119
4136
  description: |
4120
4137
  Path within the canonical response envelope to copy the value
4121
4138
  from. For lookup steps, paths start from the envelope's `data`
4122
- array (`data[0].x` and `data.0.x` are equivalent); for import
4123
- steps, use the envelope fields `id`, `statusCode`, `ignored`,
4124
- or `_json.<path>` for the raw response body. Paths that skip
4125
- the envelope (bare response field names) resolve to nothing.
4139
+ array (`data[0].x` and `data.0.x` are equivalent; `data` alone
4140
+ copies every result); for import steps, use the envelope fields
4141
+ `id`, `statusCode`, `ignored`, or `_json.<path>` for the raw
4142
+ response body. Paths that skip the envelope (bare response
4143
+ field names) resolve to nothing, and a `[*]` wildcard is not
4144
+ honored here — `data[*].x` merges nothing; iterate arrays with
4145
+ `lists` instead.
4126
4146
  examples:
4127
4147
  - data[0].customer.name
4128
4148
  - data.0.fields.Product Name
4149
+ - data
4129
4150
  - id
4130
4151
  - _json.orderNumber
4131
4152
  generate:
@@ -4143,8 +4164,10 @@ components:
4143
4164
  description: |
4144
4165
  Array mappings that build a target array on the in-flight record
4145
4166
  from an array inside the response envelope — one output item per
4146
- response item. Not needed for one-to-many (fan-out) merge-back,
4147
- which uses plain field mappings.
4167
+ element of the array the item extracts mark with `[*]` (`data[*].x`
4168
+ for lookups, `_json.<arrayPath>[*].x` for imports); an empty source
4169
+ array yields an empty target array. Not needed for one-to-many
4170
+ (fan-out) merge-back, which uses plain field mappings.
4148
4171
  items:
4149
4172
  type: object
4150
4173
  properties:
@@ -4168,12 +4191,16 @@ components:
4168
4191
  extract:
4169
4192
  type: string
4170
4193
  description: |
4171
- Source field within each response-array item, relative
4172
- to the item itself.
4194
+ Full envelope path to the source value, with `[*]`
4195
+ marking the array to iterate — `data[*].productId` for a
4196
+ lookup, `_json.items[*].sku` for an import. A path without
4197
+ `[*]` (e.g. `statusCode`) repeats the same envelope value
4198
+ on every item; an item-relative name (`productId`)
4199
+ resolves to nothing and produces empty objects.
4173
4200
  examples:
4174
- - productId
4175
- - quantity
4176
- - price
4201
+ - data[*].productId
4202
+ - data[*].quantity
4203
+ - _json.items[*].sku
4177
4204
  generate:
4178
4205
  type: string
4179
4206
  description: Target field within each mapped array item.
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,11 @@ 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`.
1751
+
1752
+ Requires the `manage:tool:logs` permission.
1419
1753
  operationId: getToolStepRequest
1420
1754
  tags:
1421
1755
  - Tools
@@ -1434,14 +1768,19 @@ paths:
1434
1768
  in: path
1435
1769
  required: true
1436
1770
  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.
1771
+ The step the captured request belongs to. Either the ObjectId of an
1772
+ export or import step defined directly in this tool's routers, or one
1773
+ of the virtual step ids `tool_input` / `tool_output` (logs captured
1774
+ via `input.debugUntil` / `output.debugUntil`). Steps nested inside a
1775
+ child tool are addressed on that child tool's id. Reserved path
1776
+ segments such as `invocations`, `invoke`, and `test` are not valid
1777
+ step ids.
1440
1778
  schema:
1441
1779
  type: string
1442
- format: objectId
1443
1780
  examples:
1444
1781
  - 67ee026136f4d1eeb529ad63
1782
+ - tool_input
1783
+ - tool_output
1445
1784
  - name: key
1446
1785
  in: path
1447
1786
  required: true
@@ -1457,18 +1796,36 @@ paths:
1457
1796
  application/json:
1458
1797
  schema:
1459
1798
  type: object
1460
- description: A single captured debug request record.
1799
+ description: |-
1800
+ A single captured debug request record, including the captured
1801
+ request/response payloads.
1802
+ properties:
1803
+ key:
1804
+ type: string
1805
+ description: Identifier of the captured record.
1806
+ id:
1807
+ type: string
1808
+ description: Unique id of the captured record.
1809
+ time:
1810
+ type: integer
1811
+ description: Capture time as epoch milliseconds.
1461
1812
  additionalProperties: true
1462
1813
  examples:
1463
1814
  default:
1464
1815
  summary: One captured debug request
1465
1816
  value:
1466
- key: 6a2e23bbcf5b64ca6b93b774
1467
- method: POST
1468
- url: https://httpbin.org/post
1469
- statusCode: 200
1817
+ key: 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
1818
+ id: a10af1ade8fe477a847771c1e3716e36
1819
+ time: 1776917346304
1820
+ request:
1821
+ method: POST
1822
+ url: https://httpbin.org/post
1823
+ response:
1824
+ statusCode: 200
1470
1825
  '401':
1471
1826
  $ref: '#/components/responses/401-unauthorized'
1827
+ '403':
1828
+ $ref: '#/components/responses/403-forbidden'
1472
1829
  '404':
1473
1830
  $ref: '#/components/responses/404-not-found'
1474
1831
  components:
@@ -3894,6 +4251,18 @@ components:
3894
4251
  format: email
3895
4252
  transform:
3896
4253
  $ref: '#/components/schemas/Transform'
4254
+ debugUntil:
4255
+ type: string
4256
+ format: date-time
4257
+ description: |
4258
+ Enables debug capture for the tool input stage until this timestamp.
4259
+ While it is in the future, invocations write input-stage
4260
+ request/response logs, listed at
4261
+ `GET /v1/tools/{_id}/tool_input/requests`. At most 1 hour in the
4262
+ future. A past timestamp (or omitting the field) stops capture.
4263
+ Arm/disarm with `PATCH /v1/tools/{_id}` path `/input/debugUntil`.
4264
+ examples:
4265
+ - '2026-08-25T12:30:00.000Z'
3897
4266
  mockInput:
3898
4267
  type: object
3899
4268
  description: |
@@ -4039,6 +4408,18 @@ components:
4039
4408
  examples:
4040
4409
  - postProcessOutput
4041
4410
  - validateOutput
4411
+ debugUntil:
4412
+ type: string
4413
+ format: date-time
4414
+ description: |
4415
+ Enables debug capture for the tool output stage until this timestamp.
4416
+ While it is in the future, invocations write output-stage
4417
+ request/response logs, listed at
4418
+ `GET /v1/tools/{_id}/tool_output/requests`. At most 1 hour in the
4419
+ future. A past timestamp (or omitting the field) stops capture.
4420
+ Arm/disarm with `PATCH /v1/tools/{_id}` path `/output/debugUntil`.
4421
+ examples:
4422
+ - '2026-08-25T12:30:00.000Z'
4042
4423
  mockInput:
4043
4424
  type: object
4044
4425
  description: |
@@ -4597,6 +4978,41 @@ components:
4597
4978
  - message
4598
4979
  required:
4599
4980
  - errors
4981
+ JsonPatchOperation:
4982
+ type: object
4983
+ description: A single JSON Patch operation (RFC 6902).
4984
+ required:
4985
+ - op
4986
+ - path
4987
+ properties:
4988
+ op:
4989
+ type: string
4990
+ enum:
4991
+ - replace
4992
+ - add
4993
+ - remove
4994
+ x-enumDescriptions:
4995
+ replace: Replaces the value at the specified path.
4996
+ add: Sets the value at the specified path.
4997
+ remove: Removes the value at the specified path.
4998
+ description: The operation to perform.
4999
+ path:
5000
+ type: string
5001
+ description: |-
5002
+ JSON Pointer (RFC 6901) to the field to patch. Only
5003
+ whitelisted paths are accepted — unlisted paths return
5004
+ `422` with `"<path> is not a whitelisted property"`.
5005
+ value:
5006
+ description: The new value to set. Required for `replace` and `add`, omit for `remove`.
5007
+ JsonPatchRequest:
5008
+ type: array
5009
+ description: |-
5010
+ A JSON Patch document (RFC 6902). Send an array of patch
5011
+ operations on whitelisted fields — all other paths are rejected
5012
+ with 422.
5013
+ minItems: 1
5014
+ items:
5015
+ $ref: '#/components/schemas/JsonPatchOperation'
4600
5016
  IAResourceResponse:
4601
5017
  type: object
4602
5018
  description: Integration app response fields for resources that are part of integration apps
@@ -5265,13 +5681,18 @@ components:
5265
5681
  description: |-
5266
5682
  OAuth scopes requested during authorization. Scope values are defined by Salesforce — `full`
5267
5683
  grants complete API access and `refresh_token` enables long-lived refresh tokens. Defaults
5268
- to `full` and `refresh_token` when omitted.
5684
+ to `full` and `refresh_token` when omitted. A saved empty array is the normal stored state:
5685
+ the connection form does not expose this field, and every save from the connection editor
5686
+ resets values written through the API.
5269
5687
  default:
5270
5688
  - full
5271
5689
  - refresh_token
5272
5690
  examples:
5273
5691
  - - full
5274
5692
  - refresh_token
5693
+ x-celigo-ai-guidance:
5694
+ - 'Never set or repair this field to fix an authentication failure: an empty or absent list is the normal stored state, and UI saves reset API-written values.'
5695
+ - For a custom Connected App (`salesforce._iClientId` set), requested scopes are configured on the iClient's `oauth2.scope` and constrained by the Connected App inside Salesforce — not on the connection.
5275
5696
  concurrencyLevel:
5276
5697
  type: number
5277
5698
  description: |-
@@ -33626,9 +34047,9 @@ components:
33626
34047
  errors:
33627
34048
  - code: dependencies_not_deleted
33628
34049
  message: export 6902d88c10b42b2eaac9b2a1 must be deleted before you can delete connection 6398ddf316be761fb16a6523
33629
- 403-forbidden:
34050
+ 422-unprocessable-entity:
33630
34051
  description: |
33631
- Forbidden. The authenticated caller does not have permission to perform this operation.
34052
+ Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
33632
34053
  content:
33633
34054
  application/json:
33634
34055
  schema:
@@ -33637,11 +34058,11 @@ components:
33637
34058
  default:
33638
34059
  value:
33639
34060
  errors:
33640
- - code: forbidden
33641
- message: You do not have permission to access this resource.
33642
- 422-unprocessable-entity:
34061
+ - code: unprocessable_entity
34062
+ message: The request could not be processed due to a semantic error.
34063
+ 403-forbidden:
33643
34064
  description: |
33644
- Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
34065
+ Forbidden. The authenticated caller does not have permission to perform this operation.
33645
34066
  content:
33646
34067
  application/json:
33647
34068
  schema:
@@ -33650,7 +34071,7 @@ components:
33650
34071
  default:
33651
34072
  value:
33652
34073
  errors:
33653
- - code: unprocessable_entity
33654
- message: The request could not be processed due to a semantic error.
34074
+ - code: forbidden
34075
+ message: You do not have permission to access this resource.
33655
34076
  x-enable-proxy: true
33656
34077
  x-internal: false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.1",
3
+ "version": "0.2.2-IO-190100-EPIC-fb",
4
4
  "private": false,
5
5
  "description": "Public OpenAPI bundles (dist/) and the celigo-cli lint schema pack (schemas.json).",
6
6
  "files": [
package/schemas.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "provenance": {
3
3
  "repo": "celigo/integrator-api-specs",
4
- "iasCommit": "cb9d158",
5
- "generatedAt": "2026-08-31"
4
+ "iasCommit": "85918fe",
5
+ "generatedAt": "2026-09-10"
6
6
  },
7
7
  "roots": {
8
8
  "aiagent": 121,
@@ -8242,6 +8242,7 @@
8242
8242
  "object"
8243
8243
  ],
8244
8244
  "p": {
8245
+ "debugUntil": 1,
8245
8246
  "description": 1,
8246
8247
  "mockInput": 14,
8247
8248
  "name": 1,
@@ -8331,6 +8332,7 @@
8331
8332
  "object"
8332
8333
  ],
8333
8334
  "p": {
8335
+ "debugUntil": 1,
8334
8336
  "description": 1,
8335
8337
  "hooks": 184,
8336
8338
  "lookups": 696,