zernio-sdk 0.0.543 → 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.
- checksums.yaml +4 -4
- data/README.md +53 -4
- data/docs/AdAudiencesApi.md +5 -5
- data/docs/AdCampaignsApi.md +142 -0
- data/docs/AdsApi.md +795 -37
- data/docs/CreateAdCampaign201Response.md +24 -0
- data/docs/CreateAdCampaignRequest.md +32 -0
- data/docs/CreateAdCreative201Response.md +20 -0
- data/docs/CreateAdCreativeRequest.md +40 -0
- data/docs/CreateAdCreativeRequestCarouselCardsInner.md +26 -0
- data/docs/CreateSmsSenderId200Response.md +22 -0
- data/docs/CreateSmsSenderIdRequest.md +18 -0
- data/docs/CreateStandaloneAd200Response.md +22 -0
- data/docs/CreateStandaloneAd200ResponseResultsInner.md +22 -0
- data/docs/CreateStandaloneAdRequest.md +4 -0
- data/docs/DeleteAdCreative200Response.md +20 -0
- data/docs/DeleteSmsSenderId200Response.md +18 -0
- data/docs/DiscordApi.md +153 -1
- data/docs/{ListDiscordGuildMembers200ResponseDataInner.md → DiscordGuildMember.md} +3 -3
- data/docs/{ListDiscordGuildMembers200ResponseDataInnerUser.md → DiscordGuildMemberUser.md} +2 -2
- data/docs/DuplicateAd200Response.md +22 -0
- data/docs/DuplicateAdRequest.md +28 -0
- data/docs/DuplicateAdSet200Response.md +22 -0
- data/docs/DuplicateAdSetRequest.md +36 -0
- data/docs/GetAdCreative200Response.md +18 -0
- data/docs/GetDiscordGuildMember200Response.md +18 -0
- data/docs/ListAdCreatives200Response.md +22 -0
- data/docs/ListAdImages200Response.md +22 -0
- data/docs/ListAdLabels200Response.md +22 -0
- data/docs/ListDiscordGuildMembers200Response.md +1 -1
- data/docs/ListHighDemandPeriods200Response.md +22 -0
- data/docs/ListMetaBusinesses200Response.md +20 -0
- data/docs/ListSmsSenderIds200Response.md +20 -0
- data/docs/ListSmsSenderIds200ResponseBudget.md +24 -0
- data/docs/ListSmsSenderIds200ResponseBudgetPendingRequest.md +22 -0
- data/docs/ListSmsSenderIds200ResponseSenderIdsInner.md +24 -0
- data/docs/RequestSmsSenderIdLimitIncrease200Response.md +20 -0
- data/docs/RequestSmsSenderIdLimitIncreaseRequest.md +20 -0
- data/docs/SMSApi.md +275 -0
- data/docs/SearchDiscordGuildMembers200Response.md +18 -0
- data/docs/UpdateAdCreative200Response.md +22 -0
- data/docs/UpdateAdCreativeRequest.md +20 -0
- data/docs/WhatsAppApi.md +72 -0
- data/lib/zernio-sdk/api/ad_audiences_api.rb +4 -4
- data/lib/zernio-sdk/api/ad_campaigns_api.rb +142 -0
- data/lib/zernio-sdk/api/ads_api.rb +829 -51
- data/lib/zernio-sdk/api/discord_api.rb +174 -2
- data/lib/zernio-sdk/api/sms_api.rb +254 -0
- data/lib/zernio-sdk/api/whats_app_api.rb +70 -0
- data/lib/zernio-sdk/models/create_ad_campaign201_response.rb +210 -0
- data/lib/zernio-sdk/models/create_ad_campaign_request.rb +343 -0
- data/lib/zernio-sdk/models/create_ad_creative201_response.rb +157 -0
- data/lib/zernio-sdk/models/create_ad_creative_request.rb +424 -0
- data/lib/zernio-sdk/models/create_ad_creative_request_carousel_cards_inner.rb +255 -0
- data/lib/zernio-sdk/models/create_sms_sender_id200_response.rb +166 -0
- data/lib/zernio-sdk/models/create_sms_sender_id_request.rb +183 -0
- data/lib/zernio-sdk/models/create_standalone_ad200_response.rb +201 -0
- data/lib/zernio-sdk/models/create_standalone_ad200_response_results_inner.rb +212 -0
- data/lib/zernio-sdk/models/create_standalone_ad_request.rb +23 -1
- data/lib/zernio-sdk/models/delete_ad_creative200_response.rb +156 -0
- data/lib/zernio-sdk/models/delete_sms_sender_id200_response.rb +147 -0
- data/lib/zernio-sdk/models/{list_discord_guild_members200_response_data_inner.rb → discord_guild_member.rb} +5 -4
- data/lib/zernio-sdk/models/{list_discord_guild_members200_response_data_inner_user.rb → discord_guild_member_user.rb} +3 -3
- data/lib/zernio-sdk/models/duplicate_ad200_response.rb +200 -0
- data/lib/zernio-sdk/models/duplicate_ad_request.rb +243 -0
- data/lib/zernio-sdk/models/duplicate_ad_set200_response.rb +201 -0
- data/lib/zernio-sdk/models/duplicate_ad_set_request.rb +302 -0
- data/lib/zernio-sdk/models/get_ad_creative200_response.rb +148 -0
- data/lib/zernio-sdk/models/get_discord_guild_member200_response.rb +147 -0
- data/lib/zernio-sdk/models/list_ad_creatives200_response.rb +167 -0
- data/lib/zernio-sdk/models/list_ad_images200_response.rb +167 -0
- data/lib/zernio-sdk/models/list_ad_labels200_response.rb +167 -0
- data/lib/zernio-sdk/models/list_discord_guild_members200_response.rb +1 -1
- data/lib/zernio-sdk/models/list_high_demand_periods200_response.rb +168 -0
- data/lib/zernio-sdk/models/list_meta_businesses200_response.rb +158 -0
- data/lib/zernio-sdk/models/list_sms_sender_ids200_response.rb +158 -0
- data/lib/zernio-sdk/models/list_sms_sender_ids200_response_budget.rb +178 -0
- data/lib/zernio-sdk/models/list_sms_sender_ids200_response_budget_pending_request.rb +167 -0
- data/lib/zernio-sdk/models/list_sms_sender_ids200_response_sender_ids_inner.rb +175 -0
- data/lib/zernio-sdk/models/request_sms_sender_id_limit_increase200_response.rb +156 -0
- data/lib/zernio-sdk/models/request_sms_sender_id_limit_increase_request.rb +210 -0
- data/lib/zernio-sdk/models/search_discord_guild_members200_response.rb +149 -0
- data/lib/zernio-sdk/models/update_ad_creative200_response.rb +165 -0
- data/lib/zernio-sdk/models/update_ad_creative_request.rb +200 -0
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +33 -3
- data/openapi.yaml +741 -28
- data/spec/api/ad_audiences_api_spec.rb +2 -2
- data/spec/api/ad_campaigns_api_spec.rb +25 -0
- data/spec/api/ads_api_spec.rb +143 -1
- data/spec/api/discord_api_spec.rb +30 -1
- data/spec/api/sms_api_spec.rb +46 -0
- data/spec/api/whats_app_api_spec.rb +13 -0
- data/spec/models/create_ad_campaign201_response_spec.rb +58 -0
- data/spec/models/create_ad_campaign_request_spec.rb +94 -0
- data/spec/models/create_ad_creative201_response_spec.rb +42 -0
- data/spec/models/create_ad_creative_request_carousel_cards_inner_spec.rb +60 -0
- data/spec/models/create_ad_creative_request_spec.rb +106 -0
- data/spec/models/create_sms_sender_id200_response_spec.rb +48 -0
- data/spec/models/create_sms_sender_id_request_spec.rb +36 -0
- data/spec/models/create_standalone_ad200_response_results_inner_spec.rb +56 -0
- data/spec/models/create_standalone_ad200_response_spec.rb +52 -0
- data/spec/models/create_standalone_ad_request_spec.rb +16 -0
- data/spec/models/delete_ad_creative200_response_spec.rb +42 -0
- data/spec/models/delete_sms_sender_id200_response_spec.rb +36 -0
- data/spec/models/{list_discord_guild_members200_response_data_inner_spec.rb → discord_guild_member_spec.rb} +6 -6
- data/spec/models/{list_discord_guild_members200_response_data_inner_user_spec.rb → discord_guild_member_user_spec.rb} +6 -6
- data/spec/models/duplicate_ad200_response_spec.rb +52 -0
- data/spec/models/duplicate_ad_request_spec.rb +74 -0
- data/spec/models/duplicate_ad_set200_response_spec.rb +52 -0
- data/spec/models/duplicate_ad_set_request_spec.rb +102 -0
- data/spec/models/get_ad_creative200_response_spec.rb +36 -0
- data/spec/models/get_discord_guild_member200_response_spec.rb +36 -0
- data/spec/models/list_ad_creatives200_response_spec.rb +48 -0
- data/spec/models/list_ad_images200_response_spec.rb +48 -0
- data/spec/models/list_ad_labels200_response_spec.rb +48 -0
- data/spec/models/list_high_demand_periods200_response_spec.rb +48 -0
- data/spec/models/list_meta_businesses200_response_spec.rb +42 -0
- data/spec/models/list_sms_sender_ids200_response_budget_pending_request_spec.rb +48 -0
- data/spec/models/list_sms_sender_ids200_response_budget_spec.rb +54 -0
- data/spec/models/list_sms_sender_ids200_response_sender_ids_inner_spec.rb +54 -0
- data/spec/models/list_sms_sender_ids200_response_spec.rb +42 -0
- data/spec/models/request_sms_sender_id_limit_increase200_response_spec.rb +42 -0
- data/spec/models/request_sms_sender_id_limit_increase_request_spec.rb +42 -0
- data/spec/models/search_discord_guild_members200_response_spec.rb +36 -0
- data/spec/models/update_ad_creative200_response_spec.rb +48 -0
- data/spec/models/update_ad_creative_request_spec.rb +42 -0
- metadata +133 -13
- data/docs/InboxApi.md +0 -79
- data/lib/zernio-sdk/api/inbox_api.rb +0 -92
- data/spec/api/inbox_api_spec.rb +0 -48
data/docs/WhatsAppApi.md
CHANGED
|
@@ -20,6 +20,7 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
20
20
|
| [**get_whats_app_dataset**](WhatsAppApi.md#get_whats_app_dataset) | **GET** /v1/whatsapp/dataset | Get CTWA conversions dataset |
|
|
21
21
|
| [**get_whats_app_display_name**](WhatsAppApi.md#get_whats_app_display_name) | **GET** /v1/whatsapp/business-profile/display-name | Get display name status |
|
|
22
22
|
| [**get_whats_app_group_chat**](WhatsAppApi.md#get_whats_app_group_chat) | **GET** /v1/whatsapp/wa-groups/{groupId} | Get group info |
|
|
23
|
+
| [**get_whats_app_media**](WhatsAppApi.md#get_whats_app_media) | **GET** /v1/whatsapp/media/{mediaId} | Download WhatsApp media |
|
|
23
24
|
| [**get_whats_app_template**](WhatsAppApi.md#get_whats_app_template) | **GET** /v1/whatsapp/templates/{templateName} | Get template |
|
|
24
25
|
| [**get_whats_app_templates**](WhatsAppApi.md#get_whats_app_templates) | **GET** /v1/whatsapp/templates | List templates |
|
|
25
26
|
| [**get_whatsapp_business_username**](WhatsAppApi.md#get_whatsapp_business_username) | **GET** /v1/whatsapp/business-profile/username | Get business username |
|
|
@@ -1167,6 +1168,77 @@ end
|
|
|
1167
1168
|
- **Accept**: application/json
|
|
1168
1169
|
|
|
1169
1170
|
|
|
1171
|
+
## get_whats_app_media
|
|
1172
|
+
|
|
1173
|
+
> File get_whats_app_media(media_id, account_id)
|
|
1174
|
+
|
|
1175
|
+
Download WhatsApp media
|
|
1176
|
+
|
|
1177
|
+
Streams the binary for a WhatsApp attachment. This is the endpoint the `url` on a WhatsApp `attachments[]` entry points at, in both the `message.received` webhook and the List messages response. **This is an authenticated endpoint, not a public link.** Send `Authorization: Bearer <your API key>` exactly as you would for any other call. Passing the URL straight to a browser, an LLM vision API, or a no-code \"download file\" step without the header returns `401`. This is the most common integration mistake on this endpoint, and it differs from Instagram, Facebook and Telegram, whose `attachments[].url` is a direct CDN link that needs no header. **Fetch on receipt, not lazily.** WhatsApp media lives in Meta's media store, not ours, and it is removed after a limited retention window (currently 7 days, and Meta has been dropping some inbound media sooner). Once Meta drops it the media is unrecoverable and this endpoint answers `400` permanently, so retrying will never succeed. Download and store the bytes when the webhook arrives.
|
|
1178
|
+
|
|
1179
|
+
### Examples
|
|
1180
|
+
|
|
1181
|
+
```ruby
|
|
1182
|
+
require 'time'
|
|
1183
|
+
require 'zernio-sdk'
|
|
1184
|
+
# setup authorization
|
|
1185
|
+
Zernio.configure do |config|
|
|
1186
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
1187
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
1188
|
+
end
|
|
1189
|
+
|
|
1190
|
+
api_instance = Zernio::WhatsAppApi.new
|
|
1191
|
+
media_id = 'media_id_example' # String | The media id from `attachments[].payload.id`.
|
|
1192
|
+
account_id = 'account_id_example' # String | The WhatsApp account that received the media.
|
|
1193
|
+
|
|
1194
|
+
begin
|
|
1195
|
+
# Download WhatsApp media
|
|
1196
|
+
result = api_instance.get_whats_app_media(media_id, account_id)
|
|
1197
|
+
p result
|
|
1198
|
+
rescue Zernio::ApiError => e
|
|
1199
|
+
puts "Error when calling WhatsAppApi->get_whats_app_media: #{e}"
|
|
1200
|
+
end
|
|
1201
|
+
```
|
|
1202
|
+
|
|
1203
|
+
#### Using the get_whats_app_media_with_http_info variant
|
|
1204
|
+
|
|
1205
|
+
This returns an Array which contains the response data, status code and headers.
|
|
1206
|
+
|
|
1207
|
+
> <Array(File, Integer, Hash)> get_whats_app_media_with_http_info(media_id, account_id)
|
|
1208
|
+
|
|
1209
|
+
```ruby
|
|
1210
|
+
begin
|
|
1211
|
+
# Download WhatsApp media
|
|
1212
|
+
data, status_code, headers = api_instance.get_whats_app_media_with_http_info(media_id, account_id)
|
|
1213
|
+
p status_code # => 2xx
|
|
1214
|
+
p headers # => { ... }
|
|
1215
|
+
p data # => File
|
|
1216
|
+
rescue Zernio::ApiError => e
|
|
1217
|
+
puts "Error when calling WhatsAppApi->get_whats_app_media_with_http_info: #{e}"
|
|
1218
|
+
end
|
|
1219
|
+
```
|
|
1220
|
+
|
|
1221
|
+
### Parameters
|
|
1222
|
+
|
|
1223
|
+
| Name | Type | Description | Notes |
|
|
1224
|
+
| ---- | ---- | ----------- | ----- |
|
|
1225
|
+
| **media_id** | **String** | The media id from `attachments[].payload.id`. | |
|
|
1226
|
+
| **account_id** | **String** | The WhatsApp account that received the media. | |
|
|
1227
|
+
|
|
1228
|
+
### Return type
|
|
1229
|
+
|
|
1230
|
+
**File**
|
|
1231
|
+
|
|
1232
|
+
### Authorization
|
|
1233
|
+
|
|
1234
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
1235
|
+
|
|
1236
|
+
### HTTP request headers
|
|
1237
|
+
|
|
1238
|
+
- **Content-Type**: Not defined
|
|
1239
|
+
- **Accept**: application/octet-stream, application/json
|
|
1240
|
+
|
|
1241
|
+
|
|
1170
1242
|
## get_whats_app_template
|
|
1171
1243
|
|
|
1172
1244
|
> <GetWhatsAppTemplate200Response> get_whats_app_template(template_name, account_id)
|
|
@@ -372,8 +372,8 @@ module Zernio
|
|
|
372
372
|
return data, status_code, headers
|
|
373
373
|
end
|
|
374
374
|
|
|
375
|
-
# Update
|
|
376
|
-
# Update
|
|
375
|
+
# Update an audience
|
|
376
|
+
# Update an audience. `saved_targeting` audiences accept `name`, `description`, and `spec` (full replacement, no merge, Zernio-only, no platform call). Platform audiences (uploaded/website/lookalike) accept `name` and `description` only, updated on the platform first and then mirrored locally; their rules are immutable, so `spec` returns 400 for them. Platform audience updates are Meta-only for now (other platforms return 501). Ads already created from a saved_targeting audience are unaffected, they snapshot the targeting at creation.
|
|
377
377
|
# @param audience_id [String]
|
|
378
378
|
# @param update_ad_audience_request [UpdateAdAudienceRequest]
|
|
379
379
|
# @param [Hash] opts the optional parameters
|
|
@@ -383,8 +383,8 @@ module Zernio
|
|
|
383
383
|
data
|
|
384
384
|
end
|
|
385
385
|
|
|
386
|
-
# Update
|
|
387
|
-
# Update
|
|
386
|
+
# Update an audience
|
|
387
|
+
# Update an audience. `saved_targeting` audiences accept `name`, `description`, and `spec` (full replacement, no merge, Zernio-only, no platform call). Platform audiences (uploaded/website/lookalike) accept `name` and `description` only, updated on the platform first and then mirrored locally; their rules are immutable, so `spec` returns 400 for them. Platform audience updates are Meta-only for now (other platforms return 501). Ads already created from a saved_targeting audience are unaffected, they snapshot the targeting at creation.
|
|
388
388
|
# @param audience_id [String]
|
|
389
389
|
# @param update_ad_audience_request [UpdateAdAudienceRequest]
|
|
390
390
|
# @param [Hash] opts the optional parameters
|
|
@@ -87,6 +87,74 @@ module Zernio
|
|
|
87
87
|
return data, status_code, headers
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
+
# Create a standalone campaign (Meta)
|
|
91
|
+
# Creates a campaign WITHOUT its first ad set / ad (the ODAX shell only). Ad sets join it later via `existingCampaignId` on the create endpoints. A budget here is campaign-level (CBO) by definition; omit it for ABO (each ad set carries its own budget). Created `PAUSED` unless `status: ACTIVE`. The campaign materializes in `/v1/ads/tree` via the next sync discovery pass. Meta only.
|
|
92
|
+
# @param create_ad_campaign_request [CreateAdCampaignRequest]
|
|
93
|
+
# @param [Hash] opts the optional parameters
|
|
94
|
+
# @return [CreateAdCampaign201Response]
|
|
95
|
+
def create_ad_campaign(create_ad_campaign_request, opts = {})
|
|
96
|
+
data, _status_code, _headers = create_ad_campaign_with_http_info(create_ad_campaign_request, opts)
|
|
97
|
+
data
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Create a standalone campaign (Meta)
|
|
101
|
+
# Creates a campaign WITHOUT its first ad set / ad (the ODAX shell only). Ad sets join it later via `existingCampaignId` on the create endpoints. A budget here is campaign-level (CBO) by definition; omit it for ABO (each ad set carries its own budget). Created `PAUSED` unless `status: ACTIVE`. The campaign materializes in `/v1/ads/tree` via the next sync discovery pass. Meta only.
|
|
102
|
+
# @param create_ad_campaign_request [CreateAdCampaignRequest]
|
|
103
|
+
# @param [Hash] opts the optional parameters
|
|
104
|
+
# @return [Array<(CreateAdCampaign201Response, Integer, Hash)>] CreateAdCampaign201Response data, response status code and response headers
|
|
105
|
+
def create_ad_campaign_with_http_info(create_ad_campaign_request, opts = {})
|
|
106
|
+
if @api_client.config.debugging
|
|
107
|
+
@api_client.config.logger.debug 'Calling API: AdCampaignsApi.create_ad_campaign ...'
|
|
108
|
+
end
|
|
109
|
+
# verify the required parameter 'create_ad_campaign_request' is set
|
|
110
|
+
if @api_client.config.client_side_validation && create_ad_campaign_request.nil?
|
|
111
|
+
fail ArgumentError, "Missing the required parameter 'create_ad_campaign_request' when calling AdCampaignsApi.create_ad_campaign"
|
|
112
|
+
end
|
|
113
|
+
# resource path
|
|
114
|
+
local_var_path = '/v1/ads/campaigns'
|
|
115
|
+
|
|
116
|
+
# query parameters
|
|
117
|
+
query_params = opts[:query_params] || {}
|
|
118
|
+
|
|
119
|
+
# header parameters
|
|
120
|
+
header_params = opts[:header_params] || {}
|
|
121
|
+
# HTTP header 'Accept' (if needed)
|
|
122
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
123
|
+
# HTTP header 'Content-Type'
|
|
124
|
+
content_type = @api_client.select_header_content_type(['application/json'])
|
|
125
|
+
if !content_type.nil?
|
|
126
|
+
header_params['Content-Type'] = content_type
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# form parameters
|
|
130
|
+
form_params = opts[:form_params] || {}
|
|
131
|
+
|
|
132
|
+
# http body (model)
|
|
133
|
+
post_body = opts[:debug_body] || @api_client.object_to_http_body(create_ad_campaign_request)
|
|
134
|
+
|
|
135
|
+
# return_type
|
|
136
|
+
return_type = opts[:debug_return_type] || 'CreateAdCampaign201Response'
|
|
137
|
+
|
|
138
|
+
# auth_names
|
|
139
|
+
auth_names = opts[:debug_auth_names] || ['bearerAuth']
|
|
140
|
+
|
|
141
|
+
new_options = opts.merge(
|
|
142
|
+
:operation => :"AdCampaignsApi.create_ad_campaign",
|
|
143
|
+
:header_params => header_params,
|
|
144
|
+
:query_params => query_params,
|
|
145
|
+
:form_params => form_params,
|
|
146
|
+
:body => post_body,
|
|
147
|
+
:auth_names => auth_names,
|
|
148
|
+
:return_type => return_type
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
|
152
|
+
if @api_client.config.debugging
|
|
153
|
+
@api_client.config.logger.debug "API called: AdCampaignsApi#create_ad_campaign\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
154
|
+
end
|
|
155
|
+
return data, status_code, headers
|
|
156
|
+
end
|
|
157
|
+
|
|
90
158
|
# Delete a campaign
|
|
91
159
|
# Deletes the whole campaign on the platform, cascading to its ad sets and ads. Locally, all Ad documents for this campaign are marked `status: cancelled`. Meta-only for now. Other platforms return 501 Not Implemented — fall back to DELETE /v1/ads/{adId} per ad in the meantime.
|
|
92
160
|
# @param campaign_id [String] Platform campaign ID
|
|
@@ -235,6 +303,80 @@ module Zernio
|
|
|
235
303
|
return data, status_code, headers
|
|
236
304
|
end
|
|
237
305
|
|
|
306
|
+
# Duplicate an ad set (Meta)
|
|
307
|
+
# Duplicates an ad set, including its ads and creatives by default (`deepCopy: true`), via Meta's native `POST /{adset-id}/copies`. The copy is created paused so callers can review before launching. `campaignId` retargets the copy into another campaign; omitted = the source's own campaign. The new hierarchy materializes asynchronously — sync discovery is triggered automatically (`syncAfter: false` to skip). Meta only.
|
|
308
|
+
# @param ad_set_id [String] Source platform ad set ID
|
|
309
|
+
# @param duplicate_ad_set_request [DuplicateAdSetRequest]
|
|
310
|
+
# @param [Hash] opts the optional parameters
|
|
311
|
+
# @return [DuplicateAdSet200Response]
|
|
312
|
+
def duplicate_ad_set(ad_set_id, duplicate_ad_set_request, opts = {})
|
|
313
|
+
data, _status_code, _headers = duplicate_ad_set_with_http_info(ad_set_id, duplicate_ad_set_request, opts)
|
|
314
|
+
data
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
# Duplicate an ad set (Meta)
|
|
318
|
+
# Duplicates an ad set, including its ads and creatives by default (`deepCopy: true`), via Meta's native `POST /{adset-id}/copies`. The copy is created paused so callers can review before launching. `campaignId` retargets the copy into another campaign; omitted = the source's own campaign. The new hierarchy materializes asynchronously — sync discovery is triggered automatically (`syncAfter: false` to skip). Meta only.
|
|
319
|
+
# @param ad_set_id [String] Source platform ad set ID
|
|
320
|
+
# @param duplicate_ad_set_request [DuplicateAdSetRequest]
|
|
321
|
+
# @param [Hash] opts the optional parameters
|
|
322
|
+
# @return [Array<(DuplicateAdSet200Response, Integer, Hash)>] DuplicateAdSet200Response data, response status code and response headers
|
|
323
|
+
def duplicate_ad_set_with_http_info(ad_set_id, duplicate_ad_set_request, opts = {})
|
|
324
|
+
if @api_client.config.debugging
|
|
325
|
+
@api_client.config.logger.debug 'Calling API: AdCampaignsApi.duplicate_ad_set ...'
|
|
326
|
+
end
|
|
327
|
+
# verify the required parameter 'ad_set_id' is set
|
|
328
|
+
if @api_client.config.client_side_validation && ad_set_id.nil?
|
|
329
|
+
fail ArgumentError, "Missing the required parameter 'ad_set_id' when calling AdCampaignsApi.duplicate_ad_set"
|
|
330
|
+
end
|
|
331
|
+
# verify the required parameter 'duplicate_ad_set_request' is set
|
|
332
|
+
if @api_client.config.client_side_validation && duplicate_ad_set_request.nil?
|
|
333
|
+
fail ArgumentError, "Missing the required parameter 'duplicate_ad_set_request' when calling AdCampaignsApi.duplicate_ad_set"
|
|
334
|
+
end
|
|
335
|
+
# resource path
|
|
336
|
+
local_var_path = '/v1/ads/ad-sets/{adSetId}/duplicate'.sub('{' + 'adSetId' + '}', CGI.escape(ad_set_id.to_s))
|
|
337
|
+
|
|
338
|
+
# query parameters
|
|
339
|
+
query_params = opts[:query_params] || {}
|
|
340
|
+
|
|
341
|
+
# header parameters
|
|
342
|
+
header_params = opts[:header_params] || {}
|
|
343
|
+
# HTTP header 'Accept' (if needed)
|
|
344
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
345
|
+
# HTTP header 'Content-Type'
|
|
346
|
+
content_type = @api_client.select_header_content_type(['application/json'])
|
|
347
|
+
if !content_type.nil?
|
|
348
|
+
header_params['Content-Type'] = content_type
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
# form parameters
|
|
352
|
+
form_params = opts[:form_params] || {}
|
|
353
|
+
|
|
354
|
+
# http body (model)
|
|
355
|
+
post_body = opts[:debug_body] || @api_client.object_to_http_body(duplicate_ad_set_request)
|
|
356
|
+
|
|
357
|
+
# return_type
|
|
358
|
+
return_type = opts[:debug_return_type] || 'DuplicateAdSet200Response'
|
|
359
|
+
|
|
360
|
+
# auth_names
|
|
361
|
+
auth_names = opts[:debug_auth_names] || ['bearerAuth']
|
|
362
|
+
|
|
363
|
+
new_options = opts.merge(
|
|
364
|
+
:operation => :"AdCampaignsApi.duplicate_ad_set",
|
|
365
|
+
:header_params => header_params,
|
|
366
|
+
:query_params => query_params,
|
|
367
|
+
:form_params => form_params,
|
|
368
|
+
:body => post_body,
|
|
369
|
+
:auth_names => auth_names,
|
|
370
|
+
:return_type => return_type
|
|
371
|
+
)
|
|
372
|
+
|
|
373
|
+
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
|
374
|
+
if @api_client.config.debugging
|
|
375
|
+
@api_client.config.logger.debug "API called: AdCampaignsApi#duplicate_ad_set\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
376
|
+
end
|
|
377
|
+
return data, status_code, headers
|
|
378
|
+
end
|
|
379
|
+
|
|
238
380
|
# Live ad-set details incl. learning phase (Meta)
|
|
239
381
|
# Reads the ad set live from Meta, returned verbatim. The default projection includes `learning_stage_info` (learning-phase status: LEARNING / SUCCESS / FAIL / WAIVING — Meta omits its `status` key on paused ad sets), delivery settings, budgets, schedule and targeting. `fields` is a raw-passthrough override; unknown fields return Meta's 400 verbatim. Meta only.
|
|
240
382
|
# @param ad_set_id [String] Meta ad set id (platformAdSetId).
|