late-sdk 0.0.894 → 0.0.896
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 +26 -3
- data/docs/AdAccountsApi.md +446 -0
- data/docs/AdAnalyticsResponse.md +1 -1
- data/docs/AdAnalyticsResponseAnalytics.md +22 -0
- data/docs/AdCampaign.md +1 -1
- data/docs/AdCampaignBudget.md +11 -3
- data/docs/AdCampaignsApi.md +149 -3
- data/docs/AdInsightsApi.md +1 -1
- data/docs/AdNegativeKeywordList.md +26 -0
- data/docs/AdNegativeKeywordListKeyword.md +22 -0
- data/docs/BoostPostRequest.md +6 -4
- data/docs/CampaignAnalyticsResponseAnalytics.md +3 -1
- data/docs/CampaignAnalyticsResponseAnalyticsImpressionShareCache.md +20 -0
- data/docs/CampaignAnalyticsResponseAnalyticsSummary.md +96 -0
- data/docs/CampaignAnalyticsResponseCampaign.md +2 -0
- data/docs/CreateAdNegativeKeywordList201Response.md +24 -0
- data/docs/CreateAdNegativeKeywordListRequest.md +26 -0
- data/docs/CreateCallAdRequest.md +8 -2
- data/docs/CreateMessagingAdRequest.md +8 -2
- data/docs/CtwaAdRequestBody.md +8 -2
- data/docs/CtwaAdRequestBodyCreativesInner.md +7 -3
- data/docs/DeleteAdNegativeKeywordList200Response.md +20 -0
- data/docs/GetAdAnalytics202Response.md +1 -1
- data/docs/GetAdNegativeKeywordList200Response.md +24 -0
- data/docs/GetAdNegativeKeywordList200ResponseList.md +28 -0
- data/docs/ListAdNegativeKeywordLists200Response.md +24 -0
- data/docs/MediaItem.md +1 -1
- data/docs/MessagingAdsApi.md +10 -10
- data/docs/ReplaceAdNegativeKeywordListKeywords200Response.md +22 -0
- data/docs/ReplaceAdNegativeKeywordListKeywordsRequest.md +24 -0
- data/docs/ReplaceCampaignNegativeKeywordListsRequest.md +20 -0
- data/docs/UpdateAdCampaign200Response.md +1 -1
- data/docs/UpdateAdCampaignRequest.md +2 -0
- data/docs/UpdateAdNegativeKeywordList200Response.md +20 -0
- data/docs/UpdateAdNegativeKeywordListRequest.md +24 -0
- data/lib/zernio-sdk/api/ad_accounts_api.rb +500 -0
- data/lib/zernio-sdk/api/ad_campaigns_api.rb +160 -6
- data/lib/zernio-sdk/api/ad_insights_api.rb +2 -2
- data/lib/zernio-sdk/api/messaging_ads_api.rb +8 -8
- data/lib/zernio-sdk/models/ad_analytics_response.rb +1 -1
- data/lib/zernio-sdk/models/ad_analytics_response_analytics.rb +169 -0
- data/lib/zernio-sdk/models/ad_campaign.rb +3 -1
- data/lib/zernio-sdk/models/ad_campaign_budget.rb +99 -5
- data/lib/zernio-sdk/models/ad_negative_keyword_list.rb +209 -0
- data/lib/zernio-sdk/models/ad_negative_keyword_list_keyword.rb +222 -0
- data/lib/zernio-sdk/models/boost_post_request.rb +38 -7
- data/lib/zernio-sdk/models/campaign_analytics_response_analytics.rb +11 -2
- data/lib/zernio-sdk/models/campaign_analytics_response_analytics_impression_share_cache.rb +158 -0
- data/lib/zernio-sdk/models/campaign_analytics_response_analytics_summary.rb +550 -0
- data/lib/zernio-sdk/models/campaign_analytics_response_campaign.rb +11 -1
- data/lib/zernio-sdk/models/create_ad_negative_keyword_list201_response.rb +220 -0
- data/lib/zernio-sdk/models/create_ad_negative_keyword_list_request.rb +327 -0
- data/lib/zernio-sdk/models/create_call_ad_request.rb +94 -3
- data/lib/zernio-sdk/models/create_messaging_ad_request.rb +94 -3
- data/lib/zernio-sdk/models/ctwa_ad_request_body.rb +95 -4
- data/lib/zernio-sdk/models/ctwa_ad_request_body_creatives_inner.rb +67 -21
- data/lib/zernio-sdk/models/ctwa_ad_request_body_creatives_inner_video.rb +1 -1
- data/lib/zernio-sdk/models/ctwa_ad_request_body_video.rb +1 -1
- data/lib/zernio-sdk/models/{ad_campaign_campaign_budget.rb → delete_ad_negative_keyword_list200_response.rb} +35 -48
- data/lib/zernio-sdk/models/get_ad_analytics202_response.rb +1 -1
- data/lib/zernio-sdk/models/get_ad_negative_keyword_list200_response.rb +199 -0
- data/lib/zernio-sdk/models/get_ad_negative_keyword_list200_response_list.rb +227 -0
- data/lib/zernio-sdk/models/list_ad_negative_keyword_lists200_response.rb +201 -0
- data/lib/zernio-sdk/models/media_item.rb +1 -0
- data/lib/zernio-sdk/models/replace_ad_negative_keyword_list_keywords200_response.rb +189 -0
- data/lib/zernio-sdk/models/replace_ad_negative_keyword_list_keywords_request.rb +289 -0
- data/lib/zernio-sdk/models/replace_campaign_negative_keyword_lists_request.rb +219 -0
- data/lib/zernio-sdk/models/update_ad_campaign200_response.rb +1 -1
- data/lib/zernio-sdk/models/update_ad_campaign_request.rb +13 -1
- data/lib/zernio-sdk/models/update_ad_campaign_request_budget.rb +1 -1
- data/lib/zernio-sdk/models/update_ad_negative_keyword_list200_response.rb +178 -0
- data/lib/zernio-sdk/models/update_ad_negative_keyword_list_request.rb +296 -0
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +16 -1
- data/openapi.yaml +981 -43
- data/spec/api/ad_accounts_api_spec.rb +82 -0
- data/spec/api/ad_campaigns_api_spec.rb +29 -3
- data/spec/api/ad_insights_api_spec.rb +1 -1
- data/spec/api/messaging_ads_api_spec.rb +4 -4
- data/spec/models/ad_analytics_response_analytics_spec.rb +48 -0
- data/spec/models/ad_campaign_budget_spec.rb +24 -0
- data/spec/models/ad_negative_keyword_list_keyword_spec.rb +52 -0
- data/spec/models/ad_negative_keyword_list_spec.rb +60 -0
- data/spec/models/boost_post_request_spec.rb +7 -1
- data/spec/models/campaign_analytics_response_analytics_impression_share_cache_spec.rb +42 -0
- data/spec/models/campaign_analytics_response_analytics_spec.rb +6 -0
- data/spec/models/campaign_analytics_response_analytics_summary_spec.rb +270 -0
- data/spec/models/campaign_analytics_response_campaign_spec.rb +6 -0
- data/spec/models/create_ad_negative_keyword_list201_response_spec.rb +54 -0
- data/spec/models/create_ad_negative_keyword_list_request_spec.rb +64 -0
- data/spec/models/create_call_ad_request_spec.rb +18 -0
- data/spec/models/create_messaging_ad_request_spec.rb +18 -0
- data/spec/models/ctwa_ad_request_body_creatives_inner_spec.rb +12 -0
- data/spec/models/ctwa_ad_request_body_spec.rb +18 -0
- data/spec/models/delete_ad_negative_keyword_list200_response_spec.rb +42 -0
- data/spec/models/get_ad_negative_keyword_list200_response_list_spec.rb +66 -0
- data/spec/models/get_ad_negative_keyword_list200_response_spec.rb +54 -0
- data/spec/models/list_ad_negative_keyword_lists200_response_spec.rb +54 -0
- data/spec/models/replace_ad_negative_keyword_list_keywords200_response_spec.rb +48 -0
- data/spec/models/replace_ad_negative_keyword_list_keywords_request_spec.rb +58 -0
- data/spec/models/{ad_campaign_campaign_budget_spec.rb → replace_campaign_negative_keyword_lists_request_spec.rb} +12 -12
- data/spec/models/update_ad_campaign_request_spec.rb +6 -0
- data/spec/models/update_ad_negative_keyword_list200_response_spec.rb +42 -0
- data/spec/models/update_ad_negative_keyword_list_request_spec.rb +58 -0
- data/zernio-sdk-0.0.896.gem +0 -0
- metadata +66 -6
- data/docs/AdCampaignCampaignBudget.md +0 -20
- data/zernio-sdk-0.0.894.gem +0 -0
|
@@ -7,12 +7,15 @@
|
|
|
7
7
|
| **account_id** | **String** | Facebook or Instagram SocialAccount ID. | |
|
|
8
8
|
| **ad_account_id** | **String** | Meta ad account ID, e.g. `act_123456789`. | |
|
|
9
9
|
| **name** | **String** | Ad display name. Used to derive campaign / ad set names. On the multi-creative shape, each ad's Meta name gets a \" #N\" suffix (1-indexed) so Ads Manager shows them as a numbered batch. | |
|
|
10
|
+
| **existing_post_id** | **String** | Messaging and CTWA only. Platform post or reel ID, resolved like boost platformPostId. Facebook IDs become object_story_id; Instagram IDs become source_instagram_media_id using the connected Instagram identity. Mutually exclusive with objectStoryId and fresh creative fields. | [optional] |
|
|
11
|
+
| **object_story_id** | **String** | Messaging and CTWA only. Raw Facebook pageId_postId reference, used as object_story_id even with an Instagram account. Mutually exclusive with existingPostId and fresh creative fields. | [optional] |
|
|
12
|
+
| **whatsapp_phone_number** | **String** | WhatsApp only. Optional E.164 number already paired with the Facebook Page. Omit to let Meta select the paired number. Sent to the creative CTA and, when creating a new ad set, its promoted_object. Attach requests do not change the existing ad set. | [optional] |
|
|
10
13
|
| **headline** | **String** | Single-creative shape only. Mutually exclusive with `creatives[]`. | [optional] |
|
|
11
14
|
| **body** | **String** | Primary text shown above the image / video. Single-creative shape only. Mutually exclusive with `creatives[]`. | [optional] |
|
|
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
|
|
15
|
+
| **image_url** | **String** | Image asset for single-creative shape. Mutually exclusive with `video` and with `creatives[]`. Required on the single-creative shape if neither `video` nor an existing post reference is supplied. | [optional] |
|
|
13
16
|
| **video** | [**CtwaAdRequestBodyVideo**](CtwaAdRequestBodyVideo.md) | | [optional] |
|
|
14
17
|
| **welcome_message** | [**CtwaAdRequestBodyWelcomeMessage**](CtwaAdRequestBodyWelcomeMessage.md) | | [optional] |
|
|
15
|
-
| **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
|
|
18
|
+
| **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 supplies headline, body, and image/video, or an existingPostId or objectStoryId reference. Fresh and existing creatives can be mixed. | [optional] |
|
|
16
19
|
| **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] |
|
|
17
20
|
| **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] |
|
|
18
21
|
| **budget_type** | **String** | Required unless `adSetId` is set. | [optional] |
|
|
@@ -51,6 +54,9 @@ instance = Zernio::CreateMessagingAdRequest.new(
|
|
|
51
54
|
account_id: null,
|
|
52
55
|
ad_account_id: null,
|
|
53
56
|
name: null,
|
|
57
|
+
existing_post_id: null,
|
|
58
|
+
object_story_id: null,
|
|
59
|
+
whatsapp_phone_number: null,
|
|
54
60
|
headline: null,
|
|
55
61
|
body: null,
|
|
56
62
|
image_url: null,
|
data/docs/CtwaAdRequestBody.md
CHANGED
|
@@ -7,12 +7,15 @@
|
|
|
7
7
|
| **account_id** | **String** | Facebook or Instagram SocialAccount ID. | |
|
|
8
8
|
| **ad_account_id** | **String** | Meta ad account ID, e.g. `act_123456789`. | |
|
|
9
9
|
| **name** | **String** | Ad display name. Used to derive campaign / ad set names. On the multi-creative shape, each ad's Meta name gets a \" #N\" suffix (1-indexed) so Ads Manager shows them as a numbered batch. | |
|
|
10
|
+
| **existing_post_id** | **String** | Messaging and CTWA only. Platform post or reel ID, resolved like boost platformPostId. Facebook IDs become object_story_id; Instagram IDs become source_instagram_media_id using the connected Instagram identity. Mutually exclusive with objectStoryId and fresh creative fields. | [optional] |
|
|
11
|
+
| **object_story_id** | **String** | Messaging and CTWA only. Raw Facebook pageId_postId reference, used as object_story_id even with an Instagram account. Mutually exclusive with existingPostId and fresh creative fields. | [optional] |
|
|
12
|
+
| **whatsapp_phone_number** | **String** | WhatsApp only. Optional E.164 number already paired with the Facebook Page. Omit to let Meta select the paired number. Sent to the creative CTA and, when creating a new ad set, its promoted_object. Attach requests do not change the existing ad set. | [optional] |
|
|
10
13
|
| **headline** | **String** | Single-creative shape only. Mutually exclusive with `creatives[]`. | [optional] |
|
|
11
14
|
| **body** | **String** | Primary text shown above the image / video. Single-creative shape only. Mutually exclusive with `creatives[]`. | [optional] |
|
|
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
|
|
15
|
+
| **image_url** | **String** | Image asset for single-creative shape. Mutually exclusive with `video` and with `creatives[]`. Required on the single-creative shape if neither `video` nor an existing post reference is supplied. | [optional] |
|
|
13
16
|
| **video** | [**CtwaAdRequestBodyVideo**](CtwaAdRequestBodyVideo.md) | | [optional] |
|
|
14
17
|
| **welcome_message** | [**CtwaAdRequestBodyWelcomeMessage**](CtwaAdRequestBodyWelcomeMessage.md) | | [optional] |
|
|
15
|
-
| **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
|
|
18
|
+
| **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 supplies headline, body, and image/video, or an existingPostId or objectStoryId reference. Fresh and existing creatives can be mixed. | [optional] |
|
|
16
19
|
| **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] |
|
|
17
20
|
| **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] |
|
|
18
21
|
| **budget_type** | **String** | Required unless `adSetId` is set. | [optional] |
|
|
@@ -50,6 +53,9 @@ instance = Zernio::CtwaAdRequestBody.new(
|
|
|
50
53
|
account_id: null,
|
|
51
54
|
ad_account_id: null,
|
|
52
55
|
name: null,
|
|
56
|
+
existing_post_id: null,
|
|
57
|
+
object_story_id: null,
|
|
58
|
+
whatsapp_phone_number: null,
|
|
53
59
|
headline: null,
|
|
54
60
|
body: null,
|
|
55
61
|
image_url: null,
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **
|
|
8
|
-
| **
|
|
9
|
-
| **
|
|
7
|
+
| **existing_post_id** | **String** | Messaging and CTWA only. Platform post or reel ID, resolved like boost platformPostId. Facebook IDs become object_story_id; Instagram IDs become source_instagram_media_id using the connected Instagram identity. Mutually exclusive with objectStoryId and fresh creative fields. | [optional] |
|
|
8
|
+
| **object_story_id** | **String** | Messaging and CTWA only. Raw Facebook pageId_postId reference, used as object_story_id even with an Instagram account. Mutually exclusive with existingPostId and fresh creative fields. | [optional] |
|
|
9
|
+
| **headline** | **String** | | [optional] |
|
|
10
|
+
| **body** | **String** | Primary text shown above the image / video. | [optional] |
|
|
11
|
+
| **image_url** | **String** | Image asset. Mutually exclusive with this entry's `video`. Required if neither `video` nor an existing post reference is supplied. | [optional] |
|
|
10
12
|
| **video** | [**CtwaAdRequestBodyCreativesInnerVideo**](CtwaAdRequestBodyCreativesInnerVideo.md) | | [optional] |
|
|
11
13
|
| **welcome_message** | [**CtwaAdRequestBodyCreativesInnerWelcomeMessage**](CtwaAdRequestBodyCreativesInnerWelcomeMessage.md) | | [optional] |
|
|
12
14
|
|
|
@@ -16,6 +18,8 @@
|
|
|
16
18
|
require 'zernio-sdk'
|
|
17
19
|
|
|
18
20
|
instance = Zernio::CtwaAdRequestBodyCreativesInner.new(
|
|
21
|
+
existing_post_id: null,
|
|
22
|
+
object_story_id: null,
|
|
19
23
|
headline: null,
|
|
20
24
|
body: null,
|
|
21
25
|
image_url: null,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Zernio::DeleteAdNegativeKeywordList200Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **removed** | **Boolean** | | [optional] |
|
|
8
|
+
| **customer_id** | **String** | Resolved Google Ads customer id. | [optional] |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'zernio-sdk'
|
|
14
|
+
|
|
15
|
+
instance = Zernio::DeleteAdNegativeKeywordList200Response.new(
|
|
16
|
+
removed: null,
|
|
17
|
+
customer_id: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **backfill_pending** | **Boolean** | Always true on this response. Part of the requested range is still being backfilled; retry until the request returns 200. | |
|
|
8
8
|
| **ad** | [**AdAnalyticsResponseAd**](AdAnalyticsResponseAd.md) | | [optional] |
|
|
9
|
-
| **analytics** | [**
|
|
9
|
+
| **analytics** | [**AdAnalyticsResponseAnalytics**](AdAnalyticsResponseAnalytics.md) | | [optional] |
|
|
10
10
|
|
|
11
11
|
## Example
|
|
12
12
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Zernio::GetAdNegativeKeywordList200Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **list** | [**GetAdNegativeKeywordList200ResponseList**](GetAdNegativeKeywordList200ResponseList.md) | | [optional] |
|
|
8
|
+
| **customer_id** | **String** | Resolved Google Ads customer id. | [optional] |
|
|
9
|
+
| **cached_at** | **Time** | Last successful fetch time, or null without cache storage. | [optional] |
|
|
10
|
+
| **stale** | **Boolean** | True when quota exhaustion caused the last successful cached result to be served. | [optional] |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'zernio-sdk'
|
|
16
|
+
|
|
17
|
+
instance = Zernio::GetAdNegativeKeywordList200Response.new(
|
|
18
|
+
list: null,
|
|
19
|
+
customer_id: null,
|
|
20
|
+
cached_at: null,
|
|
21
|
+
stale: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Zernio::GetAdNegativeKeywordList200ResponseList
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **id** | **String** | Google shared set id. | [optional] |
|
|
8
|
+
| **resource_name** | **String** | Google shared set resource name. | [optional] |
|
|
9
|
+
| **name** | **String** | List name. | [optional] |
|
|
10
|
+
| **member_count** | **Integer** | Number of keywords in the list. | [optional] |
|
|
11
|
+
| **reference_count** | **Integer** | Number of resources referencing the list. | [optional] |
|
|
12
|
+
| **keywords** | [**Array<AdNegativeKeywordListKeyword>**](AdNegativeKeywordListKeyword.md) | | [optional] |
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```ruby
|
|
17
|
+
require 'zernio-sdk'
|
|
18
|
+
|
|
19
|
+
instance = Zernio::GetAdNegativeKeywordList200ResponseList.new(
|
|
20
|
+
id: null,
|
|
21
|
+
resource_name: null,
|
|
22
|
+
name: null,
|
|
23
|
+
member_count: null,
|
|
24
|
+
reference_count: null,
|
|
25
|
+
keywords: null
|
|
26
|
+
)
|
|
27
|
+
```
|
|
28
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Zernio::ListAdNegativeKeywordLists200Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **lists** | [**Array<AdNegativeKeywordList>**](AdNegativeKeywordList.md) | | [optional] |
|
|
8
|
+
| **customer_id** | **String** | Resolved Google Ads customer id. | [optional] |
|
|
9
|
+
| **cached_at** | **Time** | Last successful fetch time, or null without cache storage. | [optional] |
|
|
10
|
+
| **stale** | **Boolean** | True when quota exhaustion caused the last successful cached result to be served. | [optional] |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'zernio-sdk'
|
|
16
|
+
|
|
17
|
+
instance = Zernio::ListAdNegativeKeywordLists200Response.new(
|
|
18
|
+
lists: null,
|
|
19
|
+
customer_id: null,
|
|
20
|
+
cached_at: null,
|
|
21
|
+
stale: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
data/docs/MediaItem.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **type** | **String** | | [optional] |
|
|
8
|
-
| **url** | **String** |
|
|
8
|
+
| **url** | **String** | A media item with a null, missing or empty url is dropped from non-draft posts (drafts keep it as a pending-upload placeholder). | [optional] |
|
|
9
9
|
| **title** | **String** | Optional title for the media item. Used as the document title for LinkedIn PDF/carousel posts. If omitted, falls back to the post title, then the filename. | [optional] |
|
|
10
10
|
| **alt_text** | **String** | Accessibility alternative text for an image, applied on every platform that supports it: Instagram (feed images only, not Reels/Stories), Facebook, Threads, X (max 1000 chars), LinkedIn, Bluesky, and Pinterest (max 500 chars). Ignored on platforms without alt-text support (TikTok, YouTube, Snapchat, Telegram, Reddit, Google Business Profile, WhatsApp) and on video items where the platform does not accept it. Set once per image; the same value is sent to each selected platform. | [optional] |
|
|
11
11
|
| **filename** | **String** | | [optional] |
|
data/docs/MessagingAdsApi.md
CHANGED
|
@@ -5,8 +5,8 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
5
5
|
| Method | HTTP request | Description |
|
|
6
6
|
| ------ | ------------ | ----------- |
|
|
7
7
|
| [**create_call_ad**](MessagingAdsApi.md#create_call_ad) | **POST** /v1/ads/call | Create Click-to-Call ad |
|
|
8
|
-
| [**create_ctwa_ad**](MessagingAdsApi.md#create_ctwa_ad) | **POST** /v1/ads/ctwa | Create
|
|
9
|
-
| [**create_messaging_ad**](MessagingAdsApi.md#create_messaging_ad) | **POST** /v1/ads/messaging | Create
|
|
8
|
+
| [**create_ctwa_ad**](MessagingAdsApi.md#create_ctwa_ad) | **POST** /v1/ads/ctwa | Create CTWA ad (deprecated) |
|
|
9
|
+
| [**create_messaging_ad**](MessagingAdsApi.md#create_messaging_ad) | **POST** /v1/ads/messaging | Create messaging ad |
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
## create_call_ad
|
|
@@ -82,9 +82,9 @@ end
|
|
|
82
82
|
|
|
83
83
|
> <CreateMessagingAd201Response> create_ctwa_ad(ctwa_ad_request_body)
|
|
84
84
|
|
|
85
|
-
Create
|
|
85
|
+
Create CTWA ad (deprecated)
|
|
86
86
|
|
|
87
|
-
Deprecated: use POST /v1/ads/messaging with `destination: whatsapp`. This endpoint stays available for back-compat; no removal planned. Creates one or more Click-to-WhatsApp (CTWA) ads on Meta under a single campaign and ad set. When tapped, each ad opens a WhatsApp conversation with the business attached to the supplied Facebook Page. The full hierarchy (campaign, ad set, creative(s), ad(s)) is created and activated in one call. The CTA is locked to WHATSAPP_MESSAGE and the destination is hard-coded to api.whatsapp.com/send; Meta resolves the actual WhatsApp number from the Page-to-WA pairing configured in Page settings or Business Manager. Supports two mutually-exclusive shapes: - **Single-creative**: supply top-level `headline`, `body`, and one of `imageUrl` / `video
|
|
87
|
+
Deprecated: use POST /v1/ads/messaging with `destination: whatsapp`. This endpoint stays available for back-compat; no removal planned. Creates one or more Click-to-WhatsApp (CTWA) ads on Meta under a single campaign and ad set. When tapped, each ad opens a WhatsApp conversation with the business attached to the supplied Facebook Page. The full hierarchy (campaign, ad set, creative(s), ad(s)) is created and activated in one call. The CTA is locked to WHATSAPP_MESSAGE and the destination is hard-coded to api.whatsapp.com/send; Meta resolves the actual WhatsApp number from the Page-to-WA pairing configured in Page settings or Business Manager. Supports two mutually-exclusive shapes: - **Single-creative**: supply top-level `headline`, `body`, and one of `imageUrl` / `video`, or an `existingPostId` / `objectStoryId` reference. Creates 1 campaign + 1 ad set + 1 ad. - **Multi-creative**: supply a `creatives[]` array with N entries (each carrying fresh media and copy or an existing post reference). Creates 1 campaign + 1 ad set + N ads sharing budget and targeting so Meta A/Bs the creatives inside a single auction instead of fragmenting budget across N parallel campaigns. Recommended when launching multiple creative variants for the same campaign. **Attach shape.** Send `adSetId` (with either creative shape) to add the ads to an EXISTING messaging ad set instead of building a campaign, so the ad set keeps its learning phase, the way to refresh a CTWA creative without resetting delivery. The ad set then owns budget, targeting and schedule, so `budgetAmount`, `budgetType`, `endDate`, `objective`, `countries`, `interests` and `audienceId` are rejected with a 400 alongside it rather than silently dropped. The target ad set's `destination_type` must match the ad's destination (a WhatsApp ad needs a `WHATSAPP` ad set), otherwise Meta would accept an ad that never delivers. Prerequisites enforced by Meta (surfaced as platform_error on failure): the Facebook Page must be paired with a verified WhatsApp Business number, the WhatsApp Business Account must be business-verified, and the Meta access token must carry ads_management. Existing posts and reels are supported through `existingPostId` or `objectStoryId`, either per creative or at the top level. Omit fresh media and copy for that creative. Optional `whatsappPhoneNumber` selects a number already paired with the Page (WhatsApp destination only).
|
|
88
88
|
|
|
89
89
|
### Examples
|
|
90
90
|
|
|
@@ -101,7 +101,7 @@ api_instance = Zernio::MessagingAdsApi.new
|
|
|
101
101
|
ctwa_ad_request_body = Zernio::CtwaAdRequestBody.new({account_id: 'account_id_example', ad_account_id: 'ad_account_id_example', name: 'name_example'}) # CtwaAdRequestBody |
|
|
102
102
|
|
|
103
103
|
begin
|
|
104
|
-
# Create
|
|
104
|
+
# Create CTWA ad (deprecated)
|
|
105
105
|
result = api_instance.create_ctwa_ad(ctwa_ad_request_body)
|
|
106
106
|
p result
|
|
107
107
|
rescue Zernio::ApiError => e
|
|
@@ -117,7 +117,7 @@ This returns an Array which contains the response data, status code and headers.
|
|
|
117
117
|
|
|
118
118
|
```ruby
|
|
119
119
|
begin
|
|
120
|
-
# Create
|
|
120
|
+
# Create CTWA ad (deprecated)
|
|
121
121
|
data, status_code, headers = api_instance.create_ctwa_ad_with_http_info(ctwa_ad_request_body)
|
|
122
122
|
p status_code # => 2xx
|
|
123
123
|
p headers # => { ... }
|
|
@@ -151,9 +151,9 @@ end
|
|
|
151
151
|
|
|
152
152
|
> <CreateMessagingAd201Response> create_messaging_ad(create_messaging_ad_request)
|
|
153
153
|
|
|
154
|
-
Create
|
|
154
|
+
Create messaging ad
|
|
155
155
|
|
|
156
|
-
Creates a click-to-message ad; `destination` selects where the tapped ad opens a conversation: WhatsApp, the Page's Messenger inbox or the linked Instagram account's Direct inbox. The ad set is created with the matching destination_type and CONVERSATIONS optimization; the campaign objective defaults to OUTCOME_ENGAGEMENT. Supports single-creative and multi-creative shapes. Supersedes POST /v1/ads/ctwa (deprecated, equivalent to `destination: whatsapp`).
|
|
156
|
+
Creates a click-to-message ad; `destination` selects where the tapped ad opens a conversation: WhatsApp, the Page's Messenger inbox or the linked Instagram account's Direct inbox. The ad set is created with the matching destination_type and CONVERSATIONS optimization; the campaign objective defaults to OUTCOME_ENGAGEMENT. Supports single-creative and multi-creative shapes. Supersedes POST /v1/ads/ctwa (deprecated, equivalent to `destination: whatsapp`). Existing posts and reels are supported through `existingPostId` or `objectStoryId`, either per creative or at the top level. Omit fresh media and copy for that creative. Optional `whatsappPhoneNumber` selects a number already paired with the Page (WhatsApp destination only).
|
|
157
157
|
|
|
158
158
|
### Examples
|
|
159
159
|
|
|
@@ -170,7 +170,7 @@ api_instance = Zernio::MessagingAdsApi.new
|
|
|
170
170
|
create_messaging_ad_request = Zernio::CreateMessagingAdRequest.new({account_id: 'account_id_example', ad_account_id: 'ad_account_id_example', name: 'name_example', destination: 'whatsapp'}) # CreateMessagingAdRequest |
|
|
171
171
|
|
|
172
172
|
begin
|
|
173
|
-
# Create
|
|
173
|
+
# Create messaging ad
|
|
174
174
|
result = api_instance.create_messaging_ad(create_messaging_ad_request)
|
|
175
175
|
p result
|
|
176
176
|
rescue Zernio::ApiError => e
|
|
@@ -186,7 +186,7 @@ This returns an Array which contains the response data, status code and headers.
|
|
|
186
186
|
|
|
187
187
|
```ruby
|
|
188
188
|
begin
|
|
189
|
-
# Create
|
|
189
|
+
# Create messaging ad
|
|
190
190
|
data, status_code, headers = api_instance.create_messaging_ad_with_http_info(create_messaging_ad_request)
|
|
191
191
|
p status_code # => 2xx
|
|
192
192
|
p headers # => { ... }
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Zernio::ReplaceAdNegativeKeywordListKeywords200Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **created** | **Integer** | New criteria or campaign links created. | [optional] |
|
|
8
|
+
| **removed** | **Integer** | Existing criteria or campaign links removed. | [optional] |
|
|
9
|
+
| **customer_id** | **String** | Resolved Google Ads customer id. | [optional] |
|
|
10
|
+
|
|
11
|
+
## Example
|
|
12
|
+
|
|
13
|
+
```ruby
|
|
14
|
+
require 'zernio-sdk'
|
|
15
|
+
|
|
16
|
+
instance = Zernio::ReplaceAdNegativeKeywordListKeywords200Response.new(
|
|
17
|
+
created: null,
|
|
18
|
+
removed: null,
|
|
19
|
+
customer_id: null
|
|
20
|
+
)
|
|
21
|
+
```
|
|
22
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Zernio::ReplaceAdNegativeKeywordListKeywordsRequest
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **account_id** | **String** | Zernio SocialAccount id. | |
|
|
8
|
+
| **customer_id** | **String** | Connected Google Ads customer id, without dashes. Required when the connection has multiple customers. | [optional] |
|
|
9
|
+
| **platform** | **String** | Optional courtesy field. The resolved account or campaign determines support; other platforms return 501. | [optional] |
|
|
10
|
+
| **keywords** | [**Array<KeywordEntry>**](KeywordEntry.md) | Full desired keyword set. Bare strings use broad match. Send [] to clear the list. | |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'zernio-sdk'
|
|
16
|
+
|
|
17
|
+
instance = Zernio::ReplaceAdNegativeKeywordListKeywordsRequest.new(
|
|
18
|
+
account_id: null,
|
|
19
|
+
customer_id: null,
|
|
20
|
+
platform: null,
|
|
21
|
+
keywords: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Zernio::ReplaceCampaignNegativeKeywordListsRequest
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **platform** | **String** | Optional courtesy field. The resolved account or campaign determines support; other platforms return 501. | [optional] |
|
|
8
|
+
| **list_ids** | **Array<String>** | | |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'zernio-sdk'
|
|
14
|
+
|
|
15
|
+
instance = Zernio::ReplaceCampaignNegativeKeywordListsRequest.new(
|
|
16
|
+
platform: null,
|
|
17
|
+
list_ids: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **updated** | **Integer** | Local Ad documents mirrored. 0 on the empty-campaign path. | [optional] |
|
|
8
|
-
| **budget** | [**
|
|
8
|
+
| **budget** | [**AdCampaignBudget**](AdCampaignBudget.md) | | [optional] |
|
|
9
9
|
| **budget_level** | **String** | | [optional] |
|
|
10
10
|
| **bid_strategy** | [**BidStrategy**](BidStrategy.md) | | [optional] |
|
|
11
11
|
| **bid_amount** | **Float** | | [optional] |
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
| **bid_amount** | **Float** | **Google only.** Whole currency units (USD: 12 = $12.00). Max CPC for LOWEST_COST_WITH_BID_CAP, CPA target for COST_CAP; required for both. | [optional] |
|
|
11
11
|
| **roas_average_floor** | **Float** | **Google only.** Decimal ROAS multiplier (2.0 = 2.0x), required for LOWEST_COST_WITH_MIN_ROAS. | [optional] |
|
|
12
12
|
| **portfolio_bid_strategy_id** | **String** | **Google only.** Attach an existing portfolio bid strategy (numeric id from GET /v1/ads/bid-strategies) instead of setting bidStrategy. Exclusive with bidStrategy. | [optional] |
|
|
13
|
+
| **allow_shared_budget_update** | **Boolean** | Google only. Explicitly allow changing a shared campaign budget, affecting every campaign that uses it. Does not bypass an unknown sharing state. | [optional][default to false] |
|
|
13
14
|
| **budget** | [**UpdateAdCampaignRequestBudget**](UpdateAdCampaignRequestBudget.md) | | [optional] |
|
|
14
15
|
| **name** | **String** | **Meta only.** Rename the campaign. | [optional] |
|
|
15
16
|
| **platform_specific_data** | [**UpdateAdCampaignRequestPlatformSpecificData**](UpdateAdCampaignRequestPlatformSpecificData.md) | | [optional] |
|
|
@@ -26,6 +27,7 @@ instance = Zernio::UpdateAdCampaignRequest.new(
|
|
|
26
27
|
bid_amount: null,
|
|
27
28
|
roas_average_floor: null,
|
|
28
29
|
portfolio_bid_strategy_id: null,
|
|
30
|
+
allow_shared_budget_update: null,
|
|
29
31
|
budget: null,
|
|
30
32
|
name: null,
|
|
31
33
|
platform_specific_data: null
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Zernio::UpdateAdNegativeKeywordList200Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **updated** | **Boolean** | | [optional] |
|
|
8
|
+
| **customer_id** | **String** | Resolved Google Ads customer id. | [optional] |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'zernio-sdk'
|
|
14
|
+
|
|
15
|
+
instance = Zernio::UpdateAdNegativeKeywordList200Response.new(
|
|
16
|
+
updated: null,
|
|
17
|
+
customer_id: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Zernio::UpdateAdNegativeKeywordListRequest
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **account_id** | **String** | Zernio SocialAccount id. | |
|
|
8
|
+
| **customer_id** | **String** | Connected Google Ads customer id, without dashes. Required when the connection has multiple customers. | [optional] |
|
|
9
|
+
| **platform** | **String** | Optional courtesy field. The resolved account or campaign determines support; other platforms return 501. | [optional] |
|
|
10
|
+
| **name** | **String** | Nonempty list name, trimmed before use. | |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'zernio-sdk'
|
|
16
|
+
|
|
17
|
+
instance = Zernio::UpdateAdNegativeKeywordListRequest.new(
|
|
18
|
+
account_id: null,
|
|
19
|
+
customer_id: null,
|
|
20
|
+
platform: null,
|
|
21
|
+
name: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|