zernio-sdk 0.0.544 → 0.0.545

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 (125) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +52 -3
  3. data/docs/AdAudiencesApi.md +5 -5
  4. data/docs/AdCampaignsApi.md +142 -0
  5. data/docs/AdsApi.md +795 -37
  6. data/docs/CreateAdCampaign201Response.md +24 -0
  7. data/docs/CreateAdCampaignRequest.md +32 -0
  8. data/docs/CreateAdCreative201Response.md +20 -0
  9. data/docs/CreateAdCreativeRequest.md +40 -0
  10. data/docs/CreateAdCreativeRequestCarouselCardsInner.md +26 -0
  11. data/docs/CreateSmsSenderId200Response.md +22 -0
  12. data/docs/CreateSmsSenderIdRequest.md +18 -0
  13. data/docs/CreateStandaloneAd200Response.md +22 -0
  14. data/docs/CreateStandaloneAd200ResponseResultsInner.md +22 -0
  15. data/docs/CreateStandaloneAdRequest.md +4 -0
  16. data/docs/DeleteAdCreative200Response.md +20 -0
  17. data/docs/DeleteSmsSenderId200Response.md +18 -0
  18. data/docs/DiscordApi.md +153 -1
  19. data/docs/{ListDiscordGuildMembers200ResponseDataInner.md → DiscordGuildMember.md} +3 -3
  20. data/docs/{ListDiscordGuildMembers200ResponseDataInnerUser.md → DiscordGuildMemberUser.md} +2 -2
  21. data/docs/DuplicateAd200Response.md +22 -0
  22. data/docs/DuplicateAdRequest.md +28 -0
  23. data/docs/DuplicateAdSet200Response.md +22 -0
  24. data/docs/DuplicateAdSetRequest.md +36 -0
  25. data/docs/GetAdCreative200Response.md +18 -0
  26. data/docs/GetDiscordGuildMember200Response.md +18 -0
  27. data/docs/ListAdCreatives200Response.md +22 -0
  28. data/docs/ListAdImages200Response.md +22 -0
  29. data/docs/ListAdLabels200Response.md +22 -0
  30. data/docs/ListDiscordGuildMembers200Response.md +1 -1
  31. data/docs/ListHighDemandPeriods200Response.md +22 -0
  32. data/docs/ListMetaBusinesses200Response.md +20 -0
  33. data/docs/ListSmsSenderIds200Response.md +20 -0
  34. data/docs/ListSmsSenderIds200ResponseBudget.md +24 -0
  35. data/docs/ListSmsSenderIds200ResponseBudgetPendingRequest.md +22 -0
  36. data/docs/ListSmsSenderIds200ResponseSenderIdsInner.md +24 -0
  37. data/docs/RequestSmsSenderIdLimitIncrease200Response.md +20 -0
  38. data/docs/RequestSmsSenderIdLimitIncreaseRequest.md +20 -0
  39. data/docs/SMSApi.md +275 -0
  40. data/docs/SearchDiscordGuildMembers200Response.md +18 -0
  41. data/docs/UpdateAdCreative200Response.md +22 -0
  42. data/docs/UpdateAdCreativeRequest.md +20 -0
  43. data/lib/zernio-sdk/api/ad_audiences_api.rb +4 -4
  44. data/lib/zernio-sdk/api/ad_campaigns_api.rb +142 -0
  45. data/lib/zernio-sdk/api/ads_api.rb +829 -51
  46. data/lib/zernio-sdk/api/discord_api.rb +174 -2
  47. data/lib/zernio-sdk/api/sms_api.rb +254 -0
  48. data/lib/zernio-sdk/models/create_ad_campaign201_response.rb +210 -0
  49. data/lib/zernio-sdk/models/create_ad_campaign_request.rb +343 -0
  50. data/lib/zernio-sdk/models/create_ad_creative201_response.rb +157 -0
  51. data/lib/zernio-sdk/models/create_ad_creative_request.rb +424 -0
  52. data/lib/zernio-sdk/models/create_ad_creative_request_carousel_cards_inner.rb +255 -0
  53. data/lib/zernio-sdk/models/create_sms_sender_id200_response.rb +166 -0
  54. data/lib/zernio-sdk/models/create_sms_sender_id_request.rb +183 -0
  55. data/lib/zernio-sdk/models/create_standalone_ad200_response.rb +201 -0
  56. data/lib/zernio-sdk/models/create_standalone_ad200_response_results_inner.rb +212 -0
  57. data/lib/zernio-sdk/models/create_standalone_ad_request.rb +23 -1
  58. data/lib/zernio-sdk/models/delete_ad_creative200_response.rb +156 -0
  59. data/lib/zernio-sdk/models/delete_sms_sender_id200_response.rb +147 -0
  60. data/lib/zernio-sdk/models/{list_discord_guild_members200_response_data_inner.rb → discord_guild_member.rb} +5 -4
  61. data/lib/zernio-sdk/models/{list_discord_guild_members200_response_data_inner_user.rb → discord_guild_member_user.rb} +3 -3
  62. data/lib/zernio-sdk/models/duplicate_ad200_response.rb +200 -0
  63. data/lib/zernio-sdk/models/duplicate_ad_request.rb +243 -0
  64. data/lib/zernio-sdk/models/duplicate_ad_set200_response.rb +201 -0
  65. data/lib/zernio-sdk/models/duplicate_ad_set_request.rb +302 -0
  66. data/lib/zernio-sdk/models/get_ad_creative200_response.rb +148 -0
  67. data/lib/zernio-sdk/models/get_discord_guild_member200_response.rb +147 -0
  68. data/lib/zernio-sdk/models/list_ad_creatives200_response.rb +167 -0
  69. data/lib/zernio-sdk/models/list_ad_images200_response.rb +167 -0
  70. data/lib/zernio-sdk/models/list_ad_labels200_response.rb +167 -0
  71. data/lib/zernio-sdk/models/list_discord_guild_members200_response.rb +1 -1
  72. data/lib/zernio-sdk/models/list_high_demand_periods200_response.rb +168 -0
  73. data/lib/zernio-sdk/models/list_meta_businesses200_response.rb +158 -0
  74. data/lib/zernio-sdk/models/list_sms_sender_ids200_response.rb +158 -0
  75. data/lib/zernio-sdk/models/list_sms_sender_ids200_response_budget.rb +178 -0
  76. data/lib/zernio-sdk/models/list_sms_sender_ids200_response_budget_pending_request.rb +167 -0
  77. data/lib/zernio-sdk/models/list_sms_sender_ids200_response_sender_ids_inner.rb +175 -0
  78. data/lib/zernio-sdk/models/request_sms_sender_id_limit_increase200_response.rb +156 -0
  79. data/lib/zernio-sdk/models/request_sms_sender_id_limit_increase_request.rb +210 -0
  80. data/lib/zernio-sdk/models/search_discord_guild_members200_response.rb +149 -0
  81. data/lib/zernio-sdk/models/update_ad_creative200_response.rb +165 -0
  82. data/lib/zernio-sdk/models/update_ad_creative_request.rb +200 -0
  83. data/lib/zernio-sdk/version.rb +1 -1
  84. data/lib/zernio-sdk.rb +33 -2
  85. data/openapi.yaml +740 -27
  86. data/spec/api/ad_audiences_api_spec.rb +2 -2
  87. data/spec/api/ad_campaigns_api_spec.rb +25 -0
  88. data/spec/api/ads_api_spec.rb +143 -1
  89. data/spec/api/discord_api_spec.rb +30 -1
  90. data/spec/api/sms_api_spec.rb +46 -0
  91. data/spec/models/create_ad_campaign201_response_spec.rb +58 -0
  92. data/spec/models/create_ad_campaign_request_spec.rb +94 -0
  93. data/spec/models/create_ad_creative201_response_spec.rb +42 -0
  94. data/spec/models/create_ad_creative_request_carousel_cards_inner_spec.rb +60 -0
  95. data/spec/models/create_ad_creative_request_spec.rb +106 -0
  96. data/spec/models/create_sms_sender_id200_response_spec.rb +48 -0
  97. data/spec/models/create_sms_sender_id_request_spec.rb +36 -0
  98. data/spec/models/create_standalone_ad200_response_results_inner_spec.rb +56 -0
  99. data/spec/models/create_standalone_ad200_response_spec.rb +52 -0
  100. data/spec/models/create_standalone_ad_request_spec.rb +16 -0
  101. data/spec/models/delete_ad_creative200_response_spec.rb +42 -0
  102. data/spec/models/delete_sms_sender_id200_response_spec.rb +36 -0
  103. data/spec/models/{list_discord_guild_members200_response_data_inner_spec.rb → discord_guild_member_spec.rb} +6 -6
  104. data/spec/models/{list_discord_guild_members200_response_data_inner_user_spec.rb → discord_guild_member_user_spec.rb} +6 -6
  105. data/spec/models/duplicate_ad200_response_spec.rb +52 -0
  106. data/spec/models/duplicate_ad_request_spec.rb +74 -0
  107. data/spec/models/duplicate_ad_set200_response_spec.rb +52 -0
  108. data/spec/models/duplicate_ad_set_request_spec.rb +102 -0
  109. data/spec/models/get_ad_creative200_response_spec.rb +36 -0
  110. data/spec/models/get_discord_guild_member200_response_spec.rb +36 -0
  111. data/spec/models/list_ad_creatives200_response_spec.rb +48 -0
  112. data/spec/models/list_ad_images200_response_spec.rb +48 -0
  113. data/spec/models/list_ad_labels200_response_spec.rb +48 -0
  114. data/spec/models/list_high_demand_periods200_response_spec.rb +48 -0
  115. data/spec/models/list_meta_businesses200_response_spec.rb +42 -0
  116. data/spec/models/list_sms_sender_ids200_response_budget_pending_request_spec.rb +48 -0
  117. data/spec/models/list_sms_sender_ids200_response_budget_spec.rb +54 -0
  118. data/spec/models/list_sms_sender_ids200_response_sender_ids_inner_spec.rb +54 -0
  119. data/spec/models/list_sms_sender_ids200_response_spec.rb +42 -0
  120. data/spec/models/request_sms_sender_id_limit_increase200_response_spec.rb +42 -0
  121. data/spec/models/request_sms_sender_id_limit_increase_request_spec.rb +42 -0
  122. data/spec/models/search_discord_guild_members200_response_spec.rb +36 -0
  123. data/spec/models/update_ad_creative200_response_spec.rb +48 -0
  124. data/spec/models/update_ad_creative_request_spec.rb +42 -0
  125. metadata +133 -9
data/docs/AdsApi.md CHANGED
@@ -9,6 +9,7 @@ All URIs are relative to *https://zernio.com/api*
9
9
  | [**archive_lead_form**](AdsApi.md#archive_lead_form) | **DELETE** /v1/ads/lead-forms/{formId} | Archive a lead form |
10
10
  | [**boost_post**](AdsApi.md#boost_post) | **POST** /v1/ads/boost | Boost post as ad |
11
11
  | [**cancel_rf_reservation**](AdsApi.md#cancel_rf_reservation) | **DELETE** /v1/ads/rf-predictions/{predictionId} | Cancel a Reach & Frequency reservation (Meta) |
12
+ | [**create_ad_creative**](AdsApi.md#create_ad_creative) | **POST** /v1/ads/creatives | Create a standalone creative (Meta) |
12
13
  | [**create_ad_insights_report**](AdsApi.md#create_ad_insights_report) | **POST** /v1/ads/insights/reports | Submit an async insights report run (Meta) |
13
14
  | [**create_call_ad**](AdsApi.md#create_call_ad) | **POST** /v1/ads/call | Create Click-to-Call ad |
14
15
  | [**create_conversion_destination**](AdsApi.md#create_conversion_destination) | **POST** /v1/accounts/{accountId}/conversion-destinations | Create a conversion destination |
@@ -19,13 +20,16 @@ All URIs are relative to *https://zernio.com/api*
19
20
  | [**create_standalone_ad**](AdsApi.md#create_standalone_ad) | **POST** /v1/ads/create | Create standalone ad |
20
21
  | [**create_test_lead**](AdsApi.md#create_test_lead) | **POST** /v1/ads/lead-forms/{formId}/test-leads | Create a test lead |
21
22
  | [**delete_ad**](AdsApi.md#delete_ad) | **DELETE** /v1/ads/{adId} | Cancel an ad |
23
+ | [**delete_ad_creative**](AdsApi.md#delete_ad_creative) | **DELETE** /v1/ads/creatives/{creativeId} | Delete a creative (Meta) |
22
24
  | [**delete_conversion_destination**](AdsApi.md#delete_conversion_destination) | **DELETE** /v1/accounts/{accountId}/conversion-destinations/{destinationId} | Delete a conversion destination |
25
+ | [**duplicate_ad**](AdsApi.md#duplicate_ad) | **POST** /v1/ads/{adId}/duplicate | Duplicate an ad (Meta) |
23
26
  | [**estimate_ad_reach**](AdsApi.md#estimate_ad_reach) | **POST** /v1/ads/targeting/reach-estimate | Estimate audience reach |
24
27
  | [**generate_ad_previews**](AdsApi.md#generate_ad_previews) | **POST** /v1/ads/preview | Render pre-create ad previews (Meta) |
25
28
  | [**get_ad**](AdsApi.md#get_ad) | **GET** /v1/ads/{adId} | Get ad details |
26
29
  | [**get_ad_account_finance**](AdsApi.md#get_ad_account_finance) | **GET** /v1/ads/accounts/finance | Ad account finances (Meta) |
27
30
  | [**get_ad_analytics**](AdsApi.md#get_ad_analytics) | **GET** /v1/ads/{adId}/analytics | Get ad analytics |
28
31
  | [**get_ad_comments**](AdsApi.md#get_ad_comments) | **GET** /v1/ads/{adId}/comments | List comments on an ad |
32
+ | [**get_ad_creative**](AdsApi.md#get_ad_creative) | **GET** /v1/ads/creatives/{creativeId} | Creative details (Meta) |
29
33
  | [**get_ad_insights_report**](AdsApi.md#get_ad_insights_report) | **GET** /v1/ads/insights/reports/{reportRunId} | Poll an async insights report run (Meta) |
30
34
  | [**get_ad_previews**](AdsApi.md#get_ad_previews) | **GET** /v1/ads/{adId}/preview | Render previews of an existing ad (Meta) |
31
35
  | [**get_ad_tracking_tags**](AdsApi.md#get_ad_tracking_tags) | **GET** /v1/ads/{adId}/tracking-tags | Get ad tracking tags |
@@ -43,14 +47,19 @@ All URIs are relative to *https://zernio.com/api*
43
47
  | [**list_ad_accounts**](AdsApi.md#list_ad_accounts) | **GET** /v1/ads/accounts | List ad accounts |
44
48
  | [**list_ad_catalog_product_sets**](AdsApi.md#list_ad_catalog_product_sets) | **GET** /v1/ads/catalogs/{catalogId}/product-sets | List a catalog's product sets |
45
49
  | [**list_ad_catalogs**](AdsApi.md#list_ad_catalogs) | **GET** /v1/ads/catalogs | List Meta product catalogs |
50
+ | [**list_ad_creatives**](AdsApi.md#list_ad_creatives) | **GET** /v1/ads/creatives | Creative library (Meta) |
51
+ | [**list_ad_images**](AdsApi.md#list_ad_images) | **GET** /v1/ads/images | Ad image library (Meta) |
52
+ | [**list_ad_labels**](AdsApi.md#list_ad_labels) | **GET** /v1/ads/labels | Ad labels (Meta) |
46
53
  | [**list_ad_studies**](AdsApi.md#list_ad_studies) | **GET** /v1/ads/studies | A/B tests and lift studies (Meta) |
47
54
  | [**list_ads**](AdsApi.md#list_ads) | **GET** /v1/ads | List ads |
48
55
  | [**list_ads_business_centers**](AdsApi.md#list_ads_business_centers) | **GET** /v1/ads/business-centers | List TikTok Business Centers |
49
56
  | [**list_conversion_associations**](AdsApi.md#list_conversion_associations) | **GET** /v1/accounts/{accountId}/conversion-destinations/{destinationId}/associations | List associated campaigns |
50
57
  | [**list_conversion_destinations**](AdsApi.md#list_conversion_destinations) | **GET** /v1/accounts/{accountId}/conversion-destinations | List conversion destinations |
51
58
  | [**list_form_leads**](AdsApi.md#list_form_leads) | **GET** /v1/ads/lead-forms/{formId}/leads | List leads for a single form |
59
+ | [**list_high_demand_periods**](AdsApi.md#list_high_demand_periods) | **GET** /v1/ads/high-demand-periods | High demand periods / budget schedules (Meta) |
52
60
  | [**list_lead_forms**](AdsApi.md#list_lead_forms) | **GET** /v1/ads/lead-forms | List lead forms |
53
61
  | [**list_leads**](AdsApi.md#list_leads) | **GET** /v1/ads/leads | List submitted leads |
62
+ | [**list_meta_businesses**](AdsApi.md#list_meta_businesses) | **GET** /v1/ads/businesses | Businesses list (Meta) |
54
63
  | [**list_whats_app_conversions**](AdsApi.md#list_whats_app_conversions) | **GET** /v1/whatsapp/conversions | List conversion events |
55
64
  | [**query_ad_insights**](AdsApi.md#query_ad_insights) | **GET** /v1/ads/insights | Flexible live insights query (Meta) |
56
65
  | [**remove_conversion_associations**](AdsApi.md#remove_conversion_associations) | **DELETE** /v1/accounts/{accountId}/conversion-destinations/{destinationId}/associations | Remove associated campaigns |
@@ -61,6 +70,7 @@ All URIs are relative to *https://zernio.com/api*
61
70
  | [**send_whats_app_conversion**](AdsApi.md#send_whats_app_conversion) | **POST** /v1/whatsapp/conversions | Send WhatsApp conversion event |
62
71
  | [**update_ad**](AdsApi.md#update_ad) | **PUT** /v1/ads/{adId} | Update ad |
63
72
  | [**update_ad_account**](AdsApi.md#update_ad_account) | **PATCH** /v1/ads/accounts | Update ad account settings |
73
+ | [**update_ad_creative**](AdsApi.md#update_ad_creative) | **PUT** /v1/ads/creatives/{creativeId} | Rename a creative (Meta) |
64
74
  | [**update_ad_status**](AdsApi.md#update_ad_status) | **PUT** /v1/ads/{adId}/status | Pause or resume a single ad |
65
75
  | [**update_ad_tracking_tags**](AdsApi.md#update_ad_tracking_tags) | **PATCH** /v1/ads/{adId}/tracking-tags | Set ad tracking tags |
66
76
  | [**update_conversion_destination**](AdsApi.md#update_conversion_destination) | **PATCH** /v1/accounts/{accountId}/conversion-destinations/{destinationId} | Update a conversion destination |
@@ -421,6 +431,75 @@ nil (empty response body)
421
431
  - **Accept**: application/json
422
432
 
423
433
 
434
+ ## create_ad_creative
435
+
436
+ > <CreateAdCreative201Response> create_ad_creative(create_ad_creative_request)
437
+
438
+ Create a standalone creative (Meta)
439
+
440
+ Creates a creative in the library WITHOUT an ad, reusable on the create endpoints via `existingCreativeId`. Provide exactly one of `imageUrl` (uploaded server-side), `imageHash` (from POST /v1/ads/images or the library list), or `carouselCards` (2-10 hand-built cards). The Page (and linked Instagram account, when present) is resolved from `accountId` as the story actor. Meta only.
441
+
442
+ ### Examples
443
+
444
+ ```ruby
445
+ require 'time'
446
+ require 'zernio-sdk'
447
+ # setup authorization
448
+ Zernio.configure do |config|
449
+ # Configure Bearer authorization (JWT): bearerAuth
450
+ config.access_token = 'YOUR_BEARER_TOKEN'
451
+ end
452
+
453
+ api_instance = Zernio::AdsApi.new
454
+ create_ad_creative_request = Zernio::CreateAdCreativeRequest.new({account_id: 'account_id_example', ad_account_id: 'ad_account_id_example', headline: 'headline_example', body: 'body_example', link_url: 'link_url_example'}) # CreateAdCreativeRequest |
455
+
456
+ begin
457
+ # Create a standalone creative (Meta)
458
+ result = api_instance.create_ad_creative(create_ad_creative_request)
459
+ p result
460
+ rescue Zernio::ApiError => e
461
+ puts "Error when calling AdsApi->create_ad_creative: #{e}"
462
+ end
463
+ ```
464
+
465
+ #### Using the create_ad_creative_with_http_info variant
466
+
467
+ This returns an Array which contains the response data, status code and headers.
468
+
469
+ > <Array(<CreateAdCreative201Response>, Integer, Hash)> create_ad_creative_with_http_info(create_ad_creative_request)
470
+
471
+ ```ruby
472
+ begin
473
+ # Create a standalone creative (Meta)
474
+ data, status_code, headers = api_instance.create_ad_creative_with_http_info(create_ad_creative_request)
475
+ p status_code # => 2xx
476
+ p headers # => { ... }
477
+ p data # => <CreateAdCreative201Response>
478
+ rescue Zernio::ApiError => e
479
+ puts "Error when calling AdsApi->create_ad_creative_with_http_info: #{e}"
480
+ end
481
+ ```
482
+
483
+ ### Parameters
484
+
485
+ | Name | Type | Description | Notes |
486
+ | ---- | ---- | ----------- | ----- |
487
+ | **create_ad_creative_request** | [**CreateAdCreativeRequest**](CreateAdCreativeRequest.md) | | |
488
+
489
+ ### Return type
490
+
491
+ [**CreateAdCreative201Response**](CreateAdCreative201Response.md)
492
+
493
+ ### Authorization
494
+
495
+ [bearerAuth](../README.md#bearerAuth)
496
+
497
+ ### HTTP request headers
498
+
499
+ - **Content-Type**: application/json
500
+ - **Accept**: application/json
501
+
502
+
424
503
  ## create_ad_insights_report
425
504
 
426
505
  > <CreateAdInsightsReport202Response> create_ad_insights_report(create_ad_insights_report_request)
@@ -906,7 +985,7 @@ end
906
985
 
907
986
  ## create_standalone_ad
908
987
 
909
- > <CreateStandaloneAd201Response> create_standalone_ad(create_standalone_ad_request, opts)
988
+ > <CreateStandaloneAd200Response> create_standalone_ad(create_standalone_ad_request, opts)
910
989
 
911
990
  Create standalone ad
912
991
 
@@ -942,7 +1021,7 @@ end
942
1021
 
943
1022
  This returns an Array which contains the response data, status code and headers.
944
1023
 
945
- > <Array(<CreateStandaloneAd201Response>, Integer, Hash)> create_standalone_ad_with_http_info(create_standalone_ad_request, opts)
1024
+ > <Array(<CreateStandaloneAd200Response>, Integer, Hash)> create_standalone_ad_with_http_info(create_standalone_ad_request, opts)
946
1025
 
947
1026
  ```ruby
948
1027
  begin
@@ -950,7 +1029,7 @@ begin
950
1029
  data, status_code, headers = api_instance.create_standalone_ad_with_http_info(create_standalone_ad_request, opts)
951
1030
  p status_code # => 2xx
952
1031
  p headers # => { ... }
953
- p data # => <CreateStandaloneAd201Response>
1032
+ p data # => <CreateStandaloneAd200Response>
954
1033
  rescue Zernio::ApiError => e
955
1034
  puts "Error when calling AdsApi->create_standalone_ad_with_http_info: #{e}"
956
1035
  end
@@ -965,7 +1044,7 @@ end
965
1044
 
966
1045
  ### Return type
967
1046
 
968
- [**CreateStandaloneAd201Response**](CreateStandaloneAd201Response.md)
1047
+ [**CreateStandaloneAd200Response**](CreateStandaloneAd200Response.md)
969
1048
 
970
1049
  ### Authorization
971
1050
 
@@ -1117,6 +1196,77 @@ end
1117
1196
  - **Accept**: application/json
1118
1197
 
1119
1198
 
1199
+ ## delete_ad_creative
1200
+
1201
+ > <DeleteAdCreative200Response> delete_ad_creative(creative_id, account_id)
1202
+
1203
+ Delete a creative (Meta)
1204
+
1205
+ Deletes a creative from the library. Meta only allows deleting creatives not referenced by any ad — otherwise its 400 surfaces verbatim.
1206
+
1207
+ ### Examples
1208
+
1209
+ ```ruby
1210
+ require 'time'
1211
+ require 'zernio-sdk'
1212
+ # setup authorization
1213
+ Zernio.configure do |config|
1214
+ # Configure Bearer authorization (JWT): bearerAuth
1215
+ config.access_token = 'YOUR_BEARER_TOKEN'
1216
+ end
1217
+
1218
+ api_instance = Zernio::AdsApi.new
1219
+ creative_id = 'creative_id_example' # String | Platform creative id
1220
+ account_id = 'account_id_example' # String | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1221
+
1222
+ begin
1223
+ # Delete a creative (Meta)
1224
+ result = api_instance.delete_ad_creative(creative_id, account_id)
1225
+ p result
1226
+ rescue Zernio::ApiError => e
1227
+ puts "Error when calling AdsApi->delete_ad_creative: #{e}"
1228
+ end
1229
+ ```
1230
+
1231
+ #### Using the delete_ad_creative_with_http_info variant
1232
+
1233
+ This returns an Array which contains the response data, status code and headers.
1234
+
1235
+ > <Array(<DeleteAdCreative200Response>, Integer, Hash)> delete_ad_creative_with_http_info(creative_id, account_id)
1236
+
1237
+ ```ruby
1238
+ begin
1239
+ # Delete a creative (Meta)
1240
+ data, status_code, headers = api_instance.delete_ad_creative_with_http_info(creative_id, account_id)
1241
+ p status_code # => 2xx
1242
+ p headers # => { ... }
1243
+ p data # => <DeleteAdCreative200Response>
1244
+ rescue Zernio::ApiError => e
1245
+ puts "Error when calling AdsApi->delete_ad_creative_with_http_info: #{e}"
1246
+ end
1247
+ ```
1248
+
1249
+ ### Parameters
1250
+
1251
+ | Name | Type | Description | Notes |
1252
+ | ---- | ---- | ----------- | ----- |
1253
+ | **creative_id** | **String** | Platform creative id | |
1254
+ | **account_id** | **String** | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token. | |
1255
+
1256
+ ### Return type
1257
+
1258
+ [**DeleteAdCreative200Response**](DeleteAdCreative200Response.md)
1259
+
1260
+ ### Authorization
1261
+
1262
+ [bearerAuth](../README.md#bearerAuth)
1263
+
1264
+ ### HTTP request headers
1265
+
1266
+ - **Content-Type**: Not defined
1267
+ - **Accept**: application/json
1268
+
1269
+
1120
1270
  ## delete_conversion_destination
1121
1271
 
1122
1272
  > delete_conversion_destination(account_id, destination_id, opts)
@@ -1191,6 +1341,79 @@ nil (empty response body)
1191
1341
  - **Accept**: application/json
1192
1342
 
1193
1343
 
1344
+ ## duplicate_ad
1345
+
1346
+ > <DuplicateAd200Response> duplicate_ad(ad_id, opts)
1347
+
1348
+ Duplicate an ad (Meta)
1349
+
1350
+ Duplicates a single ad via Meta's native `POST /{ad-id}/copies`. The copy is created paused. `adSetId` retargets the copy into another ad set; omitted = the source's own ad set. Accepts the Zernio ad id or the platform ad id. Sync discovery is triggered automatically (`syncAfter: false` to skip). Meta only.
1351
+
1352
+ ### Examples
1353
+
1354
+ ```ruby
1355
+ require 'time'
1356
+ require 'zernio-sdk'
1357
+ # setup authorization
1358
+ Zernio.configure do |config|
1359
+ # Configure Bearer authorization (JWT): bearerAuth
1360
+ config.access_token = 'YOUR_BEARER_TOKEN'
1361
+ end
1362
+
1363
+ api_instance = Zernio::AdsApi.new
1364
+ ad_id = 'ad_id_example' # String | Zernio ad ID or platform ad ID
1365
+ opts = {
1366
+ duplicate_ad_request: Zernio::DuplicateAdRequest.new # DuplicateAdRequest |
1367
+ }
1368
+
1369
+ begin
1370
+ # Duplicate an ad (Meta)
1371
+ result = api_instance.duplicate_ad(ad_id, opts)
1372
+ p result
1373
+ rescue Zernio::ApiError => e
1374
+ puts "Error when calling AdsApi->duplicate_ad: #{e}"
1375
+ end
1376
+ ```
1377
+
1378
+ #### Using the duplicate_ad_with_http_info variant
1379
+
1380
+ This returns an Array which contains the response data, status code and headers.
1381
+
1382
+ > <Array(<DuplicateAd200Response>, Integer, Hash)> duplicate_ad_with_http_info(ad_id, opts)
1383
+
1384
+ ```ruby
1385
+ begin
1386
+ # Duplicate an ad (Meta)
1387
+ data, status_code, headers = api_instance.duplicate_ad_with_http_info(ad_id, opts)
1388
+ p status_code # => 2xx
1389
+ p headers # => { ... }
1390
+ p data # => <DuplicateAd200Response>
1391
+ rescue Zernio::ApiError => e
1392
+ puts "Error when calling AdsApi->duplicate_ad_with_http_info: #{e}"
1393
+ end
1394
+ ```
1395
+
1396
+ ### Parameters
1397
+
1398
+ | Name | Type | Description | Notes |
1399
+ | ---- | ---- | ----------- | ----- |
1400
+ | **ad_id** | **String** | Zernio ad ID or platform ad ID | |
1401
+ | **duplicate_ad_request** | [**DuplicateAdRequest**](DuplicateAdRequest.md) | | [optional] |
1402
+
1403
+ ### Return type
1404
+
1405
+ [**DuplicateAd200Response**](DuplicateAd200Response.md)
1406
+
1407
+ ### Authorization
1408
+
1409
+ [bearerAuth](../README.md#bearerAuth)
1410
+
1411
+ ### HTTP request headers
1412
+
1413
+ - **Content-Type**: application/json
1414
+ - **Accept**: application/json
1415
+
1416
+
1194
1417
  ## estimate_ad_reach
1195
1418
 
1196
1419
  > <EstimateAdReach200Response> estimate_ad_reach(estimate_ad_reach_request)
@@ -1623,6 +1846,81 @@ end
1623
1846
  - **Accept**: application/json
1624
1847
 
1625
1848
 
1849
+ ## get_ad_creative
1850
+
1851
+ > <GetAdCreative200Response> get_ad_creative(creative_id, account_id, opts)
1852
+
1853
+ Creative details (Meta)
1854
+
1855
+ One creative's details, verbatim from Meta. `fields` is a raw-passthrough override of the default projection. Meta only.
1856
+
1857
+ ### Examples
1858
+
1859
+ ```ruby
1860
+ require 'time'
1861
+ require 'zernio-sdk'
1862
+ # setup authorization
1863
+ Zernio.configure do |config|
1864
+ # Configure Bearer authorization (JWT): bearerAuth
1865
+ config.access_token = 'YOUR_BEARER_TOKEN'
1866
+ end
1867
+
1868
+ api_instance = Zernio::AdsApi.new
1869
+ creative_id = 'creative_id_example' # String | Platform creative id
1870
+ account_id = 'account_id_example' # String | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
1871
+ opts = {
1872
+ fields: 'fields_example' # String | Comma-separated Graph field override (supports nested {} projections).
1873
+ }
1874
+
1875
+ begin
1876
+ # Creative details (Meta)
1877
+ result = api_instance.get_ad_creative(creative_id, account_id, opts)
1878
+ p result
1879
+ rescue Zernio::ApiError => e
1880
+ puts "Error when calling AdsApi->get_ad_creative: #{e}"
1881
+ end
1882
+ ```
1883
+
1884
+ #### Using the get_ad_creative_with_http_info variant
1885
+
1886
+ This returns an Array which contains the response data, status code and headers.
1887
+
1888
+ > <Array(<GetAdCreative200Response>, Integer, Hash)> get_ad_creative_with_http_info(creative_id, account_id, opts)
1889
+
1890
+ ```ruby
1891
+ begin
1892
+ # Creative details (Meta)
1893
+ data, status_code, headers = api_instance.get_ad_creative_with_http_info(creative_id, account_id, opts)
1894
+ p status_code # => 2xx
1895
+ p headers # => { ... }
1896
+ p data # => <GetAdCreative200Response>
1897
+ rescue Zernio::ApiError => e
1898
+ puts "Error when calling AdsApi->get_ad_creative_with_http_info: #{e}"
1899
+ end
1900
+ ```
1901
+
1902
+ ### Parameters
1903
+
1904
+ | Name | Type | Description | Notes |
1905
+ | ---- | ---- | ----------- | ----- |
1906
+ | **creative_id** | **String** | Platform creative id | |
1907
+ | **account_id** | **String** | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token. | |
1908
+ | **fields** | **String** | Comma-separated Graph field override (supports nested {} projections). | [optional] |
1909
+
1910
+ ### Return type
1911
+
1912
+ [**GetAdCreative200Response**](GetAdCreative200Response.md)
1913
+
1914
+ ### Authorization
1915
+
1916
+ [bearerAuth](../README.md#bearerAuth)
1917
+
1918
+ ### HTTP request headers
1919
+
1920
+ - **Content-Type**: Not defined
1921
+ - **Accept**: application/json
1922
+
1923
+
1626
1924
  ## get_ad_insights_report
1627
1925
 
1628
1926
  > <GetAdInsightsReport200Response> get_ad_insights_report(report_run_id, account_id, opts)
@@ -2866,13 +3164,13 @@ end
2866
3164
  - **Accept**: application/json
2867
3165
 
2868
3166
 
2869
- ## list_ad_studies
3167
+ ## list_ad_creatives
2870
3168
 
2871
- > <ListAdStudies200Response> list_ad_studies(account_id, ad_account_id, opts)
3169
+ > <ListAdCreatives200Response> list_ad_creatives(account_id, ad_account_id, opts)
2872
3170
 
2873
- A/B tests and lift studies (Meta)
3171
+ Creative library (Meta)
2874
3172
 
2875
- Lists the ad account's A/B tests and lift studies (Meta's `/act_X/ad_studies`), rows returned verbatim. The default projection covers id, name, type, timing and cells with split percentages; `fields` is a raw-passthrough override. Meta only.
3173
+ Lists the ad account's creative library (Meta's `/act_X/adcreatives`), rows returned verbatim. The default projection covers id, name, status, object type, thumbnail, object_story_spec / asset_feed_spec and url_tags; `fields` is a raw-passthrough override. Any creative id here is reusable on the create endpoints via `existingCreativeId`. Meta only.
2876
3174
 
2877
3175
  ### Examples
2878
3176
 
@@ -2895,29 +3193,29 @@ opts = {
2895
3193
  }
2896
3194
 
2897
3195
  begin
2898
- # A/B tests and lift studies (Meta)
2899
- result = api_instance.list_ad_studies(account_id, ad_account_id, opts)
3196
+ # Creative library (Meta)
3197
+ result = api_instance.list_ad_creatives(account_id, ad_account_id, opts)
2900
3198
  p result
2901
3199
  rescue Zernio::ApiError => e
2902
- puts "Error when calling AdsApi->list_ad_studies: #{e}"
3200
+ puts "Error when calling AdsApi->list_ad_creatives: #{e}"
2903
3201
  end
2904
3202
  ```
2905
3203
 
2906
- #### Using the list_ad_studies_with_http_info variant
3204
+ #### Using the list_ad_creatives_with_http_info variant
2907
3205
 
2908
3206
  This returns an Array which contains the response data, status code and headers.
2909
3207
 
2910
- > <Array(<ListAdStudies200Response>, Integer, Hash)> list_ad_studies_with_http_info(account_id, ad_account_id, opts)
3208
+ > <Array(<ListAdCreatives200Response>, Integer, Hash)> list_ad_creatives_with_http_info(account_id, ad_account_id, opts)
2911
3209
 
2912
3210
  ```ruby
2913
3211
  begin
2914
- # A/B tests and lift studies (Meta)
2915
- data, status_code, headers = api_instance.list_ad_studies_with_http_info(account_id, ad_account_id, opts)
3212
+ # Creative library (Meta)
3213
+ data, status_code, headers = api_instance.list_ad_creatives_with_http_info(account_id, ad_account_id, opts)
2916
3214
  p status_code # => 2xx
2917
3215
  p headers # => { ... }
2918
- p data # => <ListAdStudies200Response>
3216
+ p data # => <ListAdCreatives200Response>
2919
3217
  rescue Zernio::ApiError => e
2920
- puts "Error when calling AdsApi->list_ad_studies_with_http_info: #{e}"
3218
+ puts "Error when calling AdsApi->list_ad_creatives_with_http_info: #{e}"
2921
3219
  end
2922
3220
  ```
2923
3221
 
@@ -2933,7 +3231,7 @@ end
2933
3231
 
2934
3232
  ### Return type
2935
3233
 
2936
- [**ListAdStudies200Response**](ListAdStudies200Response.md)
3234
+ [**ListAdCreatives200Response**](ListAdCreatives200Response.md)
2937
3235
 
2938
3236
  ### Authorization
2939
3237
 
@@ -2945,13 +3243,13 @@ end
2945
3243
  - **Accept**: application/json
2946
3244
 
2947
3245
 
2948
- ## list_ads
3246
+ ## list_ad_images
2949
3247
 
2950
- > <ListAds200Response> list_ads(opts)
3248
+ > <ListAdImages200Response> list_ad_images(account_id, ad_account_id, opts)
2951
3249
 
2952
- List ads
3250
+ Ad image library (Meta)
2953
3251
 
2954
- Returns a paginated list of ads with metrics computed over an optional date range. Use source=all to include externally-synced ads from platform ad managers. If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max. To find the Zernio ad behind a comment you see in Meta Business Manager, filter by platformAdId (the Meta ad ID), effectiveObjectStoryId (Facebook), or effectiveInstagramMediaId (Instagram) those are the post/media the ad's engagement lives on, and are also returned on each ad's `creative` object. Then call GET /v1/ads/{adId}/comments with the returned ad id.
3252
+ Lists the ad account's image library (Meta's `/act_X/adimages`), rows returned verbatim. The default projection covers hash, url, name, dimensions and status; `fields` is a raw-passthrough override. Any `hash` here is reusable wherever Meta accepts `image_hash` (e.g. `imageHash` on POST /v1/ads/creatives). Meta only.
2955
3253
 
2956
3254
  ### Examples
2957
3255
 
@@ -2965,22 +3263,257 @@ Zernio.configure do |config|
2965
3263
  end
2966
3264
 
2967
3265
  api_instance = Zernio::AdsApi.new
3266
+ account_id = 'account_id_example' # String | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
3267
+ ad_account_id = 'ad_account_id_example' # String | Meta ad account id (act_<n>).
2968
3268
  opts = {
2969
- page: 56, # Integer | Page number (1-based)
2970
- limit: 56, # Integer |
2971
- source: 'zernio', # String | all (default) = Zernio-created + platform-discovered ads. zernio = restrict to Zernio-created only.
2972
- status: Zernio::AdStatus::ACTIVE, # AdStatus |
2973
- platform: 'facebook', # String |
2974
- account_id: 'account_id_example', # String | Social account ID
2975
- ad_account_id: 'ad_account_id_example', # String | Platform ad account ID (e.g. act_123 for Meta). Mirrors the same filter on /v1/ads/campaigns and /v1/ads/tree.
2976
- profile_id: 'profile_id_example', # String | Profile ID
2977
- campaign_id: 'campaign_id_example', # String | Platform campaign ID (filter ads within a campaign)
2978
- platform_ad_id: 'platform_ad_id_example', # String | Meta ad ID. Returns the ad with this platform-side ad ID.
2979
- effective_object_story_id: 'effective_object_story_id_example', # String | Facebook `{pageId}_{postId}` of the post the ad's engagement lives on (Meta `effective_object_story_id`). Use to map a Business-Manager-visible post back to the Zernio ad.
2980
- effective_instagram_media_id: 'effective_instagram_media_id_example', # String | Instagram media ID of the boosted post (Meta `effective_instagram_media_id`). Use to map a Business-Manager-visible IG post back to the Zernio ad.
2981
- from_date: Date.parse('2013-10-20'), # Date | Start of metrics date range (YYYY-MM-DD). Defaults to 90 days ago.
2982
- to_date: Date.parse('2013-10-20') # Date | End of metrics date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
2983
- }
3269
+ fields: 'fields_example', # String | Comma-separated Graph field override (supports nested {} projections).
3270
+ limit: 56, # Integer | Rows per page
3271
+ after: 'after_example' # String | Cursor from paging.after of the previous page.
3272
+ }
3273
+
3274
+ begin
3275
+ # Ad image library (Meta)
3276
+ result = api_instance.list_ad_images(account_id, ad_account_id, opts)
3277
+ p result
3278
+ rescue Zernio::ApiError => e
3279
+ puts "Error when calling AdsApi->list_ad_images: #{e}"
3280
+ end
3281
+ ```
3282
+
3283
+ #### Using the list_ad_images_with_http_info variant
3284
+
3285
+ This returns an Array which contains the response data, status code and headers.
3286
+
3287
+ > <Array(<ListAdImages200Response>, Integer, Hash)> list_ad_images_with_http_info(account_id, ad_account_id, opts)
3288
+
3289
+ ```ruby
3290
+ begin
3291
+ # Ad image library (Meta)
3292
+ data, status_code, headers = api_instance.list_ad_images_with_http_info(account_id, ad_account_id, opts)
3293
+ p status_code # => 2xx
3294
+ p headers # => { ... }
3295
+ p data # => <ListAdImages200Response>
3296
+ rescue Zernio::ApiError => e
3297
+ puts "Error when calling AdsApi->list_ad_images_with_http_info: #{e}"
3298
+ end
3299
+ ```
3300
+
3301
+ ### Parameters
3302
+
3303
+ | Name | Type | Description | Notes |
3304
+ | ---- | ---- | ----------- | ----- |
3305
+ | **account_id** | **String** | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token. | |
3306
+ | **ad_account_id** | **String** | Meta ad account id (act_&lt;n&gt;). | |
3307
+ | **fields** | **String** | Comma-separated Graph field override (supports nested {} projections). | [optional] |
3308
+ | **limit** | **Integer** | Rows per page | [optional][default to 25] |
3309
+ | **after** | **String** | Cursor from paging.after of the previous page. | [optional] |
3310
+
3311
+ ### Return type
3312
+
3313
+ [**ListAdImages200Response**](ListAdImages200Response.md)
3314
+
3315
+ ### Authorization
3316
+
3317
+ [bearerAuth](../README.md#bearerAuth)
3318
+
3319
+ ### HTTP request headers
3320
+
3321
+ - **Content-Type**: Not defined
3322
+ - **Accept**: application/json
3323
+
3324
+
3325
+ ## list_ad_labels
3326
+
3327
+ > <ListAdLabels200Response> list_ad_labels(account_id, ad_account_id, opts)
3328
+
3329
+ Ad labels (Meta)
3330
+
3331
+ Lists the ad account's organizational labels (Meta's `/act_X/adlabels`), rows returned verbatim (id, name, created/updated time). Meta only.
3332
+
3333
+ ### Examples
3334
+
3335
+ ```ruby
3336
+ require 'time'
3337
+ require 'zernio-sdk'
3338
+ # setup authorization
3339
+ Zernio.configure do |config|
3340
+ # Configure Bearer authorization (JWT): bearerAuth
3341
+ config.access_token = 'YOUR_BEARER_TOKEN'
3342
+ end
3343
+
3344
+ api_instance = Zernio::AdsApi.new
3345
+ account_id = 'account_id_example' # String | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
3346
+ ad_account_id = 'ad_account_id_example' # String | Meta ad account id (act_<n>).
3347
+ opts = {
3348
+ limit: 56, # Integer | Rows per page
3349
+ after: 'after_example' # String | Cursor from paging.after of the previous page.
3350
+ }
3351
+
3352
+ begin
3353
+ # Ad labels (Meta)
3354
+ result = api_instance.list_ad_labels(account_id, ad_account_id, opts)
3355
+ p result
3356
+ rescue Zernio::ApiError => e
3357
+ puts "Error when calling AdsApi->list_ad_labels: #{e}"
3358
+ end
3359
+ ```
3360
+
3361
+ #### Using the list_ad_labels_with_http_info variant
3362
+
3363
+ This returns an Array which contains the response data, status code and headers.
3364
+
3365
+ > <Array(<ListAdLabels200Response>, Integer, Hash)> list_ad_labels_with_http_info(account_id, ad_account_id, opts)
3366
+
3367
+ ```ruby
3368
+ begin
3369
+ # Ad labels (Meta)
3370
+ data, status_code, headers = api_instance.list_ad_labels_with_http_info(account_id, ad_account_id, opts)
3371
+ p status_code # => 2xx
3372
+ p headers # => { ... }
3373
+ p data # => <ListAdLabels200Response>
3374
+ rescue Zernio::ApiError => e
3375
+ puts "Error when calling AdsApi->list_ad_labels_with_http_info: #{e}"
3376
+ end
3377
+ ```
3378
+
3379
+ ### Parameters
3380
+
3381
+ | Name | Type | Description | Notes |
3382
+ | ---- | ---- | ----------- | ----- |
3383
+ | **account_id** | **String** | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token. | |
3384
+ | **ad_account_id** | **String** | Meta ad account id (act_&lt;n&gt;). | |
3385
+ | **limit** | **Integer** | Rows per page | [optional][default to 25] |
3386
+ | **after** | **String** | Cursor from paging.after of the previous page. | [optional] |
3387
+
3388
+ ### Return type
3389
+
3390
+ [**ListAdLabels200Response**](ListAdLabels200Response.md)
3391
+
3392
+ ### Authorization
3393
+
3394
+ [bearerAuth](../README.md#bearerAuth)
3395
+
3396
+ ### HTTP request headers
3397
+
3398
+ - **Content-Type**: Not defined
3399
+ - **Accept**: application/json
3400
+
3401
+
3402
+ ## list_ad_studies
3403
+
3404
+ > <ListAdStudies200Response> list_ad_studies(account_id, ad_account_id, opts)
3405
+
3406
+ A/B tests and lift studies (Meta)
3407
+
3408
+ Lists the ad account's A/B tests and lift studies (Meta's `/act_X/ad_studies`), rows returned verbatim. The default projection covers id, name, type, timing and cells with split percentages; `fields` is a raw-passthrough override. Meta only.
3409
+
3410
+ ### Examples
3411
+
3412
+ ```ruby
3413
+ require 'time'
3414
+ require 'zernio-sdk'
3415
+ # setup authorization
3416
+ Zernio.configure do |config|
3417
+ # Configure Bearer authorization (JWT): bearerAuth
3418
+ config.access_token = 'YOUR_BEARER_TOKEN'
3419
+ end
3420
+
3421
+ api_instance = Zernio::AdsApi.new
3422
+ account_id = 'account_id_example' # String | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
3423
+ ad_account_id = 'ad_account_id_example' # String | Meta ad account id (act_<n>).
3424
+ opts = {
3425
+ fields: 'fields_example', # String | Comma-separated Graph field override (supports nested {} projections).
3426
+ limit: 56, # Integer | Rows per page
3427
+ after: 'after_example' # String | Cursor from paging.after of the previous page.
3428
+ }
3429
+
3430
+ begin
3431
+ # A/B tests and lift studies (Meta)
3432
+ result = api_instance.list_ad_studies(account_id, ad_account_id, opts)
3433
+ p result
3434
+ rescue Zernio::ApiError => e
3435
+ puts "Error when calling AdsApi->list_ad_studies: #{e}"
3436
+ end
3437
+ ```
3438
+
3439
+ #### Using the list_ad_studies_with_http_info variant
3440
+
3441
+ This returns an Array which contains the response data, status code and headers.
3442
+
3443
+ > <Array(<ListAdStudies200Response>, Integer, Hash)> list_ad_studies_with_http_info(account_id, ad_account_id, opts)
3444
+
3445
+ ```ruby
3446
+ begin
3447
+ # A/B tests and lift studies (Meta)
3448
+ data, status_code, headers = api_instance.list_ad_studies_with_http_info(account_id, ad_account_id, opts)
3449
+ p status_code # => 2xx
3450
+ p headers # => { ... }
3451
+ p data # => <ListAdStudies200Response>
3452
+ rescue Zernio::ApiError => e
3453
+ puts "Error when calling AdsApi->list_ad_studies_with_http_info: #{e}"
3454
+ end
3455
+ ```
3456
+
3457
+ ### Parameters
3458
+
3459
+ | Name | Type | Description | Notes |
3460
+ | ---- | ---- | ----------- | ----- |
3461
+ | **account_id** | **String** | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token. | |
3462
+ | **ad_account_id** | **String** | Meta ad account id (act_&lt;n&gt;). | |
3463
+ | **fields** | **String** | Comma-separated Graph field override (supports nested {} projections). | [optional] |
3464
+ | **limit** | **Integer** | Rows per page | [optional][default to 25] |
3465
+ | **after** | **String** | Cursor from paging.after of the previous page. | [optional] |
3466
+
3467
+ ### Return type
3468
+
3469
+ [**ListAdStudies200Response**](ListAdStudies200Response.md)
3470
+
3471
+ ### Authorization
3472
+
3473
+ [bearerAuth](../README.md#bearerAuth)
3474
+
3475
+ ### HTTP request headers
3476
+
3477
+ - **Content-Type**: Not defined
3478
+ - **Accept**: application/json
3479
+
3480
+
3481
+ ## list_ads
3482
+
3483
+ > <ListAds200Response> list_ads(opts)
3484
+
3485
+ List ads
3486
+
3487
+ Returns a paginated list of ads with metrics computed over an optional date range. Use source=all to include externally-synced ads from platform ad managers. If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max. To find the Zernio ad behind a comment you see in Meta Business Manager, filter by platformAdId (the Meta ad ID), effectiveObjectStoryId (Facebook), or effectiveInstagramMediaId (Instagram) — those are the post/media the ad's engagement lives on, and are also returned on each ad's `creative` object. Then call GET /v1/ads/{adId}/comments with the returned ad id.
3488
+
3489
+ ### Examples
3490
+
3491
+ ```ruby
3492
+ require 'time'
3493
+ require 'zernio-sdk'
3494
+ # setup authorization
3495
+ Zernio.configure do |config|
3496
+ # Configure Bearer authorization (JWT): bearerAuth
3497
+ config.access_token = 'YOUR_BEARER_TOKEN'
3498
+ end
3499
+
3500
+ api_instance = Zernio::AdsApi.new
3501
+ opts = {
3502
+ page: 56, # Integer | Page number (1-based)
3503
+ limit: 56, # Integer |
3504
+ source: 'zernio', # String | all (default) = Zernio-created + platform-discovered ads. zernio = restrict to Zernio-created only.
3505
+ status: Zernio::AdStatus::ACTIVE, # AdStatus |
3506
+ platform: 'facebook', # String |
3507
+ account_id: 'account_id_example', # String | Social account ID
3508
+ ad_account_id: 'ad_account_id_example', # String | Platform ad account ID (e.g. act_123 for Meta). Mirrors the same filter on /v1/ads/campaigns and /v1/ads/tree.
3509
+ profile_id: 'profile_id_example', # String | Profile ID
3510
+ campaign_id: 'campaign_id_example', # String | Platform campaign ID (filter ads within a campaign)
3511
+ platform_ad_id: 'platform_ad_id_example', # String | Meta ad ID. Returns the ad with this platform-side ad ID.
3512
+ effective_object_story_id: 'effective_object_story_id_example', # String | Facebook `{pageId}_{postId}` of the post the ad's engagement lives on (Meta `effective_object_story_id`). Use to map a Business-Manager-visible post back to the Zernio ad.
3513
+ effective_instagram_media_id: 'effective_instagram_media_id_example', # String | Instagram media ID of the boosted post (Meta `effective_instagram_media_id`). Use to map a Business-Manager-visible IG post back to the Zernio ad.
3514
+ from_date: Date.parse('2013-10-20'), # Date | Start of metrics date range (YYYY-MM-DD). Defaults to 90 days ago.
3515
+ to_date: Date.parse('2013-10-20') # Date | End of metrics date range (YYYY-MM-DD). Defaults to today. Max 730-day range.
3516
+ }
2984
3517
 
2985
3518
  begin
2986
3519
  # List ads
@@ -3332,6 +3865,85 @@ end
3332
3865
  - **Accept**: application/json
3333
3866
 
3334
3867
 
3868
+ ## list_high_demand_periods
3869
+
3870
+ > <ListHighDemandPeriods200Response> list_high_demand_periods(account_id, opts)
3871
+
3872
+ High demand periods / budget schedules (Meta)
3873
+
3874
+ Scheduled budget increases (Meta's budget-scheduling API). The Graph edge lives on the campaign and ad-set nodes only, so exactly one of `campaignId` / `adSetId` (platform ids) is required. Rows returned verbatim (budget_value, budget_value_type, time window, recurrence). Meta only.
3875
+
3876
+ ### Examples
3877
+
3878
+ ```ruby
3879
+ require 'time'
3880
+ require 'zernio-sdk'
3881
+ # setup authorization
3882
+ Zernio.configure do |config|
3883
+ # Configure Bearer authorization (JWT): bearerAuth
3884
+ config.access_token = 'YOUR_BEARER_TOKEN'
3885
+ end
3886
+
3887
+ api_instance = Zernio::AdsApi.new
3888
+ account_id = 'account_id_example' # String | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
3889
+ opts = {
3890
+ campaign_id: 'campaign_id_example', # String | Platform campaign id. Exactly one of campaignId / adSetId.
3891
+ ad_set_id: 'ad_set_id_example', # String | Platform ad set id. Exactly one of campaignId / adSetId.
3892
+ limit: 56, # Integer | Rows per page
3893
+ after: 'after_example' # String | Cursor from paging.after of the previous page.
3894
+ }
3895
+
3896
+ begin
3897
+ # High demand periods / budget schedules (Meta)
3898
+ result = api_instance.list_high_demand_periods(account_id, opts)
3899
+ p result
3900
+ rescue Zernio::ApiError => e
3901
+ puts "Error when calling AdsApi->list_high_demand_periods: #{e}"
3902
+ end
3903
+ ```
3904
+
3905
+ #### Using the list_high_demand_periods_with_http_info variant
3906
+
3907
+ This returns an Array which contains the response data, status code and headers.
3908
+
3909
+ > <Array(<ListHighDemandPeriods200Response>, Integer, Hash)> list_high_demand_periods_with_http_info(account_id, opts)
3910
+
3911
+ ```ruby
3912
+ begin
3913
+ # High demand periods / budget schedules (Meta)
3914
+ data, status_code, headers = api_instance.list_high_demand_periods_with_http_info(account_id, opts)
3915
+ p status_code # => 2xx
3916
+ p headers # => { ... }
3917
+ p data # => <ListHighDemandPeriods200Response>
3918
+ rescue Zernio::ApiError => e
3919
+ puts "Error when calling AdsApi->list_high_demand_periods_with_http_info: #{e}"
3920
+ end
3921
+ ```
3922
+
3923
+ ### Parameters
3924
+
3925
+ | Name | Type | Description | Notes |
3926
+ | ---- | ---- | ----------- | ----- |
3927
+ | **account_id** | **String** | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token. | |
3928
+ | **campaign_id** | **String** | Platform campaign id. Exactly one of campaignId / adSetId. | [optional] |
3929
+ | **ad_set_id** | **String** | Platform ad set id. Exactly one of campaignId / adSetId. | [optional] |
3930
+ | **limit** | **Integer** | Rows per page | [optional][default to 25] |
3931
+ | **after** | **String** | Cursor from paging.after of the previous page. | [optional] |
3932
+
3933
+ ### Return type
3934
+
3935
+ [**ListHighDemandPeriods200Response**](ListHighDemandPeriods200Response.md)
3936
+
3937
+ ### Authorization
3938
+
3939
+ [bearerAuth](../README.md#bearerAuth)
3940
+
3941
+ ### HTTP request headers
3942
+
3943
+ - **Content-Type**: Not defined
3944
+ - **Accept**: application/json
3945
+
3946
+
3335
3947
  ## list_lead_forms
3336
3948
 
3337
3949
  > <ListLeadForms200Response> list_lead_forms(account_id, opts)
@@ -3486,6 +4098,81 @@ end
3486
4098
  - **Accept**: application/json
3487
4099
 
3488
4100
 
4101
+ ## list_meta_businesses
4102
+
4103
+ > <ListMetaBusinesses200Response> list_meta_businesses(account_id, opts)
4104
+
4105
+ Businesses list (Meta)
4106
+
4107
+ Business Manager portfolios the connected Meta user belongs to (Meta's `/me/businesses`), rows returned verbatim (id, name, verification_status, created_time). Token-scoped, so no `adAccountId` is needed. Meta only; for TikTok Business Centers use `GET /v1/ads/business-centers`.
4108
+
4109
+ ### Examples
4110
+
4111
+ ```ruby
4112
+ require 'time'
4113
+ require 'zernio-sdk'
4114
+ # setup authorization
4115
+ Zernio.configure do |config|
4116
+ # Configure Bearer authorization (JWT): bearerAuth
4117
+ config.access_token = 'YOUR_BEARER_TOKEN'
4118
+ end
4119
+
4120
+ api_instance = Zernio::AdsApi.new
4121
+ account_id = 'account_id_example' # String | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
4122
+ opts = {
4123
+ limit: 56, # Integer | Rows per page
4124
+ after: 'after_example' # String | Cursor from paging.after of the previous page.
4125
+ }
4126
+
4127
+ begin
4128
+ # Businesses list (Meta)
4129
+ result = api_instance.list_meta_businesses(account_id, opts)
4130
+ p result
4131
+ rescue Zernio::ApiError => e
4132
+ puts "Error when calling AdsApi->list_meta_businesses: #{e}"
4133
+ end
4134
+ ```
4135
+
4136
+ #### Using the list_meta_businesses_with_http_info variant
4137
+
4138
+ This returns an Array which contains the response data, status code and headers.
4139
+
4140
+ > <Array(<ListMetaBusinesses200Response>, Integer, Hash)> list_meta_businesses_with_http_info(account_id, opts)
4141
+
4142
+ ```ruby
4143
+ begin
4144
+ # Businesses list (Meta)
4145
+ data, status_code, headers = api_instance.list_meta_businesses_with_http_info(account_id, opts)
4146
+ p status_code # => 2xx
4147
+ p headers # => { ... }
4148
+ p data # => <ListMetaBusinesses200Response>
4149
+ rescue Zernio::ApiError => e
4150
+ puts "Error when calling AdsApi->list_meta_businesses_with_http_info: #{e}"
4151
+ end
4152
+ ```
4153
+
4154
+ ### Parameters
4155
+
4156
+ | Name | Type | Description | Notes |
4157
+ | ---- | ---- | ----------- | ----- |
4158
+ | **account_id** | **String** | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token. | |
4159
+ | **limit** | **Integer** | Rows per page | [optional][default to 25] |
4160
+ | **after** | **String** | Cursor from paging.after of the previous page. | [optional] |
4161
+
4162
+ ### Return type
4163
+
4164
+ [**ListMetaBusinesses200Response**](ListMetaBusinesses200Response.md)
4165
+
4166
+ ### Authorization
4167
+
4168
+ [bearerAuth](../README.md#bearerAuth)
4169
+
4170
+ ### HTTP request headers
4171
+
4172
+ - **Content-Type**: Not defined
4173
+ - **Accept**: application/json
4174
+
4175
+
3489
4176
  ## list_whats_app_conversions
3490
4177
 
3491
4178
  > <ListWhatsAppConversions200Response> list_whats_app_conversions(account_id, opts)
@@ -4236,6 +4923,77 @@ end
4236
4923
  - **Accept**: application/json
4237
4924
 
4238
4925
 
4926
+ ## update_ad_creative
4927
+
4928
+ > <UpdateAdCreative200Response> update_ad_creative(creative_id, update_ad_creative_request)
4929
+
4930
+ Rename a creative (Meta)
4931
+
4932
+ Renames a creative. Creatives are immutable on Meta beyond `name` — for content changes create a new creative (POST /v1/ads/creatives) and swap it onto the ad (PUT /v1/ads/{adId} with `creative`). Meta only.
4933
+
4934
+ ### Examples
4935
+
4936
+ ```ruby
4937
+ require 'time'
4938
+ require 'zernio-sdk'
4939
+ # setup authorization
4940
+ Zernio.configure do |config|
4941
+ # Configure Bearer authorization (JWT): bearerAuth
4942
+ config.access_token = 'YOUR_BEARER_TOKEN'
4943
+ end
4944
+
4945
+ api_instance = Zernio::AdsApi.new
4946
+ creative_id = 'creative_id_example' # String | Platform creative id
4947
+ update_ad_creative_request = Zernio::UpdateAdCreativeRequest.new({account_id: 'account_id_example', name: 'name_example'}) # UpdateAdCreativeRequest |
4948
+
4949
+ begin
4950
+ # Rename a creative (Meta)
4951
+ result = api_instance.update_ad_creative(creative_id, update_ad_creative_request)
4952
+ p result
4953
+ rescue Zernio::ApiError => e
4954
+ puts "Error when calling AdsApi->update_ad_creative: #{e}"
4955
+ end
4956
+ ```
4957
+
4958
+ #### Using the update_ad_creative_with_http_info variant
4959
+
4960
+ This returns an Array which contains the response data, status code and headers.
4961
+
4962
+ > <Array(<UpdateAdCreative200Response>, Integer, Hash)> update_ad_creative_with_http_info(creative_id, update_ad_creative_request)
4963
+
4964
+ ```ruby
4965
+ begin
4966
+ # Rename a creative (Meta)
4967
+ data, status_code, headers = api_instance.update_ad_creative_with_http_info(creative_id, update_ad_creative_request)
4968
+ p status_code # => 2xx
4969
+ p headers # => { ... }
4970
+ p data # => <UpdateAdCreative200Response>
4971
+ rescue Zernio::ApiError => e
4972
+ puts "Error when calling AdsApi->update_ad_creative_with_http_info: #{e}"
4973
+ end
4974
+ ```
4975
+
4976
+ ### Parameters
4977
+
4978
+ | Name | Type | Description | Notes |
4979
+ | ---- | ---- | ----------- | ----- |
4980
+ | **creative_id** | **String** | Platform creative id | |
4981
+ | **update_ad_creative_request** | [**UpdateAdCreativeRequest**](UpdateAdCreativeRequest.md) | | |
4982
+
4983
+ ### Return type
4984
+
4985
+ [**UpdateAdCreative200Response**](UpdateAdCreative200Response.md)
4986
+
4987
+ ### Authorization
4988
+
4989
+ [bearerAuth](../README.md#bearerAuth)
4990
+
4991
+ ### HTTP request headers
4992
+
4993
+ - **Content-Type**: application/json
4994
+ - **Accept**: application/json
4995
+
4996
+
4239
4997
  ## update_ad_status
4240
4998
 
4241
4999
  > <UpdateAdStatus200Response> update_ad_status(ad_id, update_ad_status_request)