@celigo/api-specs 0.2.48 → 0.2.50

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/export.yml CHANGED
@@ -8455,60 +8455,33 @@ components:
8455
8455
  type:
8456
8456
  - string
8457
8457
  - 'null'
8458
- description: Salesforce formula expression that filters which events are processed; when omitted (stored as `null`), all events for the object are processed. Evaluated inside Salesforce before events are sent, which is more efficient than filtering in a later flow step. Reference only fields that exist on the monitored object; formula functions such as `ISCHANGED(Status__c)` are supported.
8458
+ description: SOQL WHERE-clause condition that filters which record events the listener processes; when omitted (stored as `null`), every event for the object is processed. The Celigo Salesforce package evaluates it inside Salesforce as `SELECT Id FROM <sObjectType> WHERE (<qualifier>) AND Id IN :ids` before anything is sent, so only fields of the monitored object and SOQL comparison syntax apply — Salesforce formula functions are not part of this grammar. A deleted record is never returned by that query, so a listener with any qualifier receives no delete events; leave it unset when removals must trigger the flow.
8459
8459
  x-celigo-ai-guidance:
8460
8460
  - |-
8461
- ## FIELD BEHAVIOR
8462
-
8463
- This field provides server-side filtering:
8464
-
8465
- - OPTIONAL: If omitted, all events for the object are processed
8466
- - Uses Salesforce formula syntax for filtering
8467
- - Evaluated before events are sent to the integration platform
8468
- - Can reference any field on the triggering record
8461
+ Write SOQL WHERE syntax only: `field = value`, `!=`, `<`, `>`, `<=`, `>=`, `LIKE`,
8462
+ `IN (...)`, `AND` / `OR`, parentheses for grouping, `NOT ( <comparison> )`, and
8463
+ lowercase `true` / `false` literals.
8469
8464
  - |-
8470
- ## IMPLEMENTATION PATTERNS
8471
-
8472
- ### Simple Field Comparisons
8473
- ```
8474
- "Status__c = 'Approved'"
8475
- ```
8476
- - Processes events only when specific field values match
8477
- - Most efficient filtering approach
8478
- - Can use =, !=, >, <, >=, <= operators
8479
-
8480
- ### Logical Conditions
8481
- ```
8482
- "Amount > 1000 AND Status__c = 'New'"
8483
- ```
8484
- - Combines multiple conditions with AND, OR operators
8485
- - Can use parentheses for complex grouping
8486
- - Allows precise control over which events trigger the integration
8487
-
8488
- ### Formula Functions
8489
- ```
8490
- "CONTAINS(Description, 'Priority') OR ISCHANGED(Status__c)"
8491
- ```
8492
- - Uses Salesforce formula functions
8493
- - ISCHANGED detects specific field modifications
8494
- - ISNEW, ISDELETED detect record lifecycle events
8465
+ Formula syntax is rejected at save with HTTP 422 `Either whereClause expression ...
8466
+ is invalid ... unexpected token` — observed for `AND(a, b)` argument lists,
8467
+ `NOT(field)` on a bare boolean, `NOT(ISNEW())`, `ISDELETED()`, and `ISBLANK(field)`;
8468
+ uppercase `= FALSE` has been rewritten to `NOT(field)` and rejected the same way.
8495
8469
  - |-
8496
- ## PERFORMANCE IMPACT
8497
-
8498
- The qualifier is evaluated in Salesforce before sending events:
8499
- - Reduces network traffic and processing
8500
- - Lowers integration platform load
8501
- - More efficient than filtering in a subsequent flow step
8502
- - No additional API calls required
8503
-
8504
- IMPORTANT: The qualifier is evaluated using the Salesforce formula engine.
8505
- Use valid Salesforce formula syntax and reference only fields that exist
8506
- on the primary object being monitored.
8470
+ The rejection surfaces on a real save (a create, or the user's Accept of a staged
8471
+ update) — dry-run validation does not run the Salesforce-side check, so a staged
8472
+ card carrying an invalid qualifier passes dry-run and fails at Accept.
8473
+ - |-
8474
+ `IsDeleted = true` in a qualifier admits nothing — the query runs against the live
8475
+ record, which no longer exists after a delete, so any qualified listener stops
8476
+ receiving deletions. To keep deletes flowing, leave the qualifier unset and drop
8477
+ unwanted events with the export's output filter, accepting that those events still
8478
+ start a run.
8507
8479
  examples:
8508
8480
  - Amount > 1000
8509
8481
  - Status__c = 'Approved'
8510
8482
  - LeadSource = 'Web' AND Competitor__c = 'Oracle'
8511
- - ISCHANGED(Status__c) AND NOT(ISNEW())
8483
+ - IsDirect = false
8484
+ - StageName = 'Won' AND ( NOT ( Unresolved_Errors__c >= 1 ) )
8512
8485
  batchSize:
8513
8486
  type:
8514
8487
  - integer
@@ -515,8 +515,11 @@ paths:
515
515
  array, `add` works at `/policies/-` or an index, and `replace` works at
516
516
  an index or a sub-path such as `/policies/0/config/limit`; `remove` at
517
517
  an array index is rejected with 422 `Remove at array index is not
518
- supported`. The resulting array is validated as a whole, and an invalid
519
- policy rejects the entire patch. `/_networkPolicyId` takes `add`,
518
+ supported`. The resulting array is validated as a whole, and a policy
519
+ with invalid `config` (422 `policy_config_invalid`), a missing `name`,
520
+ or a second policy of the same `type` and `keyResolver` (422
521
+ `mcp_server_duplicate_policy`) rejects the entire patch.
522
+ `/_networkPolicyId` takes `add`,
520
523
  `replace` (a policy in the same environment, else 422 `invalid_ref`),
521
524
  and `remove` to unassign — `replace` with a `null` value is rejected
522
525
  with 422 `missing 'value' property`. Setting `/disabled` to `false` is rejected
@@ -2762,17 +2765,21 @@ components:
2762
2765
  server (`keyResolver` `endpoint`) or separately for each OAuth end user
2763
2766
  (`keyResolver` `consumer`); a `quota` caps cumulative calls over a UTC
2764
2767
  calendar DAY, WEEK, or MONTH across every consumer. A call must pass every
2765
- enabled policy. A rejected call is not executed and receives HTTP 429 with
2766
- a `Retry-After` header (seconds until the allowance refills or the quota
2768
+ enabled policy. A second policy of the same `type` and `keyResolver` is
2769
+ rejected with 422 `mcp_server_duplicate_policy`. A rejected call is not
2770
+ executed, does not count toward usage, and receives HTTP 429 with a
2771
+ `Retry-After` header (seconds until the allowance refills or the quota
2767
2772
  period resets), an `X-RateLimit-Limit` header, and a JSON-RPC error
2768
2773
  (code -32004) whose message names the policy: `Rate limit exceeded: <name>`
2769
- or `Usage quota exceeded: <name>`.
2774
+ or `Usage quota exceeded: <name>`. A quota counts only calls accepted after
2775
+ it was added; editing the limit keeps the running count for the current UTC
2776
+ period, and removing then re-adding the quota starts a new count.
2770
2777
  x-celigo-ai-guidance:
2771
2778
  - |-
2772
2779
  Configure one policy per kind — one server-level rate limit, one per-user
2773
- rate limit (`keyResolver` `consumer`), one quota. The API does not reject a
2774
- second policy of the same kind; both are then enforced against the same
2775
- traffic, which makes the effective limit hard to reason about.
2780
+ rate limit (`keyResolver` `consumer`), one quota. A second policy of the
2781
+ same `type` and `keyResolver` is rejected with 422
2782
+ `mcp_server_duplicate_policy`.
2776
2783
  - |-
2777
2784
  A `tools/call` counts against every enabled policy, even when the named tool
2778
2785
  does not exist; `initialize`, `tools/list`, `prompts/list`, and `resources/list`
@@ -2785,9 +2792,10 @@ components:
2785
2792
  - |-
2786
2793
  A rate limit keeps its allowance state when its `limit` is changed, so raising
2787
2794
  a limit right after it tripped admits nothing until tokens refill at the new
2788
- rate. A quota counts every call the server accepted in the current UTC period,
2789
- including calls made before the quota was configured — a quota below the
2790
- period's current count rejects every call until the period resets.
2795
+ rate. A quota counts calls accepted after it was added in the current UTC
2796
+ period; editing the limit keeps the running count, and removing then
2797
+ re-adding the quota starts a new count. Calls rejected by a traffic limit
2798
+ do not consume quota, so raising a quota mid-period takes effect immediately.
2791
2799
  required:
2792
2800
  - type
2793
2801
  - name
@@ -2809,10 +2817,11 @@ components:
2809
2817
  - rate-limit
2810
2818
  name:
2811
2819
  type: string
2812
- maxLength: 100
2820
+ maxLength: 200
2813
2821
  description: |-
2814
- Label for the limit, echoed verbatim in the 429 error message that
2815
- rejected clients receive — name it the way consumers should read it.
2822
+ Required label for the limit, echoed verbatim in the 429 error message
2823
+ that rejected clients receive — name it the way consumers should read
2824
+ it. A missing or empty name is rejected with 422.
2816
2825
  examples:
2817
2826
  - Server-level rate limit
2818
2827
  - Per-user rate limit
@@ -3253,10 +3262,15 @@ components:
3253
3262
  description: |-
3254
3263
  Traffic limits enforced on this server before a tool runs — a
3255
3264
  server-level rate limit, a per-user rate limit, and a usage quota, each
3256
- optional and independent. An empty array (the default) means unlimited.
3257
- Always returned; servers saved before traffic limits existed return an
3258
- empty array. Omitting the field on PUT clears every limit — send the
3259
- complete array back, or edit it with PATCH.
3265
+ optional and independent. At most one policy per `type` and
3266
+ `keyResolver` is allowed; a second is rejected with 422
3267
+ `mcp_server_duplicate_policy`. An empty array (the default) means
3268
+ unlimited. Always returned; servers saved before traffic limits existed
3269
+ return an empty array. Omitting the field on PUT clears every limit —
3270
+ send the complete array back, or edit it with PATCH. A quota counts
3271
+ calls accepted after it is saved; edits that keep the same `type` and
3272
+ `keyResolver` keep counting from the original add time, and removing
3273
+ the quota (then adding it again) starts a new count.
3260
3274
  x-celigo-ai-guidance:
3261
3275
  - |-
3262
3276
  Leave `policies` empty unless the user asks for a limit — that is today's
package/dist/tool.yml CHANGED
@@ -31411,60 +31411,33 @@ components:
31411
31411
  type:
31412
31412
  - string
31413
31413
  - 'null'
31414
- description: Salesforce formula expression that filters which events are processed; when omitted (stored as `null`), all events for the object are processed. Evaluated inside Salesforce before events are sent, which is more efficient than filtering in a later flow step. Reference only fields that exist on the monitored object; formula functions such as `ISCHANGED(Status__c)` are supported.
31414
+ description: SOQL WHERE-clause condition that filters which record events the listener processes; when omitted (stored as `null`), every event for the object is processed. The Celigo Salesforce package evaluates it inside Salesforce as `SELECT Id FROM <sObjectType> WHERE (<qualifier>) AND Id IN :ids` before anything is sent, so only fields of the monitored object and SOQL comparison syntax apply — Salesforce formula functions are not part of this grammar. A deleted record is never returned by that query, so a listener with any qualifier receives no delete events; leave it unset when removals must trigger the flow.
31415
31415
  x-celigo-ai-guidance:
31416
31416
  - |-
31417
- ## FIELD BEHAVIOR
31418
-
31419
- This field provides server-side filtering:
31420
-
31421
- - OPTIONAL: If omitted, all events for the object are processed
31422
- - Uses Salesforce formula syntax for filtering
31423
- - Evaluated before events are sent to the integration platform
31424
- - Can reference any field on the triggering record
31417
+ Write SOQL WHERE syntax only: `field = value`, `!=`, `<`, `>`, `<=`, `>=`, `LIKE`,
31418
+ `IN (...)`, `AND` / `OR`, parentheses for grouping, `NOT ( <comparison> )`, and
31419
+ lowercase `true` / `false` literals.
31425
31420
  - |-
31426
- ## IMPLEMENTATION PATTERNS
31427
-
31428
- ### Simple Field Comparisons
31429
- ```
31430
- "Status__c = 'Approved'"
31431
- ```
31432
- - Processes events only when specific field values match
31433
- - Most efficient filtering approach
31434
- - Can use =, !=, >, <, >=, <= operators
31435
-
31436
- ### Logical Conditions
31437
- ```
31438
- "Amount > 1000 AND Status__c = 'New'"
31439
- ```
31440
- - Combines multiple conditions with AND, OR operators
31441
- - Can use parentheses for complex grouping
31442
- - Allows precise control over which events trigger the integration
31443
-
31444
- ### Formula Functions
31445
- ```
31446
- "CONTAINS(Description, 'Priority') OR ISCHANGED(Status__c)"
31447
- ```
31448
- - Uses Salesforce formula functions
31449
- - ISCHANGED detects specific field modifications
31450
- - ISNEW, ISDELETED detect record lifecycle events
31421
+ Formula syntax is rejected at save with HTTP 422 `Either whereClause expression ...
31422
+ is invalid ... unexpected token` — observed for `AND(a, b)` argument lists,
31423
+ `NOT(field)` on a bare boolean, `NOT(ISNEW())`, `ISDELETED()`, and `ISBLANK(field)`;
31424
+ uppercase `= FALSE` has been rewritten to `NOT(field)` and rejected the same way.
31451
31425
  - |-
31452
- ## PERFORMANCE IMPACT
31453
-
31454
- The qualifier is evaluated in Salesforce before sending events:
31455
- - Reduces network traffic and processing
31456
- - Lowers integration platform load
31457
- - More efficient than filtering in a subsequent flow step
31458
- - No additional API calls required
31459
-
31460
- IMPORTANT: The qualifier is evaluated using the Salesforce formula engine.
31461
- Use valid Salesforce formula syntax and reference only fields that exist
31462
- on the primary object being monitored.
31426
+ The rejection surfaces on a real save (a create, or the user's Accept of a staged
31427
+ update) — dry-run validation does not run the Salesforce-side check, so a staged
31428
+ card carrying an invalid qualifier passes dry-run and fails at Accept.
31429
+ - |-
31430
+ `IsDeleted = true` in a qualifier admits nothing — the query runs against the live
31431
+ record, which no longer exists after a delete, so any qualified listener stops
31432
+ receiving deletions. To keep deletes flowing, leave the qualifier unset and drop
31433
+ unwanted events with the export's output filter, accepting that those events still
31434
+ start a run.
31463
31435
  examples:
31464
31436
  - Amount > 1000
31465
31437
  - Status__c = 'Approved'
31466
31438
  - LeadSource = 'Web' AND Competitor__c = 'Oracle'
31467
- - ISCHANGED(Status__c) AND NOT(ISNEW())
31439
+ - IsDirect = false
31440
+ - StageName = 'Won' AND ( NOT ( Unresolved_Errors__c >= 1 ) )
31468
31441
  batchSize:
31469
31442
  type:
31470
31443
  - integer
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.48",
3
+ "version": "0.2.50",
4
4
  "private": false,
5
5
  "description": "Public OpenAPI bundles (dist/) and the celigo-cli lint schema pack (schemas.json).",
6
6
  "keywords": [
package/schemas.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "provenance": {
3
3
  "repo": "celigo/integrator-api-specs",
4
- "iasCommit": "154359a",
5
- "generatedAt": "2026-09-23"
4
+ "iasCommit": "aa43164",
5
+ "generatedAt": "2026-09-24"
6
6
  },
7
7
  "roots": {
8
8
  "aiagent": 133,