zernio-sdk 0.0.738 → 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 +4 -4
- data/docs/AdTreeAdSet.md +2 -0
- data/docs/AdTreeCampaign.md +2 -0
- data/docs/CreateCallAdRequest.md +1 -1
- data/docs/CreateMessagingAdRequest.md +1 -1
- data/docs/CtwaAdRequestBody.md +1 -1
- data/lib/zernio-sdk/models/ad_tree_ad_set.rb +12 -1
- data/lib/zernio-sdk/models/ad_tree_campaign.rb +12 -1
- data/lib/zernio-sdk/models/create_call_ad_request.rb +1 -1
- data/lib/zernio-sdk/models/create_messaging_ad_request.rb +1 -1
- data/lib/zernio-sdk/models/ctwa_ad_request_body.rb +1 -1
- data/lib/zernio-sdk/version.rb +1 -1
- data/openapi.yaml +13 -3
- data/spec/models/ad_tree_ad_set_spec.rb +6 -0
- data/spec/models/ad_tree_campaign_spec.rb +6 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 928968c857cd46ee2a5081192f7d3c15857756a79f63b72eacaa0e39425f529f
|
|
4
|
+
data.tar.gz: 1ab4392b72e8e6d77b98aa4181403d3153f1512dc4bf9394b5ee72a18e2e9e05
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b9cf340de0a9052e88c0e5c04aa8da5227ff898fb0f94246f188e444396c1cbbccc3dcd06b9a68eda3b8281808622e07b50f382474f098676758f34d9ae4fafb
|
|
7
|
+
data.tar.gz: e0b1bc4d9913f1a2c59cd04901f257fb7d27fa18d98aa8eaffc31508a7b41d851865b94be11d02ee7ebd2aa0f2a26cd4adb64158a4d798b5c334e34bcb1b3ce6
|
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,
|
data/docs/AdTreeCampaign.md
CHANGED
|
@@ -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,
|
data/docs/CreateCallAdRequest.md
CHANGED
|
@@ -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] |
|
data/docs/CtwaAdRequestBody.md
CHANGED
|
@@ -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] |
|
|
@@ -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.
|
data/lib/zernio-sdk/version.rb
CHANGED
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`)
|
|
852
|
-
|
|
853
|
-
|
|
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:
|
|
@@ -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/
|