ultracart_api 4.1.154 → 4.1.155

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: 37ac39f21f4d4926dc445c05679cf88a52c25751ae967e68d2a04ce2db104c86
4
- data.tar.gz: 97a320a75abbf442e767bbc17d549e1f980687e2db385229f6d75dbe11d4482c
3
+ metadata.gz: 24314cf0f18fc69b1c86c36bf3286ae46d625958a18800271a20d225ec797a9c
4
+ data.tar.gz: 03da8af5d356bdbe3d03ca56057f38a03deff2b2fe2a9cbe038666eb6a0cee54
5
5
  SHA512:
6
- metadata.gz: de44ec246f9b2af49724ae1bb120ce8d2b79a9a68db06e98ffb734fa51c7bc9599f57f2232d63f5a7eae3ad174af5523fd46d6ef0a14c303f00b114a5136dfdf
7
- data.tar.gz: 0f6a6d5026cd0175acb8da55d748ce4d0a6f6f1ae4ca5ec12052d477e994ef633fbc6d94da1faf3abdd6133df8577d372b79c405f3d75fa023d34a166282b8e6
6
+ metadata.gz: 2a3f15bff02873f539363351665d678ee06534356f44851f5415ac69c71212c2a15f71a4715d540d5894311392183c2ad2b10d0dcb2ebbb7e50d941ae74f7491
7
+ data.tar.gz: f081572ef243c7c9690a7bc235763ae4249dc602005d36000326ff24d184ee7cda5e52f35297326149c3c951484e317ed2cdd52b4a60d86e63d2b9ccb39d5ce4
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.154
10
+ - Package version: 4.1.155
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.154'
19
+ gem 'ultracart_api', '4.1.155'
20
20
  ```
21
21
 
22
22
  install:
@@ -473,6 +473,7 @@ Class | Method | HTTP request | Description
473
473
  *UltracartClient::OrderApi* | [**update_order**](docs/OrderApi.md#update_order) | **PUT** /order/orders/{order_id} | Update an order
474
474
  *UltracartClient::OrderApi* | [**validate_order**](docs/OrderApi.md#validate_order) | **POST** /order/validate | Validate
475
475
  *UltracartClient::SfvbApi* | [**compile_sfvb_cjson**](docs/SfvbApi.md#compile_sfvb_cjson) | **POST** /sfvb/cjson/compile | Compile CJSON to Velocity
476
+ *UltracartClient::SfvbApi* | [**create_sfvb_preview_access**](docs/SfvbApi.md#create_sfvb_preview_access) | **POST** /sfvb/storefronts/{storefront_oid}/preview_access | One time link that opens a preview in a browser with no UltraCart login
476
477
  *UltracartClient::SfvbApi* | [**create_sfvb_preview_session**](docs/SfvbApi.md#create_sfvb_preview_session) | **POST** /sfvb/storefronts/{storefront_oid}/preview_sessions | Create a preview session
477
478
  *UltracartClient::SfvbApi* | [**delete_sfvb_file**](docs/SfvbApi.md#delete_sfvb_file) | **DELETE** /sfvb/storefronts/{storefront_oid}/files | Delete a storefront file
478
479
  *UltracartClient::SfvbApi* | [**delete_sfvb_page_multimedia**](docs/SfvbApi.md#delete_sfvb_page_multimedia) | **DELETE** /sfvb/storefronts/{storefront_oid}/pages/multimedia | Detach an image from a page
@@ -1764,6 +1765,8 @@ Class | Method | HTTP request | Description
1764
1765
  - [UltracartClient::SfvbPageMultimedia](docs/SfvbPageMultimedia.md)
1765
1766
  - [UltracartClient::SfvbPageMultimediaRequest](docs/SfvbPageMultimediaRequest.md)
1766
1767
  - [UltracartClient::SfvbPageResponse](docs/SfvbPageResponse.md)
1768
+ - [UltracartClient::SfvbPreviewAccessRequest](docs/SfvbPreviewAccessRequest.md)
1769
+ - [UltracartClient::SfvbPreviewAccessResponse](docs/SfvbPreviewAccessResponse.md)
1767
1770
  - [UltracartClient::SfvbPreviewSessionRequest](docs/SfvbPreviewSessionRequest.md)
1768
1771
  - [UltracartClient::SfvbPreviewSessionResponse](docs/SfvbPreviewSessionResponse.md)
1769
1772
  - [UltracartClient::SfvbPreviewUrlResponse](docs/SfvbPreviewUrlResponse.md)
@@ -1952,6 +1955,7 @@ Not every change is committed to every SDK.
1952
1955
 
1953
1956
  | Version | Date | Comments |
1954
1957
  | --: | :-: | --- |
1958
+ | 4.1.155 | 09/15/2026 | sfvb internal testing |
1955
1959
  | 4.1.154 | 09/14/2026 | sfvb internal testing |
1956
1960
  | 4.1.153 | 09/14/2026 | sfvb internal testing |
1957
1961
  | 4.1.152 | 09/09/2026 | sfvb - internal testing |
data/docs/SfvbApi.md CHANGED
@@ -5,6 +5,7 @@ All URIs are relative to *https://secure.ultracart.com/rest/v2*
5
5
  | Method | HTTP request | Description |
6
6
  | ------ | ------------ | ----------- |
7
7
  | [**compile_sfvb_cjson**](SfvbApi.md#compile_sfvb_cjson) | **POST** /sfvb/cjson/compile | Compile CJSON to Velocity |
8
+ | [**create_sfvb_preview_access**](SfvbApi.md#create_sfvb_preview_access) | **POST** /sfvb/storefronts/{storefront_oid}/preview_access | One time link that opens a preview in a browser with no UltraCart login |
8
9
  | [**create_sfvb_preview_session**](SfvbApi.md#create_sfvb_preview_session) | **POST** /sfvb/storefronts/{storefront_oid}/preview_sessions | Create a preview session |
9
10
  | [**delete_sfvb_file**](SfvbApi.md#delete_sfvb_file) | **DELETE** /sfvb/storefronts/{storefront_oid}/files | Delete a storefront file |
10
11
  | [**delete_sfvb_page_multimedia**](SfvbApi.md#delete_sfvb_page_multimedia) | **DELETE** /sfvb/storefronts/{storefront_oid}/pages/multimedia | Detach an image from a page |
@@ -103,6 +104,60 @@ end
103
104
  - **Accept**: application/json
104
105
 
105
106
 
107
+ ## create_sfvb_preview_access
108
+
109
+ > <SfvbPreviewAccessResponse> create_sfvb_preview_access(storefront_oid, opts)
110
+
111
+ One time link that opens a preview in a browser with no UltraCart login
112
+
113
+ The preview URL only works in a browser already signed in to UltraCart on the storefront's own host, and an agent's built in browser never is. This returns a single use access_url on the storefront host instead. Opening it gets past the storefront lock, shows the requested theme and applies the requested preview session for the rest of that browser session, then redirects to path. It expires two minutes after issue or on first use. Pages opened afterwards carry an X-UltraCart-Preview header of applied or not-applied. Requires a token that resolves to a user, so use the device authorization flow.
114
+
115
+
116
+ ### Examples
117
+
118
+
119
+ (No example for this operation).
120
+
121
+
122
+ #### Using the create_sfvb_preview_access_with_http_info variant
123
+
124
+ This returns an Array which contains the response data, status code and headers.
125
+
126
+ > <Array(<SfvbPreviewAccessResponse>, Integer, Hash)> create_sfvb_preview_access_with_http_info(storefront_oid, opts)
127
+
128
+ ```ruby
129
+ begin
130
+ # One time link that opens a preview in a browser with no UltraCart login
131
+ data, status_code, headers = api_instance.create_sfvb_preview_access_with_http_info(storefront_oid, opts)
132
+ p status_code # => 2xx
133
+ p headers # => { ... }
134
+ p data # => <SfvbPreviewAccessResponse>
135
+ rescue UltracartClient::ApiError => e
136
+ puts "Error when calling SfvbApi->create_sfvb_preview_access_with_http_info: #{e}"
137
+ end
138
+ ```
139
+
140
+ ### Parameters
141
+
142
+ | Name | Type | Description | Notes |
143
+ | ---- | ---- | ----------- | ----- |
144
+ | **storefront_oid** | **Integer** | | |
145
+ | **preview_access** | [**SfvbPreviewAccessRequest**](SfvbPreviewAccessRequest.md) | What the browser should see | [optional] |
146
+
147
+ ### Return type
148
+
149
+ [**SfvbPreviewAccessResponse**](SfvbPreviewAccessResponse.md)
150
+
151
+ ### Authorization
152
+
153
+ [ultraCartOauth](../README.md#ultraCartOauth), [ultraCartSimpleApiKey](../README.md#ultraCartSimpleApiKey)
154
+
155
+ ### HTTP request headers
156
+
157
+ - **Content-Type**: application/json
158
+ - **Accept**: application/json
159
+
160
+
106
161
  ## create_sfvb_preview_session
107
162
 
108
163
  > <SfvbPreviewSessionResponse> create_sfvb_preview_session(storefront_oid)
@@ -0,0 +1,22 @@
1
+ # UltracartClient::SfvbPreviewAccessRequest
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **path** | **String** | Storefront path to land on, beginning with a slash. Defaults to / | [optional] |
8
+ | **preview_session_id** | **String** | Staged preview session to show. It must be one this user created and it must not have expired. Leave it out to show the saved containers with nothing staged. | [optional] |
9
+ | **theme_oid** | **Integer** | Theme to show, which may be inactive. Must belong to this storefront. Defaults to the active theme. | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'ultracart_api'
15
+
16
+ instance = UltracartClient::SfvbPreviewAccessRequest.new(
17
+ path: null,
18
+ preview_session_id: null,
19
+ theme_oid: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,32 @@
1
+ # UltracartClient::SfvbPreviewAccessResponse
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **access_url** | **String** | One time link on the storefront&#39;s own host. Opening it in any browser, including an agent&#39;s built in browser with no UltraCart login, gets past the storefront lock and applies the preview session and theme for the rest of that browser&#39;s session, then redirects to path. It is a credential until used, so do not paste it anywhere other than the browser that should open it. | [optional] |
8
+ | **expires_in_seconds** | **Integer** | Seconds left to open access_url. It stops working after that, and after its first use. | [optional] |
9
+ | **path** | **String** | Storefront path the browser lands on, after reserved preview parameters are removed. | [optional] |
10
+ | **preview_session_id** | **String** | The preview session applied, when one was requested. | [optional] |
11
+ | **session_lifetime_seconds** | **Integer** | How long the browser stays in preview once access_url is opened. The remaining life of the preview session, or eight hours when none was given. The user and their storefront permission are checked again on every page, so removing either ends it sooner. | [optional] |
12
+ | **single_use** | **Boolean** | Always true. A second open of access_url returns 410. | [optional] |
13
+ | **theme_oid** | **Integer** | The theme shown, when one was requested. | [optional] |
14
+ | **usage_note** | **String** | Plain language instructions, safe to show a user. | [optional] |
15
+
16
+ ## Example
17
+
18
+ ```ruby
19
+ require 'ultracart_api'
20
+
21
+ instance = UltracartClient::SfvbPreviewAccessResponse.new(
22
+ access_url: null,
23
+ expires_in_seconds: null,
24
+ path: null,
25
+ preview_session_id: null,
26
+ session_lifetime_seconds: null,
27
+ single_use: null,
28
+ theme_oid: null,
29
+ usage_note: null
30
+ )
31
+ ```
32
+
@@ -101,6 +101,77 @@ module UltracartClient
101
101
  return data, status_code, headers
102
102
  end
103
103
 
104
+ # One time link that opens a preview in a browser with no UltraCart login
105
+ # The preview URL only works in a browser already signed in to UltraCart on the storefront's own host, and an agent's built in browser never is. This returns a single use access_url on the storefront host instead. Opening it gets past the storefront lock, shows the requested theme and applies the requested preview session for the rest of that browser session, then redirects to path. It expires two minutes after issue or on first use. Pages opened afterwards carry an X-UltraCart-Preview header of applied or not-applied. Requires a token that resolves to a user, so use the device authorization flow.
106
+ # @param storefront_oid [Integer]
107
+ # @param [Hash] opts the optional parameters
108
+ # @option opts [SfvbPreviewAccessRequest] :preview_access What the browser should see
109
+ # @return [SfvbPreviewAccessResponse]
110
+ def create_sfvb_preview_access(storefront_oid, opts = {})
111
+ data, _status_code, _headers = create_sfvb_preview_access_with_http_info(storefront_oid, opts)
112
+ data
113
+ end
114
+
115
+ # One time link that opens a preview in a browser with no UltraCart login
116
+ # The preview URL only works in a browser already signed in to UltraCart on the storefront&#39;s own host, and an agent&#39;s built in browser never is. This returns a single use access_url on the storefront host instead. Opening it gets past the storefront lock, shows the requested theme and applies the requested preview session for the rest of that browser session, then redirects to path. It expires two minutes after issue or on first use. Pages opened afterwards carry an X-UltraCart-Preview header of applied or not-applied. Requires a token that resolves to a user, so use the device authorization flow.
117
+ # @param storefront_oid [Integer]
118
+ # @param [Hash] opts the optional parameters
119
+ # @option opts [SfvbPreviewAccessRequest] :preview_access What the browser should see
120
+ # @return [Array<(SfvbPreviewAccessResponse, Integer, Hash)>] SfvbPreviewAccessResponse data, response status code and response headers
121
+ def create_sfvb_preview_access_with_http_info(storefront_oid, opts = {})
122
+ if @api_client.config.debugging
123
+ @api_client.config.logger.debug 'Calling API: SfvbApi.create_sfvb_preview_access ...'
124
+ end
125
+ # verify the required parameter 'storefront_oid' is set
126
+ if @api_client.config.client_side_validation && storefront_oid.nil?
127
+ fail ArgumentError, "Missing the required parameter 'storefront_oid' when calling SfvbApi.create_sfvb_preview_access"
128
+ end
129
+ # resource path
130
+ local_var_path = '/sfvb/storefronts/{storefront_oid}/preview_access'.sub('{' + 'storefront_oid' + '}', CGI.escape(storefront_oid.to_s))
131
+
132
+ # query parameters
133
+ query_params = opts[:query_params] || {}
134
+
135
+ # header parameters
136
+ header_params = opts[:header_params] || {}
137
+ header_params['X-UltraCart-Api-Version'] = @api_client.select_header_api_version()
138
+ # HTTP header 'Accept' (if needed)
139
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
140
+ # HTTP header 'Content-Type'
141
+ content_type = @api_client.select_header_content_type(['application/json'])
142
+ if !content_type.nil?
143
+ header_params['Content-Type'] = content_type
144
+ end
145
+
146
+ # form parameters
147
+ form_params = opts[:form_params] || {}
148
+
149
+ # http body (model)
150
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(opts[:'preview_access'])
151
+
152
+ # return_type
153
+ return_type = opts[:debug_return_type] || 'SfvbPreviewAccessResponse'
154
+
155
+ # auth_names
156
+ auth_names = opts[:debug_auth_names] || ['ultraCartOauth', 'ultraCartSimpleApiKey']
157
+
158
+ new_options = opts.merge(
159
+ :operation => :"SfvbApi.create_sfvb_preview_access",
160
+ :header_params => header_params,
161
+ :query_params => query_params,
162
+ :form_params => form_params,
163
+ :body => post_body,
164
+ :auth_names => auth_names,
165
+ :return_type => return_type
166
+ )
167
+
168
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
169
+ if @api_client.config.debugging
170
+ @api_client.config.logger.debug "API called: SfvbApi#create_sfvb_preview_access\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
171
+ end
172
+ return data, status_code, headers
173
+ end
174
+
104
175
  # Create a preview session
105
176
  # 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
177
  # @param storefront_oid [Integer]
@@ -0,0 +1,240 @@
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 SfvbPreviewAccessRequest
18
+ # Storefront path to land on, beginning with a slash. Defaults to /
19
+ attr_accessor :path
20
+
21
+ # Staged preview session to show. It must be one this user created and it must not have expired. Leave it out to show the saved containers with nothing staged.
22
+ attr_accessor :preview_session_id
23
+
24
+ # Theme to show, which may be inactive. Must belong to this storefront. Defaults to the active theme.
25
+ attr_accessor :theme_oid
26
+
27
+ # Attribute mapping from ruby-style variable name to JSON key.
28
+ def self.attribute_map
29
+ {
30
+ :'path' => :'path',
31
+ :'preview_session_id' => :'preview_session_id',
32
+ :'theme_oid' => :'theme_oid'
33
+ }
34
+ end
35
+
36
+ # Returns all the JSON keys this model knows about
37
+ def self.acceptable_attributes
38
+ attribute_map.values
39
+ end
40
+
41
+ # Attribute type mapping.
42
+ def self.openapi_types
43
+ {
44
+ :'path' => :'String',
45
+ :'preview_session_id' => :'String',
46
+ :'theme_oid' => :'Integer'
47
+ }
48
+ end
49
+
50
+ # List of attributes with nullable: true
51
+ def self.openapi_nullable
52
+ Set.new([
53
+ ])
54
+ end
55
+
56
+ # Initializes the object
57
+ # @param [Hash] attributes Model attributes in the form of hash
58
+ def initialize(attributes = {})
59
+ if (!attributes.is_a?(Hash))
60
+ fail ArgumentError, "The input argument (attributes) must be a hash in `UltracartClient::SfvbPreviewAccessRequest` initialize method"
61
+ end
62
+
63
+ # check to see if the attribute exists and convert string to symbol for hash key
64
+ attributes = attributes.each_with_object({}) { |(k, v), h|
65
+ if (!self.class.attribute_map.key?(k.to_sym))
66
+ fail ArgumentError, "`#{k}` is not a valid attribute in `UltracartClient::SfvbPreviewAccessRequest`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
67
+ end
68
+ h[k.to_sym] = v
69
+ }
70
+
71
+ if attributes.key?(:'path')
72
+ self.path = attributes[:'path']
73
+ end
74
+
75
+ if attributes.key?(:'preview_session_id')
76
+ self.preview_session_id = attributes[:'preview_session_id']
77
+ end
78
+
79
+ if attributes.key?(:'theme_oid')
80
+ self.theme_oid = attributes[:'theme_oid']
81
+ end
82
+ end
83
+
84
+ # Show invalid properties with the reasons. Usually used together with valid?
85
+ # @return Array for valid properties with the reasons
86
+ def list_invalid_properties
87
+ invalid_properties = Array.new
88
+ invalid_properties
89
+ end
90
+
91
+ # Check to see if the all the properties in the model are valid
92
+ # @return true if the model is valid
93
+ def valid?
94
+ true
95
+ end
96
+
97
+ # Checks equality by comparing each attribute.
98
+ # @param [Object] Object to be compared
99
+ def ==(o)
100
+ return true if self.equal?(o)
101
+ self.class == o.class &&
102
+ path == o.path &&
103
+ preview_session_id == o.preview_session_id &&
104
+ theme_oid == o.theme_oid
105
+ end
106
+
107
+ # @see the `==` method
108
+ # @param [Object] Object to be compared
109
+ def eql?(o)
110
+ self == o
111
+ end
112
+
113
+ # Calculates hash code according to all attributes.
114
+ # @return [Integer] Hash code
115
+ def hash
116
+ [path, preview_session_id, theme_oid].hash
117
+ end
118
+
119
+ # Builds the object from hash
120
+ # @param [Hash] attributes Model attributes in the form of hash
121
+ # @return [Object] Returns the model itself
122
+ def self.build_from_hash(attributes)
123
+ new.build_from_hash(attributes)
124
+ end
125
+
126
+ # Builds the object from hash
127
+ # @param [Hash] attributes Model attributes in the form of hash
128
+ # @return [Object] Returns the model itself
129
+ def build_from_hash(attributes)
130
+ return nil unless attributes.is_a?(Hash)
131
+ attributes = attributes.transform_keys(&:to_sym)
132
+ self.class.openapi_types.each_pair do |key, type|
133
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
134
+ self.send("#{key}=", nil)
135
+ elsif type =~ /\AArray<(.*)>/i
136
+ # check to ensure the input is an array given that the attribute
137
+ # is documented as an array but the input is not
138
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
139
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
140
+ end
141
+ elsif !attributes[self.class.attribute_map[key]].nil?
142
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
143
+ end
144
+ end
145
+
146
+ self
147
+ end
148
+
149
+ # Deserializes the data based on type
150
+ # @param string type Data type
151
+ # @param string value Value to be deserialized
152
+ # @return [Object] Deserialized data
153
+ def _deserialize(type, value)
154
+ case type.to_sym
155
+ when :Time
156
+ Time.parse(value)
157
+ when :Date
158
+ Date.parse(value)
159
+ when :String
160
+ value.to_s
161
+ when :Integer
162
+ value.to_i
163
+ when :Float
164
+ value.to_f
165
+ when :Boolean
166
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
167
+ true
168
+ else
169
+ false
170
+ end
171
+ when :Object
172
+ # generic object (usually a Hash), return directly
173
+ value
174
+ when /\AArray<(?<inner_type>.+)>\z/
175
+ inner_type = Regexp.last_match[:inner_type]
176
+ value.map { |v| _deserialize(inner_type, v) }
177
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
178
+ k_type = Regexp.last_match[:k_type]
179
+ v_type = Regexp.last_match[:v_type]
180
+ {}.tap do |hash|
181
+ value.each do |k, v|
182
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
183
+ end
184
+ end
185
+ else # model
186
+ # models (e.g. Pet) or oneOf
187
+ klass = UltracartClient.const_get(type)
188
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
189
+ end
190
+ end
191
+
192
+ # Returns the string representation of the object
193
+ # @return [String] String presentation of the object
194
+ def to_s
195
+ to_hash.to_s
196
+ end
197
+
198
+ # to_body is an alias to to_hash (backward compatibility)
199
+ # @return [Hash] Returns the object in the form of hash
200
+ def to_body
201
+ to_hash
202
+ end
203
+
204
+ # Returns the object in the form of hash
205
+ # @return [Hash] Returns the object in the form of hash
206
+ def to_hash
207
+ hash = {}
208
+ self.class.attribute_map.each_pair do |attr, param|
209
+ value = self.send(attr)
210
+ if value.nil?
211
+ is_nullable = self.class.openapi_nullable.include?(attr)
212
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
213
+ end
214
+
215
+ hash[param] = _to_hash(value)
216
+ end
217
+ hash
218
+ end
219
+
220
+ # Outputs non-array value in the form of hash
221
+ # For object, use to_hash. Otherwise, just return the value
222
+ # @param [Object] value Any valid value
223
+ # @return [Hash] Returns the value in the form of hash
224
+ def _to_hash(value)
225
+ if value.is_a?(Array)
226
+ value.compact.map { |v| _to_hash(v) }
227
+ elsif value.is_a?(Hash)
228
+ {}.tap do |hash|
229
+ value.each { |k, v| hash[k] = _to_hash(v) }
230
+ end
231
+ elsif value.respond_to? :to_hash
232
+ value.to_hash
233
+ else
234
+ value
235
+ end
236
+ end
237
+
238
+ end
239
+
240
+ end
@@ -0,0 +1,290 @@
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 SfvbPreviewAccessResponse
18
+ # One time link on the storefront's own host. Opening it in any browser, including an agent's built in browser with no UltraCart login, gets past the storefront lock and applies the preview session and theme for the rest of that browser's session, then redirects to path. It is a credential until used, so do not paste it anywhere other than the browser that should open it.
19
+ attr_accessor :access_url
20
+
21
+ # Seconds left to open access_url. It stops working after that, and after its first use.
22
+ attr_accessor :expires_in_seconds
23
+
24
+ # Storefront path the browser lands on, after reserved preview parameters are removed.
25
+ attr_accessor :path
26
+
27
+ # The preview session applied, when one was requested.
28
+ attr_accessor :preview_session_id
29
+
30
+ # How long the browser stays in preview once access_url is opened. The remaining life of the preview session, or eight hours when none was given. The user and their storefront permission are checked again on every page, so removing either ends it sooner.
31
+ attr_accessor :session_lifetime_seconds
32
+
33
+ # Always true. A second open of access_url returns 410.
34
+ attr_accessor :single_use
35
+
36
+ # The theme shown, when one was requested.
37
+ attr_accessor :theme_oid
38
+
39
+ # Plain language instructions, safe to show a user.
40
+ attr_accessor :usage_note
41
+
42
+ # Attribute mapping from ruby-style variable name to JSON key.
43
+ def self.attribute_map
44
+ {
45
+ :'access_url' => :'access_url',
46
+ :'expires_in_seconds' => :'expires_in_seconds',
47
+ :'path' => :'path',
48
+ :'preview_session_id' => :'preview_session_id',
49
+ :'session_lifetime_seconds' => :'session_lifetime_seconds',
50
+ :'single_use' => :'single_use',
51
+ :'theme_oid' => :'theme_oid',
52
+ :'usage_note' => :'usage_note'
53
+ }
54
+ end
55
+
56
+ # Returns all the JSON keys this model knows about
57
+ def self.acceptable_attributes
58
+ attribute_map.values
59
+ end
60
+
61
+ # Attribute type mapping.
62
+ def self.openapi_types
63
+ {
64
+ :'access_url' => :'String',
65
+ :'expires_in_seconds' => :'Integer',
66
+ :'path' => :'String',
67
+ :'preview_session_id' => :'String',
68
+ :'session_lifetime_seconds' => :'Integer',
69
+ :'single_use' => :'Boolean',
70
+ :'theme_oid' => :'Integer',
71
+ :'usage_note' => :'String'
72
+ }
73
+ end
74
+
75
+ # List of attributes with nullable: true
76
+ def self.openapi_nullable
77
+ Set.new([
78
+ ])
79
+ end
80
+
81
+ # Initializes the object
82
+ # @param [Hash] attributes Model attributes in the form of hash
83
+ def initialize(attributes = {})
84
+ if (!attributes.is_a?(Hash))
85
+ fail ArgumentError, "The input argument (attributes) must be a hash in `UltracartClient::SfvbPreviewAccessResponse` initialize method"
86
+ end
87
+
88
+ # check to see if the attribute exists and convert string to symbol for hash key
89
+ attributes = attributes.each_with_object({}) { |(k, v), h|
90
+ if (!self.class.attribute_map.key?(k.to_sym))
91
+ fail ArgumentError, "`#{k}` is not a valid attribute in `UltracartClient::SfvbPreviewAccessResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
92
+ end
93
+ h[k.to_sym] = v
94
+ }
95
+
96
+ if attributes.key?(:'access_url')
97
+ self.access_url = attributes[:'access_url']
98
+ end
99
+
100
+ if attributes.key?(:'expires_in_seconds')
101
+ self.expires_in_seconds = attributes[:'expires_in_seconds']
102
+ end
103
+
104
+ if attributes.key?(:'path')
105
+ self.path = attributes[:'path']
106
+ end
107
+
108
+ if attributes.key?(:'preview_session_id')
109
+ self.preview_session_id = attributes[:'preview_session_id']
110
+ end
111
+
112
+ if attributes.key?(:'session_lifetime_seconds')
113
+ self.session_lifetime_seconds = attributes[:'session_lifetime_seconds']
114
+ end
115
+
116
+ if attributes.key?(:'single_use')
117
+ self.single_use = attributes[:'single_use']
118
+ end
119
+
120
+ if attributes.key?(:'theme_oid')
121
+ self.theme_oid = attributes[:'theme_oid']
122
+ end
123
+
124
+ if attributes.key?(:'usage_note')
125
+ self.usage_note = attributes[:'usage_note']
126
+ end
127
+ end
128
+
129
+ # Show invalid properties with the reasons. Usually used together with valid?
130
+ # @return Array for valid properties with the reasons
131
+ def list_invalid_properties
132
+ invalid_properties = Array.new
133
+ invalid_properties
134
+ end
135
+
136
+ # Check to see if the all the properties in the model are valid
137
+ # @return true if the model is valid
138
+ def valid?
139
+ true
140
+ end
141
+
142
+ # Checks equality by comparing each attribute.
143
+ # @param [Object] Object to be compared
144
+ def ==(o)
145
+ return true if self.equal?(o)
146
+ self.class == o.class &&
147
+ access_url == o.access_url &&
148
+ expires_in_seconds == o.expires_in_seconds &&
149
+ path == o.path &&
150
+ preview_session_id == o.preview_session_id &&
151
+ session_lifetime_seconds == o.session_lifetime_seconds &&
152
+ single_use == o.single_use &&
153
+ theme_oid == o.theme_oid &&
154
+ usage_note == o.usage_note
155
+ end
156
+
157
+ # @see the `==` method
158
+ # @param [Object] Object to be compared
159
+ def eql?(o)
160
+ self == o
161
+ end
162
+
163
+ # Calculates hash code according to all attributes.
164
+ # @return [Integer] Hash code
165
+ def hash
166
+ [access_url, expires_in_seconds, path, preview_session_id, session_lifetime_seconds, single_use, theme_oid, usage_note].hash
167
+ end
168
+
169
+ # Builds the object from hash
170
+ # @param [Hash] attributes Model attributes in the form of hash
171
+ # @return [Object] Returns the model itself
172
+ def self.build_from_hash(attributes)
173
+ new.build_from_hash(attributes)
174
+ end
175
+
176
+ # Builds the object from hash
177
+ # @param [Hash] attributes Model attributes in the form of hash
178
+ # @return [Object] Returns the model itself
179
+ def build_from_hash(attributes)
180
+ return nil unless attributes.is_a?(Hash)
181
+ attributes = attributes.transform_keys(&:to_sym)
182
+ self.class.openapi_types.each_pair do |key, type|
183
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
184
+ self.send("#{key}=", nil)
185
+ elsif type =~ /\AArray<(.*)>/i
186
+ # check to ensure the input is an array given that the attribute
187
+ # is documented as an array but the input is not
188
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
189
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
190
+ end
191
+ elsif !attributes[self.class.attribute_map[key]].nil?
192
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
193
+ end
194
+ end
195
+
196
+ self
197
+ end
198
+
199
+ # Deserializes the data based on type
200
+ # @param string type Data type
201
+ # @param string value Value to be deserialized
202
+ # @return [Object] Deserialized data
203
+ def _deserialize(type, value)
204
+ case type.to_sym
205
+ when :Time
206
+ Time.parse(value)
207
+ when :Date
208
+ Date.parse(value)
209
+ when :String
210
+ value.to_s
211
+ when :Integer
212
+ value.to_i
213
+ when :Float
214
+ value.to_f
215
+ when :Boolean
216
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
217
+ true
218
+ else
219
+ false
220
+ end
221
+ when :Object
222
+ # generic object (usually a Hash), return directly
223
+ value
224
+ when /\AArray<(?<inner_type>.+)>\z/
225
+ inner_type = Regexp.last_match[:inner_type]
226
+ value.map { |v| _deserialize(inner_type, v) }
227
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
228
+ k_type = Regexp.last_match[:k_type]
229
+ v_type = Regexp.last_match[:v_type]
230
+ {}.tap do |hash|
231
+ value.each do |k, v|
232
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
233
+ end
234
+ end
235
+ else # model
236
+ # models (e.g. Pet) or oneOf
237
+ klass = UltracartClient.const_get(type)
238
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
239
+ end
240
+ end
241
+
242
+ # Returns the string representation of the object
243
+ # @return [String] String presentation of the object
244
+ def to_s
245
+ to_hash.to_s
246
+ end
247
+
248
+ # to_body is an alias to to_hash (backward compatibility)
249
+ # @return [Hash] Returns the object in the form of hash
250
+ def to_body
251
+ to_hash
252
+ end
253
+
254
+ # Returns the object in the form of hash
255
+ # @return [Hash] Returns the object in the form of hash
256
+ def to_hash
257
+ hash = {}
258
+ self.class.attribute_map.each_pair do |attr, param|
259
+ value = self.send(attr)
260
+ if value.nil?
261
+ is_nullable = self.class.openapi_nullable.include?(attr)
262
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
263
+ end
264
+
265
+ hash[param] = _to_hash(value)
266
+ end
267
+ hash
268
+ end
269
+
270
+ # Outputs non-array value in the form of hash
271
+ # For object, use to_hash. Otherwise, just return the value
272
+ # @param [Object] value Any valid value
273
+ # @return [Hash] Returns the value in the form of hash
274
+ def _to_hash(value)
275
+ if value.is_a?(Array)
276
+ value.compact.map { |v| _to_hash(v) }
277
+ elsif value.is_a?(Hash)
278
+ {}.tap do |hash|
279
+ value.each { |k, v| hash[k] = _to_hash(v) }
280
+ end
281
+ elsif value.respond_to? :to_hash
282
+ value.to_hash
283
+ else
284
+ value
285
+ end
286
+ end
287
+
288
+ end
289
+
290
+ end
@@ -11,5 +11,5 @@ OpenAPI Generator version: 6.0.1-SNAPSHOT
11
11
  =end
12
12
 
13
13
  module UltracartClient
14
- VERSION = '4.1.154'
14
+ VERSION = '4.1.155'
15
15
  end
data/lib/ultracart_api.rb CHANGED
@@ -1010,6 +1010,8 @@ require 'ultracart_api/models/sfvb_page_attribute_update_request'
1010
1010
  require 'ultracart_api/models/sfvb_page_multimedia'
1011
1011
  require 'ultracart_api/models/sfvb_page_multimedia_request'
1012
1012
  require 'ultracart_api/models/sfvb_page_response'
1013
+ require 'ultracart_api/models/sfvb_preview_access_request'
1014
+ require 'ultracart_api/models/sfvb_preview_access_response'
1013
1015
  require 'ultracart_api/models/sfvb_preview_session_request'
1014
1016
  require 'ultracart_api/models/sfvb_preview_session_response'
1015
1017
  require 'ultracart_api/models/sfvb_preview_url_response'
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.154
4
+ version: 4.1.155
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-14 00:00:00.000000000 Z
11
+ date: 2026-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -1072,6 +1072,8 @@ files:
1072
1072
  - docs/SfvbPageMultimedia.md
1073
1073
  - docs/SfvbPageMultimediaRequest.md
1074
1074
  - docs/SfvbPageResponse.md
1075
+ - docs/SfvbPreviewAccessRequest.md
1076
+ - docs/SfvbPreviewAccessResponse.md
1075
1077
  - docs/SfvbPreviewSessionRequest.md
1076
1078
  - docs/SfvbPreviewSessionResponse.md
1077
1079
  - docs/SfvbPreviewUrlResponse.md
@@ -2213,6 +2215,8 @@ files:
2213
2215
  - lib/ultracart_api/models/sfvb_page_multimedia.rb
2214
2216
  - lib/ultracart_api/models/sfvb_page_multimedia_request.rb
2215
2217
  - lib/ultracart_api/models/sfvb_page_response.rb
2218
+ - lib/ultracart_api/models/sfvb_preview_access_request.rb
2219
+ - lib/ultracart_api/models/sfvb_preview_access_response.rb
2216
2220
  - lib/ultracart_api/models/sfvb_preview_session_request.rb
2217
2221
  - lib/ultracart_api/models/sfvb_preview_session_response.rb
2218
2222
  - lib/ultracart_api/models/sfvb_preview_url_response.rb