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.
@@ -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
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Zernio
14
- VERSION = '0.0.937'
14
+ VERSION = '0.0.939'
15
15
  end
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, including a Page selected on a metaads business-login connection. LinkedIn: forms owned by the ad account's
52512
- Company Page. Pass `adAccountId` (LinkedIn forms are org-owned).
52513
- Requires the Ads add-on.
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 Facebook, Meta ads business-login or LinkedIn ads account ID." }
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 (a
52543
- facebook account or a metaads business-login account with a selected Page)
52544
- (POST /{page-id}/leadgen_forms); the old top-level Meta fields
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 &#x60;GET /v1/ads/campaigns&#x60; to find it. The default projection covers name, status, objective, buying type, bid strategy, budgets, spend cap, schedule and &#x60;issues_info&#x60;. &#x60;fields&#x60; is a raw-passthrough override; unknown fields return Meta&#39;s 400 verbatim. A campaign the resolved connection cannot see comes back as Meta&#39;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 &#x60;learning_stage_info&#x60; (learning-phase status: LEARNING / SUCCESS / FAIL / WAIVING; Meta omits its &#x60;status&#x60; key on paused ad sets), delivery settings, budgets, schedule and targeting. &#x60;fields&#x60; is a raw-passthrough override; unknown fields return Meta&#39;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&#39;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&#39;s public API and must be enabled manually in YouTube&#39;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&#x3D;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&#39;s analytics, inbox and DM history. The two are told apart by the &#x60;@handle&#x60; 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 &#x60;missing_tiktok_permissions&#x60;; connect again and accept every permission on TikTok&#39;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&#x3D;ARCHIVED; LinkedIn state&#x3D;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 &#x60;platformSpecificData&#x60; for both platforms (the shape is selected by the accountId&#39;s platform). Meta: created on the connected Facebook Page (a facebook account or a metaads business-login account with a selected Page) (POST /{page-id}/leadgen_forms); 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&#39;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.
50
+ # Creates a Lead Gen form. The form content goes inside &#x60;platformSpecificData&#x60; for both platforms (the shape is selected by the accountId&#39;s platform). Meta: created on the connected Facebook Page (POST /{page-id}/leadgen_forms), where &#x60;accountId&#x60; may be the &#x60;metaads&#x60; 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&#39;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, including a Page selected on a metaads business-login connection. LinkedIn: forms owned by the ad account&#39;s Company Page. Pass &#x60;adAccountId&#x60; (LinkedIn forms are org-owned). Requires the Ads add-on.
106
- # @param account_id Connected Facebook, Meta ads business-login or LinkedIn ads account ID.
105
+ # Lists the Lead Gen forms owned by the account. Meta: forms on the connected Facebook Page. Pass either the &#x60;metaads&#x60; 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&#39;s Company Page. Pass &#x60;adAccountId&#x60; (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