late-sdk 0.0.817 → 0.0.819
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/docs/AdCampaignsApi.md +1 -1
- data/docs/CreateAdCampaignRequest.md +2 -2
- data/docs/CreateAdCreativeRequest.md +1 -1
- data/docs/CreateCustomConversionRequest.md +1 -1
- data/docs/CreateRfPredictionRequest.md +1 -1
- data/docs/CreateValueRuleSetRequest.md +2 -2
- data/docs/GenerateAdPreviewsRequest.md +1 -1
- data/docs/UpdateAdCreativeRequest.md +1 -1
- data/docs/UpdateValueRuleSetRequest.md +1 -1
- data/docs/UploadAdImageRequest.md +2 -2
- data/docs/UploadAdVideoRequest.md +2 -2
- data/lib/zernio-sdk/api/ad_campaigns_api.rb +2 -2
- data/lib/zernio-sdk/models/create_ad_campaign_request.rb +2 -2
- data/lib/zernio-sdk/models/create_ad_creative_request.rb +1 -1
- data/lib/zernio-sdk/models/create_custom_conversion_request.rb +1 -1
- data/lib/zernio-sdk/models/create_rf_prediction_request.rb +1 -1
- data/lib/zernio-sdk/models/create_value_rule_set_request.rb +2 -2
- data/lib/zernio-sdk/models/generate_ad_previews_request.rb +1 -1
- data/lib/zernio-sdk/models/update_ad_creative_request.rb +1 -1
- data/lib/zernio-sdk/models/update_value_rule_set_request.rb +1 -1
- data/lib/zernio-sdk/models/upload_ad_image_request.rb +2 -2
- data/lib/zernio-sdk/models/upload_ad_video_request.rb +2 -2
- data/lib/zernio-sdk/version.rb +1 -1
- data/openapi.yaml +57 -23
- data/spec/api/ad_campaigns_api_spec.rb +1 -1
- data/zernio-sdk-0.0.819.gem +0 -0
- metadata +3 -3
- data/zernio-sdk-0.0.817.gem +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 48642ee1a05e3aba045bae3b8576d01c44f9634ce367147070d3a0a52ea7659e
|
|
4
|
+
data.tar.gz: 5a8367a4fc6adbb050901860aab845ac2de7c0502df4b2ab32cc87e14244d9ec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5092c3e4bebde157d4d8277d2614b9b194a7b858eebdef066217e2e65f79bc9746809753c0e0cd0857dced691e86447c8a2471a5445aa320f62b0e6aa75c006f
|
|
7
|
+
data.tar.gz: 5227df00afbc3c6e75fada2691b0b7783fcba69eeff894064dcd38e3f1eb15f6162717858ec2c2a8807e2994545c033621f15d6daf35143e30308b9299d86beb
|
data/docs/AdCampaignsApi.md
CHANGED
|
@@ -249,7 +249,7 @@ end
|
|
|
249
249
|
|
|
250
250
|
Create a standalone campaign
|
|
251
251
|
|
|
252
|
-
Creates a campaign WITHOUT its first ad set / ad
|
|
252
|
+
Creates a campaign WITHOUT its first ad set / ad, on the platform of the given `accountId`. Ad sets join it later via `existingCampaignId` on the create endpoints. Platform notes: on Meta a budget here is campaign-level (CBO) by definition; omit it for ABO (each ad set carries its own budget), and `specialAdCategories` / `bidStrategy` are Meta-only (400 elsewhere). Google, X and OpenAI require a budget (422 without one; OpenAI accepts only `budgetType: lifetime`). LinkedIn creates the campaign GROUP (our campaign level) and rejects a budget, which lives on the campaign (ad set) level there; it comes back `status: DRAFT`. TikTok campaigns are created without a status and report `ENABLE`. Created `PAUSED` unless `status: ACTIVE` where the platform supports it. **Idempotency:** send an `Idempotency-Key` header to make retries safe.
|
|
253
253
|
|
|
254
254
|
### Examples
|
|
255
255
|
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant)
|
|
8
|
-
| **ad_account_id** | **String** |
|
|
7
|
+
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created. | |
|
|
8
|
+
| **ad_account_id** | **String** | Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...). | |
|
|
9
9
|
| **name** | **String** | | |
|
|
10
10
|
| **goal** | **String** | Mapped to the ODAX objective (same mapping as POST /v1/ads/create). | |
|
|
11
11
|
| **special_ad_categories** | **Array<String>** | | [optional] |
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token and Page. | |
|
|
8
|
-
| **ad_account_id** | **String** |
|
|
8
|
+
| **ad_account_id** | **String** | Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...). | |
|
|
9
9
|
| **headline** | **String** | | |
|
|
10
10
|
| **body** | **String** | Primary text | |
|
|
11
11
|
| **description** | **String** | Link description below the headline; omitted = Meta scrapes the destination's OG description. | [optional] |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **ad_account_id** | **String** |
|
|
7
|
+
| **ad_account_id** | **String** | Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...). | |
|
|
8
8
|
| **name** | **String** | Also the reuse key, together with pixelId. | |
|
|
9
9
|
| **pixel_id** | **String** | Meta pixel id (event_source_id). From GET /v1/accounts/{accountId}/tracking-tags. | |
|
|
10
10
|
| **custom_event_type** | **String** | Meta custom_event_type, e.g. LEAD, PURCHASE, OTHER. | |
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant). | |
|
|
8
|
-
| **ad_account_id** | **String** |
|
|
8
|
+
| **ad_account_id** | **String** | Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...). | |
|
|
9
9
|
| **budget_amount** | **Float** | Whole currency units. Exactly one of budgetAmount / reach. | [optional] |
|
|
10
10
|
| **reach** | **Integer** | Target unique reach. Exactly one of budgetAmount / reach. | [optional] |
|
|
11
11
|
| **start_date** | **Time** | Campaign window start (must be in the future). | |
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant)
|
|
8
|
-
| **ad_account_id** | **String** |
|
|
7
|
+
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created. | |
|
|
8
|
+
| **ad_account_id** | **String** | Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...). | |
|
|
9
9
|
| **name** | **String** | | |
|
|
10
10
|
| **rules** | [**Array<ValueRule>**](ValueRule.md) | Evaluated in order; the first matching rule wins. | |
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **account_id** | **String** | Zernio SocialAccount id used to resolve the Meta token. | |
|
|
8
|
-
| **ad_account_id** | **String** |
|
|
8
|
+
| **ad_account_id** | **String** | Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...). | |
|
|
9
9
|
| **formats** | **Array<String>** | Meta ad_format values, one preview per format. Defaults to [DESKTOP_FEED_STANDARD]. | [optional] |
|
|
10
10
|
| **existing_creative_id** | **String** | Preview an existing ad-account creative by id. Mutually exclusive with creativeSpec. | [optional] |
|
|
11
11
|
| **creative_spec** | **Hash<String, Object>** | Raw Meta creative spec forwarded verbatim to /generatepreviews. Mutually exclusive with existingCreativeId. | [optional] |
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant)
|
|
7
|
+
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created. | |
|
|
8
8
|
| **name** | **String** | | |
|
|
9
9
|
|
|
10
10
|
## Example
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant)
|
|
7
|
+
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created. | |
|
|
8
8
|
| **name** | **String** | Required: the update replaces the whole set. | |
|
|
9
9
|
| **rules** | [**Array<ValueRule>**](ValueRule.md) | The COMPLETE rule list. Omitting a rule deletes it on Meta. | |
|
|
10
10
|
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant)
|
|
8
|
-
| **ad_account_id** | **String** |
|
|
7
|
+
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created. | |
|
|
8
|
+
| **ad_account_id** | **String** | Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...). | |
|
|
9
9
|
| **image_base64** | **String** | Raw base64 image bytes, or a full data URL (the data:image/...;base64, prefix is stripped). | |
|
|
10
10
|
| **filename** | **String** | Optional filename shown in Meta's image library. Defaults to ad_image.jpg. | [optional] |
|
|
11
11
|
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant)
|
|
8
|
-
| **ad_account_id** | **String** |
|
|
7
|
+
| **account_id** | **String** | Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created. | |
|
|
8
|
+
| **ad_account_id** | **String** | Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...). | |
|
|
9
9
|
| **video_url** | **String** | Public https URL of the video; downloaded server-side (SSRF-guarded) before chunked upload. Provide exactly one of videoUrl or videoBase64. | [optional] |
|
|
10
10
|
| **video_base64** | **String** | Raw base64 video bytes, or a full data URL (the data:video/...;base64, prefix is stripped). Capped by Vercel's body limit (~4.5 MB payload). Provide exactly one of videoUrl or videoBase64. | [optional] |
|
|
11
11
|
| **filename** | **String** | Optional filename shown alongside the upload session. Applied only when uploading via videoBase64. | [optional] |
|
|
@@ -237,7 +237,7 @@ module Zernio
|
|
|
237
237
|
end
|
|
238
238
|
|
|
239
239
|
# Create a standalone campaign
|
|
240
|
-
# Creates a campaign WITHOUT its first ad set / ad
|
|
240
|
+
# Creates a campaign WITHOUT its first ad set / ad, on the platform of the given `accountId`. Ad sets join it later via `existingCampaignId` on the create endpoints. Platform notes: on Meta a budget here is campaign-level (CBO) by definition; omit it for ABO (each ad set carries its own budget), and `specialAdCategories` / `bidStrategy` are Meta-only (400 elsewhere). Google, X and OpenAI require a budget (422 without one; OpenAI accepts only `budgetType: lifetime`). LinkedIn creates the campaign GROUP (our campaign level) and rejects a budget, which lives on the campaign (ad set) level there; it comes back `status: DRAFT`. TikTok campaigns are created without a status and report `ENABLE`. Created `PAUSED` unless `status: ACTIVE` where the platform supports it. **Idempotency:** send an `Idempotency-Key` header to make retries safe.
|
|
241
241
|
# @param create_ad_campaign_request [CreateAdCampaignRequest]
|
|
242
242
|
# @param [Hash] opts the optional parameters
|
|
243
243
|
# @option opts [String] :idempotency_key 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.
|
|
@@ -248,7 +248,7 @@ module Zernio
|
|
|
248
248
|
end
|
|
249
249
|
|
|
250
250
|
# Create a standalone campaign
|
|
251
|
-
# Creates a campaign WITHOUT its first ad set / ad
|
|
251
|
+
# Creates a campaign WITHOUT its first ad set / ad, on the platform of the given `accountId`. Ad sets join it later via `existingCampaignId` on the create endpoints. Platform notes: on Meta a budget here is campaign-level (CBO) by definition; omit it for ABO (each ad set carries its own budget), and `specialAdCategories` / `bidStrategy` are Meta-only (400 elsewhere). Google, X and OpenAI require a budget (422 without one; OpenAI accepts only `budgetType: lifetime`). LinkedIn creates the campaign GROUP (our campaign level) and rejects a budget, which lives on the campaign (ad set) level there; it comes back `status: DRAFT`. TikTok campaigns are created without a status and report `ENABLE`. Created `PAUSED` unless `status: ACTIVE` where the platform supports it. **Idempotency:** send an `Idempotency-Key` header to make retries safe.
|
|
252
252
|
# @param create_ad_campaign_request [CreateAdCampaignRequest]
|
|
253
253
|
# @param [Hash] opts the optional parameters
|
|
254
254
|
# @option opts [String] :idempotency_key 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.
|
|
@@ -15,10 +15,10 @@ require 'time'
|
|
|
15
15
|
|
|
16
16
|
module Zernio
|
|
17
17
|
class CreateAdCampaignRequest < ApiModelBase
|
|
18
|
-
# Zernio SocialAccount id (posting or ads variant)
|
|
18
|
+
# Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created.
|
|
19
19
|
attr_accessor :account_id
|
|
20
20
|
|
|
21
|
-
#
|
|
21
|
+
# Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...).
|
|
22
22
|
attr_accessor :ad_account_id
|
|
23
23
|
|
|
24
24
|
attr_accessor :name
|
|
@@ -18,7 +18,7 @@ module Zernio
|
|
|
18
18
|
# Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token and Page.
|
|
19
19
|
attr_accessor :account_id
|
|
20
20
|
|
|
21
|
-
#
|
|
21
|
+
# Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...).
|
|
22
22
|
attr_accessor :ad_account_id
|
|
23
23
|
|
|
24
24
|
attr_accessor :headline
|
|
@@ -15,7 +15,7 @@ require 'time'
|
|
|
15
15
|
|
|
16
16
|
module Zernio
|
|
17
17
|
class CreateCustomConversionRequest < ApiModelBase
|
|
18
|
-
#
|
|
18
|
+
# Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...).
|
|
19
19
|
attr_accessor :ad_account_id
|
|
20
20
|
|
|
21
21
|
# Also the reuse key, together with pixelId.
|
|
@@ -18,7 +18,7 @@ module Zernio
|
|
|
18
18
|
# Zernio SocialAccount id (posting or ads variant).
|
|
19
19
|
attr_accessor :account_id
|
|
20
20
|
|
|
21
|
-
#
|
|
21
|
+
# Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...).
|
|
22
22
|
attr_accessor :ad_account_id
|
|
23
23
|
|
|
24
24
|
# Whole currency units. Exactly one of budgetAmount / reach.
|
|
@@ -15,10 +15,10 @@ require 'time'
|
|
|
15
15
|
|
|
16
16
|
module Zernio
|
|
17
17
|
class CreateValueRuleSetRequest < ApiModelBase
|
|
18
|
-
# Zernio SocialAccount id (posting or ads variant)
|
|
18
|
+
# Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created.
|
|
19
19
|
attr_accessor :account_id
|
|
20
20
|
|
|
21
|
-
#
|
|
21
|
+
# Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...).
|
|
22
22
|
attr_accessor :ad_account_id
|
|
23
23
|
|
|
24
24
|
attr_accessor :name
|
|
@@ -18,7 +18,7 @@ module Zernio
|
|
|
18
18
|
# Zernio SocialAccount id used to resolve the Meta token.
|
|
19
19
|
attr_accessor :account_id
|
|
20
20
|
|
|
21
|
-
#
|
|
21
|
+
# Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...).
|
|
22
22
|
attr_accessor :ad_account_id
|
|
23
23
|
|
|
24
24
|
# Meta ad_format values, one preview per format. Defaults to [DESKTOP_FEED_STANDARD].
|
|
@@ -15,7 +15,7 @@ require 'time'
|
|
|
15
15
|
|
|
16
16
|
module Zernio
|
|
17
17
|
class UpdateAdCreativeRequest < ApiModelBase
|
|
18
|
-
# Zernio SocialAccount id (posting or ads variant)
|
|
18
|
+
# Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created.
|
|
19
19
|
attr_accessor :account_id
|
|
20
20
|
|
|
21
21
|
attr_accessor :name
|
|
@@ -15,7 +15,7 @@ require 'time'
|
|
|
15
15
|
|
|
16
16
|
module Zernio
|
|
17
17
|
class UpdateValueRuleSetRequest < ApiModelBase
|
|
18
|
-
# Zernio SocialAccount id (posting or ads variant)
|
|
18
|
+
# Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created.
|
|
19
19
|
attr_accessor :account_id
|
|
20
20
|
|
|
21
21
|
# Required: the update replaces the whole set.
|
|
@@ -15,10 +15,10 @@ require 'time'
|
|
|
15
15
|
|
|
16
16
|
module Zernio
|
|
17
17
|
class UploadAdImageRequest < ApiModelBase
|
|
18
|
-
# Zernio SocialAccount id (posting or ads variant)
|
|
18
|
+
# Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created.
|
|
19
19
|
attr_accessor :account_id
|
|
20
20
|
|
|
21
|
-
#
|
|
21
|
+
# Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...).
|
|
22
22
|
attr_accessor :ad_account_id
|
|
23
23
|
|
|
24
24
|
# Raw base64 image bytes, or a full data URL (the data:image/...;base64, prefix is stripped).
|
|
@@ -15,10 +15,10 @@ require 'time'
|
|
|
15
15
|
|
|
16
16
|
module Zernio
|
|
17
17
|
class UploadAdVideoRequest < ApiModelBase
|
|
18
|
-
# Zernio SocialAccount id (posting or ads variant)
|
|
18
|
+
# Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created.
|
|
19
19
|
attr_accessor :account_id
|
|
20
20
|
|
|
21
|
-
#
|
|
21
|
+
# Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...).
|
|
22
22
|
attr_accessor :ad_account_id
|
|
23
23
|
|
|
24
24
|
# Public https URL of the video; downloaded server-side (SSRF-guarded) before chunked upload. Provide exactly one of videoUrl or videoBase64.
|
data/lib/zernio-sdk/version.rb
CHANGED
data/openapi.yaml
CHANGED
|
@@ -40605,14 +40605,19 @@ paths:
|
|
|
40605
40605
|
x-resource-group: "ads"
|
|
40606
40606
|
operationId: createAdCampaign
|
|
40607
40607
|
tags: ["Ad Campaigns"]
|
|
40608
|
-
x-platforms: ["meta"]
|
|
40608
|
+
x-platforms: ["meta", "google", "linkedin", "tiktok", "x", "pinterest", "openai"]
|
|
40609
40609
|
summary: Create a standalone campaign
|
|
40610
40610
|
description: |-
|
|
40611
|
-
Creates a campaign WITHOUT its first ad set / ad
|
|
40612
|
-
later via `existingCampaignId` on the create endpoints.
|
|
40613
|
-
|
|
40614
|
-
|
|
40615
|
-
|
|
40611
|
+
Creates a campaign WITHOUT its first ad set / ad, on the platform of the given
|
|
40612
|
+
`accountId`. Ad sets join it later via `existingCampaignId` on the create endpoints.
|
|
40613
|
+
Platform notes: on Meta a budget here is campaign-level (CBO) by definition; omit it
|
|
40614
|
+
for ABO (each ad set carries its own budget), and `specialAdCategories` /
|
|
40615
|
+
`bidStrategy` are Meta-only (400 elsewhere). Google, X and OpenAI require a budget
|
|
40616
|
+
(422 without one; OpenAI accepts only `budgetType: lifetime`). LinkedIn creates the
|
|
40617
|
+
campaign GROUP (our campaign level) and rejects a budget, which lives on the
|
|
40618
|
+
campaign (ad set) level there; it comes back `status: DRAFT`. TikTok campaigns are
|
|
40619
|
+
created without a status and report `ENABLE`. Created `PAUSED` unless
|
|
40620
|
+
`status: ACTIVE` where the platform supports it.
|
|
40616
40621
|
|
|
40617
40622
|
**Idempotency:** send an `Idempotency-Key` header to make retries safe.
|
|
40618
40623
|
security:
|
|
@@ -40636,8 +40641,8 @@ paths:
|
|
|
40636
40641
|
type: object
|
|
40637
40642
|
required: [accountId, adAccountId, name, goal]
|
|
40638
40643
|
properties:
|
|
40639
|
-
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant)
|
|
40640
|
-
adAccountId: { type: string, description: "
|
|
40644
|
+
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created." }
|
|
40645
|
+
adAccountId: { type: string, description: "Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...)." }
|
|
40641
40646
|
name: { type: string, maxLength: 255 }
|
|
40642
40647
|
goal:
|
|
40643
40648
|
type: string
|
|
@@ -40722,6 +40727,8 @@ paths:
|
|
|
40722
40727
|
'400':
|
|
40723
40728
|
description: Invalid input or campaign spans multiple social accounts
|
|
40724
40729
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
40730
|
+
'403':
|
|
40731
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
40725
40732
|
'404':
|
|
40726
40733
|
description: No ads found for this campaign
|
|
40727
40734
|
|
|
@@ -40805,6 +40812,8 @@ paths:
|
|
|
40805
40812
|
platformSpecificData: { type: object }
|
|
40806
40813
|
'400': { description: "Invalid input, or a field the resolved platform does not support at the campaign level (see the support table)" }
|
|
40807
40814
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
40815
|
+
'403':
|
|
40816
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
40808
40817
|
'404': { description: Campaign not found }
|
|
40809
40818
|
'409': { description: "Campaign is ABO — route to /v1/ads/ad-sets/{adSetId} instead" }
|
|
40810
40819
|
'501': { description: Operation not supported on this platform }
|
|
@@ -40914,6 +40923,8 @@ paths:
|
|
|
40914
40923
|
'400': { description: Invalid input }
|
|
40915
40924
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
40916
40925
|
|
|
40926
|
+
'403':
|
|
40927
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
40917
40928
|
/v1/ads/campaigns/{campaignId}/duplicate:
|
|
40918
40929
|
post:
|
|
40919
40930
|
x-resource-group: "ads"
|
|
@@ -41008,6 +41019,8 @@ paths:
|
|
|
41008
41019
|
description: Platform-native response from the copy endpoint (Meta includes ad_object_ids for child copies)
|
|
41009
41020
|
'400': { description: Invalid input }
|
|
41010
41021
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
41022
|
+
'403':
|
|
41023
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
41011
41024
|
'404': { description: Source campaign not found }
|
|
41012
41025
|
'501': { description: Operation not supported on this platform }
|
|
41013
41026
|
|
|
@@ -41069,6 +41082,8 @@ paths:
|
|
|
41069
41082
|
raw: { type: object, description: Meta's native copy response (includes ad_object_ids for child copies) }
|
|
41070
41083
|
'400': { description: Invalid input }
|
|
41071
41084
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
41085
|
+
'403':
|
|
41086
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
41072
41087
|
'404': { description: Source ad set not found }
|
|
41073
41088
|
'501': { description: Only supported on Meta (facebook/instagram) }
|
|
41074
41089
|
|
|
@@ -41124,6 +41139,8 @@ paths:
|
|
|
41124
41139
|
raw: { type: object }
|
|
41125
41140
|
'400': { description: Invalid input }
|
|
41126
41141
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
41142
|
+
'403':
|
|
41143
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
41127
41144
|
'404': { description: Ad not found }
|
|
41128
41145
|
'501': { description: Only supported on Meta (facebook/instagram) }
|
|
41129
41146
|
|
|
@@ -41311,6 +41328,8 @@ paths:
|
|
|
41311
41328
|
platformSpecificData: { type: object }
|
|
41312
41329
|
'400': { description: Invalid input }
|
|
41313
41330
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
41331
|
+
'403':
|
|
41332
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
41314
41333
|
'404': { description: Ad set not found }
|
|
41315
41334
|
'409': { description: "Campaign is CBO — route to /v1/ads/campaigns/{campaignId} instead" }
|
|
41316
41335
|
'422': { description: "bidStrategy is LOWEST_COST_WITH_MIN_ROAS on OpenAI (unsupported: no ROAS-based bidding)" }
|
|
@@ -41406,6 +41425,8 @@ paths:
|
|
|
41406
41425
|
message: { type: string, description: 'Present only where the platform has no ad-set switch and no child ad was actionable' }
|
|
41407
41426
|
'400': { description: Invalid input }
|
|
41408
41427
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
41428
|
+
'403':
|
|
41429
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
41409
41430
|
'404': { description: Ad set not found }
|
|
41410
41431
|
|
|
41411
41432
|
/v1/ads/tree:
|
|
@@ -41692,6 +41713,8 @@ paths:
|
|
|
41692
41713
|
'400':
|
|
41693
41714
|
description: 'Invalid status transition, budget below minimum, or a LinkedIn creative update without imageUrl or videoUrl'
|
|
41694
41715
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
41716
|
+
'403':
|
|
41717
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
41695
41718
|
'404': { $ref: '#/components/responses/NotFound' }
|
|
41696
41719
|
'501': { description: "targeting or creative not supported on the platform (supported on Meta, TikTok, and LinkedIn)" }
|
|
41697
41720
|
'502': { description: "Meta accepted the request then failed to produce the media (upload session, chunk transfer, processing timeout, or a response with no image hash). Inspect `platformError.reason`." }
|
|
@@ -41762,6 +41785,8 @@ paths:
|
|
|
41762
41785
|
message: { type: string, description: "Human-readable summary (present only when skipped)" }
|
|
41763
41786
|
'400': { description: Invalid input }
|
|
41764
41787
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
41788
|
+
'403':
|
|
41789
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
41765
41790
|
'404': { description: Ad not found }
|
|
41766
41791
|
|
|
41767
41792
|
/v1/ads/campaigns/{campaignId}/assets:
|
|
@@ -41842,6 +41867,8 @@ paths:
|
|
|
41842
41867
|
structuredSnippetAssetResourceNames: { type: array, items: { type: string } }
|
|
41843
41868
|
'400': { description: "Invalid input, Google rejected the assets, an unknown customerId (not one of this connection's Google Ads accounts), or a required customerId missing when the connection has multiple Google Ads accounts" }
|
|
41844
41869
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
41870
|
+
'403':
|
|
41871
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
41845
41872
|
'422': { description: "No Google Ads customer accounts on this connection. Reconnect Google Ads." }
|
|
41846
41873
|
'501': { description: Only supported on Google Ads }
|
|
41847
41874
|
|
|
@@ -41933,7 +41960,7 @@ paths:
|
|
|
41933
41960
|
required: [accountId, adAccountId]
|
|
41934
41961
|
properties:
|
|
41935
41962
|
accountId: { type: string, description: "Zernio SocialAccount id used to resolve the Meta token." }
|
|
41936
|
-
adAccountId: { type: string, description: "
|
|
41963
|
+
adAccountId: { type: string, description: "Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...)." }
|
|
41937
41964
|
formats:
|
|
41938
41965
|
type: array
|
|
41939
41966
|
minItems: 1
|
|
@@ -42488,6 +42515,8 @@ paths:
|
|
|
42488
42515
|
responses:
|
|
42489
42516
|
'200': { description: "Updated" }
|
|
42490
42517
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
42518
|
+
'403':
|
|
42519
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
42491
42520
|
'404': { description: "Ad not found" }
|
|
42492
42521
|
'405': { description: "Platform has no click-URL tracking surface" }
|
|
42493
42522
|
'422': { description: "Meta creative cannot be rebuilt (e.g. placement-customized/asset-feed/dark creative)" }
|
|
@@ -42698,7 +42727,7 @@ paths:
|
|
|
42698
42727
|
required: [accountId, adAccountId, startDate, endDate]
|
|
42699
42728
|
properties:
|
|
42700
42729
|
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant)." }
|
|
42701
|
-
adAccountId: { type: string, description: "
|
|
42730
|
+
adAccountId: { type: string, description: "Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...)." }
|
|
42702
42731
|
budgetAmount: { type: number, description: "Whole currency units. Exactly one of budgetAmount / reach." }
|
|
42703
42732
|
reach: { type: integer, description: "Target unique reach. Exactly one of budgetAmount / reach." }
|
|
42704
42733
|
startDate: { type: string, format: date-time, description: "Campaign window start (must be in the future)." }
|
|
@@ -43072,7 +43101,7 @@ paths:
|
|
|
43072
43101
|
required: [accountId, adAccountId, headline, body, linkUrl]
|
|
43073
43102
|
properties:
|
|
43074
43103
|
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token and Page." }
|
|
43075
|
-
adAccountId: { type: string, description: "
|
|
43104
|
+
adAccountId: { type: string, description: "Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...)." }
|
|
43076
43105
|
headline: { type: string, maxLength: 255 }
|
|
43077
43106
|
body: { type: string, description: Primary text }
|
|
43078
43107
|
description: { type: string, maxLength: 255, description: "Link description below the headline; omitted = Meta scrapes the destination's OG description." }
|
|
@@ -43168,7 +43197,7 @@ paths:
|
|
|
43168
43197
|
type: object
|
|
43169
43198
|
required: [accountId, name]
|
|
43170
43199
|
properties:
|
|
43171
|
-
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant)
|
|
43200
|
+
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created." }
|
|
43172
43201
|
name: { type: string, maxLength: 255 }
|
|
43173
43202
|
responses:
|
|
43174
43203
|
'200':
|
|
@@ -43311,8 +43340,8 @@ paths:
|
|
|
43311
43340
|
type: object
|
|
43312
43341
|
required: [accountId, adAccountId, name, rules]
|
|
43313
43342
|
properties:
|
|
43314
|
-
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant)
|
|
43315
|
-
adAccountId: { type: string, description: "
|
|
43343
|
+
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created." }
|
|
43344
|
+
adAccountId: { type: string, description: "Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...)." }
|
|
43316
43345
|
name: { type: string, minLength: 1, maxLength: 255 }
|
|
43317
43346
|
rules:
|
|
43318
43347
|
type: array
|
|
@@ -43402,7 +43431,7 @@ paths:
|
|
|
43402
43431
|
type: object
|
|
43403
43432
|
required: [accountId, name, rules]
|
|
43404
43433
|
properties:
|
|
43405
|
-
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant)
|
|
43434
|
+
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created." }
|
|
43406
43435
|
name: { type: string, minLength: 1, maxLength: 255, description: "Required: the update replaces the whole set." }
|
|
43407
43436
|
rules:
|
|
43408
43437
|
type: array
|
|
@@ -44012,7 +44041,7 @@ paths:
|
|
|
44012
44041
|
description: Missing required fields or invalid values
|
|
44013
44042
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
44014
44043
|
'403':
|
|
44015
|
-
description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
|
|
44044
|
+
description: 'Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans. Also returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
44016
44045
|
'409':
|
|
44017
44046
|
description: |
|
|
44018
44047
|
An identical boost request is already in progress (with or without
|
|
@@ -45069,7 +45098,7 @@ paths:
|
|
|
45069
45098
|
description: 'Missing required fields, invalid values, non-Meta platform used with creatives[] / adSetId, or a Meta validateOnly validation failure (verbatim)'
|
|
45070
45099
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
45071
45100
|
'403':
|
|
45072
|
-
description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
|
|
45101
|
+
description: 'Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans. Also returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
45073
45102
|
'422':
|
|
45074
45103
|
description: Platform ads connection required (TikTok Ads, X Ads) or missing linked account
|
|
45075
45104
|
'502':
|
|
@@ -45468,8 +45497,8 @@ paths:
|
|
|
45468
45497
|
type: object
|
|
45469
45498
|
required: [accountId, adAccountId, imageBase64]
|
|
45470
45499
|
properties:
|
|
45471
|
-
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant)
|
|
45472
|
-
adAccountId: { type: string, description: "
|
|
45500
|
+
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created." }
|
|
45501
|
+
adAccountId: { type: string, description: "Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...)." }
|
|
45473
45502
|
imageBase64: { type: string, description: "Raw base64 image bytes, or a full data URL (the data:image/...;base64, prefix is stripped)." }
|
|
45474
45503
|
filename: { type: string, description: "Optional filename shown in Meta's image library. Defaults to ad_image.jpg." }
|
|
45475
45504
|
responses:
|
|
@@ -45560,8 +45589,8 @@ paths:
|
|
|
45560
45589
|
type: object
|
|
45561
45590
|
required: [accountId, adAccountId]
|
|
45562
45591
|
properties:
|
|
45563
|
-
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant)
|
|
45564
|
-
adAccountId: { type: string, description: "
|
|
45592
|
+
accountId: { type: string, description: "Zernio SocialAccount id (posting or ads variant); its platform decides where the campaign is created." }
|
|
45593
|
+
adAccountId: { type: string, description: "Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...)." }
|
|
45565
45594
|
videoUrl: { type: string, description: "Public https URL of the video; downloaded server-side (SSRF-guarded) before chunked upload. Provide exactly one of videoUrl or videoBase64." }
|
|
45566
45595
|
videoBase64: { type: string, description: "Raw base64 video bytes, or a full data URL (the data:video/...;base64, prefix is stripped). Capped by Vercel's body limit (~4.5 MB payload). Provide exactly one of videoUrl or videoBase64." }
|
|
45567
45596
|
filename: { type: string, description: "Optional filename shown alongside the upload session. Applied only when uploading via videoBase64." }
|
|
@@ -47759,6 +47788,8 @@ paths:
|
|
|
47759
47788
|
description: Ad(s) created and submitted for review
|
|
47760
47789
|
'400': { description: Invalid input }
|
|
47761
47790
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
47791
|
+
'403':
|
|
47792
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
47762
47793
|
'404': { description: Account not found }
|
|
47763
47794
|
'422': { description: "No Facebook Page resolved for the account" }
|
|
47764
47795
|
'502': { description: "Meta accepted the request then failed to produce the media (upload session, chunk transfer, processing timeout, or a response with no image hash). Inspect `platformError.reason`." }
|
|
@@ -47799,6 +47830,8 @@ paths:
|
|
|
47799
47830
|
description: Ad(s) created and submitted for review
|
|
47800
47831
|
'400': { description: Invalid input }
|
|
47801
47832
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
47833
|
+
'403':
|
|
47834
|
+
description: 'Returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
47802
47835
|
'404': { description: Account not found }
|
|
47803
47836
|
'422': { description: "No Facebook Page resolved for the account" }
|
|
47804
47837
|
'502': { description: "Meta accepted the request then failed to produce the media (upload session, chunk transfer, processing timeout, or a response with no image hash). Inspect `platformError.reason`." }
|
|
@@ -47861,7 +47894,8 @@ paths:
|
|
|
47861
47894
|
multi: '#/components/schemas/CtwaMultiResponse'
|
|
47862
47895
|
'400': { description: Invalid body. }
|
|
47863
47896
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
47864
|
-
'403':
|
|
47897
|
+
'403':
|
|
47898
|
+
description: 'Forbidden. Also returned with code `ads_allowance_exceeded` when the team has no payment method on file and has reached the 500 free live ads: add a card to resume.'
|
|
47865
47899
|
'404': { description: SocialAccount not found. }
|
|
47866
47900
|
'422':
|
|
47867
47901
|
description: Page is not connected to a verified WhatsApp number.
|
|
@@ -47929,7 +47963,7 @@ paths:
|
|
|
47929
47963
|
type: object
|
|
47930
47964
|
required: [adAccountId, name, pixelId, customEventType, rule]
|
|
47931
47965
|
properties:
|
|
47932
|
-
adAccountId: { type: string, description: "
|
|
47966
|
+
adAccountId: { type: string, description: "Platform ad account id (Meta act_<n>, Google customer id, LinkedIn account id, ...)." }
|
|
47933
47967
|
name: { type: string, maxLength: 255, description: "Also the reuse key, together with pixelId." }
|
|
47934
47968
|
pixelId: { type: string, description: "Meta pixel id (event_source_id). From GET /v1/accounts/{accountId}/tracking-tags." }
|
|
47935
47969
|
customEventType: { type: string, description: "Meta custom_event_type, e.g. LEAD, PURCHASE, OTHER." }
|
|
@@ -72,7 +72,7 @@ describe 'AdCampaignsApi' do
|
|
|
72
72
|
|
|
73
73
|
# unit tests for create_ad_campaign
|
|
74
74
|
# Create a standalone campaign
|
|
75
|
-
# Creates a campaign WITHOUT its first ad set / ad
|
|
75
|
+
# Creates a campaign WITHOUT its first ad set / ad, on the platform of the given `accountId`. Ad sets join it later via `existingCampaignId` on the create endpoints. Platform notes: on Meta a budget here is campaign-level (CBO) by definition; omit it for ABO (each ad set carries its own budget), and `specialAdCategories` / `bidStrategy` are Meta-only (400 elsewhere). Google, X and OpenAI require a budget (422 without one; OpenAI accepts only `budgetType: lifetime`). LinkedIn creates the campaign GROUP (our campaign level) and rejects a budget, which lives on the campaign (ad set) level there; it comes back `status: DRAFT`. TikTok campaigns are created without a status and report `ENABLE`. Created `PAUSED` unless `status: ACTIVE` where the platform supports it. **Idempotency:** send an `Idempotency-Key` header to make retries safe.
|
|
76
76
|
# @param create_ad_campaign_request
|
|
77
77
|
# @param [Hash] opts the optional parameters
|
|
78
78
|
# @option opts [String] :idempotency_key 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.
|
|
Binary file
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: late-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.819
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- OpenAPI-Generator
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-09-
|
|
11
|
+
date: 2026-09-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: typhoeus
|
|
@@ -5557,7 +5557,7 @@ files:
|
|
|
5557
5557
|
- spec/models/you_tube_video_retention_response_retention_curve_inner_spec.rb
|
|
5558
5558
|
- spec/models/you_tube_video_retention_response_spec.rb
|
|
5559
5559
|
- spec/spec_helper.rb
|
|
5560
|
-
- zernio-sdk-0.0.
|
|
5560
|
+
- zernio-sdk-0.0.819.gem
|
|
5561
5561
|
- zernio-sdk.gemspec
|
|
5562
5562
|
homepage: https://openapi-generator.tech
|
|
5563
5563
|
licenses:
|
data/zernio-sdk-0.0.817.gem
DELETED
|
Binary file
|