@celigo/api-specs 0.2.177 → 0.2.179

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
@@ -8025,11 +8025,13 @@ components:
8025
8025
  It defines how data is extracted from Salesforce,
8026
8026
  either through queries or real-time events.
8027
8027
  - |-
8028
- Always set `type` on new Salesforce exports (`soql` or `distributed`) —
8029
- the form always writes it. It is absent only from legacy real-time
8030
- exports created before the field existed, and file/byId retrievals
8031
- (`id` + `sObjectType`, no `soql` object) carry `type: soql` without a
8032
- `soql` object.
8028
+ Set `type` on every Salesforce export you create (`soql` or `distributed`).
8029
+ Never read its absence on an existing export as a defect: a listener saved
8030
+ from the integrator.io form carries no `salesforce.type` and the platform
8031
+ fires it without the field, and file/byId retrievals (`id` + `sObjectType`,
8032
+ no `soql` object) carry `type: soql` without a `soql` object. A listener
8033
+ that never creates a job is diagnosed from `distributed` (below), not from
8034
+ this field.
8033
8035
  - |-
8034
8036
  ## SALESFORCE EXPORT MODES
8035
8037
 
@@ -8061,8 +8063,10 @@ components:
8061
8063
  Required fields: type, soql.query
8062
8064
  Optional fields: api, includeDeletedRecords, bulk (when api="bulk")
8063
8065
 
8064
- - For Distributed exports (type="distributed"):
8065
- Required fields: type, distributed configuration
8066
+ - For Distributed exports (real-time listeners):
8067
+ Set type="distributed" with the distributed object and sObjectType when creating one.
8068
+ A listener saved from the integrator.io form carries the distributed object and
8069
+ sObjectType with no type, and the platform fires it — a valid listener, not a missing field.
8066
8070
  Optional fields: distributed.referencedFields, distributed.qualifier
8067
8071
 
8068
8072
  - For Blob exports (when export.type="blob"):
@@ -8078,7 +8082,10 @@ components:
8078
8082
 
8079
8083
  This field determines the core operating mode of the Salesforce export:
8080
8084
 
8081
- - REQUIRED for all Salesforce exports
8085
+ - Set it on every Salesforce export you create; a listener saved from the
8086
+ integrator.io form carries none and the platform fires it without the
8087
+ field, so an absent `type` beside a `distributed` object is the normal
8088
+ shape of a form-saved listener, not a missing setting
8082
8089
  - Controls which additional configuration objects must be provided
8083
8090
  - Affects how the export appears and functions in the flow builder UI
8084
8091
  - Cannot be changed after creation without significant reconfiguration
@@ -8573,7 +8580,7 @@ components:
8573
8580
  - SELECT Id, Name, (SELECT Id, FirstName, LastName FROM Contacts) FROM Account
8574
8581
  distributed:
8575
8582
  type: object
8576
- description: Real-time listener configuration; required when `type` is `distributed` and not used otherwise. Records reach the flow only when an Apex trigger on `sObjectType` in the connected org calls the Celigo package (`integrator_da__.RealTimeExporter.processExport()`) — no scheduling or manual execution is involved. Integration Apps create their triggers at installation; for a custom flow the customer deploys the trigger in Salesforce, starting from the code the export page shows under Required trigger.
8583
+ description: 'Real-time listener configuration — the object that makes an export a listener. Set it, with `type: distributed`, when creating one; a listener saved from the integrator.io form carries it with no `type`, and the platform fires it either way. Not used on SOQL or file exports. Records reach the flow only when an Apex trigger on `sObjectType` in the connected org calls the Celigo package (`integrator_da__.RealTimeExporter.processExport()`) — no scheduling or manual execution is involved. Integration Apps create their triggers at installation; for a custom flow the customer deploys the trigger in Salesforce, starting from the code the export page shows under Required trigger.'
8577
8584
  x-celigo-ai-guidance:
8578
8585
  - |-
8579
8586
  After creating a listener on a custom flow, relay what the Help Center's "Listen for real-time data
@@ -8588,6 +8595,12 @@ components:
8588
8595
  Help Center's trigger requirement in the connected org: an active Apex trigger on the object whose
8589
8596
  code calls `integrator_da__.RealTimeExporter`, and the Celigo package reachable through the
8590
8597
  connection (`GET /v1/connections/{_id}/distributed`, documented in this spec set).
8598
+ - |-
8599
+ Two things are never why a listener does not fire. The export preview cannot run a listener:
8600
+ it validates the body as a SOQL export and answers 422 `missing_required_field` for
8601
+ `soql.query` (and for `type` when the listener carries none) before the connection is used,
8602
+ so a failed preview is expected, not a configuration defect. And an absent `salesforce.type`
8603
+ is the normal shape of a listener saved from the integrator.io form (see `type`).
8591
8604
  properties:
8592
8605
  referencedFields:
8593
8606
  type:
package/dist/import.yml CHANGED
@@ -1811,7 +1811,7 @@ components:
1811
1811
  Use separate array elements per operation rather than `{{#if}}` conditionals inside a single URI.
1812
1812
  URI templates render strictly: a path that is undefined on the record — such as `record.<field>` on a grouped record, whose root is `rows` — fails the request instead of rendering empty.
1813
1813
  A field the record lacks, or a `{{lookup.<name>}}` whose lookup found nothing, fails that record before anything is sent, with `handlebars_template_parse_error` (source `application`, classification `parse`): `Failed to generate request url from template: <URL>. Details: "<field>" not defined in the model.` That is missing data, not template syntax, and a retry of the same record fails the same way: send records that may lack the destination id through a composite UPDATE/CREATE import (`existingExtract`), or skip them with `ignoreMissing` and `ignoreExtract`.
1814
- A field that holds an empty string or null is defined: it renders empty, and the request is sent without the value.
1814
+ A field that holds an empty string renders empty, and the request is sent without the value. A field that holds null renders the text `null` (a URI of `/orders/{{record.id}}` is sent as `/orders/null`), and a field under an object that is null fails the record like a missing one (`"<field>" not defined in null`).
1815
1815
  x-celigo-ai-guidance:
1816
1816
  - '**CRITICAL: This MUST be an array of strings, NOT an object.**'
1817
1817
  - |-
@@ -1998,7 +1998,14 @@ components:
1998
1998
  (``"{{record.name}}"``): double braces JSON-escape the value at run time, with no HTML
1999
1999
  escaping. Triple braces insert the raw text, so a value holding a double quote,
2000
2000
  backslash, newline or tab fails that record with 422 ``invalid_json`` before anything
2001
- is sent.
2001
+ is sent. Double braces write a null value -- a null field, or any field under an
2002
+ object that is null -- as the text ``null``, so ``"{{record.customer.name}}"`` sends
2003
+ the string "null" (triple braces rendered ``{{{record.customer.name}}}`` empty,
2004
+ whether ``customer`` or its ``name`` was null). Guard a nullable field with
2005
+ ``{{#if record.customer.name}}{{record.customer.name}}{{/if}}`` or
2006
+ ``{{#if record.customer}}{{record.customer.name}}{{/if}}``: both render empty for a
2007
+ null field and for a null object. The Handlebars processor renders the unguarded null
2008
+ empty, so judge it by an import preview or a run.
2002
2009
  - |-
2003
2010
  Every request context carries two data roots: ``data`` — the list of records in
2004
2011
  the request, always present (Pattern B) — and ONE shape-specific root that follows
@@ -1177,6 +1177,14 @@ paths:
1177
1177
  (`"data": {"record": {...}}`). Double braces HTML-escape the value (`&` renders as `&amp;`);
1178
1178
  triple braces insert it unchanged. A `timestamp` with no time zone renders in UTC.
1179
1179
 
1180
+ A null value, or a field under an object that is null, renders empty here. An HTTP import
1181
+ escapes values its own way, at run time and in the import preview: in its JSON body a
1182
+ double-brace value that is null, or under a null object, is written as the text `null`
1183
+ (triple braces rendered `{{{record.customer.name}}}` empty, whether `customer` or its `name`
1184
+ was null); in its relative URI a null field is sent as the text
1185
+ `null`, and a field under a null object fails the record before anything is sent. Check a
1186
+ nullable field with an import preview, not here.
1187
+
1180
1188
  An unknown helper is refused with 422. `GET /v1/processors` lists helpers under the handlebars
1181
1189
  entry's `helperFunctions`, but that list is not complete: `eq` and `truncateWords`, for
1182
1190
  example, render although it omits them, so render a doubtful helper once here before relying
package/dist/tool.yml CHANGED
@@ -13668,7 +13668,7 @@ components:
13668
13668
  Use separate array elements per operation rather than `{{#if}}` conditionals inside a single URI.
13669
13669
  URI templates render strictly: a path that is undefined on the record — such as `record.<field>` on a grouped record, whose root is `rows` — fails the request instead of rendering empty.
13670
13670
  A field the record lacks, or a `{{lookup.<name>}}` whose lookup found nothing, fails that record before anything is sent, with `handlebars_template_parse_error` (source `application`, classification `parse`): `Failed to generate request url from template: <URL>. Details: "<field>" not defined in the model.` That is missing data, not template syntax, and a retry of the same record fails the same way: send records that may lack the destination id through a composite UPDATE/CREATE import (`existingExtract`), or skip them with `ignoreMissing` and `ignoreExtract`.
13671
- A field that holds an empty string or null is defined: it renders empty, and the request is sent without the value.
13671
+ A field that holds an empty string renders empty, and the request is sent without the value. A field that holds null renders the text `null` (a URI of `/orders/{{record.id}}` is sent as `/orders/null`), and a field under an object that is null fails the record like a missing one (`"<field>" not defined in null`).
13672
13672
  x-celigo-ai-guidance:
13673
13673
  - '**CRITICAL: This MUST be an array of strings, NOT an object.**'
13674
13674
  - |-
@@ -13855,7 +13855,14 @@ components:
13855
13855
  (``"{{record.name}}"``): double braces JSON-escape the value at run time, with no HTML
13856
13856
  escaping. Triple braces insert the raw text, so a value holding a double quote,
13857
13857
  backslash, newline or tab fails that record with 422 ``invalid_json`` before anything
13858
- is sent.
13858
+ is sent. Double braces write a null value -- a null field, or any field under an
13859
+ object that is null -- as the text ``null``, so ``"{{record.customer.name}}"`` sends
13860
+ the string "null" (triple braces rendered ``{{{record.customer.name}}}`` empty,
13861
+ whether ``customer`` or its ``name`` was null). Guard a nullable field with
13862
+ ``{{#if record.customer.name}}{{record.customer.name}}{{/if}}`` or
13863
+ ``{{#if record.customer}}{{record.customer.name}}{{/if}}``: both render empty for a
13864
+ null field and for a null object. The Handlebars processor renders the unguarded null
13865
+ empty, so judge it by an import preview or a run.
13859
13866
  - |-
13860
13867
  Every request context carries two data roots: ``data`` — the list of records in
13861
13868
  the request, always present (Pattern B) — and ONE shape-specific root that follows
@@ -33039,11 +33046,13 @@ components:
33039
33046
  It defines how data is extracted from Salesforce,
33040
33047
  either through queries or real-time events.
33041
33048
  - |-
33042
- Always set `type` on new Salesforce exports (`soql` or `distributed`) —
33043
- the form always writes it. It is absent only from legacy real-time
33044
- exports created before the field existed, and file/byId retrievals
33045
- (`id` + `sObjectType`, no `soql` object) carry `type: soql` without a
33046
- `soql` object.
33049
+ Set `type` on every Salesforce export you create (`soql` or `distributed`).
33050
+ Never read its absence on an existing export as a defect: a listener saved
33051
+ from the integrator.io form carries no `salesforce.type` and the platform
33052
+ fires it without the field, and file/byId retrievals (`id` + `sObjectType`,
33053
+ no `soql` object) carry `type: soql` without a `soql` object. A listener
33054
+ that never creates a job is diagnosed from `distributed` (below), not from
33055
+ this field.
33047
33056
  - |-
33048
33057
  ## SALESFORCE EXPORT MODES
33049
33058
 
@@ -33075,8 +33084,10 @@ components:
33075
33084
  Required fields: type, soql.query
33076
33085
  Optional fields: api, includeDeletedRecords, bulk (when api="bulk")
33077
33086
 
33078
- - For Distributed exports (type="distributed"):
33079
- Required fields: type, distributed configuration
33087
+ - For Distributed exports (real-time listeners):
33088
+ Set type="distributed" with the distributed object and sObjectType when creating one.
33089
+ A listener saved from the integrator.io form carries the distributed object and
33090
+ sObjectType with no type, and the platform fires it — a valid listener, not a missing field.
33080
33091
  Optional fields: distributed.referencedFields, distributed.qualifier
33081
33092
 
33082
33093
  - For Blob exports (when export.type="blob"):
@@ -33092,7 +33103,10 @@ components:
33092
33103
 
33093
33104
  This field determines the core operating mode of the Salesforce export:
33094
33105
 
33095
- - REQUIRED for all Salesforce exports
33106
+ - Set it on every Salesforce export you create; a listener saved from the
33107
+ integrator.io form carries none and the platform fires it without the
33108
+ field, so an absent `type` beside a `distributed` object is the normal
33109
+ shape of a form-saved listener, not a missing setting
33096
33110
  - Controls which additional configuration objects must be provided
33097
33111
  - Affects how the export appears and functions in the flow builder UI
33098
33112
  - Cannot be changed after creation without significant reconfiguration
@@ -33587,7 +33601,7 @@ components:
33587
33601
  - SELECT Id, Name, (SELECT Id, FirstName, LastName FROM Contacts) FROM Account
33588
33602
  distributed:
33589
33603
  type: object
33590
- description: Real-time listener configuration; required when `type` is `distributed` and not used otherwise. Records reach the flow only when an Apex trigger on `sObjectType` in the connected org calls the Celigo package (`integrator_da__.RealTimeExporter.processExport()`) — no scheduling or manual execution is involved. Integration Apps create their triggers at installation; for a custom flow the customer deploys the trigger in Salesforce, starting from the code the export page shows under Required trigger.
33604
+ description: 'Real-time listener configuration — the object that makes an export a listener. Set it, with `type: distributed`, when creating one; a listener saved from the integrator.io form carries it with no `type`, and the platform fires it either way. Not used on SOQL or file exports. Records reach the flow only when an Apex trigger on `sObjectType` in the connected org calls the Celigo package (`integrator_da__.RealTimeExporter.processExport()`) — no scheduling or manual execution is involved. Integration Apps create their triggers at installation; for a custom flow the customer deploys the trigger in Salesforce, starting from the code the export page shows under Required trigger.'
33591
33605
  x-celigo-ai-guidance:
33592
33606
  - |-
33593
33607
  After creating a listener on a custom flow, relay what the Help Center's "Listen for real-time data
@@ -33602,6 +33616,12 @@ components:
33602
33616
  Help Center's trigger requirement in the connected org: an active Apex trigger on the object whose
33603
33617
  code calls `integrator_da__.RealTimeExporter`, and the Celigo package reachable through the
33604
33618
  connection (`GET /v1/connections/{_id}/distributed`, documented in this spec set).
33619
+ - |-
33620
+ Two things are never why a listener does not fire. The export preview cannot run a listener:
33621
+ it validates the body as a SOQL export and answers 422 `missing_required_field` for
33622
+ `soql.query` (and for `type` when the listener carries none) before the connection is used,
33623
+ so a failed preview is expected, not a configuration defect. And an absent `salesforce.type`
33624
+ is the normal shape of a listener saved from the integrator.io form (see `type`).
33605
33625
  properties:
33606
33626
  referencedFields:
33607
33627
  type:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.177",
3
+ "version": "0.2.179",
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,7 +1,7 @@
1
1
  {
2
2
  "provenance": {
3
3
  "repo": "celigo/integrator-api-specs",
4
- "iasCommit": "35c59e78",
4
+ "iasCommit": "9951106d",
5
5
  "generatedAt": "2026-10-22"
6
6
  },
7
7
  "roots": {