zernio-sdk 0.0.737 → 0.0.739

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: 819d897dc076c719e4b1797ef83d1398d882c4b16471432c2df6ee07bdfd689c
4
- data.tar.gz: 8a17453dbd051e363180df70e571f2b08df2157e253bd18f3231f32cd1267ea2
3
+ metadata.gz: 928968c857cd46ee2a5081192f7d3c15857756a79f63b72eacaa0e39425f529f
4
+ data.tar.gz: 1ab4392b72e8e6d77b98aa4181403d3153f1512dc4bf9394b5ee72a18e2e9e05
5
5
  SHA512:
6
- metadata.gz: 18acc2df387b5373b5b33f22ebdbff93f65123a34cc9dc8927983adcba13c20dd2f9ef5998a1409c2f6973d305109ae02de7b4d9b9a07356c9b45748222843e5
7
- data.tar.gz: ea17cd724391033e4e61d11ca97a12d338eb457d40c034931281c66314687a2ef99d7182f100d8a5c874677b4215cb8db1eab0ef1699e1f513126273234e62e7
6
+ metadata.gz: b9cf340de0a9052e88c0e5c04aa8da5227ff898fb0f94246f188e444396c1cbbccc3dcd06b9a68eda3b8281808622e07b50f382474f098676758f34d9ae4fafb
7
+ data.tar.gz: e0b1bc4d9913f1a2c59cd04901f257fb7d27fa18d98aa8eaffc31508a7b41d851865b94be11d02ee7ebd2aa0f2a26cd4adb64158a4d798b5c334e34bcb1b3ce6
data/README.md CHANGED
@@ -1536,6 +1536,7 @@ Class | Method | HTTP request | Description
1536
1536
  - [Zernio::ListBlogs200Response](docs/ListBlogs200Response.md)
1537
1537
  - [Zernio::ListBroadcastRecipients200Response](docs/ListBroadcastRecipients200Response.md)
1538
1538
  - [Zernio::ListBroadcastRecipients200ResponseRecipientsInner](docs/ListBroadcastRecipients200ResponseRecipientsInner.md)
1539
+ - [Zernio::ListBroadcastRecipients200ResponseSummary](docs/ListBroadcastRecipients200ResponseSummary.md)
1539
1540
  - [Zernio::ListBroadcasts200Response](docs/ListBroadcasts200Response.md)
1540
1541
  - [Zernio::ListBroadcasts200ResponseBroadcastsInner](docs/ListBroadcasts200ResponseBroadcastsInner.md)
1541
1542
  - [Zernio::ListCalls200Response](docs/ListCalls200Response.md)
data/docs/AdTreeAdSet.md CHANGED
@@ -7,6 +7,7 @@
7
7
  | **platform_ad_set_id** | **String** | | [optional] |
8
8
  | **ad_set_name** | **String** | | [optional] |
9
9
  | **status** | [**AdStatus**](AdStatus.md) | Derived from child ad statuses | [optional] |
10
+ | **created_time** | **Time** | Earliest `platformCreatedAt` (platform ad creation time; falls back to `createdAt`, Zernio's sync time, for ads synced before that field existed) across this ad set's ads. Not the ad set's own creation time on the platform — a proxy usable for sorting. | [optional] |
10
11
  | **ad_count** | **Integer** | | [optional] |
11
12
  | **budget** | [**AdTreeAdSetBudget**](AdTreeAdSetBudget.md) | | [optional] |
12
13
  | **ad_set_budget** | [**AdTreeAdSetAdSetBudget**](AdTreeAdSetAdSetBudget.md) | | [optional] |
@@ -30,6 +31,7 @@ instance = Zernio::AdTreeAdSet.new(
30
31
  platform_ad_set_id: null,
31
32
  ad_set_name: null,
32
33
  status: null,
34
+ created_time: null,
33
35
  ad_count: null,
34
36
  budget: null,
35
37
  ad_set_budget: null,
@@ -7,6 +7,7 @@
7
7
  | **platform_campaign_id** | **String** | | [optional] |
8
8
  | **platform** | **String** | | [optional] |
9
9
  | **campaign_name** | **String** | | [optional] |
10
+ | **created_time** | **Time** | Earliest `platformCreatedAt` (platform ad creation time; falls back to `createdAt`, Zernio's sync time, for ads synced before that field existed) across every ad in the campaign. Not the platform campaign's own creation time (Meta's `Campaign.created_time` etc. is not synced) — a campaign created empty and populated later will show its first ad's time, not the campaign's. Usable for sorting \"most recently created\" without the numeric-campaign-id heuristic. Same source as `AdTreeAdSet.createdTime` and `Ad.platformCreatedAt`; mirrors `AdCampaign.earliestAd`. | [optional] |
10
11
  | **status** | [**AdStatus**](AdStatus.md) | Delivery status derived from child ad statuses. Distinct from `reviewStatus`, which reflects the platform-side review state. | [optional] |
11
12
  | **review_status** | [**AdReviewStatus**](AdReviewStatus.md) | | [optional] |
12
13
  | **platform_campaign_status** | **String** | Raw platform-level campaign status (Meta `effective_status`: ACTIVE, PAUSED, DELETED, ARCHIVED, IN_PROCESS, WITH_ISSUES). Distinct from per-ad `platformStatus`. | [optional] |
@@ -42,6 +43,7 @@ instance = Zernio::AdTreeCampaign.new(
42
43
  platform_campaign_id: null,
43
44
  platform: null,
44
45
  campaign_name: null,
46
+ created_time: null,
45
47
  status: null,
46
48
  review_status: null,
47
49
  platform_campaign_status: null,
@@ -11,7 +11,7 @@
11
11
  | **body** | **String** | Primary text shown above the image / video. Single-creative shape only. Mutually exclusive with `creatives[]`. | [optional] |
12
12
  | **image_url** | **String** | Image asset for single-creative shape. Mutually exclusive with `video` and with `creatives[]`. Required on the single-creative shape if `video` is not supplied. | [optional] |
13
13
  | **video** | [**CtwaAdRequestBodyVideo**](CtwaAdRequestBodyVideo.md) | | [optional] |
14
- | **creatives** | [**Array<CtwaAdRequestBodyCreativesInner>**](CtwaAdRequestBodyCreativesInner.md) | Multi-creative shape: N CTWA ads under one campaign + one ad set, sharing budget and targeting. Mutually exclusive with the top-level single-creative fields (`headline` / `body` / `imageUrl` / `video`). Each entry must supply its own headline, body, and exactly one of `imageUrl` / `video`. | [optional] |
14
+ | **creatives** | [**Array<CtwaAdRequestBodyCreativesInner>**](CtwaAdRequestBodyCreativesInner.md) | Multi-creative shape: N CTWA ads under one campaign + one ad set, sharing budget and targeting. Mutually exclusive with the top-level single-creative fields (`headline` / `body` / `imageUrl` / `video`): setting both is a 400, unlike `POST /v1/ads/create` where the top-level fields are silently ignored in multi-creative mode. Each entry must supply its own headline, body, and exactly one of `imageUrl` / `video`. | [optional] |
15
15
  | **ad_set_id** | **String** | Attach the creatives to this EXISTING messaging ad set instead of building a campaign, so the ad set keeps its learning phase. It then owns budget, targeting and schedule, so `budgetAmount`, `budgetType`, `endDate`, `objective`, `countries`, `interests`, `audienceId` and `campaignStatus` are rejected with a 400 alongside it. Its `destination_type` must match the ad's destination. | [optional] |
16
16
  | **budget_amount** | **Float** | Budget amount in the ad account's currency major units (e.g. dollars for USD, not cents). Must be > 0. Required unless `adSetId` is set, where the ad set owns it. | [optional] |
17
17
  | **budget_type** | **String** | Required unless `adSetId` is set. | [optional] |
@@ -11,7 +11,7 @@
11
11
  | **body** | **String** | Primary text shown above the image / video. Single-creative shape only. Mutually exclusive with `creatives[]`. | [optional] |
12
12
  | **image_url** | **String** | Image asset for single-creative shape. Mutually exclusive with `video` and with `creatives[]`. Required on the single-creative shape if `video` is not supplied. | [optional] |
13
13
  | **video** | [**CtwaAdRequestBodyVideo**](CtwaAdRequestBodyVideo.md) | | [optional] |
14
- | **creatives** | [**Array<CtwaAdRequestBodyCreativesInner>**](CtwaAdRequestBodyCreativesInner.md) | Multi-creative shape: N CTWA ads under one campaign + one ad set, sharing budget and targeting. Mutually exclusive with the top-level single-creative fields (`headline` / `body` / `imageUrl` / `video`). Each entry must supply its own headline, body, and exactly one of `imageUrl` / `video`. | [optional] |
14
+ | **creatives** | [**Array<CtwaAdRequestBodyCreativesInner>**](CtwaAdRequestBodyCreativesInner.md) | Multi-creative shape: N CTWA ads under one campaign + one ad set, sharing budget and targeting. Mutually exclusive with the top-level single-creative fields (`headline` / `body` / `imageUrl` / `video`): setting both is a 400, unlike `POST /v1/ads/create` where the top-level fields are silently ignored in multi-creative mode. Each entry must supply its own headline, body, and exactly one of `imageUrl` / `video`. | [optional] |
15
15
  | **ad_set_id** | **String** | Attach the creatives to this EXISTING messaging ad set instead of building a campaign, so the ad set keeps its learning phase. It then owns budget, targeting and schedule, so `budgetAmount`, `budgetType`, `endDate`, `objective`, `countries`, `interests`, `audienceId` and `campaignStatus` are rejected with a 400 alongside it. Its `destination_type` must match the ad's destination. | [optional] |
16
16
  | **budget_amount** | **Float** | Budget amount in the ad account's currency major units (e.g. dollars for USD, not cents). Must be > 0. Required unless `adSetId` is set, where the ad set owns it. | [optional] |
17
17
  | **budget_type** | **String** | Required unless `adSetId` is set. | [optional] |
@@ -11,7 +11,7 @@
11
11
  | **body** | **String** | Primary text shown above the image / video. Single-creative shape only. Mutually exclusive with `creatives[]`. | [optional] |
12
12
  | **image_url** | **String** | Image asset for single-creative shape. Mutually exclusive with `video` and with `creatives[]`. Required on the single-creative shape if `video` is not supplied. | [optional] |
13
13
  | **video** | [**CtwaAdRequestBodyVideo**](CtwaAdRequestBodyVideo.md) | | [optional] |
14
- | **creatives** | [**Array<CtwaAdRequestBodyCreativesInner>**](CtwaAdRequestBodyCreativesInner.md) | Multi-creative shape: N CTWA ads under one campaign + one ad set, sharing budget and targeting. Mutually exclusive with the top-level single-creative fields (`headline` / `body` / `imageUrl` / `video`). Each entry must supply its own headline, body, and exactly one of `imageUrl` / `video`. | [optional] |
14
+ | **creatives** | [**Array<CtwaAdRequestBodyCreativesInner>**](CtwaAdRequestBodyCreativesInner.md) | Multi-creative shape: N CTWA ads under one campaign + one ad set, sharing budget and targeting. Mutually exclusive with the top-level single-creative fields (`headline` / `body` / `imageUrl` / `video`): setting both is a 400, unlike `POST /v1/ads/create` where the top-level fields are silently ignored in multi-creative mode. Each entry must supply its own headline, body, and exactly one of `imageUrl` / `video`. | [optional] |
15
15
  | **ad_set_id** | **String** | Attach the creatives to this EXISTING messaging ad set instead of building a campaign, so the ad set keeps its learning phase. It then owns budget, targeting and schedule, so `budgetAmount`, `budgetType`, `endDate`, `objective`, `countries`, `interests`, `audienceId` and `campaignStatus` are rejected with a 400 alongside it. Its `destination_type` must match the ad's destination. | [optional] |
16
16
  | **budget_amount** | **Float** | Budget amount in the ad account's currency major units (e.g. dollars for USD, not cents). Must be > 0. Required unless `adSetId` is set, where the ad set owns it. | [optional] |
17
17
  | **budget_type** | **String** | Required unless `adSetId` is set. | [optional] |
@@ -7,6 +7,7 @@
7
7
  | **success** | **Boolean** | | [optional] |
8
8
  | **recipients** | [**Array<ListBroadcastRecipients200ResponseRecipientsInner>**](ListBroadcastRecipients200ResponseRecipientsInner.md) | | [optional] |
9
9
  | **pagination** | [**ListContacts200ResponsePagination**](ListContacts200ResponsePagination.md) | | [optional] |
10
+ | **summary** | [**ListBroadcastRecipients200ResponseSummary**](ListBroadcastRecipients200ResponseSummary.md) | | [optional] |
10
11
 
11
12
  ## Example
12
13
 
@@ -16,7 +17,8 @@ require 'zernio-sdk'
16
17
  instance = Zernio::ListBroadcastRecipients200Response.new(
17
18
  success: null,
18
19
  recipients: null,
19
- pagination: null
20
+ pagination: null,
21
+ summary: null
20
22
  )
21
23
  ```
22
24
 
@@ -0,0 +1,28 @@
1
+ # Zernio::ListBroadcastRecipients200ResponseSummary
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **total** | **Integer** | | [optional] |
8
+ | **pending** | **Integer** | | [optional] |
9
+ | **sent** | **Integer** | | [optional] |
10
+ | **delivered** | **Integer** | | [optional] |
11
+ | **read** | **Integer** | | [optional] |
12
+ | **failed** | **Integer** | | [optional] |
13
+
14
+ ## Example
15
+
16
+ ```ruby
17
+ require 'zernio-sdk'
18
+
19
+ instance = Zernio::ListBroadcastRecipients200ResponseSummary.new(
20
+ total: null,
21
+ pending: null,
22
+ sent: null,
23
+ delivered: null,
24
+ read: null,
25
+ failed: null
26
+ )
27
+ ```
28
+
@@ -23,6 +23,9 @@ module Zernio
23
23
  # Derived from child ad statuses
24
24
  attr_accessor :status
25
25
 
26
+ # Earliest `platformCreatedAt` (platform ad creation time; falls back to `createdAt`, Zernio's sync time, for ads synced before that field existed) across this ad set's ads. Not the ad set's own creation time on the platform — a proxy usable for sorting.
27
+ attr_accessor :created_time
28
+
26
29
  attr_accessor :ad_count
27
30
 
28
31
  attr_accessor :budget
@@ -84,6 +87,7 @@ module Zernio
84
87
  :'platform_ad_set_id' => :'platformAdSetId',
85
88
  :'ad_set_name' => :'adSetName',
86
89
  :'status' => :'status',
90
+ :'created_time' => :'createdTime',
87
91
  :'ad_count' => :'adCount',
88
92
  :'budget' => :'budget',
89
93
  :'ad_set_budget' => :'adSetBudget',
@@ -116,6 +120,7 @@ module Zernio
116
120
  :'platform_ad_set_id' => :'String',
117
121
  :'ad_set_name' => :'String',
118
122
  :'status' => :'AdStatus',
123
+ :'created_time' => :'Time',
119
124
  :'ad_count' => :'Integer',
120
125
  :'budget' => :'AdTreeAdSetBudget',
121
126
  :'ad_set_budget' => :'AdTreeAdSetAdSetBudget',
@@ -135,6 +140,7 @@ module Zernio
135
140
  # List of attributes with nullable: true
136
141
  def self.openapi_nullable
137
142
  Set.new([
143
+ :'created_time',
138
144
  :'optimization_goal',
139
145
  :'bid_strategy',
140
146
  :'bid_amount',
@@ -171,6 +177,10 @@ module Zernio
171
177
  self.status = attributes[:'status']
172
178
  end
173
179
 
180
+ if attributes.key?(:'created_time')
181
+ self.created_time = attributes[:'created_time']
182
+ end
183
+
174
184
  if attributes.key?(:'ad_count')
175
185
  self.ad_count = attributes[:'ad_count']
176
186
  end
@@ -253,6 +263,7 @@ module Zernio
253
263
  platform_ad_set_id == o.platform_ad_set_id &&
254
264
  ad_set_name == o.ad_set_name &&
255
265
  status == o.status &&
266
+ created_time == o.created_time &&
256
267
  ad_count == o.ad_count &&
257
268
  budget == o.budget &&
258
269
  ad_set_budget == o.ad_set_budget &&
@@ -277,7 +288,7 @@ module Zernio
277
288
  # Calculates hash code according to all attributes.
278
289
  # @return [Integer] Hash code
279
290
  def hash
280
- [platform_ad_set_id, ad_set_name, status, ad_count, budget, ad_set_budget, metrics, optimization_goal, bid_strategy, bid_amount, roas_average_floor, cost_type, serving_statuses, promoted_object, ads, daily].hash
291
+ [platform_ad_set_id, ad_set_name, status, created_time, ad_count, budget, ad_set_budget, metrics, optimization_goal, bid_strategy, bid_amount, roas_average_floor, cost_type, serving_statuses, promoted_object, ads, daily].hash
281
292
  end
282
293
 
283
294
  # Builds the object from hash
@@ -22,6 +22,9 @@ module Zernio
22
22
 
23
23
  attr_accessor :campaign_name
24
24
 
25
+ # Earliest `platformCreatedAt` (platform ad creation time; falls back to `createdAt`, Zernio's sync time, for ads synced before that field existed) across every ad in the campaign. Not the platform campaign's own creation time (Meta's `Campaign.created_time` etc. is not synced) — a campaign created empty and populated later will show its first ad's time, not the campaign's. Usable for sorting \"most recently created\" without the numeric-campaign-id heuristic. Same source as `AdTreeAdSet.createdTime` and `Ad.platformCreatedAt`; mirrors `AdCampaign.earliestAd`.
26
+ attr_accessor :created_time
27
+
25
28
  # Delivery status derived from child ad statuses. Distinct from `reviewStatus`, which reflects the platform-side review state.
26
29
  attr_accessor :status
27
30
 
@@ -113,6 +116,7 @@ module Zernio
113
116
  :'platform_campaign_id' => :'platformCampaignId',
114
117
  :'platform' => :'platform',
115
118
  :'campaign_name' => :'campaignName',
119
+ :'created_time' => :'createdTime',
116
120
  :'status' => :'status',
117
121
  :'review_status' => :'reviewStatus',
118
122
  :'platform_campaign_status' => :'platformCampaignStatus',
@@ -157,6 +161,7 @@ module Zernio
157
161
  :'platform_campaign_id' => :'String',
158
162
  :'platform' => :'String',
159
163
  :'campaign_name' => :'String',
164
+ :'created_time' => :'Time',
160
165
  :'status' => :'AdStatus',
161
166
  :'review_status' => :'AdReviewStatus',
162
167
  :'platform_campaign_status' => :'String',
@@ -188,6 +193,7 @@ module Zernio
188
193
  # List of attributes with nullable: true
189
194
  def self.openapi_nullable
190
195
  Set.new([
196
+ :'created_time',
191
197
  :'review_status',
192
198
  :'platform_campaign_status',
193
199
  :'campaign_issues_info',
@@ -230,6 +236,10 @@ module Zernio
230
236
  self.campaign_name = attributes[:'campaign_name']
231
237
  end
232
238
 
239
+ if attributes.key?(:'created_time')
240
+ self.created_time = attributes[:'created_time']
241
+ end
242
+
233
243
  if attributes.key?(:'status')
234
244
  self.status = attributes[:'status']
235
245
  end
@@ -386,6 +396,7 @@ module Zernio
386
396
  platform_campaign_id == o.platform_campaign_id &&
387
397
  platform == o.platform &&
388
398
  campaign_name == o.campaign_name &&
399
+ created_time == o.created_time &&
389
400
  status == o.status &&
390
401
  review_status == o.review_status &&
391
402
  platform_campaign_status == o.platform_campaign_status &&
@@ -422,7 +433,7 @@ module Zernio
422
433
  # Calculates hash code according to all attributes.
423
434
  # @return [Integer] Hash code
424
435
  def hash
425
- [platform_campaign_id, platform, campaign_name, status, review_status, platform_campaign_status, campaign_issues_info, ad_count, ad_set_count, budget, campaign_budget, budget_level, is_budget_schedule_enabled, currency, metrics, platform_ad_account_id, platform_ad_account_name, account_id, profile_id, advertising_channel_type, platform_objective, optimization_goal, bid_strategy, bid_amount, roas_average_floor, promoted_object, ad_sets, daily].hash
436
+ [platform_campaign_id, platform, campaign_name, created_time, status, review_status, platform_campaign_status, campaign_issues_info, ad_count, ad_set_count, budget, campaign_budget, budget_level, is_budget_schedule_enabled, currency, metrics, platform_ad_account_id, platform_ad_account_name, account_id, profile_id, advertising_channel_type, platform_objective, optimization_goal, bid_strategy, bid_amount, roas_average_floor, promoted_object, ad_sets, daily].hash
426
437
  end
427
438
 
428
439
  # Builds the object from hash
@@ -35,7 +35,7 @@ module Zernio
35
35
 
36
36
  attr_accessor :video
37
37
 
38
- # Multi-creative shape: N CTWA ads under one campaign + one ad set, sharing budget and targeting. Mutually exclusive with the top-level single-creative fields (`headline` / `body` / `imageUrl` / `video`). Each entry must supply its own headline, body, and exactly one of `imageUrl` / `video`.
38
+ # Multi-creative shape: N CTWA ads under one campaign + one ad set, sharing budget and targeting. Mutually exclusive with the top-level single-creative fields (`headline` / `body` / `imageUrl` / `video`): setting both is a 400, unlike `POST /v1/ads/create` where the top-level fields are silently ignored in multi-creative mode. Each entry must supply its own headline, body, and exactly one of `imageUrl` / `video`.
39
39
  attr_accessor :creatives
40
40
 
41
41
  # Attach the creatives to this EXISTING messaging ad set instead of building a campaign, so the ad set keeps its learning phase. It then owns budget, targeting and schedule, so `budgetAmount`, `budgetType`, `endDate`, `objective`, `countries`, `interests`, `audienceId` and `campaignStatus` are rejected with a 400 alongside it. Its `destination_type` must match the ad's destination.
@@ -35,7 +35,7 @@ module Zernio
35
35
 
36
36
  attr_accessor :video
37
37
 
38
- # Multi-creative shape: N CTWA ads under one campaign + one ad set, sharing budget and targeting. Mutually exclusive with the top-level single-creative fields (`headline` / `body` / `imageUrl` / `video`). Each entry must supply its own headline, body, and exactly one of `imageUrl` / `video`.
38
+ # Multi-creative shape: N CTWA ads under one campaign + one ad set, sharing budget and targeting. Mutually exclusive with the top-level single-creative fields (`headline` / `body` / `imageUrl` / `video`): setting both is a 400, unlike `POST /v1/ads/create` where the top-level fields are silently ignored in multi-creative mode. Each entry must supply its own headline, body, and exactly one of `imageUrl` / `video`.
39
39
  attr_accessor :creatives
40
40
 
41
41
  # Attach the creatives to this EXISTING messaging ad set instead of building a campaign, so the ad set keeps its learning phase. It then owns budget, targeting and schedule, so `budgetAmount`, `budgetType`, `endDate`, `objective`, `countries`, `interests`, `audienceId` and `campaignStatus` are rejected with a 400 alongside it. Its `destination_type` must match the ad's destination.
@@ -36,7 +36,7 @@ module Zernio
36
36
 
37
37
  attr_accessor :video
38
38
 
39
- # Multi-creative shape: N CTWA ads under one campaign + one ad set, sharing budget and targeting. Mutually exclusive with the top-level single-creative fields (`headline` / `body` / `imageUrl` / `video`). Each entry must supply its own headline, body, and exactly one of `imageUrl` / `video`.
39
+ # Multi-creative shape: N CTWA ads under one campaign + one ad set, sharing budget and targeting. Mutually exclusive with the top-level single-creative fields (`headline` / `body` / `imageUrl` / `video`): setting both is a 400, unlike `POST /v1/ads/create` where the top-level fields are silently ignored in multi-creative mode. Each entry must supply its own headline, body, and exactly one of `imageUrl` / `video`.
40
40
  attr_accessor :creatives
41
41
 
42
42
  # Attach the creatives to this EXISTING messaging ad set instead of building a campaign, so the ad set keeps its learning phase. It then owns budget, targeting and schedule, so `budgetAmount`, `budgetType`, `endDate`, `objective`, `countries`, `interests`, `audienceId` and `campaignStatus` are rejected with a 400 alongside it. Its `destination_type` must match the ad's destination.
@@ -21,12 +21,15 @@ module Zernio
21
21
 
22
22
  attr_accessor :pagination
23
23
 
24
+ attr_accessor :summary
25
+
24
26
  # Attribute mapping from ruby-style variable name to JSON key.
25
27
  def self.attribute_map
26
28
  {
27
29
  :'success' => :'success',
28
30
  :'recipients' => :'recipients',
29
- :'pagination' => :'pagination'
31
+ :'pagination' => :'pagination',
32
+ :'summary' => :'summary'
30
33
  }
31
34
  end
32
35
 
@@ -45,7 +48,8 @@ module Zernio
45
48
  {
46
49
  :'success' => :'Boolean',
47
50
  :'recipients' => :'Array<ListBroadcastRecipients200ResponseRecipientsInner>',
48
- :'pagination' => :'ListContacts200ResponsePagination'
51
+ :'pagination' => :'ListContacts200ResponsePagination',
52
+ :'summary' => :'ListBroadcastRecipients200ResponseSummary'
49
53
  }
50
54
  end
51
55
 
@@ -84,6 +88,10 @@ module Zernio
84
88
  if attributes.key?(:'pagination')
85
89
  self.pagination = attributes[:'pagination']
86
90
  end
91
+
92
+ if attributes.key?(:'summary')
93
+ self.summary = attributes[:'summary']
94
+ end
87
95
  end
88
96
 
89
97
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -108,7 +116,8 @@ module Zernio
108
116
  self.class == o.class &&
109
117
  success == o.success &&
110
118
  recipients == o.recipients &&
111
- pagination == o.pagination
119
+ pagination == o.pagination &&
120
+ summary == o.summary
112
121
  end
113
122
 
114
123
  # @see the `==` method
@@ -120,7 +129,7 @@ module Zernio
120
129
  # Calculates hash code according to all attributes.
121
130
  # @return [Integer] Hash code
122
131
  def hash
123
- [success, recipients, pagination].hash
132
+ [success, recipients, pagination, summary].hash
124
133
  end
125
134
 
126
135
  # Builds the object from hash
@@ -0,0 +1,193 @@
1
+ =begin
2
+ #Zernio API
3
+
4
+ #API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
5
+
6
+ The version of the OpenAPI document: 1.0.4
7
+ Contact: support@zernio.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Zernio
17
+ # Delivery totals across all recipients in the broadcast, independent of pagination and status filtering.
18
+ class ListBroadcastRecipients200ResponseSummary < ApiModelBase
19
+ attr_accessor :total
20
+
21
+ attr_accessor :pending
22
+
23
+ attr_accessor :sent
24
+
25
+ attr_accessor :delivered
26
+
27
+ attr_accessor :read
28
+
29
+ attr_accessor :failed
30
+
31
+ # Attribute mapping from ruby-style variable name to JSON key.
32
+ def self.attribute_map
33
+ {
34
+ :'total' => :'total',
35
+ :'pending' => :'pending',
36
+ :'sent' => :'sent',
37
+ :'delivered' => :'delivered',
38
+ :'read' => :'read',
39
+ :'failed' => :'failed'
40
+ }
41
+ end
42
+
43
+ # Returns attribute mapping this model knows about
44
+ def self.acceptable_attribute_map
45
+ attribute_map
46
+ end
47
+
48
+ # Returns all the JSON keys this model knows about
49
+ def self.acceptable_attributes
50
+ acceptable_attribute_map.values
51
+ end
52
+
53
+ # Attribute type mapping.
54
+ def self.openapi_types
55
+ {
56
+ :'total' => :'Integer',
57
+ :'pending' => :'Integer',
58
+ :'sent' => :'Integer',
59
+ :'delivered' => :'Integer',
60
+ :'read' => :'Integer',
61
+ :'failed' => :'Integer'
62
+ }
63
+ end
64
+
65
+ # List of attributes with nullable: true
66
+ def self.openapi_nullable
67
+ Set.new([
68
+ ])
69
+ end
70
+
71
+ # Initializes the object
72
+ # @param [Hash] attributes Model attributes in the form of hash
73
+ def initialize(attributes = {})
74
+ if (!attributes.is_a?(Hash))
75
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::ListBroadcastRecipients200ResponseSummary` initialize method"
76
+ end
77
+
78
+ # check to see if the attribute exists and convert string to symbol for hash key
79
+ acceptable_attribute_map = self.class.acceptable_attribute_map
80
+ attributes = attributes.each_with_object({}) { |(k, v), h|
81
+ if (!acceptable_attribute_map.key?(k.to_sym))
82
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::ListBroadcastRecipients200ResponseSummary`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
83
+ end
84
+ h[k.to_sym] = v
85
+ }
86
+
87
+ if attributes.key?(:'total')
88
+ self.total = attributes[:'total']
89
+ end
90
+
91
+ if attributes.key?(:'pending')
92
+ self.pending = attributes[:'pending']
93
+ end
94
+
95
+ if attributes.key?(:'sent')
96
+ self.sent = attributes[:'sent']
97
+ end
98
+
99
+ if attributes.key?(:'delivered')
100
+ self.delivered = attributes[:'delivered']
101
+ end
102
+
103
+ if attributes.key?(:'read')
104
+ self.read = attributes[:'read']
105
+ end
106
+
107
+ if attributes.key?(:'failed')
108
+ self.failed = attributes[:'failed']
109
+ end
110
+ end
111
+
112
+ # Show invalid properties with the reasons. Usually used together with valid?
113
+ # @return Array for valid properties with the reasons
114
+ def list_invalid_properties
115
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
116
+ invalid_properties = Array.new
117
+ invalid_properties
118
+ end
119
+
120
+ # Check to see if the all the properties in the model are valid
121
+ # @return true if the model is valid
122
+ def valid?
123
+ warn '[DEPRECATED] the `valid?` method is obsolete'
124
+ true
125
+ end
126
+
127
+ # Checks equality by comparing each attribute.
128
+ # @param [Object] Object to be compared
129
+ def ==(o)
130
+ return true if self.equal?(o)
131
+ self.class == o.class &&
132
+ total == o.total &&
133
+ pending == o.pending &&
134
+ sent == o.sent &&
135
+ delivered == o.delivered &&
136
+ read == o.read &&
137
+ failed == o.failed
138
+ end
139
+
140
+ # @see the `==` method
141
+ # @param [Object] Object to be compared
142
+ def eql?(o)
143
+ self == o
144
+ end
145
+
146
+ # Calculates hash code according to all attributes.
147
+ # @return [Integer] Hash code
148
+ def hash
149
+ [total, pending, sent, delivered, read, failed].hash
150
+ end
151
+
152
+ # Builds the object from hash
153
+ # @param [Hash] attributes Model attributes in the form of hash
154
+ # @return [Object] Returns the model itself
155
+ def self.build_from_hash(attributes)
156
+ return nil unless attributes.is_a?(Hash)
157
+ attributes = attributes.transform_keys(&:to_sym)
158
+ transformed_hash = {}
159
+ openapi_types.each_pair do |key, type|
160
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
161
+ transformed_hash["#{key}"] = nil
162
+ elsif type =~ /\AArray<(.*)>/i
163
+ # check to ensure the input is an array given that the attribute
164
+ # is documented as an array but the input is not
165
+ if attributes[attribute_map[key]].is_a?(Array)
166
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
167
+ end
168
+ elsif !attributes[attribute_map[key]].nil?
169
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
170
+ end
171
+ end
172
+ new(transformed_hash)
173
+ end
174
+
175
+ # Returns the object in the form of hash
176
+ # @return [Hash] Returns the object in the form of hash
177
+ def to_hash
178
+ hash = {}
179
+ self.class.attribute_map.each_pair do |attr, param|
180
+ value = self.send(attr)
181
+ if value.nil?
182
+ is_nullable = self.class.openapi_nullable.include?(attr)
183
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
184
+ end
185
+
186
+ hash[param] = _to_hash(value)
187
+ end
188
+ hash
189
+ end
190
+
191
+ end
192
+
193
+ end
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Zernio
14
- VERSION = '0.0.737'
14
+ VERSION = '0.0.739'
15
15
  end
data/lib/zernio-sdk.rb CHANGED
@@ -895,6 +895,7 @@ require 'zernio-sdk/models/list_blog_articles200_response'
895
895
  require 'zernio-sdk/models/list_blogs200_response'
896
896
  require 'zernio-sdk/models/list_broadcast_recipients200_response'
897
897
  require 'zernio-sdk/models/list_broadcast_recipients200_response_recipients_inner'
898
+ require 'zernio-sdk/models/list_broadcast_recipients200_response_summary'
898
899
  require 'zernio-sdk/models/list_broadcasts200_response'
899
900
  require 'zernio-sdk/models/list_broadcasts200_response_broadcasts_inner'
900
901
  require 'zernio-sdk/models/list_calls200_response'
data/openapi.yaml CHANGED
@@ -848,9 +848,11 @@ components:
848
848
  Multi-creative shape: N CTWA ads under one campaign + one
849
849
  ad set, sharing budget and targeting. Mutually exclusive
850
850
  with the top-level single-creative fields (`headline` /
851
- `body` / `imageUrl` / `video`). Each entry must supply its
852
- own headline, body, and exactly one of `imageUrl` /
853
- `video`.
851
+ `body` / `imageUrl` / `video`): setting both is a 400,
852
+ unlike `POST /v1/ads/create` where the top-level fields
853
+ are silently ignored in multi-creative mode. Each entry
854
+ must supply its own headline, body, and exactly one of
855
+ `imageUrl` / `video`.
854
856
  items:
855
857
  type: object
856
858
  required: [headline, body]
@@ -8292,6 +8294,10 @@ components:
8292
8294
  platformAdSetId: { type: string }
8293
8295
  adSetName: { type: string }
8294
8296
  status: { allOf: [{ $ref: '#/components/schemas/AdStatus' }], description: Derived from child ad statuses }
8297
+ createdTime:
8298
+ type: [string, "null"]
8299
+ format: date-time
8300
+ description: "Earliest `platformCreatedAt` (platform ad creation time; falls back to `createdAt`, Zernio's sync time, for ads synced before that field existed) across this ad set's ads. Not the ad set's own creation time on the platform — a proxy usable for sorting."
8295
8301
  adCount: { type: integer }
8296
8302
  budget:
8297
8303
  type: [object, "null"]
@@ -8342,6 +8348,10 @@ components:
8342
8348
  platformCampaignId: { type: string }
8343
8349
  platform: { type: string, enum: [facebook, instagram, tiktok, linkedin, pinterest, google, twitter, openai] }
8344
8350
  campaignName: { type: string }
8351
+ createdTime:
8352
+ type: [string, "null"]
8353
+ format: date-time
8354
+ description: "Earliest `platformCreatedAt` (platform ad creation time; falls back to `createdAt`, Zernio's sync time, for ads synced before that field existed) across every ad in the campaign. Not the platform campaign's own creation time (Meta's `Campaign.created_time` etc. is not synced) — a campaign created empty and populated later will show its first ad's time, not the campaign's. Usable for sorting \"most recently created\" without the numeric-campaign-id heuristic. Same source as `AdTreeAdSet.createdTime` and `Ad.platformCreatedAt`; mirrors `AdCampaign.earliestAd`."
8345
8355
  status: { allOf: [{ $ref: '#/components/schemas/AdStatus' }], description: "Delivery status derived from child ad statuses. Distinct from `reviewStatus`, which reflects the platform-side review state." }
8346
8356
  reviewStatus:
8347
8357
  anyOf:
@@ -37152,6 +37162,16 @@ paths:
37152
37162
  limit: { type: integer }
37153
37163
  skip: { type: integer }
37154
37164
  hasMore: { type: boolean }
37165
+ summary:
37166
+ type: object
37167
+ description: Delivery totals across all recipients in the broadcast, independent of pagination and status filtering.
37168
+ properties:
37169
+ total: { type: integer }
37170
+ pending: { type: integer }
37171
+ sent: { type: integer }
37172
+ delivered: { type: integer }
37173
+ read: { type: integer }
37174
+ failed: { type: integer }
37155
37175
  '400': { description: Invalid request }
37156
37176
  '401': { $ref: '#/components/responses/Unauthorized' }
37157
37177
  '404': { $ref: '#/components/responses/NotFound' }
@@ -45,6 +45,12 @@ describe Zernio::AdTreeAdSet do
45
45
  end
46
46
  end
47
47
 
48
+ describe 'test attribute "created_time"' do
49
+ it 'should work' do
50
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
51
+ end
52
+ end
53
+
48
54
  describe 'test attribute "ad_count"' do
49
55
  it 'should work' do
50
56
  # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
@@ -49,6 +49,12 @@ describe Zernio::AdTreeCampaign do
49
49
  end
50
50
  end
51
51
 
52
+ describe 'test attribute "created_time"' do
53
+ it 'should work' do
54
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
55
+ end
56
+ end
57
+
52
58
  describe 'test attribute "status"' do
53
59
  it 'should work' do
54
60
  # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
@@ -45,4 +45,10 @@ describe Zernio::ListBroadcastRecipients200Response do
45
45
  end
46
46
  end
47
47
 
48
+ describe 'test attribute "summary"' do
49
+ it 'should work' do
50
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
51
+ end
52
+ end
53
+
48
54
  end
@@ -0,0 +1,66 @@
1
+ =begin
2
+ #Zernio API
3
+
4
+ #API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
5
+
6
+ The version of the OpenAPI document: 1.0.4
7
+ Contact: support@zernio.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.19.0
10
+
11
+ =end
12
+
13
+ require 'spec_helper'
14
+ require 'json'
15
+ require 'date'
16
+
17
+ # Unit tests for Zernio::ListBroadcastRecipients200ResponseSummary
18
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
19
+ # Please update as you see appropriate
20
+ describe Zernio::ListBroadcastRecipients200ResponseSummary do
21
+ #let(:instance) { Zernio::ListBroadcastRecipients200ResponseSummary.new }
22
+
23
+ describe 'test an instance of ListBroadcastRecipients200ResponseSummary' do
24
+ it 'should create an instance of ListBroadcastRecipients200ResponseSummary' do
25
+ # uncomment below to test the instance creation
26
+ #expect(instance).to be_instance_of(Zernio::ListBroadcastRecipients200ResponseSummary)
27
+ end
28
+ end
29
+
30
+ describe 'test attribute "total"' do
31
+ it 'should work' do
32
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
33
+ end
34
+ end
35
+
36
+ describe 'test attribute "pending"' do
37
+ it 'should work' do
38
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
39
+ end
40
+ end
41
+
42
+ describe 'test attribute "sent"' do
43
+ it 'should work' do
44
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
45
+ end
46
+ end
47
+
48
+ describe 'test attribute "delivered"' do
49
+ it 'should work' do
50
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
51
+ end
52
+ end
53
+
54
+ describe 'test attribute "read"' do
55
+ it 'should work' do
56
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
57
+ end
58
+ end
59
+
60
+ describe 'test attribute "failed"' do
61
+ it 'should work' do
62
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
63
+ end
64
+ end
65
+
66
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zernio-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.737
4
+ version: 0.0.739
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenAPI-Generator
@@ -980,6 +980,7 @@ files:
980
980
  - docs/ListBlogs200Response.md
981
981
  - docs/ListBroadcastRecipients200Response.md
982
982
  - docs/ListBroadcastRecipients200ResponseRecipientsInner.md
983
+ - docs/ListBroadcastRecipients200ResponseSummary.md
983
984
  - docs/ListBroadcasts200Response.md
984
985
  - docs/ListBroadcasts200ResponseBroadcastsInner.md
985
986
  - docs/ListCalls200Response.md
@@ -2786,6 +2787,7 @@ files:
2786
2787
  - lib/zernio-sdk/models/list_blogs200_response.rb
2787
2788
  - lib/zernio-sdk/models/list_broadcast_recipients200_response.rb
2788
2789
  - lib/zernio-sdk/models/list_broadcast_recipients200_response_recipients_inner.rb
2790
+ - lib/zernio-sdk/models/list_broadcast_recipients200_response_summary.rb
2789
2791
  - lib/zernio-sdk/models/list_broadcasts200_response.rb
2790
2792
  - lib/zernio-sdk/models/list_broadcasts200_response_broadcasts_inner.rb
2791
2793
  - lib/zernio-sdk/models/list_calls200_response.rb
@@ -4556,6 +4558,7 @@ files:
4556
4558
  - spec/models/list_blogs200_response_spec.rb
4557
4559
  - spec/models/list_broadcast_recipients200_response_recipients_inner_spec.rb
4558
4560
  - spec/models/list_broadcast_recipients200_response_spec.rb
4561
+ - spec/models/list_broadcast_recipients200_response_summary_spec.rb
4559
4562
  - spec/models/list_broadcasts200_response_broadcasts_inner_spec.rb
4560
4563
  - spec/models/list_broadcasts200_response_spec.rb
4561
4564
  - spec/models/list_calls200_response_calls_inner_spec.rb
@@ -6496,6 +6499,7 @@ test_files:
6496
6499
  - spec/models/list_sms_sender_ids200_response_budget_spec.rb
6497
6500
  - spec/models/list_comment_automation_logs200_response_misses_samples_inner_spec.rb
6498
6501
  - spec/models/get_ad_insights_report200_response_paging_spec.rb
6502
+ - spec/models/list_broadcast_recipients200_response_summary_spec.rb
6499
6503
  - spec/models/create_voice_web_session200_response_spec.rb
6500
6504
  - spec/models/update_linked_in_organization_request_spec.rb
6501
6505
  - spec/models/create_blog_article201_response_spec.rb