ultracart_api 4.1.227 → 4.1.228

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: 9cebb20eb6b5e4505c97751fdc80c2ef40598ac560a4f3b35e7787468c22af6e
4
- data.tar.gz: dc802f516b52ca2d4da126b1407ba78b926f62e8e6573abc1bd8bf9bb91e2a22
3
+ metadata.gz: c64fd152d42f965a2ef426e407e1258fe1e7b46be93a9cfc578955d6dc3638b1
4
+ data.tar.gz: 7a54648d773d9dc420e048a8056dcb80ff54a968dbf9579c0d8eecfddd9dffd6
5
5
  SHA512:
6
- metadata.gz: 46669da4eceeb6072c7c791e0cc9a9dc51860654714711e65fa9c4713ef0fb7d682898682f217bfece4aa4ba261de6b463d115d7abb429ee3d9208f3c609f320
7
- data.tar.gz: 612105c33ada9046e36a7295f6c6196dbcb15a807c236fc740f12ba7286ee5a6b15cc576b4af5c7f48236ee20b83ba4cfd27c7e54a8d4b543223b7874c97b407
6
+ metadata.gz: 6b3e8e124b3f40204cef7eb855d34b008422574f478baaebcaae1550d7eeebcdc48a85c5878657ea5ee1b7bfa470aa1112456c70ab64beb1fdf4a0e037b06440
7
+ data.tar.gz: ff5e768083598808d88e5f536a05f3630ad334880c8e2cef8282c09fb2d6377fd14f03596271882225999ab6116968e821237590247018f83e9f8e20d09a23e4
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.227
10
+ - Package version: 4.1.228
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.227'
19
+ gem 'ultracart_api', '4.1.228'
20
20
  ```
21
21
 
22
22
  install:
@@ -582,6 +582,7 @@ Class | Method | HTTP request | Description
582
582
  *UltracartClient::SfvbApi* | [**get_sfvb_secret_request**](docs/SfvbApi.md#get_sfvb_secret_request) | **GET** /sfvb/secrets/{request_id} | Read one secret request
583
583
  *UltracartClient::SfvbApi* | [**get_sfvb_secret_requests**](docs/SfvbApi.md#get_sfvb_secret_requests) | **GET** /sfvb/secrets | List this sign-in's secret requests
584
584
  *UltracartClient::SfvbApi* | [**get_sfvb_sequence**](docs/SfvbApi.md#get_sfvb_sequence) | **GET** /sfvb/storefronts/{storefront_oid}/sequences/{sequence_uuid} | Get a campaign's or flow's steps as a tree
585
+ *UltracartClient::SfvbApi* | [**get_sfvb_sequence_step_dispatch_logs**](docs/SfvbApi.md#get_sfvb_sequence_step_dispatch_logs) | **GET** /sfvb/storefronts/{storefront_oid}/sequences/{sequence_uuid}/steps/{step_uuid}/dispatch_logs | Read a flow or campaign step's dispatch log and counts
585
586
  *UltracartClient::SfvbApi* | [**get_sfvb_server_log**](docs/SfvbApi.md#get_sfvb_server_log) | **GET** /sfvb/storefronts/{storefront_oid}/logs/{log_id} | Get one storefront render log
586
587
  *UltracartClient::SfvbApi* | [**get_sfvb_site_attributes**](docs/SfvbApi.md#get_sfvb_site_attributes) | **GET** /sfvb/storefronts/{storefront_oid}/attributes | Read a storefront's site attributes
587
588
  *UltracartClient::SfvbApi* | [**get_sfvb_sitemaps**](docs/SfvbApi.md#get_sfvb_sitemaps) | **GET** /sfvb/storefronts/{storefront_oid}/sitemaps | Read a storefront's sitemaps and robots.txt
@@ -2178,6 +2179,9 @@ Class | Method | HTTP request | Description
2178
2179
  - [UltracartClient::SfvbSmartAttribution](docs/SfvbSmartAttribution.md)
2179
2180
  - [UltracartClient::SfvbSmartAttributionPlatform](docs/SfvbSmartAttributionPlatform.md)
2180
2181
  - [UltracartClient::SfvbSmartAttributionRequest](docs/SfvbSmartAttributionRequest.md)
2182
+ - [UltracartClient::SfvbStepCounts](docs/SfvbStepCounts.md)
2183
+ - [UltracartClient::SfvbStepDispatchLog](docs/SfvbStepDispatchLog.md)
2184
+ - [UltracartClient::SfvbStepDispatchLogsResponse](docs/SfvbStepDispatchLogsResponse.md)
2181
2185
  - [UltracartClient::SfvbStorefront](docs/SfvbStorefront.md)
2182
2186
  - [UltracartClient::SfvbStorefrontsResponse](docs/SfvbStorefrontsResponse.md)
2183
2187
  - [UltracartClient::SfvbTemplate](docs/SfvbTemplate.md)
@@ -2408,6 +2412,7 @@ Not every change is committed to every SDK.
2408
2412
 
2409
2413
  | Version | Date | Comments |
2410
2414
  | --: | :-: | --- |
2415
+ | 4.1.228 | 11/04/2026 | sfvb internal testing |
2411
2416
  | 4.1.227 | 11/04/2026 | sfvb internal testing |
2412
2417
  | 4.1.226 | 11/04/2026 | sfvb internal testing |
2413
2418
  | 4.1.225 | 11/03/2026 | sfvb internal testing |
data/docs/SfvbApi.md CHANGED
@@ -110,6 +110,7 @@ All URIs are relative to *https://secure.ultracart.com/rest/v2*
110
110
  | [**get_sfvb_secret_request**](SfvbApi.md#get_sfvb_secret_request) | **GET** /sfvb/secrets/{request_id} | Read one secret request |
111
111
  | [**get_sfvb_secret_requests**](SfvbApi.md#get_sfvb_secret_requests) | **GET** /sfvb/secrets | List this sign-in's secret requests |
112
112
  | [**get_sfvb_sequence**](SfvbApi.md#get_sfvb_sequence) | **GET** /sfvb/storefronts/{storefront_oid}/sequences/{sequence_uuid} | Get a campaign's or flow's steps as a tree |
113
+ | [**get_sfvb_sequence_step_dispatch_logs**](SfvbApi.md#get_sfvb_sequence_step_dispatch_logs) | **GET** /sfvb/storefronts/{storefront_oid}/sequences/{sequence_uuid}/steps/{step_uuid}/dispatch_logs | Read a flow or campaign step's dispatch log and counts |
113
114
  | [**get_sfvb_server_log**](SfvbApi.md#get_sfvb_server_log) | **GET** /sfvb/storefronts/{storefront_oid}/logs/{log_id} | Get one storefront render log |
114
115
  | [**get_sfvb_site_attributes**](SfvbApi.md#get_sfvb_site_attributes) | **GET** /sfvb/storefronts/{storefront_oid}/attributes | Read a storefront's site attributes |
115
116
  | [**get_sfvb_sitemaps**](SfvbApi.md#get_sfvb_sitemaps) | **GET** /sfvb/storefronts/{storefront_oid}/sitemaps | Read a storefront's sitemaps and robots.txt |
@@ -5997,6 +5998,64 @@ end
5997
5998
  - **Accept**: application/json
5998
5999
 
5999
6000
 
6001
+ ## get_sfvb_sequence_step_dispatch_logs
6002
+
6003
+ > <SfvbStepDispatchLogsResponse> get_sfvb_sequence_step_dispatch_logs(storefront_oid, sequence_uuid, step_uuid, opts)
6004
+
6005
+ Read a flow or campaign step's dispatch log and counts
6006
+
6007
+ Why customers were sent, skipped or ended at this step, newest first, as the admin's Dispatch Logs screen shows it, with the step's counts. An email step's counts are its email's; any other step's are its own over 90 days. Email addresses and phone numbers in the text are masked. since is 15m, 2h or 7d, or an ISO-8601 time, default 7d; entries are kept 90 days. limit is 1 to 200, default 50; send next_offset as offset for the next page. Read only.
6008
+
6009
+
6010
+ ### Examples
6011
+
6012
+
6013
+ (No example for this operation).
6014
+
6015
+
6016
+ #### Using the get_sfvb_sequence_step_dispatch_logs_with_http_info variant
6017
+
6018
+ This returns an Array which contains the response data, status code and headers.
6019
+
6020
+ > <Array(<SfvbStepDispatchLogsResponse>, Integer, Hash)> get_sfvb_sequence_step_dispatch_logs_with_http_info(storefront_oid, sequence_uuid, step_uuid, opts)
6021
+
6022
+ ```ruby
6023
+ begin
6024
+ # Read a flow or campaign step's dispatch log and counts
6025
+ data, status_code, headers = api_instance.get_sfvb_sequence_step_dispatch_logs_with_http_info(storefront_oid, sequence_uuid, step_uuid, opts)
6026
+ p status_code # => 2xx
6027
+ p headers # => { ... }
6028
+ p data # => <SfvbStepDispatchLogsResponse>
6029
+ rescue UltracartClient::ApiError => e
6030
+ puts "Error when calling SfvbApi->get_sfvb_sequence_step_dispatch_logs_with_http_info: #{e}"
6031
+ end
6032
+ ```
6033
+
6034
+ ### Parameters
6035
+
6036
+ | Name | Type | Description | Notes |
6037
+ | ---- | ---- | ----------- | ----- |
6038
+ | **storefront_oid** | **Integer** | | |
6039
+ | **sequence_uuid** | **String** | | |
6040
+ | **step_uuid** | **String** | | |
6041
+ | **since** | **String** | | [optional] |
6042
+ | **limit** | **Integer** | | [optional] |
6043
+ | **offset** | **Integer** | | [optional] |
6044
+
6045
+ ### Return type
6046
+
6047
+ [**SfvbStepDispatchLogsResponse**](SfvbStepDispatchLogsResponse.md)
6048
+
6049
+ ### Authorization
6050
+
6051
+ [ultraCartOauth](../README.md#ultraCartOauth), [ultraCartSimpleApiKey](../README.md#ultraCartSimpleApiKey)
6052
+
6053
+ ### HTTP request headers
6054
+
6055
+ - **Content-Type**: Not defined
6056
+ - **Accept**: application/json
6057
+
6058
+
6000
6059
  ## get_sfvb_server_log
6001
6060
 
6002
6061
  > <SfvbServerLogDetail> get_sfvb_server_log(storefront_oid, log_id, opts)
@@ -9,6 +9,7 @@
9
9
  | **blog_post_oid** | **Integer** | The blog post&#39;s oid. This is what a page&#39;s blog post assignment names. | [optional] |
10
10
  | **body** | **String** | The post body as HTML, exactly as stored. | [optional] |
11
11
  | **created_dts** | **String** | When the post was created (ISO 8601, UTC). | [optional] |
12
+ | **dry_run** | **Boolean** | True when this is the result of a dry run and nothing was saved. The post is shown as it is stored. | [optional] |
12
13
  | **excerpt** | **String** | The post excerpt as HTML, exactly as stored. | [optional] |
13
14
  | **images** | [**Array&lt;SfvbBlogPostImage&gt;**](SfvbBlogPostImage.md) | The post&#39;s images, the default image first. | [optional] |
14
15
  | **last_modified_dts** | **String** | When the post was last changed (ISO 8601, UTC), or null if it never was. | [optional] |
@@ -34,6 +35,7 @@ instance = UltracartClient::SfvbBlogPostDetail.new(
34
35
  blog_post_oid: null,
35
36
  body: null,
36
37
  created_dts: null,
38
+ dry_run: null,
37
39
  excerpt: null,
38
40
  images: null,
39
41
  last_modified_dts: null,
@@ -7,6 +7,7 @@
7
7
  | **allow_comments** | **Boolean** | Whether shoppers may comment. Defaults to false on create. | [optional] |
8
8
  | **author** | **String** | The author&#39;s name as plain text, up to 100 characters, with no quotes or angle brackets. | [optional] |
9
9
  | **body** | **String** | The post body as HTML, up to 1 MB, rendered exactly as stored. Refused with sfvb.unsafe_html if it could run script - script and other executable tags, on attributes, links that are not http, https, mailto, tel or relative, and iframes other than YouTube or Vimeo players. Reference an attached image by the url the post&#39;s images report. | [optional] |
10
+ | **dry_run** | **Boolean** | On an update, true to run every check the write would run and save nothing. A refusal comes back exactly as it would on the real write. | [optional] |
10
11
  | **excerpt** | **String** | The post excerpt as HTML, up to 256 KB. Held to the same rule as body. | [optional] |
11
12
  | **publication_dts** | **String** | When the post is published, as an ISO 8601 UTC time in the same form publication_dts reads back. Refused on a draft. A post made public without one is published now. | [optional] |
12
13
  | **seo_description** | **String** | The meta description (storefrontSEODescription), the search result snippet. Plain text with no angle brackets or double quotes, up to 1000 characters. Left out, it is unchanged; an empty string clears it, and the head falls back to the site&#39;s description. | [optional] |
@@ -26,6 +27,7 @@ instance = UltracartClient::SfvbBlogPostRequest.new(
26
27
  allow_comments: null,
27
28
  author: null,
28
29
  body: null,
30
+ dry_run: null,
29
31
  excerpt: null,
30
32
  publication_dts: null,
31
33
  seo_description: null,
@@ -0,0 +1,34 @@
1
+ # UltracartClient::SfvbStepCounts
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **clicked** | **Integer** | Messages with a click. | [optional] |
8
+ | **customers** | **Integer** | For a step that isn&#39;t an email, the customers that passed through it. | [optional] |
9
+ | **delivered** | **Integer** | Messages delivered. | [optional] |
10
+ | **opened** | **Integer** | Emails opened. | [optional] |
11
+ | **sent** | **Integer** | Messages sent. | [optional] |
12
+ | **skipped** | **Integer** | Customers who reached the step and were not sent anything. The dispatch log says why. | [optional] |
13
+ | **source** | **String** | email (the step&#39;s email, all time) or step (this step, the last 90 days). | [optional] |
14
+ | **spam** | **Integer** | Spam complaints. | [optional] |
15
+ | **unsubscribed** | **Integer** | Unsubscribes from these messages. | [optional] |
16
+
17
+ ## Example
18
+
19
+ ```ruby
20
+ require 'ultracart_api'
21
+
22
+ instance = UltracartClient::SfvbStepCounts.new(
23
+ clicked: null,
24
+ customers: null,
25
+ delivered: null,
26
+ opened: null,
27
+ sent: null,
28
+ skipped: null,
29
+ source: null,
30
+ spam: null,
31
+ unsubscribed: null
32
+ )
33
+ ```
34
+
@@ -0,0 +1,22 @@
1
+ # UltracartClient::SfvbStepDispatchLog
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **customer_uuid** | **String** | The customer the entry is about. | [optional] |
8
+ | **detail** | **String** | What happened, as the admin&#39;s Dispatch Logs screen shows it, with email addresses and phone numbers masked. | [optional] |
9
+ | **logged_at** | **String** | When the entry was written, as ISO 8601 with the server&#39;s offset. | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'ultracart_api'
15
+
16
+ instance = UltracartClient::SfvbStepDispatchLog.new(
17
+ customer_uuid: null,
18
+ detail: null,
19
+ logged_at: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,32 @@
1
+ # UltracartClient::SfvbStepDispatchLogsResponse
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **counts** | [**SfvbStepCounts**](SfvbStepCounts.md) | | [optional] |
8
+ | **entries** | [**Array&lt;SfvbStepDispatchLog&gt;**](SfvbStepDispatchLog.md) | The entries in the window, newest first. | [optional] |
9
+ | **next_offset** | **Integer** | Send this as offset for the next page. Absent on the last page. | [optional] |
10
+ | **notes** | **Array&lt;String&gt;** | What a person should know about reading these entries. | [optional] |
11
+ | **sequence_uuid** | **String** | The communication sequence the step is in. | [optional] |
12
+ | **since** | **String** | The start of the window read, as ISO 8601. | [optional] |
13
+ | **step_type** | **String** | The step&#39;s type, such as email, sms or wait. | [optional] |
14
+ | **step_uuid** | **String** | The step. | [optional] |
15
+
16
+ ## Example
17
+
18
+ ```ruby
19
+ require 'ultracart_api'
20
+
21
+ instance = UltracartClient::SfvbStepDispatchLogsResponse.new(
22
+ counts: null,
23
+ entries: null,
24
+ next_offset: null,
25
+ notes: null,
26
+ sequence_uuid: null,
27
+ since: null,
28
+ step_type: null,
29
+ step_uuid: null
30
+ )
31
+ ```
32
+
@@ -7625,6 +7625,91 @@ module UltracartClient
7625
7625
  return data, status_code, headers
7626
7626
  end
7627
7627
 
7628
+ # Read a flow or campaign step's dispatch log and counts
7629
+ # Why customers were sent, skipped or ended at this step, newest first, as the admin's Dispatch Logs screen shows it, with the step's counts. An email step's counts are its email's; any other step's are its own over 90 days. Email addresses and phone numbers in the text are masked. since is 15m, 2h or 7d, or an ISO-8601 time, default 7d; entries are kept 90 days. limit is 1 to 200, default 50; send next_offset as offset for the next page. Read only.
7630
+ # @param storefront_oid [Integer]
7631
+ # @param sequence_uuid [String]
7632
+ # @param step_uuid [String]
7633
+ # @param [Hash] opts the optional parameters
7634
+ # @option opts [String] :since
7635
+ # @option opts [Integer] :limit
7636
+ # @option opts [Integer] :offset
7637
+ # @return [SfvbStepDispatchLogsResponse]
7638
+ def get_sfvb_sequence_step_dispatch_logs(storefront_oid, sequence_uuid, step_uuid, opts = {})
7639
+ data, _status_code, _headers = get_sfvb_sequence_step_dispatch_logs_with_http_info(storefront_oid, sequence_uuid, step_uuid, opts)
7640
+ data
7641
+ end
7642
+
7643
+ # Read a flow or campaign step&#39;s dispatch log and counts
7644
+ # Why customers were sent, skipped or ended at this step, newest first, as the admin&#39;s Dispatch Logs screen shows it, with the step&#39;s counts. An email step&#39;s counts are its email&#39;s; any other step&#39;s are its own over 90 days. Email addresses and phone numbers in the text are masked. since is 15m, 2h or 7d, or an ISO-8601 time, default 7d; entries are kept 90 days. limit is 1 to 200, default 50; send next_offset as offset for the next page. Read only.
7645
+ # @param storefront_oid [Integer]
7646
+ # @param sequence_uuid [String]
7647
+ # @param step_uuid [String]
7648
+ # @param [Hash] opts the optional parameters
7649
+ # @option opts [String] :since
7650
+ # @option opts [Integer] :limit
7651
+ # @option opts [Integer] :offset
7652
+ # @return [Array<(SfvbStepDispatchLogsResponse, Integer, Hash)>] SfvbStepDispatchLogsResponse data, response status code and response headers
7653
+ def get_sfvb_sequence_step_dispatch_logs_with_http_info(storefront_oid, sequence_uuid, step_uuid, opts = {})
7654
+ if @api_client.config.debugging
7655
+ @api_client.config.logger.debug 'Calling API: SfvbApi.get_sfvb_sequence_step_dispatch_logs ...'
7656
+ end
7657
+ # verify the required parameter 'storefront_oid' is set
7658
+ if @api_client.config.client_side_validation && storefront_oid.nil?
7659
+ fail ArgumentError, "Missing the required parameter 'storefront_oid' when calling SfvbApi.get_sfvb_sequence_step_dispatch_logs"
7660
+ end
7661
+ # verify the required parameter 'sequence_uuid' is set
7662
+ if @api_client.config.client_side_validation && sequence_uuid.nil?
7663
+ fail ArgumentError, "Missing the required parameter 'sequence_uuid' when calling SfvbApi.get_sfvb_sequence_step_dispatch_logs"
7664
+ end
7665
+ # verify the required parameter 'step_uuid' is set
7666
+ if @api_client.config.client_side_validation && step_uuid.nil?
7667
+ fail ArgumentError, "Missing the required parameter 'step_uuid' when calling SfvbApi.get_sfvb_sequence_step_dispatch_logs"
7668
+ end
7669
+ # resource path
7670
+ local_var_path = '/sfvb/storefronts/{storefront_oid}/sequences/{sequence_uuid}/steps/{step_uuid}/dispatch_logs'.sub('{' + 'storefront_oid' + '}', CGI.escape(storefront_oid.to_s)).sub('{' + 'sequence_uuid' + '}', CGI.escape(sequence_uuid.to_s)).sub('{' + 'step_uuid' + '}', CGI.escape(step_uuid.to_s))
7671
+
7672
+ # query parameters
7673
+ query_params = opts[:query_params] || {}
7674
+ query_params[:'since'] = opts[:'since'] if !opts[:'since'].nil?
7675
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
7676
+ query_params[:'offset'] = opts[:'offset'] if !opts[:'offset'].nil?
7677
+
7678
+ # header parameters
7679
+ header_params = opts[:header_params] || {}
7680
+ header_params['X-UltraCart-Api-Version'] = @api_client.select_header_api_version()
7681
+ # HTTP header 'Accept' (if needed)
7682
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
7683
+
7684
+ # form parameters
7685
+ form_params = opts[:form_params] || {}
7686
+
7687
+ # http body (model)
7688
+ post_body = opts[:debug_body]
7689
+
7690
+ # return_type
7691
+ return_type = opts[:debug_return_type] || 'SfvbStepDispatchLogsResponse'
7692
+
7693
+ # auth_names
7694
+ auth_names = opts[:debug_auth_names] || ['ultraCartOauth', 'ultraCartSimpleApiKey']
7695
+
7696
+ new_options = opts.merge(
7697
+ :operation => :"SfvbApi.get_sfvb_sequence_step_dispatch_logs",
7698
+ :header_params => header_params,
7699
+ :query_params => query_params,
7700
+ :form_params => form_params,
7701
+ :body => post_body,
7702
+ :auth_names => auth_names,
7703
+ :return_type => return_type
7704
+ )
7705
+
7706
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
7707
+ if @api_client.config.debugging
7708
+ @api_client.config.logger.debug "API called: SfvbApi#get_sfvb_sequence_step_dispatch_logs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
7709
+ end
7710
+ return data, status_code, headers
7711
+ end
7712
+
7628
7713
  # Get one storefront render log
7629
7714
  # One render's server log with its lines, each with a level, a category such as VELOCITY or FLOW, and the message. log_id comes from the list, or from the X-UltraCart-Storefront-Log-Id header a page sends inside an SFVB preview session. min_level is debug, info, warn or error, default debug.
7630
7715
  # @param storefront_oid [Integer]
@@ -30,6 +30,9 @@ module UltracartClient
30
30
  # When the post was created (ISO 8601, UTC).
31
31
  attr_accessor :created_dts
32
32
 
33
+ # True when this is the result of a dry run and nothing was saved. The post is shown as it is stored.
34
+ attr_accessor :dry_run
35
+
33
36
  # The post excerpt as HTML, exactly as stored.
34
37
  attr_accessor :excerpt
35
38
 
@@ -77,6 +80,7 @@ module UltracartClient
77
80
  :'blog_post_oid' => :'blog_post_oid',
78
81
  :'body' => :'body',
79
82
  :'created_dts' => :'created_dts',
83
+ :'dry_run' => :'dry_run',
80
84
  :'excerpt' => :'excerpt',
81
85
  :'images' => :'images',
82
86
  :'last_modified_dts' => :'last_modified_dts',
@@ -106,6 +110,7 @@ module UltracartClient
106
110
  :'blog_post_oid' => :'Integer',
107
111
  :'body' => :'String',
108
112
  :'created_dts' => :'String',
113
+ :'dry_run' => :'Boolean',
109
114
  :'excerpt' => :'String',
110
115
  :'images' => :'Array<SfvbBlogPostImage>',
111
116
  :'last_modified_dts' => :'String',
@@ -163,6 +168,10 @@ module UltracartClient
163
168
  self.created_dts = attributes[:'created_dts']
164
169
  end
165
170
 
171
+ if attributes.key?(:'dry_run')
172
+ self.dry_run = attributes[:'dry_run']
173
+ end
174
+
166
175
  if attributes.key?(:'excerpt')
167
176
  self.excerpt = attributes[:'excerpt']
168
177
  end
@@ -243,6 +252,7 @@ module UltracartClient
243
252
  blog_post_oid == o.blog_post_oid &&
244
253
  body == o.body &&
245
254
  created_dts == o.created_dts &&
255
+ dry_run == o.dry_run &&
246
256
  excerpt == o.excerpt &&
247
257
  images == o.images &&
248
258
  last_modified_dts == o.last_modified_dts &&
@@ -267,7 +277,7 @@ module UltracartClient
267
277
  # Calculates hash code according to all attributes.
268
278
  # @return [Integer] Hash code
269
279
  def hash
270
- [allow_comments, author, blog_post_oid, body, created_dts, excerpt, images, last_modified_dts, publication_dts, seo_description, seo_keywords, seo_title, tags, title, unassigned, url_part, view_url, visibility].hash
280
+ [allow_comments, author, blog_post_oid, body, created_dts, dry_run, excerpt, images, last_modified_dts, publication_dts, seo_description, seo_keywords, seo_title, tags, title, unassigned, url_part, view_url, visibility].hash
271
281
  end
272
282
 
273
283
  # Builds the object from hash
@@ -24,6 +24,9 @@ module UltracartClient
24
24
  # The post body as HTML, up to 1 MB, rendered exactly as stored. Refused with sfvb.unsafe_html if it could run script - script and other executable tags, on attributes, links that are not http, https, mailto, tel or relative, and iframes other than YouTube or Vimeo players. Reference an attached image by the url the post's images report.
25
25
  attr_accessor :body
26
26
 
27
+ # On an update, true to run every check the write would run and save nothing. A refusal comes back exactly as it would on the real write.
28
+ attr_accessor :dry_run
29
+
27
30
  # The post excerpt as HTML, up to 256 KB. Held to the same rule as body.
28
31
  attr_accessor :excerpt
29
32
 
@@ -79,6 +82,7 @@ module UltracartClient
79
82
  :'allow_comments' => :'allow_comments',
80
83
  :'author' => :'author',
81
84
  :'body' => :'body',
85
+ :'dry_run' => :'dry_run',
82
86
  :'excerpt' => :'excerpt',
83
87
  :'publication_dts' => :'publication_dts',
84
88
  :'seo_description' => :'seo_description',
@@ -102,6 +106,7 @@ module UltracartClient
102
106
  :'allow_comments' => :'Boolean',
103
107
  :'author' => :'String',
104
108
  :'body' => :'String',
109
+ :'dry_run' => :'Boolean',
105
110
  :'excerpt' => :'String',
106
111
  :'publication_dts' => :'String',
107
112
  :'seo_description' => :'String',
@@ -147,6 +152,10 @@ module UltracartClient
147
152
  self.body = attributes[:'body']
148
153
  end
149
154
 
155
+ if attributes.key?(:'dry_run')
156
+ self.dry_run = attributes[:'dry_run']
157
+ end
158
+
150
159
  if attributes.key?(:'excerpt')
151
160
  self.excerpt = attributes[:'excerpt']
152
161
  end
@@ -219,6 +228,7 @@ module UltracartClient
219
228
  allow_comments == o.allow_comments &&
220
229
  author == o.author &&
221
230
  body == o.body &&
231
+ dry_run == o.dry_run &&
222
232
  excerpt == o.excerpt &&
223
233
  publication_dts == o.publication_dts &&
224
234
  seo_description == o.seo_description &&
@@ -239,7 +249,7 @@ module UltracartClient
239
249
  # Calculates hash code according to all attributes.
240
250
  # @return [Integer] Hash code
241
251
  def hash
242
- [allow_comments, author, body, excerpt, publication_dts, seo_description, seo_keywords, seo_title, tags, title, url_part, visibility].hash
252
+ [allow_comments, author, body, dry_run, excerpt, publication_dts, seo_description, seo_keywords, seo_title, tags, title, url_part, visibility].hash
243
253
  end
244
254
 
245
255
  # Builds the object from hash
@@ -0,0 +1,300 @@
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 SfvbStepCounts
18
+ # Messages with a click.
19
+ attr_accessor :clicked
20
+
21
+ # For a step that isn't an email, the customers that passed through it.
22
+ attr_accessor :customers
23
+
24
+ # Messages delivered.
25
+ attr_accessor :delivered
26
+
27
+ # Emails opened.
28
+ attr_accessor :opened
29
+
30
+ # Messages sent.
31
+ attr_accessor :sent
32
+
33
+ # Customers who reached the step and were not sent anything. The dispatch log says why.
34
+ attr_accessor :skipped
35
+
36
+ # email (the step's email, all time) or step (this step, the last 90 days).
37
+ attr_accessor :source
38
+
39
+ # Spam complaints.
40
+ attr_accessor :spam
41
+
42
+ # Unsubscribes from these messages.
43
+ attr_accessor :unsubscribed
44
+
45
+ # Attribute mapping from ruby-style variable name to JSON key.
46
+ def self.attribute_map
47
+ {
48
+ :'clicked' => :'clicked',
49
+ :'customers' => :'customers',
50
+ :'delivered' => :'delivered',
51
+ :'opened' => :'opened',
52
+ :'sent' => :'sent',
53
+ :'skipped' => :'skipped',
54
+ :'source' => :'source',
55
+ :'spam' => :'spam',
56
+ :'unsubscribed' => :'unsubscribed'
57
+ }
58
+ end
59
+
60
+ # Returns all the JSON keys this model knows about
61
+ def self.acceptable_attributes
62
+ attribute_map.values
63
+ end
64
+
65
+ # Attribute type mapping.
66
+ def self.openapi_types
67
+ {
68
+ :'clicked' => :'Integer',
69
+ :'customers' => :'Integer',
70
+ :'delivered' => :'Integer',
71
+ :'opened' => :'Integer',
72
+ :'sent' => :'Integer',
73
+ :'skipped' => :'Integer',
74
+ :'source' => :'String',
75
+ :'spam' => :'Integer',
76
+ :'unsubscribed' => :'Integer'
77
+ }
78
+ end
79
+
80
+ # List of attributes with nullable: true
81
+ def self.openapi_nullable
82
+ Set.new([
83
+ ])
84
+ end
85
+
86
+ # Initializes the object
87
+ # @param [Hash] attributes Model attributes in the form of hash
88
+ def initialize(attributes = {})
89
+ if (!attributes.is_a?(Hash))
90
+ fail ArgumentError, "The input argument (attributes) must be a hash in `UltracartClient::SfvbStepCounts` initialize method"
91
+ end
92
+
93
+ # check to see if the attribute exists and convert string to symbol for hash key
94
+ attributes = attributes.each_with_object({}) { |(k, v), h|
95
+ if (!self.class.attribute_map.key?(k.to_sym))
96
+ fail ArgumentError, "`#{k}` is not a valid attribute in `UltracartClient::SfvbStepCounts`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
97
+ end
98
+ h[k.to_sym] = v
99
+ }
100
+
101
+ if attributes.key?(:'clicked')
102
+ self.clicked = attributes[:'clicked']
103
+ end
104
+
105
+ if attributes.key?(:'customers')
106
+ self.customers = attributes[:'customers']
107
+ end
108
+
109
+ if attributes.key?(:'delivered')
110
+ self.delivered = attributes[:'delivered']
111
+ end
112
+
113
+ if attributes.key?(:'opened')
114
+ self.opened = attributes[:'opened']
115
+ end
116
+
117
+ if attributes.key?(:'sent')
118
+ self.sent = attributes[:'sent']
119
+ end
120
+
121
+ if attributes.key?(:'skipped')
122
+ self.skipped = attributes[:'skipped']
123
+ end
124
+
125
+ if attributes.key?(:'source')
126
+ self.source = attributes[:'source']
127
+ end
128
+
129
+ if attributes.key?(:'spam')
130
+ self.spam = attributes[:'spam']
131
+ end
132
+
133
+ if attributes.key?(:'unsubscribed')
134
+ self.unsubscribed = attributes[:'unsubscribed']
135
+ end
136
+ end
137
+
138
+ # Show invalid properties with the reasons. Usually used together with valid?
139
+ # @return Array for valid properties with the reasons
140
+ def list_invalid_properties
141
+ invalid_properties = Array.new
142
+ invalid_properties
143
+ end
144
+
145
+ # Check to see if the all the properties in the model are valid
146
+ # @return true if the model is valid
147
+ def valid?
148
+ true
149
+ end
150
+
151
+ # Checks equality by comparing each attribute.
152
+ # @param [Object] Object to be compared
153
+ def ==(o)
154
+ return true if self.equal?(o)
155
+ self.class == o.class &&
156
+ clicked == o.clicked &&
157
+ customers == o.customers &&
158
+ delivered == o.delivered &&
159
+ opened == o.opened &&
160
+ sent == o.sent &&
161
+ skipped == o.skipped &&
162
+ source == o.source &&
163
+ spam == o.spam &&
164
+ unsubscribed == o.unsubscribed
165
+ end
166
+
167
+ # @see the `==` method
168
+ # @param [Object] Object to be compared
169
+ def eql?(o)
170
+ self == o
171
+ end
172
+
173
+ # Calculates hash code according to all attributes.
174
+ # @return [Integer] Hash code
175
+ def hash
176
+ [clicked, customers, delivered, opened, sent, skipped, source, spam, unsubscribed].hash
177
+ end
178
+
179
+ # Builds the object from hash
180
+ # @param [Hash] attributes Model attributes in the form of hash
181
+ # @return [Object] Returns the model itself
182
+ def self.build_from_hash(attributes)
183
+ new.build_from_hash(attributes)
184
+ end
185
+
186
+ # Builds the object from hash
187
+ # @param [Hash] attributes Model attributes in the form of hash
188
+ # @return [Object] Returns the model itself
189
+ def build_from_hash(attributes)
190
+ return nil unless attributes.is_a?(Hash)
191
+ attributes = attributes.transform_keys(&:to_sym)
192
+ self.class.openapi_types.each_pair do |key, type|
193
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
194
+ self.send("#{key}=", nil)
195
+ elsif type =~ /\AArray<(.*)>/i
196
+ # check to ensure the input is an array given that the attribute
197
+ # is documented as an array but the input is not
198
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
199
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
200
+ end
201
+ elsif !attributes[self.class.attribute_map[key]].nil?
202
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
203
+ end
204
+ end
205
+
206
+ self
207
+ end
208
+
209
+ # Deserializes the data based on type
210
+ # @param string type Data type
211
+ # @param string value Value to be deserialized
212
+ # @return [Object] Deserialized data
213
+ def _deserialize(type, value)
214
+ case type.to_sym
215
+ when :Time
216
+ Time.parse(value)
217
+ when :Date
218
+ Date.parse(value)
219
+ when :String
220
+ value.to_s
221
+ when :Integer
222
+ value.to_i
223
+ when :Float
224
+ value.to_f
225
+ when :Boolean
226
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
227
+ true
228
+ else
229
+ false
230
+ end
231
+ when :Object
232
+ # generic object (usually a Hash), return directly
233
+ value
234
+ when /\AArray<(?<inner_type>.+)>\z/
235
+ inner_type = Regexp.last_match[:inner_type]
236
+ value.map { |v| _deserialize(inner_type, v) }
237
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
238
+ k_type = Regexp.last_match[:k_type]
239
+ v_type = Regexp.last_match[:v_type]
240
+ {}.tap do |hash|
241
+ value.each do |k, v|
242
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
243
+ end
244
+ end
245
+ else # model
246
+ # models (e.g. Pet) or oneOf
247
+ klass = UltracartClient.const_get(type)
248
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
249
+ end
250
+ end
251
+
252
+ # Returns the string representation of the object
253
+ # @return [String] String presentation of the object
254
+ def to_s
255
+ to_hash.to_s
256
+ end
257
+
258
+ # to_body is an alias to to_hash (backward compatibility)
259
+ # @return [Hash] Returns the object in the form of hash
260
+ def to_body
261
+ to_hash
262
+ end
263
+
264
+ # Returns the object in the form of hash
265
+ # @return [Hash] Returns the object in the form of hash
266
+ def to_hash
267
+ hash = {}
268
+ self.class.attribute_map.each_pair do |attr, param|
269
+ value = self.send(attr)
270
+ if value.nil?
271
+ is_nullable = self.class.openapi_nullable.include?(attr)
272
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
273
+ end
274
+
275
+ hash[param] = _to_hash(value)
276
+ end
277
+ hash
278
+ end
279
+
280
+ # Outputs non-array value in the form of hash
281
+ # For object, use to_hash. Otherwise, just return the value
282
+ # @param [Object] value Any valid value
283
+ # @return [Hash] Returns the value in the form of hash
284
+ def _to_hash(value)
285
+ if value.is_a?(Array)
286
+ value.compact.map { |v| _to_hash(v) }
287
+ elsif value.is_a?(Hash)
288
+ {}.tap do |hash|
289
+ value.each { |k, v| hash[k] = _to_hash(v) }
290
+ end
291
+ elsif value.respond_to? :to_hash
292
+ value.to_hash
293
+ else
294
+ value
295
+ end
296
+ end
297
+
298
+ end
299
+
300
+ end
@@ -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 SfvbStepDispatchLog
18
+ # The customer the entry is about.
19
+ attr_accessor :customer_uuid
20
+
21
+ # What happened, as the admin's Dispatch Logs screen shows it, with email addresses and phone numbers masked.
22
+ attr_accessor :detail
23
+
24
+ # When the entry was written, as ISO 8601 with the server's offset.
25
+ attr_accessor :logged_at
26
+
27
+ # Attribute mapping from ruby-style variable name to JSON key.
28
+ def self.attribute_map
29
+ {
30
+ :'customer_uuid' => :'customer_uuid',
31
+ :'detail' => :'detail',
32
+ :'logged_at' => :'logged_at'
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
+ :'customer_uuid' => :'String',
45
+ :'detail' => :'String',
46
+ :'logged_at' => :'String'
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::SfvbStepDispatchLog` 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::SfvbStepDispatchLog`. 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?(:'customer_uuid')
72
+ self.customer_uuid = attributes[:'customer_uuid']
73
+ end
74
+
75
+ if attributes.key?(:'detail')
76
+ self.detail = attributes[:'detail']
77
+ end
78
+
79
+ if attributes.key?(:'logged_at')
80
+ self.logged_at = attributes[:'logged_at']
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
+ customer_uuid == o.customer_uuid &&
103
+ detail == o.detail &&
104
+ logged_at == o.logged_at
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
+ [customer_uuid, detail, logged_at].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,293 @@
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 SfvbStepDispatchLogsResponse
18
+ attr_accessor :counts
19
+
20
+ # The entries in the window, newest first.
21
+ attr_accessor :entries
22
+
23
+ # Send this as offset for the next page. Absent on the last page.
24
+ attr_accessor :next_offset
25
+
26
+ # What a person should know about reading these entries.
27
+ attr_accessor :notes
28
+
29
+ # The communication sequence the step is in.
30
+ attr_accessor :sequence_uuid
31
+
32
+ # The start of the window read, as ISO 8601.
33
+ attr_accessor :since
34
+
35
+ # The step's type, such as email, sms or wait.
36
+ attr_accessor :step_type
37
+
38
+ # The step.
39
+ attr_accessor :step_uuid
40
+
41
+ # Attribute mapping from ruby-style variable name to JSON key.
42
+ def self.attribute_map
43
+ {
44
+ :'counts' => :'counts',
45
+ :'entries' => :'entries',
46
+ :'next_offset' => :'next_offset',
47
+ :'notes' => :'notes',
48
+ :'sequence_uuid' => :'sequence_uuid',
49
+ :'since' => :'since',
50
+ :'step_type' => :'step_type',
51
+ :'step_uuid' => :'step_uuid'
52
+ }
53
+ end
54
+
55
+ # Returns all the JSON keys this model knows about
56
+ def self.acceptable_attributes
57
+ attribute_map.values
58
+ end
59
+
60
+ # Attribute type mapping.
61
+ def self.openapi_types
62
+ {
63
+ :'counts' => :'SfvbStepCounts',
64
+ :'entries' => :'Array<SfvbStepDispatchLog>',
65
+ :'next_offset' => :'Integer',
66
+ :'notes' => :'Array<String>',
67
+ :'sequence_uuid' => :'String',
68
+ :'since' => :'String',
69
+ :'step_type' => :'String',
70
+ :'step_uuid' => :'String'
71
+ }
72
+ end
73
+
74
+ # List of attributes with nullable: true
75
+ def self.openapi_nullable
76
+ Set.new([
77
+ ])
78
+ end
79
+
80
+ # Initializes the object
81
+ # @param [Hash] attributes Model attributes in the form of hash
82
+ def initialize(attributes = {})
83
+ if (!attributes.is_a?(Hash))
84
+ fail ArgumentError, "The input argument (attributes) must be a hash in `UltracartClient::SfvbStepDispatchLogsResponse` initialize method"
85
+ end
86
+
87
+ # check to see if the attribute exists and convert string to symbol for hash key
88
+ attributes = attributes.each_with_object({}) { |(k, v), h|
89
+ if (!self.class.attribute_map.key?(k.to_sym))
90
+ fail ArgumentError, "`#{k}` is not a valid attribute in `UltracartClient::SfvbStepDispatchLogsResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
91
+ end
92
+ h[k.to_sym] = v
93
+ }
94
+
95
+ if attributes.key?(:'counts')
96
+ self.counts = attributes[:'counts']
97
+ end
98
+
99
+ if attributes.key?(:'entries')
100
+ if (value = attributes[:'entries']).is_a?(Array)
101
+ self.entries = value
102
+ end
103
+ end
104
+
105
+ if attributes.key?(:'next_offset')
106
+ self.next_offset = attributes[:'next_offset']
107
+ end
108
+
109
+ if attributes.key?(:'notes')
110
+ if (value = attributes[:'notes']).is_a?(Array)
111
+ self.notes = value
112
+ end
113
+ end
114
+
115
+ if attributes.key?(:'sequence_uuid')
116
+ self.sequence_uuid = attributes[:'sequence_uuid']
117
+ end
118
+
119
+ if attributes.key?(:'since')
120
+ self.since = attributes[:'since']
121
+ end
122
+
123
+ if attributes.key?(:'step_type')
124
+ self.step_type = attributes[:'step_type']
125
+ end
126
+
127
+ if attributes.key?(:'step_uuid')
128
+ self.step_uuid = attributes[:'step_uuid']
129
+ end
130
+ end
131
+
132
+ # Show invalid properties with the reasons. Usually used together with valid?
133
+ # @return Array for valid properties with the reasons
134
+ def list_invalid_properties
135
+ invalid_properties = Array.new
136
+ invalid_properties
137
+ end
138
+
139
+ # Check to see if the all the properties in the model are valid
140
+ # @return true if the model is valid
141
+ def valid?
142
+ true
143
+ end
144
+
145
+ # Checks equality by comparing each attribute.
146
+ # @param [Object] Object to be compared
147
+ def ==(o)
148
+ return true if self.equal?(o)
149
+ self.class == o.class &&
150
+ counts == o.counts &&
151
+ entries == o.entries &&
152
+ next_offset == o.next_offset &&
153
+ notes == o.notes &&
154
+ sequence_uuid == o.sequence_uuid &&
155
+ since == o.since &&
156
+ step_type == o.step_type &&
157
+ step_uuid == o.step_uuid
158
+ end
159
+
160
+ # @see the `==` method
161
+ # @param [Object] Object to be compared
162
+ def eql?(o)
163
+ self == o
164
+ end
165
+
166
+ # Calculates hash code according to all attributes.
167
+ # @return [Integer] Hash code
168
+ def hash
169
+ [counts, entries, next_offset, notes, sequence_uuid, since, step_type, step_uuid].hash
170
+ end
171
+
172
+ # Builds the object from hash
173
+ # @param [Hash] attributes Model attributes in the form of hash
174
+ # @return [Object] Returns the model itself
175
+ def self.build_from_hash(attributes)
176
+ new.build_from_hash(attributes)
177
+ end
178
+
179
+ # Builds the object from hash
180
+ # @param [Hash] attributes Model attributes in the form of hash
181
+ # @return [Object] Returns the model itself
182
+ def build_from_hash(attributes)
183
+ return nil unless attributes.is_a?(Hash)
184
+ attributes = attributes.transform_keys(&:to_sym)
185
+ self.class.openapi_types.each_pair do |key, type|
186
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
187
+ self.send("#{key}=", nil)
188
+ elsif type =~ /\AArray<(.*)>/i
189
+ # check to ensure the input is an array given that the attribute
190
+ # is documented as an array but the input is not
191
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
192
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
193
+ end
194
+ elsif !attributes[self.class.attribute_map[key]].nil?
195
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
196
+ end
197
+ end
198
+
199
+ self
200
+ end
201
+
202
+ # Deserializes the data based on type
203
+ # @param string type Data type
204
+ # @param string value Value to be deserialized
205
+ # @return [Object] Deserialized data
206
+ def _deserialize(type, value)
207
+ case type.to_sym
208
+ when :Time
209
+ Time.parse(value)
210
+ when :Date
211
+ Date.parse(value)
212
+ when :String
213
+ value.to_s
214
+ when :Integer
215
+ value.to_i
216
+ when :Float
217
+ value.to_f
218
+ when :Boolean
219
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
220
+ true
221
+ else
222
+ false
223
+ end
224
+ when :Object
225
+ # generic object (usually a Hash), return directly
226
+ value
227
+ when /\AArray<(?<inner_type>.+)>\z/
228
+ inner_type = Regexp.last_match[:inner_type]
229
+ value.map { |v| _deserialize(inner_type, v) }
230
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
231
+ k_type = Regexp.last_match[:k_type]
232
+ v_type = Regexp.last_match[:v_type]
233
+ {}.tap do |hash|
234
+ value.each do |k, v|
235
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
236
+ end
237
+ end
238
+ else # model
239
+ # models (e.g. Pet) or oneOf
240
+ klass = UltracartClient.const_get(type)
241
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
242
+ end
243
+ end
244
+
245
+ # Returns the string representation of the object
246
+ # @return [String] String presentation of the object
247
+ def to_s
248
+ to_hash.to_s
249
+ end
250
+
251
+ # to_body is an alias to to_hash (backward compatibility)
252
+ # @return [Hash] Returns the object in the form of hash
253
+ def to_body
254
+ to_hash
255
+ end
256
+
257
+ # Returns the object in the form of hash
258
+ # @return [Hash] Returns the object in the form of hash
259
+ def to_hash
260
+ hash = {}
261
+ self.class.attribute_map.each_pair do |attr, param|
262
+ value = self.send(attr)
263
+ if value.nil?
264
+ is_nullable = self.class.openapi_nullable.include?(attr)
265
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
266
+ end
267
+
268
+ hash[param] = _to_hash(value)
269
+ end
270
+ hash
271
+ end
272
+
273
+ # Outputs non-array value in the form of hash
274
+ # For object, use to_hash. Otherwise, just return the value
275
+ # @param [Object] value Any valid value
276
+ # @return [Hash] Returns the value in the form of hash
277
+ def _to_hash(value)
278
+ if value.is_a?(Array)
279
+ value.compact.map { |v| _to_hash(v) }
280
+ elsif value.is_a?(Hash)
281
+ {}.tap do |hash|
282
+ value.each { |k, v| hash[k] = _to_hash(v) }
283
+ end
284
+ elsif value.respond_to? :to_hash
285
+ value.to_hash
286
+ else
287
+ value
288
+ end
289
+ end
290
+
291
+ end
292
+
293
+ 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.227'
14
+ VERSION = '4.1.228'
15
15
  end
data/lib/ultracart_api.rb CHANGED
@@ -1222,6 +1222,9 @@ require 'ultracart_api/models/sfvb_sitemaps_response'
1222
1222
  require 'ultracart_api/models/sfvb_smart_attribution'
1223
1223
  require 'ultracart_api/models/sfvb_smart_attribution_platform'
1224
1224
  require 'ultracart_api/models/sfvb_smart_attribution_request'
1225
+ require 'ultracart_api/models/sfvb_step_counts'
1226
+ require 'ultracart_api/models/sfvb_step_dispatch_log'
1227
+ require 'ultracart_api/models/sfvb_step_dispatch_logs_response'
1225
1228
  require 'ultracart_api/models/sfvb_storefront'
1226
1229
  require 'ultracart_api/models/sfvb_storefronts_response'
1227
1230
  require 'ultracart_api/models/sfvb_template'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ultracart_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.227
4
+ version: 4.1.228
5
5
  platform: ruby
6
6
  authors:
7
7
  - UltraCart
@@ -1284,6 +1284,9 @@ files:
1284
1284
  - docs/SfvbSmartAttribution.md
1285
1285
  - docs/SfvbSmartAttributionPlatform.md
1286
1286
  - docs/SfvbSmartAttributionRequest.md
1287
+ - docs/SfvbStepCounts.md
1288
+ - docs/SfvbStepDispatchLog.md
1289
+ - docs/SfvbStepDispatchLogsResponse.md
1287
1290
  - docs/SfvbStorefront.md
1288
1291
  - docs/SfvbStorefrontsResponse.md
1289
1292
  - docs/SfvbTemplate.md
@@ -2677,6 +2680,9 @@ files:
2677
2680
  - lib/ultracart_api/models/sfvb_smart_attribution.rb
2678
2681
  - lib/ultracart_api/models/sfvb_smart_attribution_platform.rb
2679
2682
  - lib/ultracart_api/models/sfvb_smart_attribution_request.rb
2683
+ - lib/ultracart_api/models/sfvb_step_counts.rb
2684
+ - lib/ultracart_api/models/sfvb_step_dispatch_log.rb
2685
+ - lib/ultracart_api/models/sfvb_step_dispatch_logs_response.rb
2680
2686
  - lib/ultracart_api/models/sfvb_storefront.rb
2681
2687
  - lib/ultracart_api/models/sfvb_storefronts_response.rb
2682
2688
  - lib/ultracart_api/models/sfvb_template.rb