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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +26 -3
  3. data/docs/AdAccountsApi.md +446 -0
  4. data/docs/AdAnalyticsResponse.md +1 -1
  5. data/docs/AdAnalyticsResponseAnalytics.md +22 -0
  6. data/docs/AdCampaign.md +1 -1
  7. data/docs/AdCampaignBudget.md +11 -3
  8. data/docs/AdCampaignsApi.md +149 -3
  9. data/docs/AdInsightsApi.md +1 -1
  10. data/docs/AdNegativeKeywordList.md +26 -0
  11. data/docs/AdNegativeKeywordListKeyword.md +22 -0
  12. data/docs/BoostPostRequest.md +6 -4
  13. data/docs/CampaignAnalyticsResponseAnalytics.md +3 -1
  14. data/docs/CampaignAnalyticsResponseAnalyticsImpressionShareCache.md +20 -0
  15. data/docs/CampaignAnalyticsResponseAnalyticsSummary.md +96 -0
  16. data/docs/CampaignAnalyticsResponseCampaign.md +2 -0
  17. data/docs/CreateAdNegativeKeywordList201Response.md +24 -0
  18. data/docs/CreateAdNegativeKeywordListRequest.md +26 -0
  19. data/docs/CreateCallAdRequest.md +8 -2
  20. data/docs/CreateMessagingAdRequest.md +8 -2
  21. data/docs/CtwaAdRequestBody.md +8 -2
  22. data/docs/CtwaAdRequestBodyCreativesInner.md +7 -3
  23. data/docs/DeleteAdNegativeKeywordList200Response.md +20 -0
  24. data/docs/GetAdAnalytics202Response.md +1 -1
  25. data/docs/GetAdNegativeKeywordList200Response.md +24 -0
  26. data/docs/GetAdNegativeKeywordList200ResponseList.md +28 -0
  27. data/docs/ListAdNegativeKeywordLists200Response.md +24 -0
  28. data/docs/MediaItem.md +1 -1
  29. data/docs/MessagingAdsApi.md +10 -10
  30. data/docs/ReplaceAdNegativeKeywordListKeywords200Response.md +22 -0
  31. data/docs/ReplaceAdNegativeKeywordListKeywordsRequest.md +24 -0
  32. data/docs/ReplaceCampaignNegativeKeywordListsRequest.md +20 -0
  33. data/docs/UpdateAdCampaign200Response.md +1 -1
  34. data/docs/UpdateAdCampaignRequest.md +2 -0
  35. data/docs/UpdateAdNegativeKeywordList200Response.md +20 -0
  36. data/docs/UpdateAdNegativeKeywordListRequest.md +24 -0
  37. data/lib/zernio-sdk/api/ad_accounts_api.rb +500 -0
  38. data/lib/zernio-sdk/api/ad_campaigns_api.rb +160 -6
  39. data/lib/zernio-sdk/api/ad_insights_api.rb +2 -2
  40. data/lib/zernio-sdk/api/messaging_ads_api.rb +8 -8
  41. data/lib/zernio-sdk/models/ad_analytics_response.rb +1 -1
  42. data/lib/zernio-sdk/models/ad_analytics_response_analytics.rb +169 -0
  43. data/lib/zernio-sdk/models/ad_campaign.rb +3 -1
  44. data/lib/zernio-sdk/models/ad_campaign_budget.rb +99 -5
  45. data/lib/zernio-sdk/models/ad_negative_keyword_list.rb +209 -0
  46. data/lib/zernio-sdk/models/ad_negative_keyword_list_keyword.rb +222 -0
  47. data/lib/zernio-sdk/models/boost_post_request.rb +38 -7
  48. data/lib/zernio-sdk/models/campaign_analytics_response_analytics.rb +11 -2
  49. data/lib/zernio-sdk/models/campaign_analytics_response_analytics_impression_share_cache.rb +158 -0
  50. data/lib/zernio-sdk/models/campaign_analytics_response_analytics_summary.rb +550 -0
  51. data/lib/zernio-sdk/models/campaign_analytics_response_campaign.rb +11 -1
  52. data/lib/zernio-sdk/models/create_ad_negative_keyword_list201_response.rb +220 -0
  53. data/lib/zernio-sdk/models/create_ad_negative_keyword_list_request.rb +327 -0
  54. data/lib/zernio-sdk/models/create_call_ad_request.rb +94 -3
  55. data/lib/zernio-sdk/models/create_messaging_ad_request.rb +94 -3
  56. data/lib/zernio-sdk/models/ctwa_ad_request_body.rb +95 -4
  57. data/lib/zernio-sdk/models/ctwa_ad_request_body_creatives_inner.rb +67 -21
  58. data/lib/zernio-sdk/models/ctwa_ad_request_body_creatives_inner_video.rb +1 -1
  59. data/lib/zernio-sdk/models/ctwa_ad_request_body_video.rb +1 -1
  60. data/lib/zernio-sdk/models/{ad_campaign_campaign_budget.rb → delete_ad_negative_keyword_list200_response.rb} +35 -48
  61. data/lib/zernio-sdk/models/get_ad_analytics202_response.rb +1 -1
  62. data/lib/zernio-sdk/models/get_ad_negative_keyword_list200_response.rb +199 -0
  63. data/lib/zernio-sdk/models/get_ad_negative_keyword_list200_response_list.rb +227 -0
  64. data/lib/zernio-sdk/models/list_ad_negative_keyword_lists200_response.rb +201 -0
  65. data/lib/zernio-sdk/models/media_item.rb +1 -0
  66. data/lib/zernio-sdk/models/replace_ad_negative_keyword_list_keywords200_response.rb +189 -0
  67. data/lib/zernio-sdk/models/replace_ad_negative_keyword_list_keywords_request.rb +289 -0
  68. data/lib/zernio-sdk/models/replace_campaign_negative_keyword_lists_request.rb +219 -0
  69. data/lib/zernio-sdk/models/update_ad_campaign200_response.rb +1 -1
  70. data/lib/zernio-sdk/models/update_ad_campaign_request.rb +13 -1
  71. data/lib/zernio-sdk/models/update_ad_campaign_request_budget.rb +1 -1
  72. data/lib/zernio-sdk/models/update_ad_negative_keyword_list200_response.rb +178 -0
  73. data/lib/zernio-sdk/models/update_ad_negative_keyword_list_request.rb +296 -0
  74. data/lib/zernio-sdk/version.rb +1 -1
  75. data/lib/zernio-sdk.rb +16 -1
  76. data/openapi.yaml +981 -43
  77. data/spec/api/ad_accounts_api_spec.rb +82 -0
  78. data/spec/api/ad_campaigns_api_spec.rb +29 -3
  79. data/spec/api/ad_insights_api_spec.rb +1 -1
  80. data/spec/api/messaging_ads_api_spec.rb +4 -4
  81. data/spec/models/ad_analytics_response_analytics_spec.rb +48 -0
  82. data/spec/models/ad_campaign_budget_spec.rb +24 -0
  83. data/spec/models/ad_negative_keyword_list_keyword_spec.rb +52 -0
  84. data/spec/models/ad_negative_keyword_list_spec.rb +60 -0
  85. data/spec/models/boost_post_request_spec.rb +7 -1
  86. data/spec/models/campaign_analytics_response_analytics_impression_share_cache_spec.rb +42 -0
  87. data/spec/models/campaign_analytics_response_analytics_spec.rb +6 -0
  88. data/spec/models/campaign_analytics_response_analytics_summary_spec.rb +270 -0
  89. data/spec/models/campaign_analytics_response_campaign_spec.rb +6 -0
  90. data/spec/models/create_ad_negative_keyword_list201_response_spec.rb +54 -0
  91. data/spec/models/create_ad_negative_keyword_list_request_spec.rb +64 -0
  92. data/spec/models/create_call_ad_request_spec.rb +18 -0
  93. data/spec/models/create_messaging_ad_request_spec.rb +18 -0
  94. data/spec/models/ctwa_ad_request_body_creatives_inner_spec.rb +12 -0
  95. data/spec/models/ctwa_ad_request_body_spec.rb +18 -0
  96. data/spec/models/delete_ad_negative_keyword_list200_response_spec.rb +42 -0
  97. data/spec/models/get_ad_negative_keyword_list200_response_list_spec.rb +66 -0
  98. data/spec/models/get_ad_negative_keyword_list200_response_spec.rb +54 -0
  99. data/spec/models/list_ad_negative_keyword_lists200_response_spec.rb +54 -0
  100. data/spec/models/replace_ad_negative_keyword_list_keywords200_response_spec.rb +48 -0
  101. data/spec/models/replace_ad_negative_keyword_list_keywords_request_spec.rb +58 -0
  102. data/spec/models/{ad_campaign_campaign_budget_spec.rb → replace_campaign_negative_keyword_lists_request_spec.rb} +12 -12
  103. data/spec/models/update_ad_campaign_request_spec.rb +6 -0
  104. data/spec/models/update_ad_negative_keyword_list200_response_spec.rb +42 -0
  105. data/spec/models/update_ad_negative_keyword_list_request_spec.rb +58 -0
  106. data/zernio-sdk-0.0.896.gem +0 -0
  107. metadata +66 -6
  108. data/docs/AdCampaignCampaignBudget.md +0 -20
  109. 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 not supplied. | [optional] |
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 must supply its own headline, body, and exactly one of `imageUrl` / `video`. | [optional] |
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,
@@ -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 not supplied. | [optional] |
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 must supply its own headline, body, and exactly one of `imageUrl` / `video`. | [optional] |
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
- | **headline** | **String** | | |
8
- | **body** | **String** | Primary text shown above the image / video. | |
9
- | **image_url** | **String** | Image asset. Mutually exclusive with this entry's `video`. Required if `video` is not supplied. | [optional] |
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** | [**CampaignAnalyticsResponseAnalytics**](CampaignAnalyticsResponseAnalytics.md) | | [optional] |
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** | | [optional] |
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] |
@@ -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 Click-to-WhatsApp ad (deprecated) |
9
- | [**create_messaging_ad**](MessagingAdsApi.md#create_messaging_ad) | **POST** /v1/ads/messaging | Create click-to-message ad (WhatsApp / Messenger / Instagram Direct) |
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 Click-to-WhatsApp ad (deprecated)
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`. Creates 1 campaign + 1 ad set + 1 ad. - **Multi-creative**: supply a `creatives[]` array with N entries (each carrying its own headline, body, and image/video). 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.
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 Click-to-WhatsApp ad (deprecated)
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 Click-to-WhatsApp ad (deprecated)
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 click-to-message ad (WhatsApp / Messenger / Instagram Direct)
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 click-to-message ad (WhatsApp / Messenger / Instagram Direct)
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 click-to-message ad (WhatsApp / Messenger / Instagram Direct)
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&lt;KeywordEntry&gt;**](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&lt;String&gt;** | | |
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** | [**AdBudget**](AdBudget.md) | | [optional] |
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 &#x3D; $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 &#x3D; 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
+