@celigo/api-specs 0.2.152 → 0.2.154

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
@@ -2717,7 +2717,9 @@ components:
2717
2717
 
2718
2718
  - **Field mappings** — a mapping entry sets
2719
2719
  ``lookupName: "<name>"`` to resolve a field's value through
2720
- the lookup.
2720
+ the lookup. A ``lookupName`` that matches no entry in this
2721
+ array fails every record with ``Unable to find lookup in
2722
+ mapping configs - <name>``.
2721
2723
  - **Handlebars expressions** — anywhere handlebars is
2722
2724
  evaluated (relativeURI, headers, body), ``{{lookup "name"
2723
2725
  value}}`` calls the lookup with ``value`` as input.
@@ -2731,9 +2733,13 @@ components:
2731
2733
  ## Mirror invariant
2732
2734
 
2733
2735
  The Celigo platform persists lookups in TWO locations on an HTTP
2734
- import: top-level ``lookups`` and ``http.lookups``. Both arrays
2735
- MUST hold byte-for-byte identical content, so write both on
2736
- every save.
2736
+ import: top-level ``lookups`` and ``http.lookups``, and
2737
+ ``http.lookups`` is the copy that counts. A save keeps
2738
+ ``http.lookups`` and mirrors it to the top level, overwriting a
2739
+ top-level copy that differs; a ``lookups`` array sent only at the
2740
+ top level is dropped with no error, on create and on PUT, and both
2741
+ arrays read back null. Write ``http.lookups`` on every save;
2742
+ sending the same array at the top level too is harmless.
2737
2743
  - |-
2738
2744
  ## Static vs dynamic vs cached
2739
2745
 
@@ -2783,12 +2789,13 @@ components:
2783
2789
  - handlebars
2784
2790
  description: |
2785
2791
  Request body template for POST / PUT / PATCH lookup methods, typically
2786
- a JSON string with Handlebars placeholders (``{"email":"{{{email}}}"}``);
2792
+ a JSON string with Handlebars placeholders (``{"email":"{{email}}"}``);
2787
2793
  ignored for GET / DELETE. The record's fields sit at the top level:
2788
2794
  ``{{email}}`` renders the record's value, while ``{{record.email}}``
2789
2795
  renders empty.
2790
2796
  x-celigo-ai-guidance:
2791
2797
  - 'Put the lookup''s request template here, not in ``postBody``: a ``postBody`` saves without an error but is not kept under ``http.lookups``, so the lookup goes out with no body and the run reports no error.'
2798
+ - 'Write string values with double braces inside the quotes (``"{{email}}"``): they are JSON-escaped at runtime. With triple braces a value holding a double quote breaks the request body, and the lookup quietly finds nothing, so an existence check writes the record as new.'
2792
2799
  headers:
2793
2800
  type: array
2794
2801
  items:
@@ -2844,10 +2851,17 @@ components:
2844
2851
  - boolean
2845
2852
  - 'null'
2846
2853
  description: |
2847
- When true, a lookup miss (no matching response and no
2848
- ``default``) resolves to ``null`` and the import continues.
2849
- When false (default), a miss halts the record. May be
2850
- stored as null (treated as unset).
2854
+ When true, a lookup miss uses ``default`` (or leaves the mapped
2855
+ field out when there is none) and the record continues. When
2856
+ false, a miss fails the record: ``lookup_error`` ("Could not find
2857
+ value for static lookup: …") for a static ``map``,
2858
+ ``lookupcache_evaluation_failed`` for a cache. Omitted or null,
2859
+ a miss doesn't fail the record either: a static lookup writes
2860
+ its ``default`` if it has one, and a lookup without one (static,
2861
+ cache, or a live request that matches nothing or fails) leaves
2862
+ the mapped field out.
2863
+ x-celigo-ai-guidance:
2864
+ - Set false explicitly when a miss must stop the record. Leaving the field out lets the record through with the default or without the looked-up value, so a destination that needs the real value gets a request without it and nothing errors.
2851
2865
  useDefaultOnMultipleMatches:
2852
2866
  type: boolean
2853
2867
  description: |
@@ -5077,8 +5091,8 @@ components:
5077
5091
  - Original value indicators: "{Original Value}", "No mapping found"
5078
5092
  - Neutral values: "Other", "N/A", "Miscellaneous"
5079
5093
 
5080
- If allowFailures is false and no default is specified, the flow will fail
5081
- when encountering unmapped values.
5094
+ If allowFailures is false, a record whose value is unmapped fails and the default
5095
+ is ignored.
5082
5096
  examples:
5083
5097
  - Unknown
5084
5098
  - Other
@@ -5099,7 +5113,11 @@ components:
5099
5113
  This field determines how the system handles source values that don't exist in the map:
5100
5114
 
5101
5115
  - true: Use the default value for missing mappings and continue processing
5102
- - false: Treat missing mappings as errors, failing the record
5116
+ - false: Treat missing mappings as errors, failing the record (`lookup_error` for a
5117
+ static map, `lookupcache_evaluation_failed` for a lookup cache)
5118
+ - omitted or null: the record doesn't fail either. On an import a static lookup writes
5119
+ its default if it has one, and a static or cache lookup without one leaves the
5120
+ mapped field out of the output, with no error
5103
5121
 
5104
5122
  **Recommendation**
5105
5123
 
@@ -5113,11 +5131,14 @@ components:
5113
5131
  - All possible source values are known and controlled
5114
5132
  - Missing mappings indicate serious data problems that should be addressed
5115
5133
 
5116
- The best practice is typically to set allowFailures to true with a meaningful
5117
- default value, so flows remain operational while alerting you to missing mappings.
5134
+ A default raises no error: records that miss go out with the default value and
5135
+ nothing reports them. Use true only when that fallback is acceptable at the
5136
+ destination, and set false explicitly when a missing value must stop the record.
5118
5137
  examples:
5119
5138
  - true
5120
5139
  - false
5140
+ x-celigo-ai-guidance:
5141
+ - 'Never leave this field out to mean "fail on a miss": on an import, an omitted or null value lets a missing key through without an error (with the default, or without the mapped field when there is none). Only an explicit false fails the record.'
5121
5142
  Rdbms:
5122
5143
  type: object
5123
5144
  description: |-
@@ -12661,6 +12682,12 @@ components:
12661
12682
  - Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
12662
12683
  '$[*].Tax' (every row of a grouped record)
12663
12684
  - Wildcards like [*] extract multiple values/objects
12685
+ - A key that contains a dot needs bracket notation: `$['P.O. Number']` (or
12686
+ `$["P.O. Number"]`, `$.[P.O. Number]`). `$.P.O. Number` is read as a nested
12687
+ path: it maps nothing and the record still succeeds. Spaces, hyphens and `#`
12688
+ need no brackets (`$.Ship To Name`, `$.Tracking #`)
12689
+ - Filter expressions such as `$.items[?(@.active)]` fail the record with
12690
+ "Eval [?(expr)] prevented in JSONPath expression."
12664
12691
 
12665
12692
  ```json
12666
12693
  "extract": "$.customer.addresses[*]" // Extracts all addresses
@@ -12849,6 +12876,12 @@ components:
12849
12876
  **Usage**
12850
12877
 
12851
12878
  The lookupName refers to a named lookup defined in the lookups array of the same resource.
12879
+ On an HTTP import that is `http.lookups`: a `lookups` array sent only at the top level
12880
+ is dropped on save. On an import, a name that matches no lookup fails every record
12881
+ with "Unable to find lookup in mapping configs - <name>", and a key the lookup
12882
+ doesn't hold follows the lookup's `allowFailures`: false fails the record; true, or
12883
+ the field left out, lets the record succeed with the lookup's `default`, or without
12884
+ the mapped field when there is none.
12852
12885
 
12853
12886
  ```json
12854
12887
  {
@@ -13186,6 +13219,11 @@ components:
13186
13219
  The system creates special composite objects during processing to maintain
13187
13220
  hierarchical relationships, allowing easy access to both the current array item
13188
13221
  and its parent contexts.
13222
+
13223
+ An iterating entry keeps the `[*]`: `$.line_items` without it yields one empty
13224
+ element per item, with no error. Child extracts drop the `[*]` but keep the
13225
+ array's path (`$.line_items.sku`); `$.line_items[*].sku` maps nothing, and an
13226
+ element-relative `$.sku` reads the record root instead of the element.
13189
13227
  examples:
13190
13228
  - $.items[*]
13191
13229
  - $.order.lineItems[*]
@@ -13397,14 +13435,17 @@ components:
13397
13435
  type: string
13398
13436
  description: |
13399
13437
  **Purpose**
13400
- Required on every mapping entry. Controls whether the mapping is applied.
13438
+ Controls whether the mapping is applied. Send it on every mapping entry.
13401
13439
 
13402
13440
  **Guidance**
13403
13441
  Only `Active` rows run. `Draft` and `Inactive` rows keep their
13404
13442
  configuration, are saved with minimal validation, and are skipped at
13405
13443
  runtime and in preview; a non-Active parent skips its whole subtree
13406
- whatever its children say. The API rejects a mapping missing this field
13407
- (validation error: "Mapping object must have status field present.").
13444
+ whatever its children say. Imports (on save and in the mapper processor)
13445
+ and API response mappings reject a row missing this field (validation
13446
+ error: "Mapping object must have status field present."); a Tool's
13447
+ output mapping saves and runs one, which is why `required` doesn't
13448
+ list it.
13408
13449
  x-celigo-ai-guidance:
13409
13450
  - |-
13410
13451
  Emit `"Active"` for mappings that should run; `"Draft"` is also
@@ -13727,6 +13768,12 @@ components:
13727
13768
  - Examples: '$.customer.firstName', '$.items[0].price', '$.addresses[*].street',
13728
13769
  '$[*].Tax' (every row of a grouped record)
13729
13770
  - Wildcards like [*] extract multiple values/objects
13771
+ - A key that contains a dot needs bracket notation: `$['P.O. Number']` (or
13772
+ `$["P.O. Number"]`, `$.[P.O. Number]`). `$.P.O. Number` is read as a nested
13773
+ path: it maps nothing and the record still succeeds. Spaces, hyphens and `#`
13774
+ need no brackets (`$.Ship To Name`, `$.Tracking #`)
13775
+ - Filter expressions such as `$.items[?(@.active)]` fail the record with
13776
+ "Eval [?(expr)] prevented in JSONPath expression."
13730
13777
 
13731
13778
  ```json
13732
13779
  "extract": "$.customer.addresses[*]" // Extracts all addresses
@@ -13915,6 +13962,12 @@ components:
13915
13962
  **Usage**
13916
13963
 
13917
13964
  The lookupName refers to a named lookup defined in the lookups array of the same resource.
13965
+ On an HTTP import that is `http.lookups`: a `lookups` array sent only at the top level
13966
+ is dropped on save. On an import, a name that matches no lookup fails every record
13967
+ with "Unable to find lookup in mapping configs - <name>", and a key the lookup
13968
+ doesn't hold follows the lookup's `allowFailures`: false fails the record; true, or
13969
+ the field left out, lets the record succeed with the lookup's `default`, or without
13970
+ the mapped field when there is none.
13918
13971
 
13919
13972
  ```json
13920
13973
  {
@@ -14252,6 +14305,11 @@ components:
14252
14305
  The system creates special composite objects during processing to maintain
14253
14306
  hierarchical relationships, allowing easy access to both the current array item
14254
14307
  and its parent contexts.
14308
+
14309
+ An iterating entry keeps the `[*]`: `$.line_items` without it yields one empty
14310
+ element per item, with no error. Child extracts drop the `[*]` but keep the
14311
+ array's path (`$.line_items.sku`); `$.line_items[*].sku` maps nothing, and an
14312
+ element-relative `$.sku` reads the record root instead of the element.
14255
14313
  examples:
14256
14314
  - $.items[*]
14257
14315
  - $.order.lineItems[*]
@@ -14463,14 +14521,17 @@ components:
14463
14521
  type: string
14464
14522
  description: |
14465
14523
  **Purpose**
14466
- Required on every mapping entry. Controls whether the mapping is applied.
14524
+ Controls whether the mapping is applied. Send it on every mapping entry.
14467
14525
 
14468
14526
  **Guidance**
14469
14527
  Only `Active` rows run. `Draft` and `Inactive` rows keep their
14470
14528
  configuration, are saved with minimal validation, and are skipped at
14471
14529
  runtime and in preview; a non-Active parent skips its whole subtree
14472
- whatever its children say. The API rejects a mapping missing this field
14473
- (validation error: "Mapping object must have status field present.").
14530
+ whatever its children say. Imports (on save and in the mapper processor)
14531
+ and API response mappings reject a row missing this field (validation
14532
+ error: "Mapping object must have status field present."); a Tool's
14533
+ output mapping saves and runs one, which is why `required` doesn't
14534
+ list it.
14474
14535
  x-celigo-ai-guidance:
14475
14536
  - |-
14476
14537
  Emit `"Active"` for mappings that should run; `"Draft"` is also
@@ -15140,7 +15201,7 @@ components:
15140
15201
  description: When true, the mapped value cannot be overwritten by later mapping steps.
15141
15202
  lookupName:
15142
15203
  type: string
15143
- description: Name of an entry in the import's `lookups` array used to translate the value.
15204
+ description: Name of an entry in the import's `lookups` array (`http.lookups` on an HTTP import) used to translate the value.
15144
15205
  x-celigo-ai-guidance:
15145
15206
  - |-
15146
15207
  Name of a lookup defined on ``resource.lookups`` whose result
@@ -16592,8 +16653,9 @@ components:
16592
16653
 
16593
16654
  Lookups referenced by ``lookupName`` live on the top-level
16594
16655
  ``resource.lookups`` array (mirrored under the adaptor key for
16595
- adaptors that maintain their own copy — see the mirror invariant
16596
- on ``lookups``). Lookups are independent of this
16656
+ adaptors that maintain their own copy; on an HTTP import that
16657
+ copy, ``http.lookups``, is the one a save keeps — see the mirror
16658
+ invariant on ``lookups``). Lookups are independent of this
16597
16659
  mapping: they are neither created nor cleared automatically when
16598
16660
  this mapping changes.
16599
16661
  properties:
@@ -16712,6 +16774,12 @@ components:
16712
16774
 
16713
16775
  Both arrays MUST hold byte-for-byte identical content: write
16714
16776
  both on every save and treat them as a single logical field.
16777
+ On an HTTP import the adaptor copy decides: a save keeps
16778
+ ``http.lookups`` and mirrors it here, overwriting a copy here
16779
+ that differs, and an array sent only here is dropped on create
16780
+ and on PUT with no error. A mapping row that names one of its
16781
+ lookups then fails every record with ``Unable to find lookup in
16782
+ mapping configs - <name>``.
16715
16783
  - |-
16716
16784
  ## Shape
16717
16785
 
@@ -4031,7 +4031,7 @@ components:
4031
4031
  connection's traffic counts against the referenced connection's limit instead of its own,
4032
4032
  and its own concurrency and auto-recovery settings have no effect. One level only: the
4033
4033
  referenced connection may not itself borrow, and a connection that others borrow from
4034
- cannot start borrowing.
4034
+ cannot start borrowing. A connection cannot reference itself (422).
4035
4035
  examples:
4036
4036
  - 615dfa0742763671275b70ab
4037
4037
  x-celigo-ai-guidance:
@@ -4068,16 +4068,21 @@ components:
4068
4068
  type: boolean
4069
4069
  description: |-
4070
4070
  When true, the connection has been taken offline and is skipped during flow execution.
4071
- The platform tests the connection after a create or `PUT` and updates this shortly
4072
- afterwards (the audit log records a `system` change; `lastModified` doesn't move), so
4073
- read it again a few seconds after the write.
4071
+ It is set by the connection test a create or `PUT` runs: the result arrives in the
4072
+ write's response or, when the target is slow to answer, shortly afterwards (the audit
4073
+ log records a `system` change; `lastModified` doesn't move), so read it again a few
4074
+ seconds after the write. On an `http` connection the write runs the test only when
4075
+ `http.ping` is configured, and an `http` connection that was never tested has no
4076
+ `offline` key.
4074
4077
  readOnly: true
4075
4078
  needsAuthorization:
4076
4079
  type: boolean
4077
4080
  readOnly: true
4078
4081
  description: |-
4079
4082
  OAuth handshake state. Celigo's OAuth callback sets it to `false` once the user consents
4080
- and the tokens are stored (see `GET /v1/connection/{_id}/oauth2`).
4083
+ and the tokens are stored (see `GET /v1/connection/{_id}/oauth2`). A connection that
4084
+ was never authorized usually has no `needsAuthorization` key, so its absence does not
4085
+ mean the connection is authorized.
4081
4086
  _sourceId:
4082
4087
  type: string
4083
4088
  format: objectId
@@ -5052,15 +5057,18 @@ components:
5052
5057
  clientId:
5053
5058
  type: string
5054
5059
  description: |
5055
- OAuth client ID (application ID) registered with the API provider.
5056
- Required for all OAuth 2.0 grant types.
5060
+ OAuth client ID (application ID) registered with the API provider. An `http`
5061
+ connection takes the app from a `custom_oauth2` iClient referenced by `http._iClientId`
5062
+ (an `mcp` connection from `mcp.http._iClientId`) and doesn't store this field: a create
5063
+ that sends `clientId` and `clientSecret` here answers 201 without either (and stores
5064
+ `useIClientFields: true` unless `false` is sent).
5057
5065
  examples:
5058
5066
  - 0oa1b2c3d4EXAMPLE5
5059
5067
  clientSecret:
5060
5068
  type: string
5061
5069
  description: |
5062
- OAuth client secret (encrypted at rest).
5063
- Required for "authorizecode" and "clientcredentials" grant types.
5070
+ OAuth client secret (encrypted at rest). Not stored on an `http` connection: the secret
5071
+ belongs on the iClient (see `clientId`).
5064
5072
  writeOnly: true
5065
5073
  examples:
5066
5074
  - cs_abc123EXAMPLE456secret
@@ -5276,9 +5284,11 @@ components:
5276
5284
  - "authorizecode" — Authorization Code flow (browser-based user consent).
5277
5285
  Requires authURI, tokenURI, and user authorization via browser.
5278
5286
  - "clientcredentials" — Client Credentials flow (server-to-server, no user).
5279
- Requires tokenURI, clientId, clientSecret.
5287
+ Requires tokenURI.
5280
5288
  - "password" — Resource Owner Password flow (username/password exchange).
5281
- Requires tokenURI, username, password, clientId, clientSecret.
5289
+ Requires tokenURI, username, password.
5290
+ - On an `http` connection the client ID and secret are never stored here: a
5291
+ `custom_oauth2` iClient referenced by `http._iClientId` supplies them.
5282
5292
  JWT:
5283
5293
  type: object
5284
5294
  description: |-