@celigo/api-specs 0.2.177 → 0.2.178

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/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
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.178",
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": "d78b4324",
5
5
  "generatedAt": "2026-10-22"
6
6
  },
7
7
  "roots": {