late-sdk 0.0.950 → 0.0.952
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/README.md +12 -0
- data/docs/AdCampaignsApi.md +155 -1
- data/docs/AdKeyword.md +3 -1
- data/docs/AdKeywordQuality.md +24 -0
- data/docs/AdScheduleWindow.md +32 -0
- data/docs/BoostPostRequest.md +2 -0
- data/docs/BoostPostRequestPromotedObject.md +20 -0
- data/docs/GetCampaignAdSchedule200Response.md +28 -0
- data/docs/GetCampaignAdSchedule200ResponsePerformance.md +22 -0
- data/docs/GetCampaignAdSchedule200ResponsePerformanceByDayOfWeekInner.md +26 -0
- data/docs/GetCampaignAdSchedule200ResponsePerformanceByHourInner.md +26 -0
- data/docs/UpdateCampaignAdSchedule200Response.md +22 -0
- data/docs/UpdateCampaignAdScheduleRequest.md +18 -0
- data/docs/UpdateCampaignAdScheduleRequestScheduleInner.md +28 -0
- data/lib/zernio-sdk/api/ad_campaigns_api.rb +166 -2
- data/lib/zernio-sdk/models/ad_keyword.rb +11 -2
- data/lib/zernio-sdk/models/ad_keyword_quality.rb +241 -0
- data/lib/zernio-sdk/models/ad_schedule_window.rb +329 -0
- data/lib/zernio-sdk/models/boost_post_request.rb +10 -1
- data/lib/zernio-sdk/models/boost_post_request_promoted_object.rb +159 -0
- data/lib/zernio-sdk/models/get_campaign_ad_schedule200_response.rb +197 -0
- data/lib/zernio-sdk/models/get_campaign_ad_schedule200_response_performance.rb +174 -0
- data/lib/zernio-sdk/models/get_campaign_ad_schedule200_response_performance_by_day_of_week_inner.rb +218 -0
- data/lib/zernio-sdk/models/get_campaign_ad_schedule200_response_performance_by_hour_inner.rb +212 -0
- data/lib/zernio-sdk/models/update_campaign_ad_schedule200_response.rb +167 -0
- data/lib/zernio-sdk/models/update_campaign_ad_schedule_request.rb +176 -0
- data/lib/zernio-sdk/models/update_campaign_ad_schedule_request_schedule_inner.rb +362 -0
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +10 -0
- data/openapi.yaml +230 -7
- data/spec/api/ad_campaigns_api_spec.rb +31 -1
- data/spec/models/ad_keyword_quality_spec.rb +66 -0
- data/spec/models/ad_keyword_spec.rb +6 -0
- data/spec/models/ad_schedule_window_spec.rb +90 -0
- data/spec/models/boost_post_request_promoted_object_spec.rb +42 -0
- data/spec/models/boost_post_request_spec.rb +6 -0
- data/spec/models/get_campaign_ad_schedule200_response_performance_by_day_of_week_inner_spec.rb +64 -0
- data/spec/models/get_campaign_ad_schedule200_response_performance_by_hour_inner_spec.rb +60 -0
- data/spec/models/get_campaign_ad_schedule200_response_performance_spec.rb +48 -0
- data/spec/models/get_campaign_ad_schedule200_response_spec.rb +66 -0
- data/spec/models/update_campaign_ad_schedule200_response_spec.rb +48 -0
- data/spec/models/update_campaign_ad_schedule_request_schedule_inner_spec.rb +78 -0
- data/spec/models/update_campaign_ad_schedule_request_spec.rb +36 -0
- data/zernio-sdk-0.0.952.gem +0 -0
- metadata +43 -3
- data/zernio-sdk-0.0.950.gem +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eed8e34a9d28c6ef98df32373b486797e6dae1892c1dcf3156c6d5a37b531115
|
|
4
|
+
data.tar.gz: 3559a8687037d49da50acf85a1b8bb9bfae801020408710f5b46660a08fa204c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 46d5db8b6ea45da7bd1ad175c75b0fe770199ecb5ec48fb97aba1d13801e498e6c2f788d33e2a52e0d538d981a04d557c15da75e795503ba8257f114c0574fbb
|
|
7
|
+
data.tar.gz: 4155725a1c179eb38a721795887824d177b098d94d146c522ba209f87649086d1d336ca6dddccbc4110912f303d8f2d0e4dc77b87ea2d557fc1deda3c8cbbefc
|
data/README.md
CHANGED
|
@@ -180,6 +180,7 @@ Class | Method | HTTP request | Description
|
|
|
180
180
|
*Zernio::AdCampaignsApi* | [**get_ad_set_details**](docs/AdCampaignsApi.md#get_ad_set_details) | **GET** /v1/ads/ad-sets/{adSetId} | Get live ad-set details
|
|
181
181
|
*Zernio::AdCampaignsApi* | [**get_ad_tree**](docs/AdCampaignsApi.md#get_ad_tree) | **GET** /v1/ads/tree | Get campaign tree
|
|
182
182
|
*Zernio::AdCampaignsApi* | [**get_ads_timeline**](docs/AdCampaignsApi.md#get_ads_timeline) | **GET** /v1/ads/timeline | Get daily account metrics
|
|
183
|
+
*Zernio::AdCampaignsApi* | [**get_campaign_ad_schedule**](docs/AdCampaignsApi.md#get_campaign_ad_schedule) | **GET** /v1/ads/campaigns/{campaignId}/ad-schedule | Read a campaign's ad schedule (dayparting)
|
|
183
184
|
*Zernio::AdCampaignsApi* | [**get_campaign_bidding**](docs/AdCampaignsApi.md#get_campaign_bidding) | **GET** /v1/ads/campaigns/{campaignId}/bidding | Read a campaign's current bidding
|
|
184
185
|
*Zernio::AdCampaignsApi* | [**get_campaign_targeting**](docs/AdCampaignsApi.md#get_campaign_targeting) | **GET** /v1/ads/campaigns/{campaignId}/targeting | Read a Google campaign's device, location, and language targeting
|
|
185
186
|
*Zernio::AdCampaignsApi* | [**list_ad_campaigns**](docs/AdCampaignsApi.md#list_ad_campaigns) | **GET** /v1/ads/campaigns | List campaigns
|
|
@@ -206,6 +207,7 @@ Class | Method | HTTP request | Description
|
|
|
206
207
|
*Zernio::AdCampaignsApi* | [**update_ad_set_status**](docs/AdCampaignsApi.md#update_ad_set_status) | **PUT** /v1/ads/ad-sets/{adSetId}/status | Pause or resume a single ad set
|
|
207
208
|
*Zernio::AdCampaignsApi* | [**update_ad_status**](docs/AdCampaignsApi.md#update_ad_status) | **PUT** /v1/ads/{adId}/status | Pause or resume a single ad
|
|
208
209
|
*Zernio::AdCampaignsApi* | [**update_bid_strategy**](docs/AdCampaignsApi.md#update_bid_strategy) | **PATCH** /v1/ads/bid-strategies/{strategyId} | Update portfolio bid strategy
|
|
210
|
+
*Zernio::AdCampaignsApi* | [**update_campaign_ad_schedule**](docs/AdCampaignsApi.md#update_campaign_ad_schedule) | **PUT** /v1/ads/campaigns/{campaignId}/ad-schedule | Replace a campaign's ad schedule (dayparting)
|
|
209
211
|
*Zernio::AdCampaignsApi* | [**update_campaign_assets**](docs/AdCampaignsApi.md#update_campaign_assets) | **PUT** /v1/ads/campaigns/{campaignId}/assets | Update campaign assets
|
|
210
212
|
*Zernio::AdCampaignsApi* | [**update_campaign_targeting**](docs/AdCampaignsApi.md#update_campaign_targeting) | **PUT** /v1/ads/campaigns/{campaignId}/targeting | Edit a Google campaign's device, location, or language targeting
|
|
211
213
|
*Zernio::AdCreativesApi* | [**create_ad_creative**](docs/AdCreativesApi.md#create_ad_creative) | **POST** /v1/ads/creatives | Create a standalone creative
|
|
@@ -823,12 +825,14 @@ Class | Method | HTTP request | Description
|
|
|
823
825
|
- [Zernio::AdFunnelCounts](docs/AdFunnelCounts.md)
|
|
824
826
|
- [Zernio::AdKeyword](docs/AdKeyword.md)
|
|
825
827
|
- [Zernio::AdKeywordMetrics](docs/AdKeywordMetrics.md)
|
|
828
|
+
- [Zernio::AdKeywordQuality](docs/AdKeywordQuality.md)
|
|
826
829
|
- [Zernio::AdMetrics](docs/AdMetrics.md)
|
|
827
830
|
- [Zernio::AdNegativeKeywordList](docs/AdNegativeKeywordList.md)
|
|
828
831
|
- [Zernio::AdNegativeKeywordListKeyword](docs/AdNegativeKeywordListKeyword.md)
|
|
829
832
|
- [Zernio::AdPromotedObject](docs/AdPromotedObject.md)
|
|
830
833
|
- [Zernio::AdReviewStatus](docs/AdReviewStatus.md)
|
|
831
834
|
- [Zernio::AdSchedule](docs/AdSchedule.md)
|
|
835
|
+
- [Zernio::AdScheduleWindow](docs/AdScheduleWindow.md)
|
|
832
836
|
- [Zernio::AdStatus](docs/AdStatus.md)
|
|
833
837
|
- [Zernio::AdTracking](docs/AdTracking.md)
|
|
834
838
|
- [Zernio::AdTreeAdSet](docs/AdTreeAdSet.md)
|
|
@@ -926,6 +930,7 @@ Class | Method | HTTP request | Description
|
|
|
926
930
|
- [Zernio::BoostPostRequest](docs/BoostPostRequest.md)
|
|
927
931
|
- [Zernio::BoostPostRequestBudget](docs/BoostPostRequestBudget.md)
|
|
928
932
|
- [Zernio::BoostPostRequestPlatformSpecificData](docs/BoostPostRequestPlatformSpecificData.md)
|
|
933
|
+
- [Zernio::BoostPostRequestPromotedObject](docs/BoostPostRequestPromotedObject.md)
|
|
929
934
|
- [Zernio::BoostPostRequestSchedule](docs/BoostPostRequestSchedule.md)
|
|
930
935
|
- [Zernio::BoostPostRequestTargeting](docs/BoostPostRequestTargeting.md)
|
|
931
936
|
- [Zernio::BoostPostRequestTargetingCitiesInner](docs/BoostPostRequestTargetingCitiesInner.md)
|
|
@@ -1424,6 +1429,10 @@ Class | Method | HTTP request | Description
|
|
|
1424
1429
|
- [Zernio::GetCallsUsage200Response](docs/GetCallsUsage200Response.md)
|
|
1425
1430
|
- [Zernio::GetCallsUsage200ResponseGroupsInner](docs/GetCallsUsage200ResponseGroupsInner.md)
|
|
1426
1431
|
- [Zernio::GetCallsUsage200ResponseTotals](docs/GetCallsUsage200ResponseTotals.md)
|
|
1432
|
+
- [Zernio::GetCampaignAdSchedule200Response](docs/GetCampaignAdSchedule200Response.md)
|
|
1433
|
+
- [Zernio::GetCampaignAdSchedule200ResponsePerformance](docs/GetCampaignAdSchedule200ResponsePerformance.md)
|
|
1434
|
+
- [Zernio::GetCampaignAdSchedule200ResponsePerformanceByDayOfWeekInner](docs/GetCampaignAdSchedule200ResponsePerformanceByDayOfWeekInner.md)
|
|
1435
|
+
- [Zernio::GetCampaignAdSchedule200ResponsePerformanceByHourInner](docs/GetCampaignAdSchedule200ResponsePerformanceByHourInner.md)
|
|
1427
1436
|
- [Zernio::GetCampaignAnalytics202Response](docs/GetCampaignAnalytics202Response.md)
|
|
1428
1437
|
- [Zernio::GetCampaignBidding200Response](docs/GetCampaignBidding200Response.md)
|
|
1429
1438
|
- [Zernio::GetCampaignTargeting200Response](docs/GetCampaignTargeting200Response.md)
|
|
@@ -2508,6 +2517,9 @@ Class | Method | HTTP request | Description
|
|
|
2508
2517
|
- [Zernio::UpdateBusinessAgentSettingsRequestFollowup](docs/UpdateBusinessAgentSettingsRequestFollowup.md)
|
|
2509
2518
|
- [Zernio::UpdateBusinessAgentSettingsRequestHandoff](docs/UpdateBusinessAgentSettingsRequestHandoff.md)
|
|
2510
2519
|
- [Zernio::UpdateBusinessAgentSettingsRequestRollout](docs/UpdateBusinessAgentSettingsRequestRollout.md)
|
|
2520
|
+
- [Zernio::UpdateCampaignAdSchedule200Response](docs/UpdateCampaignAdSchedule200Response.md)
|
|
2521
|
+
- [Zernio::UpdateCampaignAdScheduleRequest](docs/UpdateCampaignAdScheduleRequest.md)
|
|
2522
|
+
- [Zernio::UpdateCampaignAdScheduleRequestScheduleInner](docs/UpdateCampaignAdScheduleRequestScheduleInner.md)
|
|
2511
2523
|
- [Zernio::UpdateCampaignAssets200Response](docs/UpdateCampaignAssets200Response.md)
|
|
2512
2524
|
- [Zernio::UpdateCampaignAssetsRequest](docs/UpdateCampaignAssetsRequest.md)
|
|
2513
2525
|
- [Zernio::UpdateCampaignTargeting200Response](docs/UpdateCampaignTargeting200Response.md)
|
data/docs/AdCampaignsApi.md
CHANGED
|
@@ -24,6 +24,7 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
24
24
|
| [**get_ad_set_details**](AdCampaignsApi.md#get_ad_set_details) | **GET** /v1/ads/ad-sets/{adSetId} | Get live ad-set details |
|
|
25
25
|
| [**get_ad_tree**](AdCampaignsApi.md#get_ad_tree) | **GET** /v1/ads/tree | Get campaign tree |
|
|
26
26
|
| [**get_ads_timeline**](AdCampaignsApi.md#get_ads_timeline) | **GET** /v1/ads/timeline | Get daily account metrics |
|
|
27
|
+
| [**get_campaign_ad_schedule**](AdCampaignsApi.md#get_campaign_ad_schedule) | **GET** /v1/ads/campaigns/{campaignId}/ad-schedule | Read a campaign's ad schedule (dayparting) |
|
|
27
28
|
| [**get_campaign_bidding**](AdCampaignsApi.md#get_campaign_bidding) | **GET** /v1/ads/campaigns/{campaignId}/bidding | Read a campaign's current bidding |
|
|
28
29
|
| [**get_campaign_targeting**](AdCampaignsApi.md#get_campaign_targeting) | **GET** /v1/ads/campaigns/{campaignId}/targeting | Read a Google campaign's device, location, and language targeting |
|
|
29
30
|
| [**list_ad_campaigns**](AdCampaignsApi.md#list_ad_campaigns) | **GET** /v1/ads/campaigns | List campaigns |
|
|
@@ -50,6 +51,7 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
50
51
|
| [**update_ad_set_status**](AdCampaignsApi.md#update_ad_set_status) | **PUT** /v1/ads/ad-sets/{adSetId}/status | Pause or resume a single ad set |
|
|
51
52
|
| [**update_ad_status**](AdCampaignsApi.md#update_ad_status) | **PUT** /v1/ads/{adId}/status | Pause or resume a single ad |
|
|
52
53
|
| [**update_bid_strategy**](AdCampaignsApi.md#update_bid_strategy) | **PATCH** /v1/ads/bid-strategies/{strategyId} | Update portfolio bid strategy |
|
|
54
|
+
| [**update_campaign_ad_schedule**](AdCampaignsApi.md#update_campaign_ad_schedule) | **PUT** /v1/ads/campaigns/{campaignId}/ad-schedule | Replace a campaign's ad schedule (dayparting) |
|
|
53
55
|
| [**update_campaign_assets**](AdCampaignsApi.md#update_campaign_assets) | **PUT** /v1/ads/campaigns/{campaignId}/assets | Update campaign assets |
|
|
54
56
|
| [**update_campaign_targeting**](AdCampaignsApi.md#update_campaign_targeting) | **PUT** /v1/ads/campaigns/{campaignId}/targeting | Edit a Google campaign's device, location, or language targeting |
|
|
55
57
|
|
|
@@ -1530,6 +1532,87 @@ end
|
|
|
1530
1532
|
- **Accept**: application/json
|
|
1531
1533
|
|
|
1532
1534
|
|
|
1535
|
+
## get_campaign_ad_schedule
|
|
1536
|
+
|
|
1537
|
+
> <GetCampaignAdSchedule200Response> get_campaign_ad_schedule(campaign_id, opts)
|
|
1538
|
+
|
|
1539
|
+
Read a campaign's ad schedule (dayparting)
|
|
1540
|
+
|
|
1541
|
+
The windows a Google campaign serves in, with the bid modifier on each, plus the criterion ids Google minted for them. An EMPTY `schedule` is meaningful and is not a failed lookup: Google has no \"all day\" criterion, so a campaign with no ad schedule serves around the clock. `servesAroundTheClock` states that explicitly. Set `includePerformance=true` to also get delivery split by day of week and by hour, which is the evidence for deciding what the schedule should be. It is one extra Google call segmented by both dimensions at once, so the two views always agree. Google Ads only. The response carries `cachedAt` and `stale`, set when a quota-exhausted call falls back to the last-good copy instead of a live read.
|
|
1542
|
+
|
|
1543
|
+
### Examples
|
|
1544
|
+
|
|
1545
|
+
```ruby
|
|
1546
|
+
require 'time'
|
|
1547
|
+
require 'zernio-sdk'
|
|
1548
|
+
# setup authorization
|
|
1549
|
+
Zernio.configure do |config|
|
|
1550
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
1551
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
1552
|
+
end
|
|
1553
|
+
|
|
1554
|
+
api_instance = Zernio::AdCampaignsApi.new
|
|
1555
|
+
campaign_id = 'campaign_id_example' # String | Numeric Google platform campaign id.
|
|
1556
|
+
opts = {
|
|
1557
|
+
platform: 'google', # String | Disambiguates the campaign id when the connection spans platforms.
|
|
1558
|
+
include_performance: true, # Boolean | Also return delivery by day of week and by hour. Costs one extra Google call.
|
|
1559
|
+
window_days: 56, # Integer | Trailing window for the performance split. Ignored when fromDate and toDate are both given.
|
|
1560
|
+
from_date: Date.parse('2013-10-20'), # Date | Start of an explicit performance range (YYYY-MM-DD). Use together with toDate.
|
|
1561
|
+
to_date: Date.parse('2013-10-20') # Date | End of an explicit performance range (YYYY-MM-DD). Must be on or after fromDate.
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
begin
|
|
1565
|
+
# Read a campaign's ad schedule (dayparting)
|
|
1566
|
+
result = api_instance.get_campaign_ad_schedule(campaign_id, opts)
|
|
1567
|
+
p result
|
|
1568
|
+
rescue Zernio::ApiError => e
|
|
1569
|
+
puts "Error when calling AdCampaignsApi->get_campaign_ad_schedule: #{e}"
|
|
1570
|
+
end
|
|
1571
|
+
```
|
|
1572
|
+
|
|
1573
|
+
#### Using the get_campaign_ad_schedule_with_http_info variant
|
|
1574
|
+
|
|
1575
|
+
This returns an Array which contains the response data, status code and headers.
|
|
1576
|
+
|
|
1577
|
+
> <Array(<GetCampaignAdSchedule200Response>, Integer, Hash)> get_campaign_ad_schedule_with_http_info(campaign_id, opts)
|
|
1578
|
+
|
|
1579
|
+
```ruby
|
|
1580
|
+
begin
|
|
1581
|
+
# Read a campaign's ad schedule (dayparting)
|
|
1582
|
+
data, status_code, headers = api_instance.get_campaign_ad_schedule_with_http_info(campaign_id, opts)
|
|
1583
|
+
p status_code # => 2xx
|
|
1584
|
+
p headers # => { ... }
|
|
1585
|
+
p data # => <GetCampaignAdSchedule200Response>
|
|
1586
|
+
rescue Zernio::ApiError => e
|
|
1587
|
+
puts "Error when calling AdCampaignsApi->get_campaign_ad_schedule_with_http_info: #{e}"
|
|
1588
|
+
end
|
|
1589
|
+
```
|
|
1590
|
+
|
|
1591
|
+
### Parameters
|
|
1592
|
+
|
|
1593
|
+
| Name | Type | Description | Notes |
|
|
1594
|
+
| ---- | ---- | ----------- | ----- |
|
|
1595
|
+
| **campaign_id** | **String** | Numeric Google platform campaign id. | |
|
|
1596
|
+
| **platform** | **String** | Disambiguates the campaign id when the connection spans platforms. | [optional] |
|
|
1597
|
+
| **include_performance** | **Boolean** | Also return delivery by day of week and by hour. Costs one extra Google call. | [optional] |
|
|
1598
|
+
| **window_days** | **Integer** | Trailing window for the performance split. Ignored when fromDate and toDate are both given. | [optional][default to 30] |
|
|
1599
|
+
| **from_date** | **Date** | Start of an explicit performance range (YYYY-MM-DD). Use together with toDate. | [optional] |
|
|
1600
|
+
| **to_date** | **Date** | End of an explicit performance range (YYYY-MM-DD). Must be on or after fromDate. | [optional] |
|
|
1601
|
+
|
|
1602
|
+
### Return type
|
|
1603
|
+
|
|
1604
|
+
[**GetCampaignAdSchedule200Response**](GetCampaignAdSchedule200Response.md)
|
|
1605
|
+
|
|
1606
|
+
### Authorization
|
|
1607
|
+
|
|
1608
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
1609
|
+
|
|
1610
|
+
### HTTP request headers
|
|
1611
|
+
|
|
1612
|
+
- **Content-Type**: Not defined
|
|
1613
|
+
- **Accept**: application/json
|
|
1614
|
+
|
|
1615
|
+
|
|
1533
1616
|
## get_campaign_bidding
|
|
1534
1617
|
|
|
1535
1618
|
> <GetCampaignBidding200Response> get_campaign_bidding(campaign_id, account_id, platform, opts)
|
|
@@ -2845,7 +2928,7 @@ end
|
|
|
2845
2928
|
|
|
2846
2929
|
Update ad
|
|
2847
2930
|
|
|
2848
|
-
Patch one or more fields on an ad. Status, budget, targeting, and creative changes are propagated to the platform. Per-platform support: - **Meta** (Facebook + Instagram): all fields supported. - **TikTok**: status, budget, targeting (via `/v2/adgroup/update/`), and creative (via `/v2/ad/update/` patch-style: `headline` is ignored, `body` becomes `ad_text`). - **Google**: status, budget, KEYWORD edits via `targeting.keywords` / `targeting.negativeKeywords`, DEVICE bid adjustments via `targeting.devices`, LOCATION edits via `targeting.locations` (or the equivalent top-level `targeting.countries` / `regions` / `cities` / `zips` / `metros`), and LANGUAGE edits via `targeting.languages`. Each list you send becomes the FULL new set of its kind (criteria not in the list are removed, except devices, which Google cannot remove and which are switched off with a bid modifier of 0 instead); a kind left out is untouched. Any other `targeting` field returns 400: Google cannot mutate it post-create without recreating the campaign. Creative edits are dispatched on the ad's `advertisingChannelType`, and every supported field replaces a whole set; a field you omit is preserved. - **Search**: top-level `headlines`, `descriptions` and `finalUrls`. Use 3-15 headlines (1-30 characters) and 2-4 descriptions (1-90 characters). Omit an asset to remove it; omit pinnedField on an included asset to unpin it. Updates do not pad or truncate text. The legacy creative fields remain unsupported. - **Display**: top-level `headlines` (1-5, no pinnedField, display ads have no pinned positions), `descriptions` (1-5) and `finalUrls`, plus `creative.longHeadline`, `creative.businessName`, `creative.imageUrl` (the landscape marketing image) and `creative.squareImageUrl`. Each image URL is uploaded as a new Google asset and the ad is pointed at it; Google assets are immutable, so the previous asset stays in the account's asset library. - **Performance Max**: top-level `assetGroup`, which swaps asset roles on the ad's asset group. The other creative fields return 422 for this channel, and `assetGroup` returns 422 on any other channel. - **LinkedIn**: status, budget, targeting (countries or regions, excludedLocations (countries), the B2B facets, and audience segments; applied to the LinkedIn Campaign via PARTIAL_UPDATE, and REPLACES the campaign's entire targetingCriteria, not a merge), and creative (uploads new media, creates a replacement inline creative on the same campaign, pauses the old one). - **Pinterest / X / OpenAI Ads**: status + budget only. Sending `targeting` or `creative` returns 501 with code `unsupported_platform_operation`. OpenAI Ads budget is lifetime-only (see `budget.type` below). **Google location and language replacement:** locations, languages and devices are campaign-level criteria on Google, so these edits apply to every ad group and ad in the ad's campaign. Send the complete list you want to keep. Zernio diffs it against the campaign's live criteria and sends the removes and the creates in ONE `googleAds:mutate`, so the campaign is never left with a half-applied set; criteria already in the list keep their criterion ID and history. Excluded (negative) locations are left untouched.
|
|
2931
|
+
Patch one or more fields on an ad. Status, budget, targeting, and creative changes are propagated to the platform. Per-platform support: - **Meta** (Facebook + Instagram): all fields supported. - **TikTok**: status, budget, targeting (via `/v2/adgroup/update/`), and creative (via `/v2/ad/update/` patch-style: `headline` is ignored, `body` becomes `ad_text`). - **Google**: status, budget, KEYWORD edits via `targeting.keywords` / `targeting.negativeKeywords`, DEVICE bid adjustments via `targeting.devices`, LOCATION edits via `targeting.locations` (or the equivalent top-level `targeting.countries` / `regions` / `cities` / `zips` / `metros`), and LANGUAGE edits via `targeting.languages`. Each list you send becomes the FULL new set of its kind (criteria not in the list are removed, except devices, which Google cannot remove and which are switched off with a bid modifier of 0 instead); a kind left out is untouched. Any other `targeting` field returns 400: Google cannot mutate it post-create without recreating the campaign. Creative edits are dispatched on the ad's `advertisingChannelType`, and every supported field replaces a whole set; a field you omit is preserved. - **Search**: top-level `headlines`, `descriptions` and `finalUrls`. Use 3-15 headlines (1-30 characters) and 2-4 descriptions (1-90 characters). Omit an asset to remove it; omit pinnedField on an included asset to unpin it. Updates do not pad or truncate text. The legacy creative fields remain unsupported. - **Display**: top-level `headlines` (1-5, no pinnedField, display ads have no pinned positions), `descriptions` (1-5) and `finalUrls`, plus `creative.longHeadline`, `creative.businessName`, `creative.imageUrl` (the landscape marketing image) and `creative.squareImageUrl`. Each image URL is uploaded as a new Google asset and the ad is pointed at it; Google assets are immutable, so the previous asset stays in the account's asset library. - **Performance Max**: top-level `assetGroup`, which swaps asset roles on the ad's asset group. The other creative fields return 422 for this channel, and `assetGroup` returns 422 on any other channel. - **LinkedIn**: status, budget, targeting (countries or regions, excludedLocations (countries), the B2B facets, and audience segments; applied to the LinkedIn Campaign via PARTIAL_UPDATE, and REPLACES the campaign's entire targetingCriteria, not a merge), and creative (uploads new media, creates a replacement inline creative on the same campaign, pauses the old one). - **Pinterest / X / OpenAI Ads**: status + budget only. Sending `targeting` or `creative` returns 501 with code `unsupported_platform_operation`. OpenAI Ads budget is lifetime-only (see `budget.type` below). **Google location and language replacement:** locations, languages and devices are campaign-level criteria on Google, so these edits apply to every ad group and ad in the ad's campaign. Send the complete list you want to keep. Zernio diffs it against the campaign's live criteria and sends the removes and the creates in ONE `googleAds:mutate`, so the campaign is never left with a half-applied set; criteria already in the list keep their criterion ID and history. Excluded (negative) locations are left untouched. An empty location list returns 400 (a Google campaign with no location criteria targets every country, which is never what \"remove my locations\" means, so omit the field instead). Send either `targeting.locations` or the top-level geo fields, not both: mixing them returns 400. **Google radius targeting:** `customLocations` is editable and is replaced the same way, but as its OWN set. Google models a place (LOCATION) and a point plus radius (PROXIMITY) as different criterion types, so the two are independent: sending `customLocations` replaces every radius and leaves the cities and countries alone, and sending places replaces those and leaves the radius alone. Send `customLocations: []` to drop radius targeting entirely. A circle you re-send unchanged keeps its criterion ID rather than being removed and recreated. **Google keyword replacement:** These edits affect the ad's entire ad group, including sibling ads. Positive (`targeting.keywords`) and negative (`targeting.negativeKeywords`) sets are independent: omit a field to leave that set unchanged, or send `[]` to remove every keyword of that kind. Zernio compares each supplied set with Google's live criteria by case-insensitive keyword text and match type. A matching criterion is left untouched, retaining its criterion ID, enabled/paused status, keyword-level bid overrides, labels, and criterion-associated history/statistics. Zernio does not reset its quality score; Google continues to calculate scores and statistics normally. Text comparison does not trim whitespace. A bare string or an object without `matchType` means `broad`, not the existing criterion's match type. For example, resending an existing `{ \"text\": \"plumber\", \"matchType\": \"exact\" }` preserves it; sending `\"plumber\"` instead removes that EXACT criterion and requests a BROAD one. Changing text or match type removes criteria no longer requested and creates any missing criteria. New criteria get new IDs and do not inherit removed criteria's bid overrides, labels, or history. Historical reporting for a removed criterion is not transferred to its replacement. To add keywords without replacing a set, use [POST /v1/ads/keywords](https://docs.zernio.com/ad-campaigns/add-ad-keywords). Use `PATCH /v1/ads/keywords/{keywordId}` to pause/enable one keyword, or `DELETE /v1/ads/keywords/{keywordId}` to remove it.
|
|
2849
2932
|
|
|
2850
2933
|
### Examples
|
|
2851
2934
|
|
|
@@ -3478,6 +3561,77 @@ end
|
|
|
3478
3561
|
- **Accept**: application/json
|
|
3479
3562
|
|
|
3480
3563
|
|
|
3564
|
+
## update_campaign_ad_schedule
|
|
3565
|
+
|
|
3566
|
+
> <UpdateCampaignAdSchedule200Response> update_campaign_ad_schedule(campaign_id, update_campaign_ad_schedule_request)
|
|
3567
|
+
|
|
3568
|
+
Replace a campaign's ad schedule (dayparting)
|
|
3569
|
+
|
|
3570
|
+
Replaces the campaign's whole ad schedule with the windows you send. This is a REPLACE, not a merge: windows you leave out stop serving. Send `schedule: []` to clear dayparting, which returns the campaign to serving around the clock. Google rules enforced here, so you get a named field instead of a criterion error: at most 6 windows per day, a window must end after it starts, windows on the same day may not overlap, `endHour` 24 is midnight and cannot carry minutes, and minutes are quarter-hours only (0, 15, 30, 45). `bidModifier` is 0.1-10.0; Google's 0 means \"off\" for devices only, so a window is switched off by leaving it out. Windows are half-open (Google is exclusive of the end minute), so 09:00-12:00 and 12:00-17:00 on the same day are adjacent and both valid. Google cannot edit an ad schedule in place (every AdScheduleInfo field is prohibited on update), so this removes the live criteria and creates the new ones in a single atomic mutate. The response is read back from Google and carries the new criterion ids.
|
|
3571
|
+
|
|
3572
|
+
### Examples
|
|
3573
|
+
|
|
3574
|
+
```ruby
|
|
3575
|
+
require 'time'
|
|
3576
|
+
require 'zernio-sdk'
|
|
3577
|
+
# setup authorization
|
|
3578
|
+
Zernio.configure do |config|
|
|
3579
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
3580
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
3581
|
+
end
|
|
3582
|
+
|
|
3583
|
+
api_instance = Zernio::AdCampaignsApi.new
|
|
3584
|
+
campaign_id = 'campaign_id_example' # String | Numeric Google platform campaign id.
|
|
3585
|
+
update_campaign_ad_schedule_request = Zernio::UpdateCampaignAdScheduleRequest.new({schedule: [Zernio::UpdateCampaignAdScheduleRequestScheduleInner.new({day_of_week: 'MONDAY', start_hour: 37, end_hour: 37})]}) # UpdateCampaignAdScheduleRequest |
|
|
3586
|
+
|
|
3587
|
+
begin
|
|
3588
|
+
# Replace a campaign's ad schedule (dayparting)
|
|
3589
|
+
result = api_instance.update_campaign_ad_schedule(campaign_id, update_campaign_ad_schedule_request)
|
|
3590
|
+
p result
|
|
3591
|
+
rescue Zernio::ApiError => e
|
|
3592
|
+
puts "Error when calling AdCampaignsApi->update_campaign_ad_schedule: #{e}"
|
|
3593
|
+
end
|
|
3594
|
+
```
|
|
3595
|
+
|
|
3596
|
+
#### Using the update_campaign_ad_schedule_with_http_info variant
|
|
3597
|
+
|
|
3598
|
+
This returns an Array which contains the response data, status code and headers.
|
|
3599
|
+
|
|
3600
|
+
> <Array(<UpdateCampaignAdSchedule200Response>, Integer, Hash)> update_campaign_ad_schedule_with_http_info(campaign_id, update_campaign_ad_schedule_request)
|
|
3601
|
+
|
|
3602
|
+
```ruby
|
|
3603
|
+
begin
|
|
3604
|
+
# Replace a campaign's ad schedule (dayparting)
|
|
3605
|
+
data, status_code, headers = api_instance.update_campaign_ad_schedule_with_http_info(campaign_id, update_campaign_ad_schedule_request)
|
|
3606
|
+
p status_code # => 2xx
|
|
3607
|
+
p headers # => { ... }
|
|
3608
|
+
p data # => <UpdateCampaignAdSchedule200Response>
|
|
3609
|
+
rescue Zernio::ApiError => e
|
|
3610
|
+
puts "Error when calling AdCampaignsApi->update_campaign_ad_schedule_with_http_info: #{e}"
|
|
3611
|
+
end
|
|
3612
|
+
```
|
|
3613
|
+
|
|
3614
|
+
### Parameters
|
|
3615
|
+
|
|
3616
|
+
| Name | Type | Description | Notes |
|
|
3617
|
+
| ---- | ---- | ----------- | ----- |
|
|
3618
|
+
| **campaign_id** | **String** | Numeric Google platform campaign id. | |
|
|
3619
|
+
| **update_campaign_ad_schedule_request** | [**UpdateCampaignAdScheduleRequest**](UpdateCampaignAdScheduleRequest.md) | | |
|
|
3620
|
+
|
|
3621
|
+
### Return type
|
|
3622
|
+
|
|
3623
|
+
[**UpdateCampaignAdSchedule200Response**](UpdateCampaignAdSchedule200Response.md)
|
|
3624
|
+
|
|
3625
|
+
### Authorization
|
|
3626
|
+
|
|
3627
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
3628
|
+
|
|
3629
|
+
### HTTP request headers
|
|
3630
|
+
|
|
3631
|
+
- **Content-Type**: application/json
|
|
3632
|
+
- **Accept**: application/json
|
|
3633
|
+
|
|
3634
|
+
|
|
3481
3635
|
## update_campaign_assets
|
|
3482
3636
|
|
|
3483
3637
|
> <UpdateCampaignAssets200Response> update_campaign_assets(campaign_id, update_campaign_assets_request)
|
data/docs/AdKeyword.md
CHANGED
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
| **match_type** | **String** | | [optional] |
|
|
20
20
|
| **status** | **String** | | [optional] |
|
|
21
21
|
| **negative** | **Boolean** | | [optional] |
|
|
22
|
-
| **quality_score** | **Integer** | Google Quality Score, 1-10. Null when unrated. | [optional] |
|
|
22
|
+
| **quality_score** | **Integer** | Deprecated, use `quality.score`. Google Quality Score, 1-10. Null when unrated. | [optional] |
|
|
23
|
+
| **quality** | [**AdKeywordQuality**](AdKeywordQuality.md) | | [optional] |
|
|
23
24
|
| **synced_at** | **Time** | | [optional] |
|
|
24
25
|
| **metrics** | [**AdKeywordMetrics**](AdKeywordMetrics.md) | | [optional] |
|
|
25
26
|
|
|
@@ -45,6 +46,7 @@ instance = Zernio::AdKeyword.new(
|
|
|
45
46
|
status: null,
|
|
46
47
|
negative: null,
|
|
47
48
|
quality_score: null,
|
|
49
|
+
quality: null,
|
|
48
50
|
synced_at: null,
|
|
49
51
|
metrics: null
|
|
50
52
|
)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Zernio::AdKeywordQuality
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **score** | **Integer** | Quality Score, 1-10. | [optional] |
|
|
8
|
+
| **expected_ctr** | **String** | How the click-through rate compares with other ads in the same position (`search_predicted_ctr`). | [optional] |
|
|
9
|
+
| **ad_relevance** | **String** | How closely the ad matches the intent behind the search (`creative_quality_score`). | [optional] |
|
|
10
|
+
| **landing_page_experience** | **String** | How relevant and useful the landing page is to people who click (`post_click_quality_score`). | [optional] |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'zernio-sdk'
|
|
16
|
+
|
|
17
|
+
instance = Zernio::AdKeywordQuality.new(
|
|
18
|
+
score: null,
|
|
19
|
+
expected_ctr: null,
|
|
20
|
+
ad_relevance: null,
|
|
21
|
+
landing_page_experience: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Zernio::AdScheduleWindow
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **criterion_id** | **String** | Google campaign criterion id. Changes whenever the window is rewritten, because Google cannot edit a schedule in place. | [optional] |
|
|
8
|
+
| **resource_name** | **String** | | [optional] |
|
|
9
|
+
| **day_of_week** | **String** | | [optional] |
|
|
10
|
+
| **start_hour** | **Integer** | | [optional] |
|
|
11
|
+
| **start_minute** | **Integer** | | [optional] |
|
|
12
|
+
| **end_hour** | **Integer** | 24 means midnight at the end of the day. | [optional] |
|
|
13
|
+
| **end_minute** | **Integer** | | [optional] |
|
|
14
|
+
| **bid_modifier** | **Float** | Bid adjustment for this window, 0.1-10.0. Null when the window runs at the campaign bid. | [optional] |
|
|
15
|
+
|
|
16
|
+
## Example
|
|
17
|
+
|
|
18
|
+
```ruby
|
|
19
|
+
require 'zernio-sdk'
|
|
20
|
+
|
|
21
|
+
instance = Zernio::AdScheduleWindow.new(
|
|
22
|
+
criterion_id: null,
|
|
23
|
+
resource_name: null,
|
|
24
|
+
day_of_week: null,
|
|
25
|
+
start_hour: null,
|
|
26
|
+
start_minute: null,
|
|
27
|
+
end_hour: null,
|
|
28
|
+
end_minute: null,
|
|
29
|
+
bid_modifier: null
|
|
30
|
+
)
|
|
31
|
+
```
|
|
32
|
+
|
data/docs/BoostPostRequest.md
CHANGED
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
| **link_url** | **String** | Website URL for non-messaging CTA buttons. Send it with `callToAction`. Omit for messaging boosts. **Meta**: adds a top-level `call_to_action` to the post-reference creative. This is what gives a `traffic` boost a clickable destination without replacing the creative and losing the post's social proof. Ignored when `leadGenFormId` is set, which supplies its own destination. Live-verified against a Page-post creative. **TikTok**: maps to `landing_page_url` on the Spark Ad creative (`AdcreateCreatives.landing_page_url`); Spark Ads have no clickable destination without it. Ignored on LinkedIn / Pinterest / X / Google, which infer the destination from the boosted post. | [optional] |
|
|
33
33
|
| **call_to_action** | **String** | CTA button label. Non-messaging CTAs require `linkUrl`. WHATSAPP_MESSAGE, MESSAGE_PAGE, and INSTAGRAM_MESSAGE do not require a URL and reject linkUrl. **Meta**: the CTA enum of POST /v1/ads/create plus `VIEW_INSTAGRAM_PROFILE`, `WHATSAPP_MESSAGE`, `MESSAGE_PAGE`, and `INSTAGRAM_MESSAGE`. VIEW_INSTAGRAM_PROFILE requires linkUrl; the messaging CTAs select their destination automatically. **TikTok**: pass-through to `call_to_action` on the Spark Ad creative; the platform validates the value. See TikTok's \"Enumeration - Call-to-Action\". | [optional] |
|
|
34
34
|
| **spark_auth_code** | **String** | TikTok-only. Spark Code (creator's `auth_code`) authorizing cross-creator Spark Ads: the advertiser can boost a video owned by a DIFFERENT TikTok account. Without this, boosts are limited to videos owned by the same account running the ads (same-BC creators only). The creator generates the code in their TikTok app's Promote settings and shares it with the advertiser. Maps to `auth_code` on the creative entry of /v2/ad/create/. | [optional] |
|
|
35
|
+
| **promoted_object** | [**BoostPostRequestPromotedObject**](BoostPostRequestPromotedObject.md) | | [optional] |
|
|
35
36
|
| **dsa_beneficiary** | **String** | Legal entity that benefits from the ad. Required when targeting EU users (EU DSA, Article 26). Optional if the ad account has a default beneficiary: set it once via `PATCH /v1/ads/accounts` or in Meta Ads Manager, and Meta fills it in whenever the field is omitted. | [optional] |
|
|
36
37
|
| **dsa_payor** | **String** | Legal entity that pays for the ad. Can differ from `dsaBeneficiary` (for example, an agency paying for a client's ads). Same rules as `dsaBeneficiary`: required for EU targeting unless the ad account has a default payor. | [optional] |
|
|
37
38
|
| **lead_gen_form_id** | **String** | Lead Gen form ID to attach to the boosted ad's creative. REQUIRED when `goal` is `lead_generation`. On Meta this is the leadgen_forms ID (create one via POST /v1/ads/lead-forms). On LinkedIn this is the adForm ID (create one via POST /v1/ads/lead-forms with a LinkedIn account); the creative's `leadgenCallToAction.destination` is set to `urn:li:adForm:{id}`. Ignored for other goals. | [optional] |
|
|
@@ -72,6 +73,7 @@ instance = Zernio::BoostPostRequest.new(
|
|
|
72
73
|
link_url: null,
|
|
73
74
|
call_to_action: null,
|
|
74
75
|
spark_auth_code: null,
|
|
76
|
+
promoted_object: null,
|
|
75
77
|
dsa_beneficiary: null,
|
|
76
78
|
dsa_payor: null,
|
|
77
79
|
lead_gen_form_id: null,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Zernio::BoostPostRequestPromotedObject
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **pixel_id** | **String** | TikTok Pixel. Either the numeric pixel id or the alphanumeric pixel code from Events Manager, which is resolved for you. | [optional] |
|
|
8
|
+
| **custom_event_type** | **String** | Optimization event, as a TikTok optimization_event code (e.g. ON_WEB_ORDER, SHOPPING, FORM) or the exact event name shown in Events Manager, which is resolved to its code. Omit to let TikTok optimize for the ad group default. | [optional] |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'zernio-sdk'
|
|
14
|
+
|
|
15
|
+
instance = Zernio::BoostPostRequestPromotedObject.new(
|
|
16
|
+
pixel_id: null,
|
|
17
|
+
custom_event_type: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Zernio::GetCampaignAdSchedule200Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **campaign_id** | **String** | | [optional] |
|
|
8
|
+
| **schedule** | [**Array<AdScheduleWindow>**](AdScheduleWindow.md) | | [optional] |
|
|
9
|
+
| **serves_around_the_clock** | **Boolean** | True when the campaign carries no ad schedule at all, so it can serve at any time. | [optional] |
|
|
10
|
+
| **cached_at** | **Time** | | [optional] |
|
|
11
|
+
| **stale** | **Boolean** | True when a quota-exhausted read served the last-good copy. | [optional] |
|
|
12
|
+
| **performance** | [**GetCampaignAdSchedule200ResponsePerformance**](GetCampaignAdSchedule200ResponsePerformance.md) | | [optional] |
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```ruby
|
|
17
|
+
require 'zernio-sdk'
|
|
18
|
+
|
|
19
|
+
instance = Zernio::GetCampaignAdSchedule200Response.new(
|
|
20
|
+
campaign_id: null,
|
|
21
|
+
schedule: null,
|
|
22
|
+
serves_around_the_clock: null,
|
|
23
|
+
cached_at: null,
|
|
24
|
+
stale: null,
|
|
25
|
+
performance: null
|
|
26
|
+
)
|
|
27
|
+
```
|
|
28
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Zernio::GetCampaignAdSchedule200ResponsePerformance
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **window_days** | **Integer** | The trailing window used, or null when an explicit fromDate/toDate range was given. | [optional] |
|
|
8
|
+
| **by_day_of_week** | [**Array<GetCampaignAdSchedule200ResponsePerformanceByDayOfWeekInner>**](GetCampaignAdSchedule200ResponsePerformanceByDayOfWeekInner.md) | One entry per day that delivered, Monday first. | [optional] |
|
|
9
|
+
| **by_hour** | [**Array<GetCampaignAdSchedule200ResponsePerformanceByHourInner>**](GetCampaignAdSchedule200ResponsePerformanceByHourInner.md) | One entry per hour that delivered, 0-23 in the account time zone. | [optional] |
|
|
10
|
+
|
|
11
|
+
## Example
|
|
12
|
+
|
|
13
|
+
```ruby
|
|
14
|
+
require 'zernio-sdk'
|
|
15
|
+
|
|
16
|
+
instance = Zernio::GetCampaignAdSchedule200ResponsePerformance.new(
|
|
17
|
+
window_days: null,
|
|
18
|
+
by_day_of_week: null,
|
|
19
|
+
by_hour: null
|
|
20
|
+
)
|
|
21
|
+
```
|
|
22
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Zernio::GetCampaignAdSchedule200ResponsePerformanceByDayOfWeekInner
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **day_of_week** | **String** | | [optional] |
|
|
8
|
+
| **impressions** | **Integer** | | [optional] |
|
|
9
|
+
| **clicks** | **Integer** | | [optional] |
|
|
10
|
+
| **cost** | **Float** | Account currency, not USD-normalized. | [optional] |
|
|
11
|
+
| **conversions** | **Float** | | [optional] |
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```ruby
|
|
16
|
+
require 'zernio-sdk'
|
|
17
|
+
|
|
18
|
+
instance = Zernio::GetCampaignAdSchedule200ResponsePerformanceByDayOfWeekInner.new(
|
|
19
|
+
day_of_week: null,
|
|
20
|
+
impressions: null,
|
|
21
|
+
clicks: null,
|
|
22
|
+
cost: null,
|
|
23
|
+
conversions: null
|
|
24
|
+
)
|
|
25
|
+
```
|
|
26
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Zernio::GetCampaignAdSchedule200ResponsePerformanceByHourInner
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **hour** | **Integer** | | [optional] |
|
|
8
|
+
| **impressions** | **Integer** | | [optional] |
|
|
9
|
+
| **clicks** | **Integer** | | [optional] |
|
|
10
|
+
| **cost** | **Float** | Account currency, not USD-normalized. | [optional] |
|
|
11
|
+
| **conversions** | **Float** | | [optional] |
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```ruby
|
|
16
|
+
require 'zernio-sdk'
|
|
17
|
+
|
|
18
|
+
instance = Zernio::GetCampaignAdSchedule200ResponsePerformanceByHourInner.new(
|
|
19
|
+
hour: null,
|
|
20
|
+
impressions: null,
|
|
21
|
+
clicks: null,
|
|
22
|
+
cost: null,
|
|
23
|
+
conversions: null
|
|
24
|
+
)
|
|
25
|
+
```
|
|
26
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Zernio::UpdateCampaignAdSchedule200Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **campaign_id** | **String** | | [optional] |
|
|
8
|
+
| **schedule** | [**Array<AdScheduleWindow>**](AdScheduleWindow.md) | | [optional] |
|
|
9
|
+
| **serves_around_the_clock** | **Boolean** | | [optional] |
|
|
10
|
+
|
|
11
|
+
## Example
|
|
12
|
+
|
|
13
|
+
```ruby
|
|
14
|
+
require 'zernio-sdk'
|
|
15
|
+
|
|
16
|
+
instance = Zernio::UpdateCampaignAdSchedule200Response.new(
|
|
17
|
+
campaign_id: null,
|
|
18
|
+
schedule: null,
|
|
19
|
+
serves_around_the_clock: null
|
|
20
|
+
)
|
|
21
|
+
```
|
|
22
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Zernio::UpdateCampaignAdScheduleRequest
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **schedule** | [**Array<UpdateCampaignAdScheduleRequestScheduleInner>**](UpdateCampaignAdScheduleRequestScheduleInner.md) | The complete set of windows. Required, so clearing the schedule is always deliberate rather than an omission. | |
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
```ruby
|
|
12
|
+
require 'zernio-sdk'
|
|
13
|
+
|
|
14
|
+
instance = Zernio::UpdateCampaignAdScheduleRequest.new(
|
|
15
|
+
schedule: null
|
|
16
|
+
)
|
|
17
|
+
```
|
|
18
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Zernio::UpdateCampaignAdScheduleRequestScheduleInner
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **day_of_week** | **String** | | |
|
|
8
|
+
| **start_hour** | **Integer** | | |
|
|
9
|
+
| **start_minute** | **Integer** | Quarter-hours only. | [optional][default to START_MINUTE::N0] |
|
|
10
|
+
| **end_hour** | **Integer** | 24 means midnight at the end of the day. | |
|
|
11
|
+
| **end_minute** | **Integer** | Quarter-hours only. Must be 0 when endHour is 24. | [optional][default to END_MINUTE::N0] |
|
|
12
|
+
| **bid_modifier** | **Float** | Bid adjustment for this window. Null runs it at the campaign bid. | [optional][default to null] |
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```ruby
|
|
17
|
+
require 'zernio-sdk'
|
|
18
|
+
|
|
19
|
+
instance = Zernio::UpdateCampaignAdScheduleRequestScheduleInner.new(
|
|
20
|
+
day_of_week: null,
|
|
21
|
+
start_hour: null,
|
|
22
|
+
start_minute: null,
|
|
23
|
+
end_hour: null,
|
|
24
|
+
end_minute: null,
|
|
25
|
+
bid_modifier: null
|
|
26
|
+
)
|
|
27
|
+
```
|
|
28
|
+
|