late-sdk 0.0.937 → 0.0.939
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 +6 -0
- data/docs/AdCampaignsApi.md +76 -0
- data/docs/ConnectApi.md +72 -0
- data/docs/CreateYoutubePlaylist201Response.md +18 -0
- data/docs/CreateYoutubePlaylist201ResponsePlaylist.md +28 -0
- data/docs/CreateYoutubePlaylistRequest.md +22 -0
- data/docs/GetAdCampaignDetails200Response.md +18 -0
- data/docs/LeadGenApi.md +8 -8
- data/lib/zernio-sdk/api/ad_campaigns_api.rb +73 -0
- data/lib/zernio-sdk/api/connect_api.rb +74 -0
- data/lib/zernio-sdk/api/lead_gen_api.rb +10 -10
- data/lib/zernio-sdk/models/create_youtube_playlist201_response.rb +164 -0
- data/lib/zernio-sdk/models/create_youtube_playlist201_response_playlist.rb +318 -0
- data/lib/zernio-sdk/models/create_youtube_playlist_request.rb +229 -0
- data/lib/zernio-sdk/models/get_ad_campaign_details200_response.rb +148 -0
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +4 -0
- data/openapi.yaml +113 -9
- data/spec/api/ad_campaigns_api_spec.rb +14 -0
- data/spec/api/connect_api_spec.rb +13 -0
- data/spec/api/lead_gen_api_spec.rb +5 -5
- data/spec/models/create_youtube_playlist201_response_playlist_spec.rb +70 -0
- data/spec/models/create_youtube_playlist201_response_spec.rb +36 -0
- data/spec/models/create_youtube_playlist_request_spec.rb +52 -0
- data/spec/models/get_ad_campaign_details200_response_spec.rb +36 -0
- data/zernio-sdk-0.0.939.gem +0 -0
- metadata +19 -3
- data/zernio-sdk-0.0.937.gem +0 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'date'
|
|
14
|
+
require 'time'
|
|
15
|
+
|
|
16
|
+
module Zernio
|
|
17
|
+
class GetAdCampaignDetails200Response < ApiModelBase
|
|
18
|
+
# Raw Meta campaign; keys are the requested Graph fields.
|
|
19
|
+
attr_accessor :campaign
|
|
20
|
+
|
|
21
|
+
# Attribute mapping from ruby-style variable name to JSON key.
|
|
22
|
+
def self.attribute_map
|
|
23
|
+
{
|
|
24
|
+
:'campaign' => :'campaign'
|
|
25
|
+
}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Returns attribute mapping this model knows about
|
|
29
|
+
def self.acceptable_attribute_map
|
|
30
|
+
attribute_map
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Returns all the JSON keys this model knows about
|
|
34
|
+
def self.acceptable_attributes
|
|
35
|
+
acceptable_attribute_map.values
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Attribute type mapping.
|
|
39
|
+
def self.openapi_types
|
|
40
|
+
{
|
|
41
|
+
:'campaign' => :'Object'
|
|
42
|
+
}
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# List of attributes with nullable: true
|
|
46
|
+
def self.openapi_nullable
|
|
47
|
+
Set.new([
|
|
48
|
+
])
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Initializes the object
|
|
52
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
53
|
+
def initialize(attributes = {})
|
|
54
|
+
if (!attributes.is_a?(Hash))
|
|
55
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::GetAdCampaignDetails200Response` initialize method"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
|
59
|
+
acceptable_attribute_map = self.class.acceptable_attribute_map
|
|
60
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
61
|
+
if (!acceptable_attribute_map.key?(k.to_sym))
|
|
62
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::GetAdCampaignDetails200Response`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
|
|
63
|
+
end
|
|
64
|
+
h[k.to_sym] = v
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if attributes.key?(:'campaign')
|
|
68
|
+
self.campaign = attributes[:'campaign']
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Show invalid properties with the reasons. Usually used together with valid?
|
|
73
|
+
# @return Array for valid properties with the reasons
|
|
74
|
+
def list_invalid_properties
|
|
75
|
+
warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
|
|
76
|
+
invalid_properties = Array.new
|
|
77
|
+
invalid_properties
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Check to see if the all the properties in the model are valid
|
|
81
|
+
# @return true if the model is valid
|
|
82
|
+
def valid?
|
|
83
|
+
warn '[DEPRECATED] the `valid?` method is obsolete'
|
|
84
|
+
true
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Checks equality by comparing each attribute.
|
|
88
|
+
# @param [Object] Object to be compared
|
|
89
|
+
def ==(o)
|
|
90
|
+
return true if self.equal?(o)
|
|
91
|
+
self.class == o.class &&
|
|
92
|
+
campaign == o.campaign
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# @see the `==` method
|
|
96
|
+
# @param [Object] Object to be compared
|
|
97
|
+
def eql?(o)
|
|
98
|
+
self == o
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Calculates hash code according to all attributes.
|
|
102
|
+
# @return [Integer] Hash code
|
|
103
|
+
def hash
|
|
104
|
+
[campaign].hash
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Builds the object from hash
|
|
108
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
109
|
+
# @return [Object] Returns the model itself
|
|
110
|
+
def self.build_from_hash(attributes)
|
|
111
|
+
return nil unless attributes.is_a?(Hash)
|
|
112
|
+
attributes = attributes.transform_keys(&:to_sym)
|
|
113
|
+
transformed_hash = {}
|
|
114
|
+
openapi_types.each_pair do |key, type|
|
|
115
|
+
if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
|
|
116
|
+
transformed_hash["#{key}"] = nil
|
|
117
|
+
elsif type =~ /\AArray<(.*)>/i
|
|
118
|
+
# check to ensure the input is an array given that the attribute
|
|
119
|
+
# is documented as an array but the input is not
|
|
120
|
+
if attributes[attribute_map[key]].is_a?(Array)
|
|
121
|
+
transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
|
|
122
|
+
end
|
|
123
|
+
elsif !attributes[attribute_map[key]].nil?
|
|
124
|
+
transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
new(transformed_hash)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# Returns the object in the form of hash
|
|
131
|
+
# @return [Hash] Returns the object in the form of hash
|
|
132
|
+
def to_hash
|
|
133
|
+
hash = {}
|
|
134
|
+
self.class.attribute_map.each_pair do |attr, param|
|
|
135
|
+
value = self.send(attr)
|
|
136
|
+
if value.nil?
|
|
137
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
|
138
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
hash[param] = _to_hash(value)
|
|
142
|
+
end
|
|
143
|
+
hash
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
end
|
data/lib/zernio-sdk/version.rb
CHANGED
data/lib/zernio-sdk.rb
CHANGED
|
@@ -445,6 +445,9 @@ require 'zernio-sdk/models/create_whats_app_template_request_library_template_bu
|
|
|
445
445
|
require 'zernio-sdk/models/create_workflow200_response'
|
|
446
446
|
require 'zernio-sdk/models/create_workflow200_response_workflow'
|
|
447
447
|
require 'zernio-sdk/models/create_workflow_request'
|
|
448
|
+
require 'zernio-sdk/models/create_youtube_playlist201_response'
|
|
449
|
+
require 'zernio-sdk/models/create_youtube_playlist201_response_playlist'
|
|
450
|
+
require 'zernio-sdk/models/create_youtube_playlist_request'
|
|
448
451
|
require 'zernio-sdk/models/crosspost_discord_message200_response'
|
|
449
452
|
require 'zernio-sdk/models/ctwa_ad_request_body'
|
|
450
453
|
require 'zernio-sdk/models/ctwa_ad_request_body_cities_inner'
|
|
@@ -589,6 +592,7 @@ require 'zernio-sdk/models/get_ad_account_finance200_response'
|
|
|
589
592
|
require 'zernio-sdk/models/get_ad_account_finance200_response_funding_source'
|
|
590
593
|
require 'zernio-sdk/models/get_ad_analytics202_response'
|
|
591
594
|
require 'zernio-sdk/models/get_ad_audience200_response'
|
|
595
|
+
require 'zernio-sdk/models/get_ad_campaign_details200_response'
|
|
592
596
|
require 'zernio-sdk/models/get_ad_comments200_response'
|
|
593
597
|
require 'zernio-sdk/models/get_ad_comments200_response_meta'
|
|
594
598
|
require 'zernio-sdk/models/get_ad_comments200_response_pagination'
|
data/openapi.yaml
CHANGED
|
@@ -25738,6 +25738,74 @@ paths:
|
|
|
25738
25738
|
'400': { description: Not a YouTube account }
|
|
25739
25739
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
25740
25740
|
'404': { description: Account not found }
|
|
25741
|
+
post:
|
|
25742
|
+
operationId: createYoutubePlaylist
|
|
25743
|
+
x-resource-group: "accounts"
|
|
25744
|
+
tags: [Connect]
|
|
25745
|
+
summary: Create YouTube playlist
|
|
25746
|
+
description: >
|
|
25747
|
+
Creates an empty playlist on the connected YouTube channel. Requires a title;
|
|
25748
|
+
privacy defaults to private. Returns the same playlist shape as the list endpoint.
|
|
25749
|
+
Pass the returned playlist.id as platformSpecificData.playlistId when publishing
|
|
25750
|
+
a video. Does not change the account's default playlist.
|
|
25751
|
+
Requires the youtube or youtube.force-ssl OAuth scope. Costs 50 YouTube quota units.
|
|
25752
|
+
This operation is not idempotent and is not automatically retried: repeating a
|
|
25753
|
+
request can create another playlist, including after a timeout. List playlists
|
|
25754
|
+
before retrying an ambiguous failure. Official series settings are not exposed
|
|
25755
|
+
by YouTube's public API and must be enabled manually in YouTube's desktop playlist settings.
|
|
25756
|
+
parameters:
|
|
25757
|
+
- name: accountId
|
|
25758
|
+
in: path
|
|
25759
|
+
required: true
|
|
25760
|
+
schema: { type: string }
|
|
25761
|
+
requestBody:
|
|
25762
|
+
required: true
|
|
25763
|
+
content:
|
|
25764
|
+
application/json:
|
|
25765
|
+
schema:
|
|
25766
|
+
type: object
|
|
25767
|
+
required: [title]
|
|
25768
|
+
properties:
|
|
25769
|
+
title: { type: string, minLength: 1, description: "Playlist title. Leading and trailing whitespace is removed." }
|
|
25770
|
+
description: { type: string, description: "Optional playlist description." }
|
|
25771
|
+
privacy: { type: string, enum: [private, public, unlisted], default: private }
|
|
25772
|
+
example:
|
|
25773
|
+
title: "Tutorials"
|
|
25774
|
+
description: "Step-by-step video tutorials"
|
|
25775
|
+
privacy: "private"
|
|
25776
|
+
responses:
|
|
25777
|
+
'201':
|
|
25778
|
+
description: Playlist created
|
|
25779
|
+
content:
|
|
25780
|
+
application/json:
|
|
25781
|
+
schema:
|
|
25782
|
+
type: object
|
|
25783
|
+
required: [playlist]
|
|
25784
|
+
properties:
|
|
25785
|
+
playlist:
|
|
25786
|
+
type: object
|
|
25787
|
+
required: [id, title, description, privacy, itemCount, thumbnailUrl]
|
|
25788
|
+
properties:
|
|
25789
|
+
id: { type: string }
|
|
25790
|
+
title: { type: string }
|
|
25791
|
+
description: { type: string }
|
|
25792
|
+
privacy: { type: string, enum: [private, public, unlisted] }
|
|
25793
|
+
itemCount: { type: integer }
|
|
25794
|
+
thumbnailUrl: { type: string }
|
|
25795
|
+
example:
|
|
25796
|
+
playlist:
|
|
25797
|
+
id: "PLxxxxxxxxxxxxx"
|
|
25798
|
+
title: "Tutorials"
|
|
25799
|
+
description: "Step-by-step video tutorials"
|
|
25800
|
+
privacy: "private"
|
|
25801
|
+
itemCount: 0
|
|
25802
|
+
thumbnailUrl: ""
|
|
25803
|
+
'400': { $ref: '#/components/responses/BadRequest' }
|
|
25804
|
+
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
25805
|
+
'403': { description: "API key lacks access to the account or YouTube denied permission." }
|
|
25806
|
+
'404': { description: "Account not found or inaccessible." }
|
|
25807
|
+
'429': { description: "YouTube rate limit exceeded." }
|
|
25808
|
+
'502': { description: "YouTube request failed. Check existing playlists before retrying, because the playlist may have been created." }
|
|
25741
25809
|
put:
|
|
25742
25810
|
x-resource-group: "accounts"
|
|
25743
25811
|
operationId: updateYoutubeDefaultPlaylist
|
|
@@ -44182,6 +44250,39 @@ paths:
|
|
|
44182
44250
|
description: "Not a Google Ads account: the connection behind accountId resolves to another platform."
|
|
44183
44251
|
|
|
44184
44252
|
/v1/ads/campaigns/{campaignId}:
|
|
44253
|
+
get:
|
|
44254
|
+
x-resource-group: "ads"
|
|
44255
|
+
operationId: getAdCampaignDetails
|
|
44256
|
+
tags: ["Ad Campaigns"]
|
|
44257
|
+
x-platforms: ["meta"]
|
|
44258
|
+
summary: 'Get live campaign details'
|
|
44259
|
+
description: |-
|
|
44260
|
+
Reads one campaign live from Meta, returned verbatim, so a caller that knows a
|
|
44261
|
+
campaign id no longer has to page `GET /v1/ads/campaigns` to find it. The default
|
|
44262
|
+
projection covers name, status, objective, buying type, bid strategy, budgets,
|
|
44263
|
+
spend cap, schedule and `issues_info`. `fields` is a raw-passthrough override;
|
|
44264
|
+
unknown fields return Meta's 400 verbatim. A campaign the resolved connection
|
|
44265
|
+
cannot see comes back as Meta's own 400, not a 404.
|
|
44266
|
+
security:
|
|
44267
|
+
- bearerAuth: []
|
|
44268
|
+
parameters:
|
|
44269
|
+
- { name: campaignId, in: path, required: true, schema: { type: string }, description: "Meta campaign id (platformCampaignId)." }
|
|
44270
|
+
- { name: accountId, in: query, required: true, schema: { type: string }, description: "Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token." }
|
|
44271
|
+
- { name: fields, in: query, schema: { type: string, example: 'id,name,status,daily_budget' }, description: 'Comma-separated Graph field override. Supports nested {} projections and Graph field modifiers.' }
|
|
44272
|
+
responses:
|
|
44273
|
+
'409': { $ref: '#/components/responses/AccountConnectionRequired' }
|
|
44274
|
+
'404': { $ref: '#/components/responses/AccountUnavailable' }
|
|
44275
|
+
'200':
|
|
44276
|
+
description: The campaign as returned by Meta
|
|
44277
|
+
content:
|
|
44278
|
+
application/json:
|
|
44279
|
+
schema:
|
|
44280
|
+
type: object
|
|
44281
|
+
properties:
|
|
44282
|
+
campaign: { type: object, description: "Raw Meta campaign; keys are the requested Graph fields." }
|
|
44283
|
+
'400': { $ref: '#/components/responses/BadRequest' }
|
|
44284
|
+
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
44285
|
+
'501': { description: Only supported on Meta (facebook/instagram) }
|
|
44185
44286
|
put:
|
|
44186
44287
|
x-resource-group: "ads"
|
|
44187
44288
|
operationId: updateAdCampaign
|
|
@@ -45826,6 +45927,7 @@ paths:
|
|
|
45826
45927
|
'403':
|
|
45827
45928
|
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.'
|
|
45828
45929
|
'404': { $ref: '#/components/responses/NotFound' }
|
|
45930
|
+
'429': { description: "Meta admits one write per 30 seconds to a metered object, ad creatives above all. Zernio waits out two of those windows and replays the call before surfacing this, so it only appears when the object is being edited faster than that. Retry in 30 seconds." }
|
|
45829
45931
|
'422': { description: "The ad has no campaign or ad group on the platform yet, the Google targeting edit asks for something that is create-only (`locations.customLocations`), or a creative field the ad's channel cannot carry: assetGroup on a non-Performance-Max ad, a Google Display field on a Search ad, a pinnedField on a Display headline, or any Google-only field on another platform. A Google creative edit that cannot reach Google at all (the ad has no `platformAdId`, or its ad account cannot be loaded) also returns 422 rather than a 200 that changed nothing." }
|
|
45830
45932
|
'501': { description: "targeting or creative not supported on the platform (supported on Meta, TikTok, and LinkedIn)" }
|
|
45831
45933
|
'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`." }
|
|
@@ -52508,11 +52610,12 @@ paths:
|
|
|
52508
52610
|
summary: List lead forms
|
|
52509
52611
|
description: >
|
|
52510
52612
|
Lists the Lead Gen forms owned by the account. Meta: forms on the
|
|
52511
|
-
connected Facebook Page
|
|
52512
|
-
|
|
52513
|
-
|
|
52613
|
+
connected Facebook Page. Pass either the `metaads` ads connection (the
|
|
52614
|
+
Page is taken from the Facebook account linked to it) or the Facebook
|
|
52615
|
+
account itself. LinkedIn: forms owned by the ad account's Company Page.
|
|
52616
|
+
Pass `adAccountId` (LinkedIn forms are org-owned). Requires the Ads add-on.
|
|
52514
52617
|
parameters:
|
|
52515
|
-
- { name: accountId, in: query, required: true, schema: { type: string }, description: "Connected
|
|
52618
|
+
- { name: accountId, in: query, required: true, schema: { type: string }, description: "Connected Meta ads, Facebook or LinkedIn ads account ID. A Meta ads connection resolves its Page through the Facebook account linked to the same profile." }
|
|
52516
52619
|
- { name: adAccountId, in: query, schema: { type: string }, description: "LinkedIn only: the LinkedIn ad account id (used to resolve the owning organization). Required for LinkedIn." }
|
|
52517
52620
|
- { name: limit, in: query, schema: { type: integer, minimum: 1, maximum: 100, default: 25 } }
|
|
52518
52621
|
- { name: cursor, in: query, schema: { type: string } }
|
|
@@ -52539,9 +52642,10 @@ paths:
|
|
|
52539
52642
|
description: >
|
|
52540
52643
|
Creates a Lead Gen form. The form content goes inside
|
|
52541
52644
|
`platformSpecificData` for both platforms (the shape is selected by the
|
|
52542
|
-
accountId's platform). Meta: created on the connected Facebook Page
|
|
52543
|
-
|
|
52544
|
-
(
|
|
52645
|
+
accountId's platform). Meta: created on the connected Facebook Page
|
|
52646
|
+
(POST /{page-id}/leadgen_forms), where `accountId` may be the `metaads`
|
|
52647
|
+
ads connection (its Page comes from the Facebook account linked to the
|
|
52648
|
+
same profile) or the Facebook account itself; the old top-level Meta fields
|
|
52545
52649
|
(questions, thankYou*, contextCard, …) are DEPRECATED but still
|
|
52546
52650
|
accepted while platformSpecificData is absent; mixing both shapes is
|
|
52547
52651
|
a 400. LinkedIn: created on the ad account's Company Page. NOT
|
|
@@ -52700,7 +52804,7 @@ paths:
|
|
|
52700
52804
|
accountId manages: a form on any other Page is a 404, never a read.
|
|
52701
52805
|
parameters:
|
|
52702
52806
|
- { name: formId, in: path, required: true, schema: { type: string }, description: "Numeric form id (Meta leadgen_form id or LinkedIn leadForm id)." }
|
|
52703
|
-
- { name: accountId, in: query, required: true, schema: { type: string }, description: "Connected facebook or linkedin ads account id (selects the platform)." }
|
|
52807
|
+
- { name: accountId, in: query, required: true, schema: { type: string }, description: "Connected Meta ads, facebook or linkedin ads account id (selects the platform). A Meta ads connection resolves its Page through the Facebook account linked to the same profile." }
|
|
52704
52808
|
- name: fields
|
|
52705
52809
|
in: query
|
|
52706
52810
|
schema: { type: string, maxLength: 2000 }
|
|
@@ -52739,7 +52843,7 @@ paths:
|
|
|
52739
52843
|
description: "Neither platform hard-deletes a form; this archives it (Meta status=ARCHIVED; LinkedIn state=ARCHIVED via PARTIAL_UPDATE). Meta forms must belong to the Page the accountId manages."
|
|
52740
52844
|
parameters:
|
|
52741
52845
|
- { name: formId, in: path, required: true, schema: { type: string }, description: "Numeric form id (Meta leadgen_form id or LinkedIn leadForm id)." }
|
|
52742
|
-
- { name: accountId, in: query, required: true, schema: { type: string }, description: "Connected facebook or linkedin ads account id (selects the platform)." }
|
|
52846
|
+
- { name: accountId, in: query, required: true, schema: { type: string }, description: "Connected Meta ads, facebook or linkedin ads account id (selects the platform). A Meta ads connection resolves its Page through the Facebook account linked to the same profile." }
|
|
52743
52847
|
responses:
|
|
52744
52848
|
'200':
|
|
52745
52849
|
description: Archived.
|
|
@@ -237,6 +237,20 @@ describe 'AdCampaignsApi' do
|
|
|
237
237
|
end
|
|
238
238
|
end
|
|
239
239
|
|
|
240
|
+
# unit tests for get_ad_campaign_details
|
|
241
|
+
# Get live campaign details
|
|
242
|
+
# Reads one campaign live from Meta, returned verbatim, so a caller that knows a campaign id no longer has to page `GET /v1/ads/campaigns` to find it. The default projection covers name, status, objective, buying type, bid strategy, budgets, spend cap, schedule and `issues_info`. `fields` is a raw-passthrough override; unknown fields return Meta's 400 verbatim. A campaign the resolved connection cannot see comes back as Meta's own 400, not a 404.
|
|
243
|
+
# @param campaign_id Meta campaign id (platformCampaignId).
|
|
244
|
+
# @param account_id Zernio SocialAccount id (posting or ads variant) used to resolve the Meta token.
|
|
245
|
+
# @param [Hash] opts the optional parameters
|
|
246
|
+
# @option opts [String] :fields Comma-separated Graph field override. Supports nested {} projections and Graph field modifiers.
|
|
247
|
+
# @return [GetAdCampaignDetails200Response]
|
|
248
|
+
describe 'get_ad_campaign_details test' do
|
|
249
|
+
it 'should work' do
|
|
250
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
|
|
240
254
|
# unit tests for get_ad_set_details
|
|
241
255
|
# Get live ad-set details
|
|
242
256
|
# Reads the ad set live from Meta, returned verbatim. The default projection includes `learning_stage_info` (learning-phase status: LEARNING / SUCCESS / FAIL / WAIVING; Meta omits its `status` key on paused ad sets), delivery settings, budgets, schedule and targeting. `fields` is a raw-passthrough override; unknown fields return Meta's 400 verbatim.
|
|
@@ -215,6 +215,19 @@ describe 'ConnectApi' do
|
|
|
215
215
|
end
|
|
216
216
|
end
|
|
217
217
|
|
|
218
|
+
# unit tests for create_youtube_playlist
|
|
219
|
+
# Create YouTube playlist
|
|
220
|
+
# Creates an empty playlist on the connected YouTube channel. Requires a title; privacy defaults to private. Returns the same playlist shape as the list endpoint. Pass the returned playlist.id as platformSpecificData.playlistId when publishing a video. Does not change the account's default playlist. Requires the youtube or youtube.force-ssl OAuth scope. Costs 50 YouTube quota units. This operation is not idempotent and is not automatically retried: repeating a request can create another playlist, including after a timeout. List playlists before retrying an ambiguous failure. Official series settings are not exposed by YouTube's public API and must be enabled manually in YouTube's desktop playlist settings.
|
|
221
|
+
# @param account_id
|
|
222
|
+
# @param create_youtube_playlist_request
|
|
223
|
+
# @param [Hash] opts the optional parameters
|
|
224
|
+
# @return [CreateYoutubePlaylist201Response]
|
|
225
|
+
describe 'create_youtube_playlist test' do
|
|
226
|
+
it 'should work' do
|
|
227
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
|
|
218
231
|
# unit tests for get_connect_url
|
|
219
232
|
# Get OAuth connect URL
|
|
220
233
|
# Initiate an OAuth connection flow. Returns an authUrl to redirect the user to. Standard flow: Zernio hosts the selection UI, then redirects to your redirect_url. Headless mode (headless=true): user is redirected to your redirect_url with OAuth data for custom UI. Use the platform-specific selection endpoints to complete. TikTok: every connection now goes through the TikTok for Business app. One TikTok account per profile, so connecting on a profile that already holds one replaces it. Reconnecting the SAME account keeps it and all of its history; authorizing a DIFFERENT TikTok account takes the slot over and permanently deletes the previous account's analytics, inbox and DM history. The two are told apart by the `@handle` stored at the last connect, so an account whose handle has been renamed on TikTok since then reads as a different account. An authorization that leaves out a permission the connected account needs changes nothing at all and comes back as `missing_tiktok_permissions`; connect again and accept every permission on TikTok's screen.
|
|
@@ -36,7 +36,7 @@ describe 'LeadGenApi' do
|
|
|
36
36
|
# Archive a lead form
|
|
37
37
|
# Neither platform hard-deletes a form; this archives it (Meta status=ARCHIVED; LinkedIn state=ARCHIVED via PARTIAL_UPDATE). Meta forms must belong to the Page the accountId manages.
|
|
38
38
|
# @param form_id Numeric form id (Meta leadgen_form id or LinkedIn leadForm id).
|
|
39
|
-
# @param account_id Connected facebook or linkedin ads account id (selects the platform).
|
|
39
|
+
# @param account_id Connected Meta ads, facebook or linkedin ads account id (selects the platform). A Meta ads connection resolves its Page through the Facebook account linked to the same profile.
|
|
40
40
|
# @param [Hash] opts the optional parameters
|
|
41
41
|
# @return [ArchiveLeadForm200Response]
|
|
42
42
|
describe 'archive_lead_form test' do
|
|
@@ -47,7 +47,7 @@ describe 'LeadGenApi' do
|
|
|
47
47
|
|
|
48
48
|
# unit tests for create_lead_form
|
|
49
49
|
# Create a lead form
|
|
50
|
-
# Creates a Lead Gen form. The form content goes inside `platformSpecificData` for both platforms (the shape is selected by the accountId's platform). Meta: created on the connected Facebook Page (
|
|
50
|
+
# Creates a Lead Gen form. The form content goes inside `platformSpecificData` for both platforms (the shape is selected by the accountId's platform). Meta: created on the connected Facebook Page (POST /{page-id}/leadgen_forms), where `accountId` may be the `metaads` ads connection (its Page comes from the Facebook account linked to the same profile) or the Facebook account itself; the old top-level Meta fields (questions, thankYou*, contextCard, …) are DEPRECATED but still accepted while platformSpecificData is absent; mixing both shapes is a 400. LinkedIn: created on the ad account's Company Page. NOT idempotent: a retry creates a second form. Meta prefilled question types (EMAIL, PHONE, FULL_NAME, …) must omit label/key; CUSTOM questions require both. LinkedIn exposes only free-text and multiple-choice questions via API (prefilled-from-profile fields are Campaign Manager UI-only). Requires the Ads add-on.
|
|
51
51
|
# @param create_lead_form_request
|
|
52
52
|
# @param [Hash] opts the optional parameters
|
|
53
53
|
# @return [CreateLeadForm200Response]
|
|
@@ -74,7 +74,7 @@ describe 'LeadGenApi' do
|
|
|
74
74
|
# Get a lead form
|
|
75
75
|
# Returns the full form, including the thank-you page, so a form can be diffed against what was created. Meta forms are scoped to the Page the accountId manages: a form on any other Page is a 404, never a read.
|
|
76
76
|
# @param form_id Numeric form id (Meta leadgen_form id or LinkedIn leadForm id).
|
|
77
|
-
# @param account_id Connected facebook or linkedin ads account id (selects the platform).
|
|
77
|
+
# @param account_id Connected Meta ads, facebook or linkedin ads account id (selects the platform). A Meta ads connection resolves its Page through the Facebook account linked to the same profile.
|
|
78
78
|
# @param [Hash] opts the optional parameters
|
|
79
79
|
# @option opts [String] :fields Meta only. A Graph field selection passed through verbatim to GET /{form-id}, replacing the default projection, so fields Meta adds later are reachable without an API change. Field names, commas and {} expansion only; anything else (Graph field modifiers such as .limit(), or characters that could open another query parameter) is a 400. Ownership of the form is verified before the selection runs, so this cannot reach any Page but the one accountId manages. Unknown field names are rejected by Meta as a 400.
|
|
80
80
|
# @return [GetLeadForm200Response]
|
|
@@ -102,8 +102,8 @@ describe 'LeadGenApi' do
|
|
|
102
102
|
|
|
103
103
|
# unit tests for list_lead_forms
|
|
104
104
|
# List lead forms
|
|
105
|
-
# Lists the Lead Gen forms owned by the account. Meta: forms on the connected Facebook Page
|
|
106
|
-
# @param account_id Connected
|
|
105
|
+
# Lists the Lead Gen forms owned by the account. Meta: forms on the connected Facebook Page. Pass either the `metaads` ads connection (the Page is taken from the Facebook account linked to it) or the Facebook account itself. LinkedIn: forms owned by the ad account's Company Page. Pass `adAccountId` (LinkedIn forms are org-owned). Requires the Ads add-on.
|
|
106
|
+
# @param account_id Connected Meta ads, Facebook or LinkedIn ads account ID. A Meta ads connection resolves its Page through the Facebook account linked to the same profile.
|
|
107
107
|
# @param [Hash] opts the optional parameters
|
|
108
108
|
# @option opts [String] :ad_account_id LinkedIn only: the LinkedIn ad account id (used to resolve the owning organization). Required for LinkedIn.
|
|
109
109
|
# @option opts [Integer] :limit
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
require 'date'
|
|
16
|
+
|
|
17
|
+
# Unit tests for Zernio::CreateYoutubePlaylist201ResponsePlaylist
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::CreateYoutubePlaylist201ResponsePlaylist do
|
|
21
|
+
#let(:instance) { Zernio::CreateYoutubePlaylist201ResponsePlaylist.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of CreateYoutubePlaylist201ResponsePlaylist' do
|
|
24
|
+
it 'should create an instance of CreateYoutubePlaylist201ResponsePlaylist' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::CreateYoutubePlaylist201ResponsePlaylist)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "id"' do
|
|
31
|
+
it 'should work' do
|
|
32
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe 'test attribute "title"' do
|
|
37
|
+
it 'should work' do
|
|
38
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe 'test attribute "description"' do
|
|
43
|
+
it 'should work' do
|
|
44
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe 'test attribute "privacy"' do
|
|
49
|
+
it 'should work' do
|
|
50
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
51
|
+
# validator = Petstore::EnumTest::EnumAttributeValidator.new('String', ["private", "public", "unlisted"])
|
|
52
|
+
# validator.allowable_values.each do |value|
|
|
53
|
+
# expect { instance.privacy = value }.not_to raise_error
|
|
54
|
+
# end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
describe 'test attribute "item_count"' do
|
|
59
|
+
it 'should work' do
|
|
60
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe 'test attribute "thumbnail_url"' do
|
|
65
|
+
it 'should work' do
|
|
66
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
require 'date'
|
|
16
|
+
|
|
17
|
+
# Unit tests for Zernio::CreateYoutubePlaylist201Response
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::CreateYoutubePlaylist201Response do
|
|
21
|
+
#let(:instance) { Zernio::CreateYoutubePlaylist201Response.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of CreateYoutubePlaylist201Response' do
|
|
24
|
+
it 'should create an instance of CreateYoutubePlaylist201Response' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::CreateYoutubePlaylist201Response)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "playlist"' do
|
|
31
|
+
it 'should work' do
|
|
32
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
require 'date'
|
|
16
|
+
|
|
17
|
+
# Unit tests for Zernio::CreateYoutubePlaylistRequest
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::CreateYoutubePlaylistRequest do
|
|
21
|
+
#let(:instance) { Zernio::CreateYoutubePlaylistRequest.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of CreateYoutubePlaylistRequest' do
|
|
24
|
+
it 'should create an instance of CreateYoutubePlaylistRequest' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::CreateYoutubePlaylistRequest)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "title"' do
|
|
31
|
+
it 'should work' do
|
|
32
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe 'test attribute "description"' do
|
|
37
|
+
it 'should work' do
|
|
38
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe 'test attribute "privacy"' do
|
|
43
|
+
it 'should work' do
|
|
44
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
45
|
+
# validator = Petstore::EnumTest::EnumAttributeValidator.new('String', ["private", "public", "unlisted"])
|
|
46
|
+
# validator.allowable_values.each do |value|
|
|
47
|
+
# expect { instance.privacy = value }.not_to raise_error
|
|
48
|
+
# end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
require 'date'
|
|
16
|
+
|
|
17
|
+
# Unit tests for Zernio::GetAdCampaignDetails200Response
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::GetAdCampaignDetails200Response do
|
|
21
|
+
#let(:instance) { Zernio::GetAdCampaignDetails200Response.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of GetAdCampaignDetails200Response' do
|
|
24
|
+
it 'should create an instance of GetAdCampaignDetails200Response' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::GetAdCampaignDetails200Response)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "campaign"' do
|
|
31
|
+
it 'should work' do
|
|
32
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
Binary file
|