late-sdk 0.0.857 → 0.0.859
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 +45 -1
- data/docs/AdAccountsApi.md +214 -0
- data/docs/AdCampaignsApi.md +296 -0
- data/docs/AdTargetingApi.md +3 -3
- data/docs/AddAccountCallouts201Response.md +20 -0
- data/docs/AddAccountCallouts201ResponseCalloutsInner.md +20 -0
- data/docs/AddAccountCalloutsRequest.md +22 -0
- data/docs/BoostPostRequestTargeting.md +3 -3
- data/docs/ChannelPicker.md +20 -0
- data/docs/ChannelPickerChannelsInner.md +24 -0
- data/docs/ChannelPickerTeam.md +22 -0
- data/docs/ConnectApi.md +78 -0
- data/docs/ConversionAction.md +28 -0
- data/docs/ConversionActionTagSnippetsInner.md +24 -0
- data/docs/ConversionsApi.md +146 -0
- data/docs/CreateAdSet201Response.md +20 -0
- data/docs/CreateAdSetRequest.md +28 -0
- data/docs/CreateConversionAction201Response.md +18 -0
- data/docs/CreateConversionActionRequest.md +28 -0
- data/docs/CreatePost200Response.md +22 -0
- data/docs/CreatePost200ResponseTiktokInner.md +24 -0
- data/docs/CreatePostRequest.md +2 -0
- data/docs/CreateStandaloneAdRequest.md +3 -3
- data/docs/GetCampaignTargeting200Response.md +22 -0
- data/docs/GetCampaignTargeting200ResponseDevicesInner.md +22 -0
- data/docs/GetCampaignTargeting200ResponseLanguagesInner.md +22 -0
- data/docs/GetCampaignTargeting200ResponseLocationsInner.md +20 -0
- data/docs/ListAccountCallouts200Response.md +20 -0
- data/docs/ListAccountCallouts200ResponseCalloutsInner.md +22 -0
- data/docs/ListAdSets200Response.md +18 -0
- data/docs/ListAdSets200ResponseAdSetsInner.md +42 -0
- data/docs/ListConversionActions200Response.md +20 -0
- data/docs/ListSlackChannels200Response.md +49 -0
- data/docs/PlatformTarget.md +1 -1
- data/docs/Post.md +1 -1
- data/docs/PostsApi.md +4 -4
- data/docs/RemoveAccountCallout200Response.md +20 -0
- data/docs/RemoveAccountCalloutRequest.md +22 -0
- data/docs/StartOAuth.md +20 -0
- data/docs/TargetingSpec.md +3 -3
- data/docs/TargetingSpecExcludedLocations.md +2 -2
- data/docs/UpdateCampaignTargeting200Response.md +20 -0
- data/docs/UpdateCampaignTargetingRequest.md +20 -0
- data/docs/UpdateCampaignTargetingRequestTargeting.md +22 -0
- data/docs/UpdateCampaignTargetingRequestTargetingDevicesInner.md +49 -0
- data/docs/UpdateCampaignTargetingRequestTargetingDevicesInnerOneOf.md +20 -0
- data/docs/UpdateCampaignTargetingRequestTargetingLocations.md +49 -0
- data/docs/UpdateCampaignTargetingRequestTargetingLocationsOneOf.md +26 -0
- data/docs/{BoostPostRequestTargetingRegionsInner.md → UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner.md} +2 -2
- data/docs/WebhookLog.md +1 -1
- data/lib/zernio-sdk/api/ad_accounts_api.rb +203 -0
- data/lib/zernio-sdk/api/ad_campaigns_api.rb +289 -0
- data/lib/zernio-sdk/api/ad_targeting_api.rb +5 -5
- data/lib/zernio-sdk/api/connect_api.rb +77 -0
- data/lib/zernio-sdk/api/conversions_api.rb +138 -0
- data/lib/zernio-sdk/api/posts_api.rb +4 -4
- data/lib/zernio-sdk/models/add_account_callouts201_response.rb +158 -0
- data/lib/zernio-sdk/models/add_account_callouts201_response_callouts_inner.rb +156 -0
- data/lib/zernio-sdk/models/add_account_callouts_request.rb +222 -0
- data/lib/zernio-sdk/models/boost_post_request_targeting.rb +3 -3
- data/lib/zernio-sdk/models/channel_picker.rb +192 -0
- data/lib/zernio-sdk/models/channel_picker_channels_inner.rb +244 -0
- data/lib/zernio-sdk/models/channel_picker_team.rb +169 -0
- data/lib/zernio-sdk/models/conversion_action.rb +302 -0
- data/lib/zernio-sdk/models/conversion_action_tag_snippets_inner.rb +195 -0
- data/lib/zernio-sdk/models/create_ad_set201_response.rb +157 -0
- data/lib/zernio-sdk/models/create_ad_set_request.rb +320 -0
- data/lib/zernio-sdk/models/create_conversion_action201_response.rb +147 -0
- data/lib/zernio-sdk/models/create_conversion_action_request.rb +309 -0
- data/lib/zernio-sdk/models/create_post200_response.rb +221 -0
- data/lib/zernio-sdk/models/create_post200_response_tiktok_inner.rb +227 -0
- data/lib/zernio-sdk/models/create_post_request.rb +13 -1
- data/lib/zernio-sdk/models/create_standalone_ad_request.rb +3 -3
- data/lib/zernio-sdk/models/get_campaign_targeting200_response.rb +171 -0
- data/lib/zernio-sdk/models/get_campaign_targeting200_response_devices_inner.rb +201 -0
- data/lib/zernio-sdk/models/get_campaign_targeting200_response_languages_inner.rb +167 -0
- data/lib/zernio-sdk/models/get_campaign_targeting200_response_locations_inner.rb +158 -0
- data/lib/zernio-sdk/models/list_account_callouts200_response.rb +158 -0
- data/lib/zernio-sdk/models/list_account_callouts200_response_callouts_inner.rb +166 -0
- data/lib/zernio-sdk/models/list_ad_sets200_response.rb +149 -0
- data/lib/zernio-sdk/models/list_ad_sets200_response_ad_sets_inner.rb +264 -0
- data/lib/zernio-sdk/models/list_conversion_actions200_response.rb +159 -0
- data/lib/zernio-sdk/models/list_slack_channels200_response.rb +104 -0
- data/lib/zernio-sdk/models/platform_target.rb +1 -1
- data/lib/zernio-sdk/models/post.rb +3 -2
- data/lib/zernio-sdk/models/remove_account_callout200_response.rb +156 -0
- data/lib/zernio-sdk/models/remove_account_callout_request.rb +202 -0
- data/lib/zernio-sdk/models/start_o_auth.rb +190 -0
- data/lib/zernio-sdk/models/targeting_spec.rb +3 -3
- data/lib/zernio-sdk/models/targeting_spec_excluded_locations.rb +2 -2
- data/lib/zernio-sdk/models/update_campaign_targeting200_response.rb +181 -0
- data/lib/zernio-sdk/models/update_campaign_targeting_request.rb +214 -0
- data/lib/zernio-sdk/models/update_campaign_targeting_request_targeting.rb +171 -0
- data/lib/zernio-sdk/models/update_campaign_targeting_request_targeting_devices_inner.rb +104 -0
- data/lib/zernio-sdk/models/update_campaign_targeting_request_targeting_devices_inner_one_of.rb +215 -0
- data/lib/zernio-sdk/models/update_campaign_targeting_request_targeting_locations.rb +105 -0
- data/lib/zernio-sdk/models/update_campaign_targeting_request_targeting_locations_one_of.rb +193 -0
- data/lib/zernio-sdk/models/{boost_post_request_targeting_regions_inner.rb → update_campaign_targeting_request_targeting_locations_one_of_regions_inner.rb} +3 -3
- data/lib/zernio-sdk/models/webhook_log.rb +1 -1
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +35 -1
- data/openapi.yaml +661 -13
- data/spec/api/ad_accounts_api_spec.rb +37 -0
- data/spec/api/ad_campaigns_api_spec.rb +53 -0
- data/spec/api/ad_targeting_api_spec.rb +2 -2
- data/spec/api/connect_api_spec.rb +15 -0
- data/spec/api/conversions_api_spec.rb +26 -0
- data/spec/api/posts_api_spec.rb +1 -1
- data/spec/models/add_account_callouts201_response_callouts_inner_spec.rb +42 -0
- data/spec/models/{boost_post_request_targeting_regions_inner_spec.rb → add_account_callouts201_response_spec.rb} +8 -8
- data/spec/models/add_account_callouts_request_spec.rb +48 -0
- data/spec/models/channel_picker_channels_inner_spec.rb +54 -0
- data/spec/models/channel_picker_spec.rb +42 -0
- data/spec/models/channel_picker_team_spec.rb +48 -0
- data/spec/models/conversion_action_spec.rb +66 -0
- data/spec/models/conversion_action_tag_snippets_inner_spec.rb +54 -0
- data/spec/models/create_ad_set201_response_spec.rb +42 -0
- data/spec/models/create_ad_set_request_spec.rb +74 -0
- data/spec/models/create_conversion_action201_response_spec.rb +36 -0
- data/spec/models/create_conversion_action_request_spec.rb +70 -0
- data/spec/models/create_post200_response_spec.rb +48 -0
- data/spec/models/create_post200_response_tiktok_inner_spec.rb +54 -0
- data/spec/models/create_post_request_spec.rb +6 -0
- data/spec/models/get_campaign_targeting200_response_devices_inner_spec.rb +52 -0
- data/spec/models/get_campaign_targeting200_response_languages_inner_spec.rb +48 -0
- data/spec/models/get_campaign_targeting200_response_locations_inner_spec.rb +42 -0
- data/spec/models/get_campaign_targeting200_response_spec.rb +48 -0
- data/spec/models/list_account_callouts200_response_callouts_inner_spec.rb +48 -0
- data/spec/models/list_account_callouts200_response_spec.rb +42 -0
- data/spec/models/list_ad_sets200_response_ad_sets_inner_spec.rb +108 -0
- data/spec/models/list_ad_sets200_response_spec.rb +36 -0
- data/spec/models/list_conversion_actions200_response_spec.rb +42 -0
- data/spec/models/list_slack_channels200_response_spec.rb +32 -0
- data/spec/models/post_spec.rb +1 -1
- data/spec/models/remove_account_callout200_response_spec.rb +42 -0
- data/spec/models/remove_account_callout_request_spec.rb +48 -0
- data/spec/models/start_o_auth_spec.rb +42 -0
- data/spec/models/update_campaign_targeting200_response_spec.rb +46 -0
- data/spec/models/update_campaign_targeting_request_spec.rb +46 -0
- data/spec/models/update_campaign_targeting_request_targeting_devices_inner_one_of_spec.rb +46 -0
- data/spec/models/update_campaign_targeting_request_targeting_devices_inner_spec.rb +32 -0
- data/spec/models/update_campaign_targeting_request_targeting_locations_one_of_regions_inner_spec.rb +42 -0
- data/spec/models/update_campaign_targeting_request_targeting_locations_one_of_spec.rb +60 -0
- data/spec/models/update_campaign_targeting_request_targeting_locations_spec.rb +32 -0
- data/spec/models/update_campaign_targeting_request_targeting_spec.rb +48 -0
- data/zernio-sdk-0.0.859.gem +0 -0
- metadata +142 -6
- data/zernio-sdk-0.0.857.gem +0 -0
data/docs/AdCampaignsApi.md
CHANGED
|
@@ -9,6 +9,7 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
9
9
|
| [**boost_post**](AdCampaignsApi.md#boost_post) | **POST** /v1/ads/boost | Boost post as ad |
|
|
10
10
|
| [**bulk_update_ad_campaign_status**](AdCampaignsApi.md#bulk_update_ad_campaign_status) | **POST** /v1/ads/campaigns/bulk-status | Pause or resume many campaigns |
|
|
11
11
|
| [**create_ad_campaign**](AdCampaignsApi.md#create_ad_campaign) | **POST** /v1/ads/campaigns | Create a standalone campaign |
|
|
12
|
+
| [**create_ad_set**](AdCampaignsApi.md#create_ad_set) | **POST** /v1/ads/ad-sets | Create a standalone ad group |
|
|
12
13
|
| [**create_standalone_ad**](AdCampaignsApi.md#create_standalone_ad) | **POST** /v1/ads/create | Create standalone ad |
|
|
13
14
|
| [**delete_ad**](AdCampaignsApi.md#delete_ad) | **DELETE** /v1/ads/{adId} | Cancel an ad |
|
|
14
15
|
| [**delete_ad_campaign**](AdCampaignsApi.md#delete_ad_campaign) | **DELETE** /v1/ads/campaigns/{campaignId} | Delete a campaign |
|
|
@@ -20,8 +21,10 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
20
21
|
| [**get_ad_set_details**](AdCampaignsApi.md#get_ad_set_details) | **GET** /v1/ads/ad-sets/{adSetId} | Live ad-set details incl. learning phase |
|
|
21
22
|
| [**get_ad_tree**](AdCampaignsApi.md#get_ad_tree) | **GET** /v1/ads/tree | Get campaign tree |
|
|
22
23
|
| [**get_ads_timeline**](AdCampaignsApi.md#get_ads_timeline) | **GET** /v1/ads/timeline | Get daily account metrics |
|
|
24
|
+
| [**get_campaign_targeting**](AdCampaignsApi.md#get_campaign_targeting) | **GET** /v1/ads/campaigns/{campaignId}/targeting | Read a Google campaign's device, location, and language targeting |
|
|
23
25
|
| [**list_ad_campaigns**](AdCampaignsApi.md#list_ad_campaigns) | **GET** /v1/ads/campaigns | List campaigns |
|
|
24
26
|
| [**list_ad_keywords**](AdCampaignsApi.md#list_ad_keywords) | **GET** /v1/ads/keywords | List Search keywords |
|
|
27
|
+
| [**list_ad_sets**](AdCampaignsApi.md#list_ad_sets) | **GET** /v1/ads/ad-sets | List ad sets |
|
|
25
28
|
| [**list_ads**](AdCampaignsApi.md#list_ads) | **GET** /v1/ads | List ads |
|
|
26
29
|
| [**list_campaign_negative_keywords**](AdCampaignsApi.md#list_campaign_negative_keywords) | **GET** /v1/ads/campaigns/{campaignId}/negative-keywords | List campaign-level negative keywords |
|
|
27
30
|
| [**remove_ad_keyword**](AdCampaignsApi.md#remove_ad_keyword) | **DELETE** /v1/ads/keywords/{keywordId} | Remove a Search keyword |
|
|
@@ -33,6 +36,7 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
33
36
|
| [**update_ad_set**](AdCampaignsApi.md#update_ad_set) | **PUT** /v1/ads/ad-sets/{adSetId} | Update an ad set |
|
|
34
37
|
| [**update_ad_set_status**](AdCampaignsApi.md#update_ad_set_status) | **PUT** /v1/ads/ad-sets/{adSetId}/status | Pause or resume a single ad set |
|
|
35
38
|
| [**update_ad_status**](AdCampaignsApi.md#update_ad_status) | **PUT** /v1/ads/{adId}/status | Pause or resume a single ad |
|
|
39
|
+
| [**update_campaign_targeting**](AdCampaignsApi.md#update_campaign_targeting) | **PUT** /v1/ads/campaigns/{campaignId}/targeting | Edit a Google campaign's device, location, or language targeting |
|
|
36
40
|
|
|
37
41
|
|
|
38
42
|
## add_ad_keywords
|
|
@@ -390,6 +394,79 @@ end
|
|
|
390
394
|
- **Accept**: application/json
|
|
391
395
|
|
|
392
396
|
|
|
397
|
+
## create_ad_set
|
|
398
|
+
|
|
399
|
+
> <CreateAdSet201Response> create_ad_set(create_ad_set_request, opts)
|
|
400
|
+
|
|
401
|
+
Create a standalone ad group
|
|
402
|
+
|
|
403
|
+
Google Ads compliance row C.190: creates an ad group WITHOUT an ad, under an existing campaign. Ads join it later via `existingAdGroupId` on POST /v1/ads/create. Google only; every other platform returns 501. Created `PAUSED` unless `status: ACTIVE`. The new ad group has no ad yet, so it will not appear in GET /v1/ads/tree (built purely from `ads` rows) until one is added; use GET /v1/ads/ad-sets to see it in the meantime. **Idempotency:** send an `Idempotency-Key` header to make retries safe.
|
|
404
|
+
|
|
405
|
+
### Examples
|
|
406
|
+
|
|
407
|
+
```ruby
|
|
408
|
+
require 'time'
|
|
409
|
+
require 'zernio-sdk'
|
|
410
|
+
# setup authorization
|
|
411
|
+
Zernio.configure do |config|
|
|
412
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
413
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
api_instance = Zernio::AdCampaignsApi.new
|
|
417
|
+
create_ad_set_request = Zernio::CreateAdSetRequest.new({account_id: 'account_id_example', platform: 'facebook', campaign_id: 'campaign_id_example', name: 'name_example'}) # CreateAdSetRequest |
|
|
418
|
+
opts = {
|
|
419
|
+
idempotency_key: 'idempotency_key_example' # String | Optional client-generated unique key (e.g. a UUID) that makes retries safe. Same key + same body replays the original response; same key + different body → 422; key still processing → 409. Only 2xx responses are stored, so a request that failed with a 4xx can be retried with a corrected body under the SAME key.
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
begin
|
|
423
|
+
# Create a standalone ad group
|
|
424
|
+
result = api_instance.create_ad_set(create_ad_set_request, opts)
|
|
425
|
+
p result
|
|
426
|
+
rescue Zernio::ApiError => e
|
|
427
|
+
puts "Error when calling AdCampaignsApi->create_ad_set: #{e}"
|
|
428
|
+
end
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
#### Using the create_ad_set_with_http_info variant
|
|
432
|
+
|
|
433
|
+
This returns an Array which contains the response data, status code and headers.
|
|
434
|
+
|
|
435
|
+
> <Array(<CreateAdSet201Response>, Integer, Hash)> create_ad_set_with_http_info(create_ad_set_request, opts)
|
|
436
|
+
|
|
437
|
+
```ruby
|
|
438
|
+
begin
|
|
439
|
+
# Create a standalone ad group
|
|
440
|
+
data, status_code, headers = api_instance.create_ad_set_with_http_info(create_ad_set_request, opts)
|
|
441
|
+
p status_code # => 2xx
|
|
442
|
+
p headers # => { ... }
|
|
443
|
+
p data # => <CreateAdSet201Response>
|
|
444
|
+
rescue Zernio::ApiError => e
|
|
445
|
+
puts "Error when calling AdCampaignsApi->create_ad_set_with_http_info: #{e}"
|
|
446
|
+
end
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
### Parameters
|
|
450
|
+
|
|
451
|
+
| Name | Type | Description | Notes |
|
|
452
|
+
| ---- | ---- | ----------- | ----- |
|
|
453
|
+
| **create_ad_set_request** | [**CreateAdSetRequest**](CreateAdSetRequest.md) | | |
|
|
454
|
+
| **idempotency_key** | **String** | Optional client-generated unique key (e.g. a UUID) that makes retries safe. Same key + same body replays the original response; same key + different body → 422; key still processing → 409. Only 2xx responses are stored, so a request that failed with a 4xx can be retried with a corrected body under the SAME key. | [optional] |
|
|
455
|
+
|
|
456
|
+
### Return type
|
|
457
|
+
|
|
458
|
+
[**CreateAdSet201Response**](CreateAdSet201Response.md)
|
|
459
|
+
|
|
460
|
+
### Authorization
|
|
461
|
+
|
|
462
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
463
|
+
|
|
464
|
+
### HTTP request headers
|
|
465
|
+
|
|
466
|
+
- **Content-Type**: application/json
|
|
467
|
+
- **Accept**: application/json
|
|
468
|
+
|
|
469
|
+
|
|
393
470
|
## create_standalone_ad
|
|
394
471
|
|
|
395
472
|
> <CreateStandaloneAd200Response> create_standalone_ad(create_standalone_ad_request, opts)
|
|
@@ -1223,6 +1300,79 @@ end
|
|
|
1223
1300
|
- **Accept**: application/json
|
|
1224
1301
|
|
|
1225
1302
|
|
|
1303
|
+
## get_campaign_targeting
|
|
1304
|
+
|
|
1305
|
+
> <GetCampaignTargeting200Response> get_campaign_targeting(campaign_id, opts)
|
|
1306
|
+
|
|
1307
|
+
Read a Google campaign's device, location, and language targeting
|
|
1308
|
+
|
|
1309
|
+
Google Ads compliance requires geo, language, budget, and bidding targeting set at creation to stay editable afterwards; this reads the live campaign state so an integrator can build an editor around it. Google only; every other platform returns 501. `devices` always lists all four device types with `included` reflecting Google's negative device criteria (a device absent from any negative criterion is included by default). This read has no bid-modifier source, so `bidModifier` is always `null` even for a device with one configured.
|
|
1310
|
+
|
|
1311
|
+
### Examples
|
|
1312
|
+
|
|
1313
|
+
```ruby
|
|
1314
|
+
require 'time'
|
|
1315
|
+
require 'zernio-sdk'
|
|
1316
|
+
# setup authorization
|
|
1317
|
+
Zernio.configure do |config|
|
|
1318
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
1319
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
1320
|
+
end
|
|
1321
|
+
|
|
1322
|
+
api_instance = Zernio::AdCampaignsApi.new
|
|
1323
|
+
campaign_id = 'campaign_id_example' # String | Google platform campaign ID
|
|
1324
|
+
opts = {
|
|
1325
|
+
platform: 'google' # String | Disambiguates when the same campaignId string exists on more than one connected platform.
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
begin
|
|
1329
|
+
# Read a Google campaign's device, location, and language targeting
|
|
1330
|
+
result = api_instance.get_campaign_targeting(campaign_id, opts)
|
|
1331
|
+
p result
|
|
1332
|
+
rescue Zernio::ApiError => e
|
|
1333
|
+
puts "Error when calling AdCampaignsApi->get_campaign_targeting: #{e}"
|
|
1334
|
+
end
|
|
1335
|
+
```
|
|
1336
|
+
|
|
1337
|
+
#### Using the get_campaign_targeting_with_http_info variant
|
|
1338
|
+
|
|
1339
|
+
This returns an Array which contains the response data, status code and headers.
|
|
1340
|
+
|
|
1341
|
+
> <Array(<GetCampaignTargeting200Response>, Integer, Hash)> get_campaign_targeting_with_http_info(campaign_id, opts)
|
|
1342
|
+
|
|
1343
|
+
```ruby
|
|
1344
|
+
begin
|
|
1345
|
+
# Read a Google campaign's device, location, and language targeting
|
|
1346
|
+
data, status_code, headers = api_instance.get_campaign_targeting_with_http_info(campaign_id, opts)
|
|
1347
|
+
p status_code # => 2xx
|
|
1348
|
+
p headers # => { ... }
|
|
1349
|
+
p data # => <GetCampaignTargeting200Response>
|
|
1350
|
+
rescue Zernio::ApiError => e
|
|
1351
|
+
puts "Error when calling AdCampaignsApi->get_campaign_targeting_with_http_info: #{e}"
|
|
1352
|
+
end
|
|
1353
|
+
```
|
|
1354
|
+
|
|
1355
|
+
### Parameters
|
|
1356
|
+
|
|
1357
|
+
| Name | Type | Description | Notes |
|
|
1358
|
+
| ---- | ---- | ----------- | ----- |
|
|
1359
|
+
| **campaign_id** | **String** | Google platform campaign ID | |
|
|
1360
|
+
| **platform** | **String** | Disambiguates when the same campaignId string exists on more than one connected platform. | [optional] |
|
|
1361
|
+
|
|
1362
|
+
### Return type
|
|
1363
|
+
|
|
1364
|
+
[**GetCampaignTargeting200Response**](GetCampaignTargeting200Response.md)
|
|
1365
|
+
|
|
1366
|
+
### Authorization
|
|
1367
|
+
|
|
1368
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
1369
|
+
|
|
1370
|
+
### HTTP request headers
|
|
1371
|
+
|
|
1372
|
+
- **Content-Type**: Not defined
|
|
1373
|
+
- **Accept**: application/json
|
|
1374
|
+
|
|
1375
|
+
|
|
1226
1376
|
## list_ad_campaigns
|
|
1227
1377
|
|
|
1228
1378
|
> <ListAdCampaigns200Response> list_ad_campaigns(opts)
|
|
@@ -1411,6 +1561,81 @@ end
|
|
|
1411
1561
|
- **Accept**: application/json
|
|
1412
1562
|
|
|
1413
1563
|
|
|
1564
|
+
## list_ad_sets
|
|
1565
|
+
|
|
1566
|
+
> <ListAdSets200Response> list_ad_sets(opts)
|
|
1567
|
+
|
|
1568
|
+
List ad sets
|
|
1569
|
+
|
|
1570
|
+
Ad sets (Google ad groups) synced for the connection, optionally filtered by platform and campaignId. Reads the `ad_sets` table directly, independent of the `ads` rollup GET /v1/ads/tree uses, so a just-created standalone ad group with no ad yet (POST /v1/ads/ad-sets, Google only) is visible here even though it is invisible in the tree until an ad joins it via `existingAdGroupId`. Returns at most 500 rows, newest first.
|
|
1571
|
+
|
|
1572
|
+
### Examples
|
|
1573
|
+
|
|
1574
|
+
```ruby
|
|
1575
|
+
require 'time'
|
|
1576
|
+
require 'zernio-sdk'
|
|
1577
|
+
# setup authorization
|
|
1578
|
+
Zernio.configure do |config|
|
|
1579
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
1580
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
1581
|
+
end
|
|
1582
|
+
|
|
1583
|
+
api_instance = Zernio::AdCampaignsApi.new
|
|
1584
|
+
opts = {
|
|
1585
|
+
account_id: 'account_id_example', # String | Social account ID
|
|
1586
|
+
campaign_id: 'campaign_id_example', # String | Platform campaign ID
|
|
1587
|
+
platform: 'facebook' # String |
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
begin
|
|
1591
|
+
# List ad sets
|
|
1592
|
+
result = api_instance.list_ad_sets(opts)
|
|
1593
|
+
p result
|
|
1594
|
+
rescue Zernio::ApiError => e
|
|
1595
|
+
puts "Error when calling AdCampaignsApi->list_ad_sets: #{e}"
|
|
1596
|
+
end
|
|
1597
|
+
```
|
|
1598
|
+
|
|
1599
|
+
#### Using the list_ad_sets_with_http_info variant
|
|
1600
|
+
|
|
1601
|
+
This returns an Array which contains the response data, status code and headers.
|
|
1602
|
+
|
|
1603
|
+
> <Array(<ListAdSets200Response>, Integer, Hash)> list_ad_sets_with_http_info(opts)
|
|
1604
|
+
|
|
1605
|
+
```ruby
|
|
1606
|
+
begin
|
|
1607
|
+
# List ad sets
|
|
1608
|
+
data, status_code, headers = api_instance.list_ad_sets_with_http_info(opts)
|
|
1609
|
+
p status_code # => 2xx
|
|
1610
|
+
p headers # => { ... }
|
|
1611
|
+
p data # => <ListAdSets200Response>
|
|
1612
|
+
rescue Zernio::ApiError => e
|
|
1613
|
+
puts "Error when calling AdCampaignsApi->list_ad_sets_with_http_info: #{e}"
|
|
1614
|
+
end
|
|
1615
|
+
```
|
|
1616
|
+
|
|
1617
|
+
### Parameters
|
|
1618
|
+
|
|
1619
|
+
| Name | Type | Description | Notes |
|
|
1620
|
+
| ---- | ---- | ----------- | ----- |
|
|
1621
|
+
| **account_id** | **String** | Social account ID | [optional] |
|
|
1622
|
+
| **campaign_id** | **String** | Platform campaign ID | [optional] |
|
|
1623
|
+
| **platform** | **String** | | [optional] |
|
|
1624
|
+
|
|
1625
|
+
### Return type
|
|
1626
|
+
|
|
1627
|
+
[**ListAdSets200Response**](ListAdSets200Response.md)
|
|
1628
|
+
|
|
1629
|
+
### Authorization
|
|
1630
|
+
|
|
1631
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
1632
|
+
|
|
1633
|
+
### HTTP request headers
|
|
1634
|
+
|
|
1635
|
+
- **Content-Type**: Not defined
|
|
1636
|
+
- **Accept**: application/json
|
|
1637
|
+
|
|
1638
|
+
|
|
1414
1639
|
## list_ads
|
|
1415
1640
|
|
|
1416
1641
|
> <AdsListResponse> list_ads(opts)
|
|
@@ -2221,3 +2446,74 @@ end
|
|
|
2221
2446
|
- **Content-Type**: application/json
|
|
2222
2447
|
- **Accept**: application/json
|
|
2223
2448
|
|
|
2449
|
+
|
|
2450
|
+
## update_campaign_targeting
|
|
2451
|
+
|
|
2452
|
+
> <UpdateCampaignTargeting200Response> update_campaign_targeting(campaign_id, update_campaign_targeting_request)
|
|
2453
|
+
|
|
2454
|
+
Edit a Google campaign's device, location, or language targeting
|
|
2455
|
+
|
|
2456
|
+
Google Ads compliance row M.10: geo and language targeting set at creation must stay editable afterwards. Send at least one of `devices`, `locations`, `languages`; each provided field REPLACES that field's existing criteria on the campaign (a full set, not a delta). Fields left out of the body are untouched. Google only; every other platform returns 501. `locations` accepts the same shapes as campaign creation: a bare array of ISO country codes, or an object with `countries`/`regions`/`cities`/`zips`/`metros` key lists (`key` from GET /v1/ads/targeting/search?dimension=geo). Negative (excluded) locations are left untouched by this endpoint. `languages` is an array of Google's language codes (ISO 639-1, plus variants such as `zh_CN`); an unknown code returns 400.
|
|
2457
|
+
|
|
2458
|
+
### Examples
|
|
2459
|
+
|
|
2460
|
+
```ruby
|
|
2461
|
+
require 'time'
|
|
2462
|
+
require 'zernio-sdk'
|
|
2463
|
+
# setup authorization
|
|
2464
|
+
Zernio.configure do |config|
|
|
2465
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
2466
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
2467
|
+
end
|
|
2468
|
+
|
|
2469
|
+
api_instance = Zernio::AdCampaignsApi.new
|
|
2470
|
+
campaign_id = 'campaign_id_example' # String | Google platform campaign ID
|
|
2471
|
+
update_campaign_targeting_request = Zernio::UpdateCampaignTargetingRequest.new({platform: 'google', targeting: Zernio::UpdateCampaignTargetingRequestTargeting.new}) # UpdateCampaignTargetingRequest |
|
|
2472
|
+
|
|
2473
|
+
begin
|
|
2474
|
+
# Edit a Google campaign's device, location, or language targeting
|
|
2475
|
+
result = api_instance.update_campaign_targeting(campaign_id, update_campaign_targeting_request)
|
|
2476
|
+
p result
|
|
2477
|
+
rescue Zernio::ApiError => e
|
|
2478
|
+
puts "Error when calling AdCampaignsApi->update_campaign_targeting: #{e}"
|
|
2479
|
+
end
|
|
2480
|
+
```
|
|
2481
|
+
|
|
2482
|
+
#### Using the update_campaign_targeting_with_http_info variant
|
|
2483
|
+
|
|
2484
|
+
This returns an Array which contains the response data, status code and headers.
|
|
2485
|
+
|
|
2486
|
+
> <Array(<UpdateCampaignTargeting200Response>, Integer, Hash)> update_campaign_targeting_with_http_info(campaign_id, update_campaign_targeting_request)
|
|
2487
|
+
|
|
2488
|
+
```ruby
|
|
2489
|
+
begin
|
|
2490
|
+
# Edit a Google campaign's device, location, or language targeting
|
|
2491
|
+
data, status_code, headers = api_instance.update_campaign_targeting_with_http_info(campaign_id, update_campaign_targeting_request)
|
|
2492
|
+
p status_code # => 2xx
|
|
2493
|
+
p headers # => { ... }
|
|
2494
|
+
p data # => <UpdateCampaignTargeting200Response>
|
|
2495
|
+
rescue Zernio::ApiError => e
|
|
2496
|
+
puts "Error when calling AdCampaignsApi->update_campaign_targeting_with_http_info: #{e}"
|
|
2497
|
+
end
|
|
2498
|
+
```
|
|
2499
|
+
|
|
2500
|
+
### Parameters
|
|
2501
|
+
|
|
2502
|
+
| Name | Type | Description | Notes |
|
|
2503
|
+
| ---- | ---- | ----------- | ----- |
|
|
2504
|
+
| **campaign_id** | **String** | Google platform campaign ID | |
|
|
2505
|
+
| **update_campaign_targeting_request** | [**UpdateCampaignTargetingRequest**](UpdateCampaignTargetingRequest.md) | | |
|
|
2506
|
+
|
|
2507
|
+
### Return type
|
|
2508
|
+
|
|
2509
|
+
[**UpdateCampaignTargeting200Response**](UpdateCampaignTargeting200Response.md)
|
|
2510
|
+
|
|
2511
|
+
### Authorization
|
|
2512
|
+
|
|
2513
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
2514
|
+
|
|
2515
|
+
### HTTP request headers
|
|
2516
|
+
|
|
2517
|
+
- **Content-Type**: application/json
|
|
2518
|
+
- **Accept**: application/json
|
|
2519
|
+
|
data/docs/AdTargetingApi.md
CHANGED
|
@@ -295,7 +295,7 @@ end
|
|
|
295
295
|
|
|
296
296
|
Search targeting options
|
|
297
297
|
|
|
298
|
-
Resolve a human-readable query into the platform's opaque targeting ids used in the `TargetingSpec` (`countries`/`regions`/`cities`/`zips`/`metros` geo keys, and `interests`/`behaviors` entity ids) on `POST /v1/ads/create`, `POST /v1/ads/targeting/reach-estimate`, and `saved_targeting` audiences. The `dimension` param selects what is searched, `geo` (locations, further scoped by `geoType`), `interest`, `behavior`, `income`, or the Meta-only work demographics `workPosition`, `workEmployer` and `workIndustry` (their ids feed `TargetingSpec.workPositions`/`workEmployers`/`workIndustries`). Availability of each dimension varies by platform (e.g. behaviours are Meta/TikTok only). Work industries are a fixed ~30-entry Meta catalog with no server-side query, so `workIndustry` matching, ranking and `limit` happen in Zernio. Results are normalized across platforms into a single shape, so the same client code consumes Meta, TikTok, LinkedIn, X, Pinterest, and Google results. TikTok geo searches return every matching level in one list (`type` is `country`, `region`, `city`, `district`, or `metro` for DMA areas) — `geoType` is not applied. Results are scoped to the advertiser's targetable markets, and every id is usable in `regions`/`cities`/`metros` keys on `POST /v1/ads/create`. LinkedIn geo searches also return every matching level in one list, and neither `geoType` nor `countryCode` is applied: LinkedIn's typeahead only returns a name and a URN per result, with no level or country field to filter on. Every result has `type` set to `location`, and its id is a `urn:li:geo:*` URN usable as a `regions[].key` on `POST /v1/ads/create`, `POST /v1/ads/boost` and `POST /v1/ads/targeting/reach-estimate`. Google geo searches resolve against Google's geoTargetConstants and return every matching level in one list; `geoType` is not applied (Google's `target_type` is an open taxonomy that does not map one-to-one onto the `geoType` enum), so filter client-side on the returned `type` (`country`, `region`, `city`, `zip`, `metro`, or the lowercased Google target type for rarer levels). `countryCode` scopes the search to one country. Each id is Google's numeric criterion id, usable as a `regions`/`cities`/`zips`/`metros` `key` on `POST /v1/ads/create`. Google city radius is not supported (pass a `customLocations` lat/lng pin for a radius); country targeting also accepts plain ISO codes via `countries` with no search call. Pinterest resolves against three whole-catalog endpoints (interests, locations, regions) with no server-side query or pagination, so matching, ranking and the `limit` cutoff all happen in Zernio; the catalog is independent of any ad account and results never carry `audienceSize`. Names come back localized to the connected Pinterest account's language (there is no way to force a locale), so match against whatever language that account returns. `geoType` routes to a different catalog: `country` and `metro_area` read the locations catalog (`type` is `country` or `metro`); `region` reads the regions catalog (`type` is `region`, its id a `regions[].key` on `POST /v1/ads/create`); `all` and the default `city` merge both catalogs with honest per-entry `type`s, since Pinterest has no city-level catalog and `city` is an alias for `all`, not a literal city search. `zip`, `subcity`, `neighborhood`, `place` and `geo_market` return a 400: Pinterest exposes no postal-code catalog, pass postal codes directly as `targeting.zips: [{ key }]` on `POST /v1/ads/create`. For geo queries, `q` should contain only the locality name (e.g. `\"Amsterdam\"`, not `\"Amsterdam, NL\"`). Use `countryCode` to disambiguate.
|
|
298
|
+
Resolve a human-readable query into the platform's opaque targeting ids used in the `TargetingSpec` (`countries`/`regions`/`cities`/`zips`/`metros` geo keys, and `interests`/`behaviors` entity ids) on `POST /v1/ads/create`, `POST /v1/ads/targeting/reach-estimate`, and `saved_targeting` audiences. The `dimension` param selects what is searched, `geo` (locations, further scoped by `geoType`), `interest`, `behavior`, `income`, `language` (Google-only), or the Meta-only work demographics `workPosition`, `workEmployer` and `workIndustry` (their ids feed `TargetingSpec.workPositions`/`workEmployers`/`workIndustries`). Availability of each dimension varies by platform (e.g. behaviours are Meta/TikTok only). Work industries are a fixed ~30-entry Meta catalog with no server-side query, so `workIndustry` matching, ranking and `limit` happen in Zernio. `language` is likewise a fixed, checked-in table of Google's targetable `language_constant` rows (id, ISO code, name) matched by name or code, capped at 20, with no network call; its ids feed `TargetingSpec.languages`. Results are normalized across platforms into a single shape, so the same client code consumes Meta, TikTok, LinkedIn, X, Pinterest, and Google results. TikTok geo searches return every matching level in one list (`type` is `country`, `region`, `city`, `district`, or `metro` for DMA areas) — `geoType` is not applied. Results are scoped to the advertiser's targetable markets, and every id is usable in `regions`/`cities`/`metros` keys on `POST /v1/ads/create`. LinkedIn geo searches also return every matching level in one list, and neither `geoType` nor `countryCode` is applied: LinkedIn's typeahead only returns a name and a URN per result, with no level or country field to filter on. Every result has `type` set to `location`, and its id is a `urn:li:geo:*` URN usable as a `regions[].key` on `POST /v1/ads/create`, `POST /v1/ads/boost` and `POST /v1/ads/targeting/reach-estimate`. Google geo searches resolve against Google's geoTargetConstants and return every matching level in one list; `geoType` is not applied (Google's `target_type` is an open taxonomy that does not map one-to-one onto the `geoType` enum), so filter client-side on the returned `type` (`country`, `region`, `city`, `zip`, `metro`, or the lowercased Google target type for rarer levels). `countryCode` scopes the search to one country. Each id is Google's numeric criterion id, usable as a `regions`/`cities`/`zips`/`metros` `key` on `POST /v1/ads/create`. Google city radius is not supported (pass a `customLocations` lat/lng pin for a radius); country targeting also accepts plain ISO codes via `countries` with no search call. Pinterest resolves against three whole-catalog endpoints (interests, locations, regions) with no server-side query or pagination, so matching, ranking and the `limit` cutoff all happen in Zernio; the catalog is independent of any ad account and results never carry `audienceSize`. Names come back localized to the connected Pinterest account's language (there is no way to force a locale), so match against whatever language that account returns. `geoType` routes to a different catalog: `country` and `metro_area` read the locations catalog (`type` is `country` or `metro`); `region` reads the regions catalog (`type` is `region`, its id a `regions[].key` on `POST /v1/ads/create`); `all` and the default `city` merge both catalogs with honest per-entry `type`s, since Pinterest has no city-level catalog and `city` is an alias for `all`, not a literal city search. `zip`, `subcity`, `neighborhood`, `place` and `geo_market` return a 400: Pinterest exposes no postal-code catalog, pass postal codes directly as `targeting.zips: [{ key }]` on `POST /v1/ads/create`. For geo queries, `q` should contain only the locality name (e.g. `\"Amsterdam\"`, not `\"Amsterdam, NL\"`). Use `countryCode` to disambiguate.
|
|
299
299
|
|
|
300
300
|
### Examples
|
|
301
301
|
|
|
@@ -312,7 +312,7 @@ api_instance = Zernio::AdTargetingApi.new
|
|
|
312
312
|
account_id = 'account_id_example' # String | Social account ID (a connected account on the target ad platform).
|
|
313
313
|
q = 'q_example' # String | Search query. For geo, the locality name only (no region/country suffix).
|
|
314
314
|
opts = {
|
|
315
|
-
dimension: 'geo', # String | What to search. `geo` resolves locations (scope further with `geoType`), `interest`/`behavior` resolve audience entities, `income` resolves income-tier options, `workPosition`/`workEmployer`/`workIndustry` resolve Meta work demographics. Defaults to `interest` for backward compatibility with the deprecated /v1/ads/interests alias.
|
|
315
|
+
dimension: 'geo', # String | What to search. `geo` resolves locations (scope further with `geoType`), `interest`/`behavior` resolve audience entities, `income` resolves income-tier options, `language` resolves Google's targetable language_constant table (Google only), `workPosition`/`workEmployer`/`workIndustry` resolve Meta work demographics. Defaults to `interest` for backward compatibility with the deprecated /v1/ads/interests alias.
|
|
316
316
|
geo_type: 'all', # String | Only used when `dimension=geo`. The kind of location to resolve. `all` searches every type in one relevance-ranked call. Defaults to `city`.
|
|
317
317
|
country_code: 'country_code_example', # String | ISO 3166-1 alpha-2 country code (e.g. NL) to scope a geo search.
|
|
318
318
|
limit: 56 # Integer | Maximum results to return.
|
|
@@ -351,7 +351,7 @@ end
|
|
|
351
351
|
| ---- | ---- | ----------- | ----- |
|
|
352
352
|
| **account_id** | **String** | Social account ID (a connected account on the target ad platform). | |
|
|
353
353
|
| **q** | **String** | Search query. For geo, the locality name only (no region/country suffix). | |
|
|
354
|
-
| **dimension** | **String** | What to search. `geo` resolves locations (scope further with `geoType`), `interest`/`behavior` resolve audience entities, `income` resolves income-tier options, `workPosition`/`workEmployer`/`workIndustry` resolve Meta work demographics. Defaults to `interest` for backward compatibility with the deprecated /v1/ads/interests alias. | [optional][default to 'interest'] |
|
|
354
|
+
| **dimension** | **String** | What to search. `geo` resolves locations (scope further with `geoType`), `interest`/`behavior` resolve audience entities, `income` resolves income-tier options, `language` resolves Google's targetable language_constant table (Google only), `workPosition`/`workEmployer`/`workIndustry` resolve Meta work demographics. Defaults to `interest` for backward compatibility with the deprecated /v1/ads/interests alias. | [optional][default to 'interest'] |
|
|
355
355
|
| **geo_type** | **String** | Only used when `dimension=geo`. The kind of location to resolve. `all` searches every type in one relevance-ranked call. Defaults to `city`. | [optional][default to 'city'] |
|
|
356
356
|
| **country_code** | **String** | ISO 3166-1 alpha-2 country code (e.g. NL) to scope a geo search. | [optional] |
|
|
357
357
|
| **limit** | **Integer** | Maximum results to return. | [optional][default to 25] |
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Zernio::AddAccountCallouts201Response
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **customer_id** | **String** | | [optional] |
|
|
8
|
+
| **callouts** | [**Array<AddAccountCallouts201ResponseCalloutsInner>**](AddAccountCallouts201ResponseCalloutsInner.md) | | [optional] |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'zernio-sdk'
|
|
14
|
+
|
|
15
|
+
instance = Zernio::AddAccountCallouts201Response.new(
|
|
16
|
+
customer_id: null,
|
|
17
|
+
callouts: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Zernio::AddAccountCallouts201ResponseCalloutsInner
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **asset_id** | **String** | | [optional] |
|
|
8
|
+
| **text** | **String** | | [optional] |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'zernio-sdk'
|
|
14
|
+
|
|
15
|
+
instance = Zernio::AddAccountCallouts201ResponseCalloutsInner.new(
|
|
16
|
+
asset_id: null,
|
|
17
|
+
text: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Zernio::AddAccountCalloutsRequest
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **account_id** | **String** | Zernio SocialAccount id owning the Google Ads connection. | |
|
|
8
|
+
| **customer_id** | **String** | Numeric Google Ads customer id. Only required when the connection has more than one. | [optional] |
|
|
9
|
+
| **callouts** | **Array<String>** | Callout text, 1-25 characters each; up to 20 per request (Google's CalloutAsset limits). | |
|
|
10
|
+
|
|
11
|
+
## Example
|
|
12
|
+
|
|
13
|
+
```ruby
|
|
14
|
+
require 'zernio-sdk'
|
|
15
|
+
|
|
16
|
+
instance = Zernio::AddAccountCalloutsRequest.new(
|
|
17
|
+
account_id: null,
|
|
18
|
+
customer_id: null,
|
|
19
|
+
callouts: null
|
|
20
|
+
)
|
|
21
|
+
```
|
|
22
|
+
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
| **gender** | **String** | Applied on Meta, TikTok and Pinterest. Ignored on Google, LinkedIn and X. | [optional] |
|
|
10
10
|
| **languages** | **Array<String>** | Meta locale ids (numeric), passed through as given. | [optional] |
|
|
11
11
|
| **countries** | **Array<String>** | ISO country codes. Required for TikTok boosts (TikTok's ad group requires location_ids); optional on other platforms. | [optional] |
|
|
12
|
-
| **regions** | [**Array<
|
|
12
|
+
| **regions** | [**Array<UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner>**](UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner.md) | Region/state targeting. `key` from /v1/ads/targeting/search?dimension=geo&geoType=region. | [optional] |
|
|
13
13
|
| **cities** | [**Array<BoostPostRequestTargetingCitiesInner>**](BoostPostRequestTargetingCitiesInner.md) | City targeting. Optional `radius` + `distanceUnit` extend beyond the city limits (both set together, Meta only). | [optional] |
|
|
14
|
-
| **zips** | [**Array<
|
|
15
|
-
| **metros** | [**Array<
|
|
14
|
+
| **zips** | [**Array<UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner>**](UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner.md) | Postal/ZIP targeting. `key` is the platform's postal location ID (e.g. Meta `US:94304`). | [optional] |
|
|
15
|
+
| **metros** | [**Array<UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner>**](UpdateCampaignTargetingRequestTargetingLocationsOneOfRegionsInner.md) | DMA / metro-area targeting. `key` is the platform's metro ID (e.g. Meta `DMA:807`). | [optional] |
|
|
16
16
|
| **custom_locations** | [**Array<BoostPostRequestTargetingCustomLocationsInner>**](BoostPostRequestTargetingCustomLocationsInner.md) | Point-radius (lat/lng) targeting (Meta custom_locations). No geo `key` lookup needed. | [optional] |
|
|
17
17
|
| **interests** | [**Array<UpdateAdRequestTargetingInterestsInner>**](UpdateAdRequestTargetingInterestsInner.md) | Interest objects from /v1/ads/interests. Each must include id and name. | [optional] |
|
|
18
18
|
| **advantage_audience** | **Integer** | Meta only. 0 = disabled (default), 1 = enabled. | [optional] |
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Zernio::ChannelPicker
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **team** | [**ChannelPickerTeam**](ChannelPickerTeam.md) | | |
|
|
8
|
+
| **channels** | [**Array<ChannelPickerChannelsInner>**](ChannelPickerChannelsInner.md) | | |
|
|
9
|
+
|
|
10
|
+
## Example
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
require 'zernio-sdk'
|
|
14
|
+
|
|
15
|
+
instance = Zernio::ChannelPicker.new(
|
|
16
|
+
team: null,
|
|
17
|
+
channels: null
|
|
18
|
+
)
|
|
19
|
+
```
|
|
20
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Zernio::ChannelPickerChannelsInner
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **id** | **String** | Channel id (C... or G...), the value to send as channelId on POST | |
|
|
8
|
+
| **name** | **String** | | |
|
|
9
|
+
| **is_private** | **Boolean** | | |
|
|
10
|
+
| **is_member** | **Boolean** | Whether the Zernio bot is already a member of the channel | |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'zernio-sdk'
|
|
16
|
+
|
|
17
|
+
instance = Zernio::ChannelPickerChannelsInner.new(
|
|
18
|
+
id: null,
|
|
19
|
+
name: null,
|
|
20
|
+
is_private: null,
|
|
21
|
+
is_member: null
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Zernio::ChannelPickerTeam
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **id** | **String** | Slack workspace (team) id | [optional] |
|
|
8
|
+
| **name** | **String** | | [optional] |
|
|
9
|
+
| **icon** | **String** | Workspace icon URL | [optional] |
|
|
10
|
+
|
|
11
|
+
## Example
|
|
12
|
+
|
|
13
|
+
```ruby
|
|
14
|
+
require 'zernio-sdk'
|
|
15
|
+
|
|
16
|
+
instance = Zernio::ChannelPickerTeam.new(
|
|
17
|
+
id: null,
|
|
18
|
+
name: null,
|
|
19
|
+
icon: null
|
|
20
|
+
)
|
|
21
|
+
```
|
|
22
|
+
|
data/docs/ConnectApi.md
CHANGED
|
@@ -37,6 +37,7 @@ All URIs are relative to *https://zernio.com/api*
|
|
|
37
37
|
| [**list_instagram_pages**](ConnectApi.md#list_instagram_pages) | **GET** /v1/connect/instagram/select-account | List Pages with a linked Instagram account |
|
|
38
38
|
| [**list_linked_in_organizations**](ConnectApi.md#list_linked_in_organizations) | **GET** /v1/connect/linkedin/organizations | List LinkedIn orgs |
|
|
39
39
|
| [**list_pinterest_boards_for_selection**](ConnectApi.md#list_pinterest_boards_for_selection) | **GET** /v1/connect/pinterest/select-board | List Pinterest boards |
|
|
40
|
+
| [**list_slack_channels**](ConnectApi.md#list_slack_channels) | **GET** /v1/connect/slack | List Slack channels for the channel picker |
|
|
40
41
|
| [**list_snapchat_profiles**](ConnectApi.md#list_snapchat_profiles) | **GET** /v1/connect/snapchat/select-profile | List Snapchat profiles |
|
|
41
42
|
| [**list_whats_app_phone_numbers**](ConnectApi.md#list_whats_app_phone_numbers) | **GET** /v1/connect/whatsapp/select-phone-number | List numbers for selection |
|
|
42
43
|
| [**select_facebook_page**](ConnectApi.md#select_facebook_page) | **POST** /v1/connect/facebook/select-page | Select Facebook page |
|
|
@@ -2433,6 +2434,83 @@ end
|
|
|
2433
2434
|
- **Accept**: application/json
|
|
2434
2435
|
|
|
2435
2436
|
|
|
2437
|
+
## list_slack_channels
|
|
2438
|
+
|
|
2439
|
+
> <ListSlackChannels200Response> list_slack_channels(profile_id, opts)
|
|
2440
|
+
|
|
2441
|
+
List Slack channels for the channel picker
|
|
2442
|
+
|
|
2443
|
+
Serves the channel picker of the Slack connect flow. Slack's OAuth installs the bot into a workspace, not a channel, so after the redirect the caller lists the workspace's channels here and finalizes one with `POST /v1/connect/slack`. Served by a dedicated route that shadows `GET /v1/connect/{platform}` for `slack`. Send exactly one of `pendingDataToken` (first connect: the nonce from the OAuth redirect, bound to the same `profileId`) or `accountId` (add another channel to a workspace already connected: the existing Slack account's workspace token is reused, no re-OAuth). With neither, the endpoint behaves like `GET /v1/connect/{platform}` and returns `authUrl` and `state` to start the OAuth flow. Channels are read live from Slack (`conversations.list`, public and private, archived excluded, up to 2,000). `isMember` says whether the Zernio bot is already in the channel: a public channel is joined automatically on finalize, a private one must be invited (`/invite @Zernio`) first.
|
|
2444
|
+
|
|
2445
|
+
### Examples
|
|
2446
|
+
|
|
2447
|
+
```ruby
|
|
2448
|
+
require 'time'
|
|
2449
|
+
require 'zernio-sdk'
|
|
2450
|
+
# setup authorization
|
|
2451
|
+
Zernio.configure do |config|
|
|
2452
|
+
# Configure Bearer authorization (JWT): bearerAuth
|
|
2453
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
2454
|
+
end
|
|
2455
|
+
|
|
2456
|
+
api_instance = Zernio::ConnectApi.new
|
|
2457
|
+
profile_id = 'profile_id_example' # String | Zernio profile the channel account will belong to. Must match the profile the OAuth flow was started on when `pendingDataToken` is used.
|
|
2458
|
+
opts = {
|
|
2459
|
+
pending_data_token: 'pending_data_token_example', # String | Nonce from the OAuth redirect (first connect).
|
|
2460
|
+
account_id: 'account_id_example', # String | Existing active Slack account (yours or a team member's) whose workspace token is reused.
|
|
2461
|
+
redirect_url: 'redirect_url_example' # String | Start-OAuth mode only: where to send the user after the connect completes. `redirectUrl` is accepted as an alias.
|
|
2462
|
+
}
|
|
2463
|
+
|
|
2464
|
+
begin
|
|
2465
|
+
# List Slack channels for the channel picker
|
|
2466
|
+
result = api_instance.list_slack_channels(profile_id, opts)
|
|
2467
|
+
p result
|
|
2468
|
+
rescue Zernio::ApiError => e
|
|
2469
|
+
puts "Error when calling ConnectApi->list_slack_channels: #{e}"
|
|
2470
|
+
end
|
|
2471
|
+
```
|
|
2472
|
+
|
|
2473
|
+
#### Using the list_slack_channels_with_http_info variant
|
|
2474
|
+
|
|
2475
|
+
This returns an Array which contains the response data, status code and headers.
|
|
2476
|
+
|
|
2477
|
+
> <Array(<ListSlackChannels200Response>, Integer, Hash)> list_slack_channels_with_http_info(profile_id, opts)
|
|
2478
|
+
|
|
2479
|
+
```ruby
|
|
2480
|
+
begin
|
|
2481
|
+
# List Slack channels for the channel picker
|
|
2482
|
+
data, status_code, headers = api_instance.list_slack_channels_with_http_info(profile_id, opts)
|
|
2483
|
+
p status_code # => 2xx
|
|
2484
|
+
p headers # => { ... }
|
|
2485
|
+
p data # => <ListSlackChannels200Response>
|
|
2486
|
+
rescue Zernio::ApiError => e
|
|
2487
|
+
puts "Error when calling ConnectApi->list_slack_channels_with_http_info: #{e}"
|
|
2488
|
+
end
|
|
2489
|
+
```
|
|
2490
|
+
|
|
2491
|
+
### Parameters
|
|
2492
|
+
|
|
2493
|
+
| Name | Type | Description | Notes |
|
|
2494
|
+
| ---- | ---- | ----------- | ----- |
|
|
2495
|
+
| **profile_id** | **String** | Zernio profile the channel account will belong to. Must match the profile the OAuth flow was started on when `pendingDataToken` is used. | |
|
|
2496
|
+
| **pending_data_token** | **String** | Nonce from the OAuth redirect (first connect). | [optional] |
|
|
2497
|
+
| **account_id** | **String** | Existing active Slack account (yours or a team member's) whose workspace token is reused. | [optional] |
|
|
2498
|
+
| **redirect_url** | **String** | Start-OAuth mode only: where to send the user after the connect completes. `redirectUrl` is accepted as an alias. | [optional] |
|
|
2499
|
+
|
|
2500
|
+
### Return type
|
|
2501
|
+
|
|
2502
|
+
[**ListSlackChannels200Response**](ListSlackChannels200Response.md)
|
|
2503
|
+
|
|
2504
|
+
### Authorization
|
|
2505
|
+
|
|
2506
|
+
[bearerAuth](../README.md#bearerAuth)
|
|
2507
|
+
|
|
2508
|
+
### HTTP request headers
|
|
2509
|
+
|
|
2510
|
+
- **Content-Type**: Not defined
|
|
2511
|
+
- **Accept**: application/json
|
|
2512
|
+
|
|
2513
|
+
|
|
2436
2514
|
## list_snapchat_profiles
|
|
2437
2515
|
|
|
2438
2516
|
> <ListSnapchatProfiles200Response> list_snapchat_profiles(x_connect_token, profile_id, temp_token)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Zernio::ConversionAction
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **id** | **String** | Google Ads conversion action id. | |
|
|
8
|
+
| **name** | **String** | | |
|
|
9
|
+
| **type** | **String** | Google's ConversionActionType, e.g. WEBPAGE, UPLOAD_CLICKS. | |
|
|
10
|
+
| **status** | **String** | Google's ConversionActionStatus, e.g. ENABLED, REMOVED, HIDDEN. | |
|
|
11
|
+
| **category** | **String** | Google's ConversionActionCategory, e.g. DEFAULT, PURCHASE, LEAD. | |
|
|
12
|
+
| **tag_snippets** | [**Array<ConversionActionTagSnippetsInner>**](ConversionActionTagSnippetsInner.md) | The code a customer pastes onto their site. Present for types Google generates a snippet for (e.g. WEBPAGE); empty otherwise. | |
|
|
13
|
+
|
|
14
|
+
## Example
|
|
15
|
+
|
|
16
|
+
```ruby
|
|
17
|
+
require 'zernio-sdk'
|
|
18
|
+
|
|
19
|
+
instance = Zernio::ConversionAction.new(
|
|
20
|
+
id: null,
|
|
21
|
+
name: null,
|
|
22
|
+
type: null,
|
|
23
|
+
status: null,
|
|
24
|
+
category: null,
|
|
25
|
+
tag_snippets: null
|
|
26
|
+
)
|
|
27
|
+
```
|
|
28
|
+
|