ultracart_api 4.1.146 → 4.1.148

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '036368fdee38b26ea356d002fd6d655ea9f4759ed13b01d66fd7b99737452573'
4
- data.tar.gz: e5ee50e86b0e48f43fe29c513f6d90f0fc8c0de9d2b97f46ca3686a90cf46a2c
3
+ metadata.gz: ba4977a62acb33c11fa5fc16903ffa679e996f053ca6c5920f6d2f8c450c6cce
4
+ data.tar.gz: f8805e823b86f7ae7b56b86e2ab8dd52aec339076104437c81cfed9610dab404
5
5
  SHA512:
6
- metadata.gz: 35da706c21aea107d4af2816c082c18c9dcf0198fc776d6b8a2318cbdcb9ec849b5440fd9b8e284680e58c814ded1754288b4234eef3323f9786512097d06723
7
- data.tar.gz: 34ac9ffd5893e93a84f325120c40e03a5e2e0a64fd2195cae5af3aabfb353b21af54c2c9f73e4d906d5af361822f35482e6971f0c041c3889a51d5be20f3b91a
6
+ metadata.gz: 5c2d29199eb34ebb2d86c3071c7c185ffaf2f077f8206be73906468424bd21406c26615c26daec6a3e443022dabb5b1fd66cb5a01a2a5b069171d6439af75702
7
+ data.tar.gz: d51e2f0a95eea2719be0767245cb3a203dbf13b79f2627169165c317f91e9e134a948b4dcee4c70d00319f4b165a0200270b64857bb2955334f964e31999e442
data/README.md CHANGED
@@ -7,7 +7,7 @@ Note: Every method has a sample for every language. See https://github.com/Ultr
7
7
  This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
8
8
 
9
9
  - API version: 2.0.0
10
- - Package version: 4.1.146
10
+ - Package version: 4.1.148
11
11
  - Build package: org.openapitools.codegen.languages.RubyClientCodegen
12
12
  - For more information, please visit [http://www.ultracart.com/api/](http://www.ultracart.com/api/)
13
13
 
@@ -16,7 +16,7 @@ This SDK is automatically generated by the [OpenAPI Generator](https://openapi-g
16
16
  gemfile:
17
17
 
18
18
  ```shell
19
- gem 'ultracart_api', '4.1.146'
19
+ gem 'ultracart_api', '4.1.148'
20
20
  ```
21
21
 
22
22
  install:
@@ -1084,6 +1084,7 @@ Class | Method | HTTP request | Description
1084
1084
  - [UltracartClient::ConversationVirtualAgentBudgetResponse](docs/ConversationVirtualAgentBudgetResponse.md)
1085
1085
  - [UltracartClient::ConversationVirtualAgentCapabilities](docs/ConversationVirtualAgentCapabilities.md)
1086
1086
  - [UltracartClient::ConversationVirtualAgentCapabilitiesResponse](docs/ConversationVirtualAgentCapabilitiesResponse.md)
1087
+ - [UltracartClient::ConversationVirtualAgentCapabilityCustomCollection](docs/ConversationVirtualAgentCapabilityCustomCollection.md)
1087
1088
  - [UltracartClient::ConversationVirtualAgentCapabilityZohoDeskDepartment](docs/ConversationVirtualAgentCapabilityZohoDeskDepartment.md)
1088
1089
  - [UltracartClient::ConversationWebchatContext](docs/ConversationWebchatContext.md)
1089
1090
  - [UltracartClient::ConversationWebchatQueueStatus](docs/ConversationWebchatQueueStatus.md)
@@ -1927,6 +1928,8 @@ Not every change is committed to every SDK.
1927
1928
 
1928
1929
  | Version | Date | Comments |
1929
1930
  | --: | :-: | --- |
1931
+ | 4.1.148 | 09/04/2026 | conversations - added ai agent capabilities |
1932
+ | 4.1.147 | 09/04/2026 | sfvb - internal testing |
1930
1933
  | 4.1.146 | 09/03/2026 | sfvb - internal testing |
1931
1934
  | 4.1.145 | 09/02/2026 | sfvb - internal testing |
1932
1935
  | 4.1.144 | 09/02/2026 | sfvb - internal testing |
@@ -4,8 +4,11 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
+ | **access_custom_collections** | **Boolean** | Permission flag to allow this Agent to search the merchant's custom Typesense collections. | [optional] |
7
8
  | **access_storefront_and_item** | **Boolean** | Permission flag to allow this Agent access to the storefront and item information. | [optional] |
8
9
  | **cancel_subscription** | **Boolean** | | [optional] |
10
+ | **custom_collection_oids** | **Object** | The custom collections this Agent is allowed to search. Empty means none, even when access_custom_collections is true. | [optional] |
11
+ | **custom_collections** | [**Array<ConversationVirtualAgentCapabilityCustomCollection>**](ConversationVirtualAgentCapabilityCustomCollection.md) | Read only. All of the merchant's custom collections, to populate the selection list for custom_collection_oids. Changes here are ignored. | [optional] |
9
12
  | **delay_subscription** | **Boolean** | | [optional] |
10
13
  | **generate_coupon** | **Boolean** | Permission flag to allow this Agent to generate coupons based upon the agent prompt instructions | [optional] |
11
14
  | **lookup_order_information** | **Boolean** | | [optional] |
@@ -27,8 +30,11 @@
27
30
  require 'ultracart_api'
28
31
 
29
32
  instance = UltracartClient::ConversationVirtualAgentCapabilities.new(
33
+ access_custom_collections: null,
30
34
  access_storefront_and_item: null,
31
35
  cancel_subscription: null,
36
+ custom_collection_oids: null,
37
+ custom_collections: null,
32
38
  delay_subscription: null,
33
39
  generate_coupon: null,
34
40
  lookup_order_information: null,
@@ -0,0 +1,30 @@
1
+ # UltracartClient::ConversationVirtualAgentCapabilityCustomCollection
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **ai_description** | **String** | Merchant authored description of what is in this collection, which is what the agent sees when deciding whether to search it | [optional] |
8
+ | **ai_enabled** | **Boolean** | True if this collection has been enabled for AI access in its own configuration. A collection that is not enabled cannot be searched even if it is selected here. | [optional] |
9
+ | **collection_name** | **String** | Merchant assigned name of the collection | [optional] |
10
+ | **error_message** | **String** | Error from the last build, if it failed. A collection with an error will return nothing to the agent, so this is worth surfacing next to the selection. | [optional] |
11
+ | **last_update_dts** | **String** | Date/time the collection was last rebuilt from the merchant's BigQuery query | [optional] |
12
+ | **record_count** | **Integer** | Number of records loaded on the last build | [optional] |
13
+ | **typesense_custom_collection_oid** | **Integer** | The identifier to place in custom_collection_oids to grant the agent access to this collection | [optional] |
14
+
15
+ ## Example
16
+
17
+ ```ruby
18
+ require 'ultracart_api'
19
+
20
+ instance = UltracartClient::ConversationVirtualAgentCapabilityCustomCollection.new(
21
+ ai_description: null,
22
+ ai_enabled: null,
23
+ collection_name: null,
24
+ error_message: null,
25
+ last_update_dts: null,
26
+ record_count: null,
27
+ typesense_custom_collection_oid: null
28
+ )
29
+ ```
30
+
data/docs/SfvbApi.md CHANGED
@@ -103,7 +103,7 @@ end
103
103
 
104
104
  Create a preview session
105
105
 
106
- Returns a server generated session id to push containers into. The id is not caller supplied, because concurrent agents choosing their own would be free to collide, and the browser editor's habit of minting one with Math.random is not a property worth carrying into an API. Expires after eight hours and can be deleted sooner. Requires a token that resolves to a user, so use the device authorization flow.
106
+ Returns a server generated session id to push containers into, and opens the session so that id exists rather than merely being random. The id is not caller supplied, because concurrent agents choosing their own would be free to collide, and the browser editor's habit of minting one with Math.random is not a property worth carrying into an API. Expires after eight hours and can be deleted sooner. Requires a token that resolves to a user, so use the device authorization flow.
107
107
 
108
108
 
109
109
  ### Examples
@@ -1554,7 +1554,7 @@ end
1554
1554
 
1555
1555
  Push containers into a preview session
1556
1556
 
1557
- Stores compiled containers against a session created by createSfvbPreviewSession. Replaces whatever the session held. Nothing durable is written. Requires a token that resolves to a user, so use the device authorization flow.
1557
+ Stores compiled containers against a session created by createSfvbPreviewSession. Replaces whatever the session held. The session must exist - this does not create one, so a deleted, expired or never issued id is a 404 rather than a new session. Nothing durable is written. Requires a token that resolves to a user, so use the device authorization flow.
1558
1558
 
1559
1559
 
1560
1560
  ### Examples
@@ -7,7 +7,7 @@
7
7
  | **cjson** | **String** | The container JSON. Runtime state is stripped on the way out. | [optional] |
8
8
  | **container_name** | **String** | Container name. | [optional] |
9
9
  | **hash_sha256** | **String** | SHA-256 of the cjson. Send back as If-Match when writing. | [optional] |
10
- | **last_modified** | **String** | When the container was last modified, in the store's own record of it. Present for email, postcardfront and postcardback. Absent for upsell and item, because those tables carry no modification timestamp at all - for those two, read created_dts on the current entry of container_versions, which records when this API last wrote the container. Note that a postcard keeps one timestamp for both of its sides, so writing the front moves the value the back reports. | [optional] |
10
+ | **last_modified** | **String** | When the container was last modified, in the store's own record of it. Every owner type reports this. It is absent only when the container has never been written since the store began recording it, so treat an absent value as unknown rather than as never modified. Two behaviours worth knowing. A postcard keeps one timestamp for both of its sides, so writing the front moves the value the back reports. An upsell container that is rewritten with byte identical content keeps its original date rather than moving to now, because the timestamp tracks changes to the container and not writes to the offer. | [optional] |
11
11
  | **owner_object_id** | **String** | Identifier of the owning object within its store. | [optional] |
12
12
  | **owner_type** | **String** | Where this container lives. | [optional] |
13
13
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **folder** | **String** | Directory name for the new theme under /themes/. Letters and numbers; it is cleansed before use. Must not already exist - a collision is refused rather than resolved, because silently creating a differently named theme leaves you unsure what you made. | [optional] |
7
+ | **folder** | **String** | Directory name for the new theme under /themes/. Letters and numbers, one path segment. Used verbatim - anything that is not already a valid directory name is refused rather than adjusted, because this call does not return the new theme's oid and you find your copy by matching the target_path you asked for. Must not already exist - a collision is refused rather than resolved, because silently creating a differently named theme leaves you unsure what you made. | [optional] |
8
8
  | **target_storefront_oid** | **Integer** | Storefront to create the copy on. Defaults to the storefront in the path. Supply it only when copying a theme between storefronts you own. | [optional] |
9
9
  | **theme_name** | **String** | Name for the new theme. | [optional] |
10
10
 
@@ -15,7 +15,7 @@
15
15
  | **status** | **String** | Raw job status. | [optional] |
16
16
  | **submitted_dts** | **String** | When the job was queued. | [optional] |
17
17
  | **success** | **Boolean** | True only when the job finished successfully. Check complete first. | [optional] |
18
- | **target_path** | **String** | Path the new theme was created at. Returned when the job is started; the theme oid itself is NOT returned, because the job's product is a plain text report rather than a structured result. Once the job completes, list themes and match on this path. | [optional] |
18
+ | **target_path** | **String** | Path the new theme is being created at. Returned when the job is started and on every poll, so you do not have to keep the response that started it. The theme oid itself is NOT returned, so once the job completes you list themes and match on this path. It is also what success is checked against - a finished job whose theme is not here reports success false rather than pretending. | [optional] |
19
19
 
20
20
  ## Example
21
21
 
@@ -7,10 +7,16 @@
7
7
  | **container_manager_version** | **String** | Container manager version used to compile for this merchant. | [optional] |
8
8
  | **container_versions_retained** | **Integer** | Versions kept per non-file container before the oldest are pruned. Beyond this, history is gone - not merely paginated. | [optional] |
9
9
  | **element_count** | **Integer** | Number of element types this version recognizes. | [optional] |
10
+ | **max_asset_bytes** | **Integer** | Largest binary asset that can be uploaded, in bytes, for every accepted type except video. | [optional] |
10
11
  | **max_cjson_bytes** | **Integer** | Largest CJSON document that will be parsed, in bytes. | [optional] |
12
+ | **max_directory_entries** | **Integer** | Most entries one directory listing returns. Asking for more is silently reduced to this rather than refused, so compare against it instead of trusting that you got what you asked for. The listing does set a truncated flag when it drops entries. | [optional] |
13
+ | **max_library_results_per_page** | **Integer** | Most element library results one page returns. Asking for more is silently reduced to this, and unlike the directory listing there is no truncation flag on the response, so this number is the only way to know a larger request was cut. | [optional] |
11
14
  | **max_preview_session_bytes** | **Integer** | Largest payload one preview session may hold, in bytes. | [optional] |
15
+ | **max_revertable_bytes** | **Integer** | Largest historical version files/revert will restore, in bytes. Higher than max_text_read_bytes deliberately - putting back a version that is already stored is cheaper than serving it as JSON, so a version too large to read can still be reverted to. | [optional] |
12
16
  | **max_search_results** | **Integer** | Hard ceiling on file search results per page. | [optional] |
13
- | **max_template_bytes** | **Integer** | Largest template file that can be written, in bytes. | [optional] |
17
+ | **max_template_bytes** | **Integer** | Largest .vm template that can be written, in bytes. Narrow on purpose - it gates writes, only for files ending in .vm, and it is not the ceiling on reading a file back. Use max_text_read_bytes for that. | [optional] |
18
+ | **max_text_read_bytes** | **Integer** | Largest file files/content will return as text, in bytes. A file above this is refused with sfvb.too_large however small its history versions are. Bigger than max_template_bytes, so a file can be readable here and still be too large to write back as a template. Anything above this is still readable in full through files/download, which returns raw bytes and applies no ceiling. | [optional] |
19
+ | **max_video_bytes** | **Integer** | Largest video that can be uploaded, in bytes. Video is the one type allowed past max_asset_bytes. | [optional] |
14
20
  | **max_widget_ids_per_request** | **Integer** | Most widget ids that can be reserved in one call. | [optional] |
15
21
  | **preview_session_ttl_seconds** | **Integer** | Seconds a preview session survives before expiring. | [optional] |
16
22
  | **release** | **String** | Release channel selected for this merchant. | [optional] |
@@ -24,10 +30,16 @@ instance = UltracartClient::SfvbVersionResponse.new(
24
30
  container_manager_version: null,
25
31
  container_versions_retained: null,
26
32
  element_count: null,
33
+ max_asset_bytes: null,
27
34
  max_cjson_bytes: null,
35
+ max_directory_entries: null,
36
+ max_library_results_per_page: null,
28
37
  max_preview_session_bytes: null,
38
+ max_revertable_bytes: null,
29
39
  max_search_results: null,
30
40
  max_template_bytes: null,
41
+ max_text_read_bytes: null,
42
+ max_video_bytes: null,
31
43
  max_widget_ids_per_request: null,
32
44
  preview_session_ttl_seconds: null,
33
45
  release: null
@@ -102,7 +102,7 @@ module UltracartClient
102
102
  end
103
103
 
104
104
  # Create a preview session
105
- # Returns a server generated session id to push containers into. The id is not caller supplied, because concurrent agents choosing their own would be free to collide, and the browser editor's habit of minting one with Math.random is not a property worth carrying into an API. Expires after eight hours and can be deleted sooner. Requires a token that resolves to a user, so use the device authorization flow.
105
+ # Returns a server generated session id to push containers into, and opens the session so that id exists rather than merely being random. The id is not caller supplied, because concurrent agents choosing their own would be free to collide, and the browser editor's habit of minting one with Math.random is not a property worth carrying into an API. Expires after eight hours and can be deleted sooner. Requires a token that resolves to a user, so use the device authorization flow.
106
106
  # @param storefront_oid [Integer]
107
107
  # @param [Hash] opts the optional parameters
108
108
  # @return [SfvbPreviewSessionResponse]
@@ -112,7 +112,7 @@ module UltracartClient
112
112
  end
113
113
 
114
114
  # Create a preview session
115
- # Returns a server generated session id to push containers into. The id is not caller supplied, because concurrent agents choosing their own would be free to collide, and the browser editor's habit of minting one with Math.random is not a property worth carrying into an API. Expires after eight hours and can be deleted sooner. Requires a token that resolves to a user, so use the device authorization flow.
115
+ # Returns a server generated session id to push containers into, and opens the session so that id exists rather than merely being random. The id is not caller supplied, because concurrent agents choosing their own would be free to collide, and the browser editor's habit of minting one with Math.random is not a property worth carrying into an API. Expires after eight hours and can be deleted sooner. Requires a token that resolves to a user, so use the device authorization flow.
116
116
  # @param storefront_oid [Integer]
117
117
  # @param [Hash] opts the optional parameters
118
118
  # @return [Array<(SfvbPreviewSessionResponse, Integer, Hash)>] SfvbPreviewSessionResponse data, response status code and response headers
@@ -1990,7 +1990,7 @@ module UltracartClient
1990
1990
  end
1991
1991
 
1992
1992
  # Push containers into a preview session
1993
- # Stores compiled containers against a session created by createSfvbPreviewSession. Replaces whatever the session held. Nothing durable is written. Requires a token that resolves to a user, so use the device authorization flow.
1993
+ # Stores compiled containers against a session created by createSfvbPreviewSession. Replaces whatever the session held. The session must exist - this does not create one, so a deleted, expired or never issued id is a 404 rather than a new session. Nothing durable is written. Requires a token that resolves to a user, so use the device authorization flow.
1994
1994
  # @param storefront_oid [Integer]
1995
1995
  # @param preview_session_id [String]
1996
1996
  # @param preview_session [SfvbPreviewSessionRequest] Containers to stage in the preview session
@@ -2003,7 +2003,7 @@ module UltracartClient
2003
2003
  end
2004
2004
 
2005
2005
  # Push containers into a preview session
2006
- # Stores compiled containers against a session created by createSfvbPreviewSession. Replaces whatever the session held. Nothing durable is written. Requires a token that resolves to a user, so use the device authorization flow.
2006
+ # Stores compiled containers against a session created by createSfvbPreviewSession. Replaces whatever the session held. The session must exist - this does not create one, so a deleted, expired or never issued id is a 404 rather than a new session. Nothing durable is written. Requires a token that resolves to a user, so use the device authorization flow.
2007
2007
  # @param storefront_oid [Integer]
2008
2008
  # @param preview_session_id [String]
2009
2009
  # @param preview_session [SfvbPreviewSessionRequest] Containers to stage in the preview session
@@ -15,11 +15,20 @@ require 'time'
15
15
 
16
16
  module UltracartClient
17
17
  class ConversationVirtualAgentCapabilities
18
+ # Permission flag to allow this Agent to search the merchant's custom Typesense collections.
19
+ attr_accessor :access_custom_collections
20
+
18
21
  # Permission flag to allow this Agent access to the storefront and item information.
19
22
  attr_accessor :access_storefront_and_item
20
23
 
21
24
  attr_accessor :cancel_subscription
22
25
 
26
+ # The custom collections this Agent is allowed to search. Empty means none, even when access_custom_collections is true.
27
+ attr_accessor :custom_collection_oids
28
+
29
+ # Read only. All of the merchant's custom collections, to populate the selection list for custom_collection_oids. Changes here are ignored.
30
+ attr_accessor :custom_collections
31
+
23
32
  attr_accessor :delay_subscription
24
33
 
25
34
  # Permission flag to allow this Agent to generate coupons based upon the agent prompt instructions
@@ -79,8 +88,11 @@ module UltracartClient
79
88
  # Attribute mapping from ruby-style variable name to JSON key.
80
89
  def self.attribute_map
81
90
  {
91
+ :'access_custom_collections' => :'access_custom_collections',
82
92
  :'access_storefront_and_item' => :'access_storefront_and_item',
83
93
  :'cancel_subscription' => :'cancel_subscription',
94
+ :'custom_collection_oids' => :'custom_collection_oids',
95
+ :'custom_collections' => :'custom_collections',
84
96
  :'delay_subscription' => :'delay_subscription',
85
97
  :'generate_coupon' => :'generate_coupon',
86
98
  :'lookup_order_information' => :'lookup_order_information',
@@ -106,8 +118,11 @@ module UltracartClient
106
118
  # Attribute type mapping.
107
119
  def self.openapi_types
108
120
  {
121
+ :'access_custom_collections' => :'Boolean',
109
122
  :'access_storefront_and_item' => :'Boolean',
110
123
  :'cancel_subscription' => :'Boolean',
124
+ :'custom_collection_oids' => :'Object',
125
+ :'custom_collections' => :'Array<ConversationVirtualAgentCapabilityCustomCollection>',
111
126
  :'delay_subscription' => :'Boolean',
112
127
  :'generate_coupon' => :'Boolean',
113
128
  :'lookup_order_information' => :'Boolean',
@@ -146,6 +161,10 @@ module UltracartClient
146
161
  h[k.to_sym] = v
147
162
  }
148
163
 
164
+ if attributes.key?(:'access_custom_collections')
165
+ self.access_custom_collections = attributes[:'access_custom_collections']
166
+ end
167
+
149
168
  if attributes.key?(:'access_storefront_and_item')
150
169
  self.access_storefront_and_item = attributes[:'access_storefront_and_item']
151
170
  end
@@ -154,6 +173,16 @@ module UltracartClient
154
173
  self.cancel_subscription = attributes[:'cancel_subscription']
155
174
  end
156
175
 
176
+ if attributes.key?(:'custom_collection_oids')
177
+ self.custom_collection_oids = attributes[:'custom_collection_oids']
178
+ end
179
+
180
+ if attributes.key?(:'custom_collections')
181
+ if (value = attributes[:'custom_collections']).is_a?(Array)
182
+ self.custom_collections = value
183
+ end
184
+ end
185
+
157
186
  if attributes.key?(:'delay_subscription')
158
187
  self.delay_subscription = attributes[:'delay_subscription']
159
188
  end
@@ -243,8 +272,11 @@ module UltracartClient
243
272
  def ==(o)
244
273
  return true if self.equal?(o)
245
274
  self.class == o.class &&
275
+ access_custom_collections == o.access_custom_collections &&
246
276
  access_storefront_and_item == o.access_storefront_and_item &&
247
277
  cancel_subscription == o.cancel_subscription &&
278
+ custom_collection_oids == o.custom_collection_oids &&
279
+ custom_collections == o.custom_collections &&
248
280
  delay_subscription == o.delay_subscription &&
249
281
  generate_coupon == o.generate_coupon &&
250
282
  lookup_order_information == o.lookup_order_information &&
@@ -270,7 +302,7 @@ module UltracartClient
270
302
  # Calculates hash code according to all attributes.
271
303
  # @return [Integer] Hash code
272
304
  def hash
273
- [access_storefront_and_item, cancel_subscription, delay_subscription, generate_coupon, lookup_order_information, lookup_subscription_information, open_support_ticket, open_support_ticket_channel, open_support_ticket_channel_email, open_support_ticket_zoho_desk_department_id, pause_subscription, resume_subscription, transfer_chat_to_live_agent, update_subscription_credit_card, zoho_desk_available, zoho_desk_departments].hash
305
+ [access_custom_collections, access_storefront_and_item, cancel_subscription, custom_collection_oids, custom_collections, delay_subscription, generate_coupon, lookup_order_information, lookup_subscription_information, open_support_ticket, open_support_ticket_channel, open_support_ticket_channel_email, open_support_ticket_zoho_desk_department_id, pause_subscription, resume_subscription, transfer_chat_to_live_agent, update_subscription_credit_card, zoho_desk_available, zoho_desk_departments].hash
274
306
  end
275
307
 
276
308
  # Builds the object from hash
@@ -0,0 +1,280 @@
1
+ =begin
2
+ #UltraCart Rest API V2
3
+
4
+ #UltraCart REST API Version 2
5
+
6
+ The version of the OpenAPI document: 2.0.0
7
+ Contact: support@ultracart.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 6.0.1-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module UltracartClient
17
+ class ConversationVirtualAgentCapabilityCustomCollection
18
+ # Merchant authored description of what is in this collection, which is what the agent sees when deciding whether to search it
19
+ attr_accessor :ai_description
20
+
21
+ # True if this collection has been enabled for AI access in its own configuration. A collection that is not enabled cannot be searched even if it is selected here.
22
+ attr_accessor :ai_enabled
23
+
24
+ # Merchant assigned name of the collection
25
+ attr_accessor :collection_name
26
+
27
+ # Error from the last build, if it failed. A collection with an error will return nothing to the agent, so this is worth surfacing next to the selection.
28
+ attr_accessor :error_message
29
+
30
+ # Date/time the collection was last rebuilt from the merchant's BigQuery query
31
+ attr_accessor :last_update_dts
32
+
33
+ # Number of records loaded on the last build
34
+ attr_accessor :record_count
35
+
36
+ # The identifier to place in custom_collection_oids to grant the agent access to this collection
37
+ attr_accessor :typesense_custom_collection_oid
38
+
39
+ # Attribute mapping from ruby-style variable name to JSON key.
40
+ def self.attribute_map
41
+ {
42
+ :'ai_description' => :'ai_description',
43
+ :'ai_enabled' => :'ai_enabled',
44
+ :'collection_name' => :'collection_name',
45
+ :'error_message' => :'error_message',
46
+ :'last_update_dts' => :'last_update_dts',
47
+ :'record_count' => :'record_count',
48
+ :'typesense_custom_collection_oid' => :'typesense_custom_collection_oid'
49
+ }
50
+ end
51
+
52
+ # Returns all the JSON keys this model knows about
53
+ def self.acceptable_attributes
54
+ attribute_map.values
55
+ end
56
+
57
+ # Attribute type mapping.
58
+ def self.openapi_types
59
+ {
60
+ :'ai_description' => :'String',
61
+ :'ai_enabled' => :'Boolean',
62
+ :'collection_name' => :'String',
63
+ :'error_message' => :'String',
64
+ :'last_update_dts' => :'String',
65
+ :'record_count' => :'Integer',
66
+ :'typesense_custom_collection_oid' => :'Integer'
67
+ }
68
+ end
69
+
70
+ # List of attributes with nullable: true
71
+ def self.openapi_nullable
72
+ Set.new([
73
+ ])
74
+ end
75
+
76
+ # Initializes the object
77
+ # @param [Hash] attributes Model attributes in the form of hash
78
+ def initialize(attributes = {})
79
+ if (!attributes.is_a?(Hash))
80
+ fail ArgumentError, "The input argument (attributes) must be a hash in `UltracartClient::ConversationVirtualAgentCapabilityCustomCollection` initialize method"
81
+ end
82
+
83
+ # check to see if the attribute exists and convert string to symbol for hash key
84
+ attributes = attributes.each_with_object({}) { |(k, v), h|
85
+ if (!self.class.attribute_map.key?(k.to_sym))
86
+ fail ArgumentError, "`#{k}` is not a valid attribute in `UltracartClient::ConversationVirtualAgentCapabilityCustomCollection`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
87
+ end
88
+ h[k.to_sym] = v
89
+ }
90
+
91
+ if attributes.key?(:'ai_description')
92
+ self.ai_description = attributes[:'ai_description']
93
+ end
94
+
95
+ if attributes.key?(:'ai_enabled')
96
+ self.ai_enabled = attributes[:'ai_enabled']
97
+ end
98
+
99
+ if attributes.key?(:'collection_name')
100
+ self.collection_name = attributes[:'collection_name']
101
+ end
102
+
103
+ if attributes.key?(:'error_message')
104
+ self.error_message = attributes[:'error_message']
105
+ end
106
+
107
+ if attributes.key?(:'last_update_dts')
108
+ self.last_update_dts = attributes[:'last_update_dts']
109
+ end
110
+
111
+ if attributes.key?(:'record_count')
112
+ self.record_count = attributes[:'record_count']
113
+ end
114
+
115
+ if attributes.key?(:'typesense_custom_collection_oid')
116
+ self.typesense_custom_collection_oid = attributes[:'typesense_custom_collection_oid']
117
+ end
118
+ end
119
+
120
+ # Show invalid properties with the reasons. Usually used together with valid?
121
+ # @return Array for valid properties with the reasons
122
+ def list_invalid_properties
123
+ invalid_properties = Array.new
124
+ invalid_properties
125
+ end
126
+
127
+ # Check to see if the all the properties in the model are valid
128
+ # @return true if the model is valid
129
+ def valid?
130
+ true
131
+ end
132
+
133
+ # Checks equality by comparing each attribute.
134
+ # @param [Object] Object to be compared
135
+ def ==(o)
136
+ return true if self.equal?(o)
137
+ self.class == o.class &&
138
+ ai_description == o.ai_description &&
139
+ ai_enabled == o.ai_enabled &&
140
+ collection_name == o.collection_name &&
141
+ error_message == o.error_message &&
142
+ last_update_dts == o.last_update_dts &&
143
+ record_count == o.record_count &&
144
+ typesense_custom_collection_oid == o.typesense_custom_collection_oid
145
+ end
146
+
147
+ # @see the `==` method
148
+ # @param [Object] Object to be compared
149
+ def eql?(o)
150
+ self == o
151
+ end
152
+
153
+ # Calculates hash code according to all attributes.
154
+ # @return [Integer] Hash code
155
+ def hash
156
+ [ai_description, ai_enabled, collection_name, error_message, last_update_dts, record_count, typesense_custom_collection_oid].hash
157
+ end
158
+
159
+ # Builds the object from hash
160
+ # @param [Hash] attributes Model attributes in the form of hash
161
+ # @return [Object] Returns the model itself
162
+ def self.build_from_hash(attributes)
163
+ new.build_from_hash(attributes)
164
+ end
165
+
166
+ # Builds the object from hash
167
+ # @param [Hash] attributes Model attributes in the form of hash
168
+ # @return [Object] Returns the model itself
169
+ def build_from_hash(attributes)
170
+ return nil unless attributes.is_a?(Hash)
171
+ attributes = attributes.transform_keys(&:to_sym)
172
+ self.class.openapi_types.each_pair do |key, type|
173
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
174
+ self.send("#{key}=", nil)
175
+ elsif type =~ /\AArray<(.*)>/i
176
+ # check to ensure the input is an array given that the attribute
177
+ # is documented as an array but the input is not
178
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
179
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
180
+ end
181
+ elsif !attributes[self.class.attribute_map[key]].nil?
182
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
183
+ end
184
+ end
185
+
186
+ self
187
+ end
188
+
189
+ # Deserializes the data based on type
190
+ # @param string type Data type
191
+ # @param string value Value to be deserialized
192
+ # @return [Object] Deserialized data
193
+ def _deserialize(type, value)
194
+ case type.to_sym
195
+ when :Time
196
+ Time.parse(value)
197
+ when :Date
198
+ Date.parse(value)
199
+ when :String
200
+ value.to_s
201
+ when :Integer
202
+ value.to_i
203
+ when :Float
204
+ value.to_f
205
+ when :Boolean
206
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
207
+ true
208
+ else
209
+ false
210
+ end
211
+ when :Object
212
+ # generic object (usually a Hash), return directly
213
+ value
214
+ when /\AArray<(?<inner_type>.+)>\z/
215
+ inner_type = Regexp.last_match[:inner_type]
216
+ value.map { |v| _deserialize(inner_type, v) }
217
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
218
+ k_type = Regexp.last_match[:k_type]
219
+ v_type = Regexp.last_match[:v_type]
220
+ {}.tap do |hash|
221
+ value.each do |k, v|
222
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
223
+ end
224
+ end
225
+ else # model
226
+ # models (e.g. Pet) or oneOf
227
+ klass = UltracartClient.const_get(type)
228
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
229
+ end
230
+ end
231
+
232
+ # Returns the string representation of the object
233
+ # @return [String] String presentation of the object
234
+ def to_s
235
+ to_hash.to_s
236
+ end
237
+
238
+ # to_body is an alias to to_hash (backward compatibility)
239
+ # @return [Hash] Returns the object in the form of hash
240
+ def to_body
241
+ to_hash
242
+ end
243
+
244
+ # Returns the object in the form of hash
245
+ # @return [Hash] Returns the object in the form of hash
246
+ def to_hash
247
+ hash = {}
248
+ self.class.attribute_map.each_pair do |attr, param|
249
+ value = self.send(attr)
250
+ if value.nil?
251
+ is_nullable = self.class.openapi_nullable.include?(attr)
252
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
253
+ end
254
+
255
+ hash[param] = _to_hash(value)
256
+ end
257
+ hash
258
+ end
259
+
260
+ # Outputs non-array value in the form of hash
261
+ # For object, use to_hash. Otherwise, just return the value
262
+ # @param [Object] value Any valid value
263
+ # @return [Hash] Returns the value in the form of hash
264
+ def _to_hash(value)
265
+ if value.is_a?(Array)
266
+ value.compact.map { |v| _to_hash(v) }
267
+ elsif value.is_a?(Hash)
268
+ {}.tap do |hash|
269
+ value.each { |k, v| hash[k] = _to_hash(v) }
270
+ end
271
+ elsif value.respond_to? :to_hash
272
+ value.to_hash
273
+ else
274
+ value
275
+ end
276
+ end
277
+
278
+ end
279
+
280
+ end
@@ -24,7 +24,7 @@ module UltracartClient
24
24
  # SHA-256 of the cjson. Send back as If-Match when writing.
25
25
  attr_accessor :hash_sha256
26
26
 
27
- # When the container was last modified, in the store's own record of it. Present for email, postcardfront and postcardback. Absent for upsell and item, because those tables carry no modification timestamp at all - for those two, read created_dts on the current entry of container_versions, which records when this API last wrote the container. Note that a postcard keeps one timestamp for both of its sides, so writing the front moves the value the back reports.
27
+ # When the container was last modified, in the store's own record of it. Every owner type reports this. It is absent only when the container has never been written since the store began recording it, so treat an absent value as unknown rather than as never modified. Two behaviours worth knowing. A postcard keeps one timestamp for both of its sides, so writing the front moves the value the back reports. An upsell container that is rewritten with byte identical content keeps its original date rather than moving to now, because the timestamp tracks changes to the container and not writes to the offer.
28
28
  attr_accessor :last_modified
29
29
 
30
30
  # Identifier of the owning object within its store.
@@ -15,7 +15,7 @@ require 'time'
15
15
 
16
16
  module UltracartClient
17
17
  class SfvbThemeDuplicateRequest
18
- # Directory name for the new theme under /themes/. Letters and numbers; it is cleansed before use. Must not already exist - a collision is refused rather than resolved, because silently creating a differently named theme leaves you unsure what you made.
18
+ # Directory name for the new theme under /themes/. Letters and numbers, one path segment. Used verbatim - anything that is not already a valid directory name is refused rather than adjusted, because this call does not return the new theme's oid and you find your copy by matching the target_path you asked for. Must not already exist - a collision is refused rather than resolved, because silently creating a differently named theme leaves you unsure what you made.
19
19
  attr_accessor :folder
20
20
 
21
21
  # Storefront to create the copy on. Defaults to the storefront in the path. Supply it only when copying a theme between storefronts you own.
@@ -48,7 +48,7 @@ module UltracartClient
48
48
  # True only when the job finished successfully. Check complete first.
49
49
  attr_accessor :success
50
50
 
51
- # Path the new theme was created at. Returned when the job is started; the theme oid itself is NOT returned, because the job's product is a plain text report rather than a structured result. Once the job completes, list themes and match on this path.
51
+ # Path the new theme is being created at. Returned when the job is started and on every poll, so you do not have to keep the response that started it. The theme oid itself is NOT returned, so once the job completes you list themes and match on this path. It is also what success is checked against - a finished job whose theme is not here reports success false rather than pretending.
52
52
  attr_accessor :target_path
53
53
 
54
54
  class EnumAttributeValidator
@@ -24,18 +24,36 @@ module UltracartClient
24
24
  # Number of element types this version recognizes.
25
25
  attr_accessor :element_count
26
26
 
27
+ # Largest binary asset that can be uploaded, in bytes, for every accepted type except video.
28
+ attr_accessor :max_asset_bytes
29
+
27
30
  # Largest CJSON document that will be parsed, in bytes.
28
31
  attr_accessor :max_cjson_bytes
29
32
 
33
+ # Most entries one directory listing returns. Asking for more is silently reduced to this rather than refused, so compare against it instead of trusting that you got what you asked for. The listing does set a truncated flag when it drops entries.
34
+ attr_accessor :max_directory_entries
35
+
36
+ # Most element library results one page returns. Asking for more is silently reduced to this, and unlike the directory listing there is no truncation flag on the response, so this number is the only way to know a larger request was cut.
37
+ attr_accessor :max_library_results_per_page
38
+
30
39
  # Largest payload one preview session may hold, in bytes.
31
40
  attr_accessor :max_preview_session_bytes
32
41
 
42
+ # Largest historical version files/revert will restore, in bytes. Higher than max_text_read_bytes deliberately - putting back a version that is already stored is cheaper than serving it as JSON, so a version too large to read can still be reverted to.
43
+ attr_accessor :max_revertable_bytes
44
+
33
45
  # Hard ceiling on file search results per page.
34
46
  attr_accessor :max_search_results
35
47
 
36
- # Largest template file that can be written, in bytes.
48
+ # Largest .vm template that can be written, in bytes. Narrow on purpose - it gates writes, only for files ending in .vm, and it is not the ceiling on reading a file back. Use max_text_read_bytes for that.
37
49
  attr_accessor :max_template_bytes
38
50
 
51
+ # Largest file files/content will return as text, in bytes. A file above this is refused with sfvb.too_large however small its history versions are. Bigger than max_template_bytes, so a file can be readable here and still be too large to write back as a template. Anything above this is still readable in full through files/download, which returns raw bytes and applies no ceiling.
52
+ attr_accessor :max_text_read_bytes
53
+
54
+ # Largest video that can be uploaded, in bytes. Video is the one type allowed past max_asset_bytes.
55
+ attr_accessor :max_video_bytes
56
+
39
57
  # Most widget ids that can be reserved in one call.
40
58
  attr_accessor :max_widget_ids_per_request
41
59
 
@@ -73,10 +91,16 @@ module UltracartClient
73
91
  :'container_manager_version' => :'container_manager_version',
74
92
  :'container_versions_retained' => :'container_versions_retained',
75
93
  :'element_count' => :'element_count',
94
+ :'max_asset_bytes' => :'max_asset_bytes',
76
95
  :'max_cjson_bytes' => :'max_cjson_bytes',
96
+ :'max_directory_entries' => :'max_directory_entries',
97
+ :'max_library_results_per_page' => :'max_library_results_per_page',
77
98
  :'max_preview_session_bytes' => :'max_preview_session_bytes',
99
+ :'max_revertable_bytes' => :'max_revertable_bytes',
78
100
  :'max_search_results' => :'max_search_results',
79
101
  :'max_template_bytes' => :'max_template_bytes',
102
+ :'max_text_read_bytes' => :'max_text_read_bytes',
103
+ :'max_video_bytes' => :'max_video_bytes',
80
104
  :'max_widget_ids_per_request' => :'max_widget_ids_per_request',
81
105
  :'preview_session_ttl_seconds' => :'preview_session_ttl_seconds',
82
106
  :'release' => :'release'
@@ -94,10 +118,16 @@ module UltracartClient
94
118
  :'container_manager_version' => :'String',
95
119
  :'container_versions_retained' => :'Integer',
96
120
  :'element_count' => :'Integer',
121
+ :'max_asset_bytes' => :'Integer',
97
122
  :'max_cjson_bytes' => :'Integer',
123
+ :'max_directory_entries' => :'Integer',
124
+ :'max_library_results_per_page' => :'Integer',
98
125
  :'max_preview_session_bytes' => :'Integer',
126
+ :'max_revertable_bytes' => :'Integer',
99
127
  :'max_search_results' => :'Integer',
100
128
  :'max_template_bytes' => :'Integer',
129
+ :'max_text_read_bytes' => :'Integer',
130
+ :'max_video_bytes' => :'Integer',
101
131
  :'max_widget_ids_per_request' => :'Integer',
102
132
  :'preview_session_ttl_seconds' => :'Integer',
103
133
  :'release' => :'String'
@@ -137,14 +167,30 @@ module UltracartClient
137
167
  self.element_count = attributes[:'element_count']
138
168
  end
139
169
 
170
+ if attributes.key?(:'max_asset_bytes')
171
+ self.max_asset_bytes = attributes[:'max_asset_bytes']
172
+ end
173
+
140
174
  if attributes.key?(:'max_cjson_bytes')
141
175
  self.max_cjson_bytes = attributes[:'max_cjson_bytes']
142
176
  end
143
177
 
178
+ if attributes.key?(:'max_directory_entries')
179
+ self.max_directory_entries = attributes[:'max_directory_entries']
180
+ end
181
+
182
+ if attributes.key?(:'max_library_results_per_page')
183
+ self.max_library_results_per_page = attributes[:'max_library_results_per_page']
184
+ end
185
+
144
186
  if attributes.key?(:'max_preview_session_bytes')
145
187
  self.max_preview_session_bytes = attributes[:'max_preview_session_bytes']
146
188
  end
147
189
 
190
+ if attributes.key?(:'max_revertable_bytes')
191
+ self.max_revertable_bytes = attributes[:'max_revertable_bytes']
192
+ end
193
+
148
194
  if attributes.key?(:'max_search_results')
149
195
  self.max_search_results = attributes[:'max_search_results']
150
196
  end
@@ -153,6 +199,14 @@ module UltracartClient
153
199
  self.max_template_bytes = attributes[:'max_template_bytes']
154
200
  end
155
201
 
202
+ if attributes.key?(:'max_text_read_bytes')
203
+ self.max_text_read_bytes = attributes[:'max_text_read_bytes']
204
+ end
205
+
206
+ if attributes.key?(:'max_video_bytes')
207
+ self.max_video_bytes = attributes[:'max_video_bytes']
208
+ end
209
+
156
210
  if attributes.key?(:'max_widget_ids_per_request')
157
211
  self.max_widget_ids_per_request = attributes[:'max_widget_ids_per_request']
158
212
  end
@@ -199,10 +253,16 @@ module UltracartClient
199
253
  container_manager_version == o.container_manager_version &&
200
254
  container_versions_retained == o.container_versions_retained &&
201
255
  element_count == o.element_count &&
256
+ max_asset_bytes == o.max_asset_bytes &&
202
257
  max_cjson_bytes == o.max_cjson_bytes &&
258
+ max_directory_entries == o.max_directory_entries &&
259
+ max_library_results_per_page == o.max_library_results_per_page &&
203
260
  max_preview_session_bytes == o.max_preview_session_bytes &&
261
+ max_revertable_bytes == o.max_revertable_bytes &&
204
262
  max_search_results == o.max_search_results &&
205
263
  max_template_bytes == o.max_template_bytes &&
264
+ max_text_read_bytes == o.max_text_read_bytes &&
265
+ max_video_bytes == o.max_video_bytes &&
206
266
  max_widget_ids_per_request == o.max_widget_ids_per_request &&
207
267
  preview_session_ttl_seconds == o.preview_session_ttl_seconds &&
208
268
  release == o.release
@@ -217,7 +277,7 @@ module UltracartClient
217
277
  # Calculates hash code according to all attributes.
218
278
  # @return [Integer] Hash code
219
279
  def hash
220
- [container_manager_version, container_versions_retained, element_count, max_cjson_bytes, max_preview_session_bytes, max_search_results, max_template_bytes, max_widget_ids_per_request, preview_session_ttl_seconds, release].hash
280
+ [container_manager_version, container_versions_retained, element_count, max_asset_bytes, max_cjson_bytes, max_directory_entries, max_library_results_per_page, max_preview_session_bytes, max_revertable_bytes, max_search_results, max_template_bytes, max_text_read_bytes, max_video_bytes, max_widget_ids_per_request, preview_session_ttl_seconds, release].hash
221
281
  end
222
282
 
223
283
  # Builds the object from hash
@@ -11,5 +11,5 @@ OpenAPI Generator version: 6.0.1-SNAPSHOT
11
11
  =end
12
12
 
13
13
  module UltracartClient
14
- VERSION = '4.1.146'
14
+ VERSION = '4.1.148'
15
15
  end
data/lib/ultracart_api.rb CHANGED
@@ -338,6 +338,7 @@ require 'ultracart_api/models/conversation_virtual_agent_budget'
338
338
  require 'ultracart_api/models/conversation_virtual_agent_budget_response'
339
339
  require 'ultracart_api/models/conversation_virtual_agent_capabilities'
340
340
  require 'ultracart_api/models/conversation_virtual_agent_capabilities_response'
341
+ require 'ultracart_api/models/conversation_virtual_agent_capability_custom_collection'
341
342
  require 'ultracart_api/models/conversation_virtual_agent_capability_zoho_desk_department'
342
343
  require 'ultracart_api/models/conversation_webchat_context'
343
344
  require 'ultracart_api/models/conversation_webchat_queue_status'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ultracart_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.146
4
+ version: 4.1.148
5
5
  platform: ruby
6
6
  authors:
7
7
  - UltraCart
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-09-03 00:00:00.000000000 Z
11
+ date: 2026-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -389,6 +389,7 @@ files:
389
389
  - docs/ConversationVirtualAgentBudgetResponse.md
390
390
  - docs/ConversationVirtualAgentCapabilities.md
391
391
  - docs/ConversationVirtualAgentCapabilitiesResponse.md
392
+ - docs/ConversationVirtualAgentCapabilityCustomCollection.md
392
393
  - docs/ConversationVirtualAgentCapabilityZohoDeskDepartment.md
393
394
  - docs/ConversationWebchatContext.md
394
395
  - docs/ConversationWebchatQueueStatus.md
@@ -1524,6 +1525,7 @@ files:
1524
1525
  - lib/ultracart_api/models/conversation_virtual_agent_budget_response.rb
1525
1526
  - lib/ultracart_api/models/conversation_virtual_agent_capabilities.rb
1526
1527
  - lib/ultracart_api/models/conversation_virtual_agent_capabilities_response.rb
1528
+ - lib/ultracart_api/models/conversation_virtual_agent_capability_custom_collection.rb
1527
1529
  - lib/ultracart_api/models/conversation_virtual_agent_capability_zoho_desk_department.rb
1528
1530
  - lib/ultracart_api/models/conversation_webchat_context.rb
1529
1531
  - lib/ultracart_api/models/conversation_webchat_queue_status.rb