late-sdk 0.0.106 → 0.0.108
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 +1 -0
- data/docs/AccountsApi.md +6 -2
- data/docs/Ad.md +1 -1
- data/docs/AdCreative.md +36 -0
- data/docs/ListAccounts200Response.md +3 -1
- data/lib/late-sdk/api/accounts_api.rb +20 -2
- data/lib/late-sdk/models/ad.rb +1 -2
- data/lib/late-sdk/models/ad_creative.rb +238 -0
- data/lib/late-sdk/models/list_accounts200_response.rb +14 -4
- data/lib/late-sdk/version.rb +1 -1
- data/lib/late-sdk.rb +1 -0
- data/openapi.yaml +33 -3
- data/spec/api/accounts_api_spec.rb +3 -1
- data/spec/models/ad_creative_spec.rb +90 -0
- data/spec/models/list_accounts200_response_spec.rb +6 -0
- data/zernio-sdk-0.0.108.gem +0 -0
- metadata +6 -2
- data/zernio-sdk-0.0.106.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: b865b2c281e4712804587bdb517d1912a4f1031a96175f66a7f145b9351ca990
|
|
4
|
+
data.tar.gz: db92123f91e4e7c9cfbef9e8a75305b45c6a33b9f3121507acb4b1b6ee20659a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 334b01029da626dafbb0148a916942c2f513340cac631e5c84de28a1e37417b4ea73ac39d1dffa2876633b8209d17a116cf9c14f78bc861b1cc714f659f5984a
|
|
7
|
+
data.tar.gz: 3c69c97e45cf6c9e4aaaf40101dbb37e32f938aacc88e0a538e91f7f3c457c17b1b538247735ca2d75fff47f2e2f5ede6bcc33caf6a27ab4f23578c119dd17eb
|
data/README.md
CHANGED
|
@@ -330,6 +330,7 @@ Class | Method | HTTP request | Description
|
|
|
330
330
|
- [Late::Ad](docs/Ad.md)
|
|
331
331
|
- [Late::AdBudget](docs/AdBudget.md)
|
|
332
332
|
- [Late::AdCampaign](docs/AdCampaign.md)
|
|
333
|
+
- [Late::AdCreative](docs/AdCreative.md)
|
|
333
334
|
- [Late::AdMetrics](docs/AdMetrics.md)
|
|
334
335
|
- [Late::AdSchedule](docs/AdSchedule.md)
|
|
335
336
|
- [Late::AdTreeAdSet](docs/AdTreeAdSet.md)
|
data/docs/AccountsApi.md
CHANGED
|
@@ -384,7 +384,7 @@ end
|
|
|
384
384
|
|
|
385
385
|
List accounts
|
|
386
386
|
|
|
387
|
-
Returns connected social accounts. Only includes accounts within the plan limit by default. Follower data requires analytics add-on.
|
|
387
|
+
Returns connected social accounts. Only includes accounts within the plan limit by default. Follower data requires analytics add-on. Supports optional server-side pagination via page/limit params. When omitted, returns all accounts (backward-compatible).
|
|
388
388
|
|
|
389
389
|
### Examples
|
|
390
390
|
|
|
@@ -401,7 +401,9 @@ api_instance = Late::AccountsApi.new
|
|
|
401
401
|
opts = {
|
|
402
402
|
profile_id: 'profile_id_example', # String | Filter accounts by profile ID
|
|
403
403
|
platform: 'platform_example', # String | Filter accounts by platform (e.g. \"instagram\", \"twitter\").
|
|
404
|
-
include_over_limit: true # Boolean | When true, includes accounts from over-limit profiles.
|
|
404
|
+
include_over_limit: true, # Boolean | When true, includes accounts from over-limit profiles.
|
|
405
|
+
page: 56, # Integer | Page number (1-based). When provided with limit, enables server-side pagination. Omit for all accounts.
|
|
406
|
+
limit: 56 # Integer | Page size. Required alongside page for pagination.
|
|
405
407
|
}
|
|
406
408
|
|
|
407
409
|
begin
|
|
@@ -438,6 +440,8 @@ end
|
|
|
438
440
|
| **profile_id** | **String** | Filter accounts by profile ID | [optional] |
|
|
439
441
|
| **platform** | **String** | Filter accounts by platform (e.g. \"instagram\", \"twitter\"). | [optional] |
|
|
440
442
|
| **include_over_limit** | **Boolean** | When true, includes accounts from over-limit profiles. | [optional][default to false] |
|
|
443
|
+
| **page** | **Integer** | Page number (1-based). When provided with limit, enables server-side pagination. Omit for all accounts. | [optional] |
|
|
444
|
+
| **limit** | **Integer** | Page size. Required alongside page for pagination. | [optional] |
|
|
441
445
|
|
|
442
446
|
### Return type
|
|
443
447
|
|
data/docs/Ad.md
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
| **platform_ad_set_id** | **String** | | [optional] |
|
|
20
20
|
| **campaign_name** | **String** | | [optional] |
|
|
21
21
|
| **ad_set_name** | **String** | | [optional] |
|
|
22
|
-
| **creative** | **
|
|
22
|
+
| **creative** | [**AdCreative**](AdCreative.md) | | [optional] |
|
|
23
23
|
| **targeting** | **Object** | | [optional] |
|
|
24
24
|
| **schedule** | [**AdSchedule**](AdSchedule.md) | | [optional] |
|
|
25
25
|
| **rejection_reason** | **String** | | [optional] |
|
data/docs/AdCreative.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Late::AdCreative
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **thumbnail_url** | **String** | Primary thumbnail/image URL | [optional] |
|
|
8
|
+
| **image_url** | **String** | Alternative image URL | [optional] |
|
|
9
|
+
| **media_urls** | **Array<String>** | All media URLs for this ad (carousel images, multiple assets). Populated for Meta (carousel child_attachments), Google Ads (responsive display marketing_images), and LinkedIn (multi-image posts). | [optional] |
|
|
10
|
+
| **body** | **String** | Ad copy/text | [optional] |
|
|
11
|
+
| **google_headline** | **String** | Google Ads headline | [optional] |
|
|
12
|
+
| **google_description** | **String** | Google Ads description | [optional] |
|
|
13
|
+
| **link_url** | **String** | Destination URL | [optional] |
|
|
14
|
+
| **pinterest_image_url** | **String** | | [optional] |
|
|
15
|
+
| **pinterest_title** | **String** | | [optional] |
|
|
16
|
+
| **pinterest_description** | **String** | | [optional] |
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```ruby
|
|
21
|
+
require 'late-sdk'
|
|
22
|
+
|
|
23
|
+
instance = Late::AdCreative.new(
|
|
24
|
+
thumbnail_url: null,
|
|
25
|
+
image_url: null,
|
|
26
|
+
media_urls: null,
|
|
27
|
+
body: null,
|
|
28
|
+
google_headline: null,
|
|
29
|
+
google_description: null,
|
|
30
|
+
link_url: null,
|
|
31
|
+
pinterest_image_url: null,
|
|
32
|
+
pinterest_title: null,
|
|
33
|
+
pinterest_description: null
|
|
34
|
+
)
|
|
35
|
+
```
|
|
36
|
+
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **accounts** | [**Array<SocialAccount>**](SocialAccount.md) | | [optional] |
|
|
8
8
|
| **has_analytics_access** | **Boolean** | Whether user has analytics add-on access | [optional] |
|
|
9
|
+
| **pagination** | [**Pagination**](Pagination.md) | Only present when page/limit params are provided | [optional] |
|
|
9
10
|
|
|
10
11
|
## Example
|
|
11
12
|
|
|
@@ -14,7 +15,8 @@ require 'late-sdk'
|
|
|
14
15
|
|
|
15
16
|
instance = Late::ListAccounts200Response.new(
|
|
16
17
|
accounts: null,
|
|
17
|
-
has_analytics_access: null
|
|
18
|
+
has_analytics_access: null,
|
|
19
|
+
pagination: null
|
|
18
20
|
)
|
|
19
21
|
```
|
|
20
22
|
|
|
@@ -366,11 +366,13 @@ module Late
|
|
|
366
366
|
end
|
|
367
367
|
|
|
368
368
|
# List accounts
|
|
369
|
-
# Returns connected social accounts. Only includes accounts within the plan limit by default. Follower data requires analytics add-on.
|
|
369
|
+
# Returns connected social accounts. Only includes accounts within the plan limit by default. Follower data requires analytics add-on. Supports optional server-side pagination via page/limit params. When omitted, returns all accounts (backward-compatible).
|
|
370
370
|
# @param [Hash] opts the optional parameters
|
|
371
371
|
# @option opts [String] :profile_id Filter accounts by profile ID
|
|
372
372
|
# @option opts [String] :platform Filter accounts by platform (e.g. \"instagram\", \"twitter\").
|
|
373
373
|
# @option opts [Boolean] :include_over_limit When true, includes accounts from over-limit profiles. (default to false)
|
|
374
|
+
# @option opts [Integer] :page Page number (1-based). When provided with limit, enables server-side pagination. Omit for all accounts.
|
|
375
|
+
# @option opts [Integer] :limit Page size. Required alongside page for pagination.
|
|
374
376
|
# @return [ListAccounts200Response]
|
|
375
377
|
def list_accounts(opts = {})
|
|
376
378
|
data, _status_code, _headers = list_accounts_with_http_info(opts)
|
|
@@ -378,16 +380,30 @@ module Late
|
|
|
378
380
|
end
|
|
379
381
|
|
|
380
382
|
# List accounts
|
|
381
|
-
# Returns connected social accounts. Only includes accounts within the plan limit by default. Follower data requires analytics add-on.
|
|
383
|
+
# Returns connected social accounts. Only includes accounts within the plan limit by default. Follower data requires analytics add-on. Supports optional server-side pagination via page/limit params. When omitted, returns all accounts (backward-compatible).
|
|
382
384
|
# @param [Hash] opts the optional parameters
|
|
383
385
|
# @option opts [String] :profile_id Filter accounts by profile ID
|
|
384
386
|
# @option opts [String] :platform Filter accounts by platform (e.g. \"instagram\", \"twitter\").
|
|
385
387
|
# @option opts [Boolean] :include_over_limit When true, includes accounts from over-limit profiles. (default to false)
|
|
388
|
+
# @option opts [Integer] :page Page number (1-based). When provided with limit, enables server-side pagination. Omit for all accounts.
|
|
389
|
+
# @option opts [Integer] :limit Page size. Required alongside page for pagination.
|
|
386
390
|
# @return [Array<(ListAccounts200Response, Integer, Hash)>] ListAccounts200Response data, response status code and response headers
|
|
387
391
|
def list_accounts_with_http_info(opts = {})
|
|
388
392
|
if @api_client.config.debugging
|
|
389
393
|
@api_client.config.logger.debug 'Calling API: AccountsApi.list_accounts ...'
|
|
390
394
|
end
|
|
395
|
+
if @api_client.config.client_side_validation && !opts[:'page'].nil? && opts[:'page'] < 1
|
|
396
|
+
fail ArgumentError, 'invalid value for "opts[:"page"]" when calling AccountsApi.list_accounts, must be greater than or equal to 1.'
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 100
|
|
400
|
+
fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AccountsApi.list_accounts, must be smaller than or equal to 100.'
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
|
|
404
|
+
fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AccountsApi.list_accounts, must be greater than or equal to 1.'
|
|
405
|
+
end
|
|
406
|
+
|
|
391
407
|
# resource path
|
|
392
408
|
local_var_path = '/v1/accounts'
|
|
393
409
|
|
|
@@ -396,6 +412,8 @@ module Late
|
|
|
396
412
|
query_params[:'profileId'] = opts[:'profile_id'] if !opts[:'profile_id'].nil?
|
|
397
413
|
query_params[:'platform'] = opts[:'platform'] if !opts[:'platform'].nil?
|
|
398
414
|
query_params[:'includeOverLimit'] = opts[:'include_over_limit'] if !opts[:'include_over_limit'].nil?
|
|
415
|
+
query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
|
|
416
|
+
query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
|
|
399
417
|
|
|
400
418
|
# header parameters
|
|
401
419
|
header_params = opts[:header_params] || {}
|
data/lib/late-sdk/models/ad.rb
CHANGED
|
@@ -46,7 +46,6 @@ module Late
|
|
|
46
46
|
|
|
47
47
|
attr_accessor :ad_set_name
|
|
48
48
|
|
|
49
|
-
# Platform-specific creative data
|
|
50
49
|
attr_accessor :creative
|
|
51
50
|
|
|
52
51
|
attr_accessor :targeting
|
|
@@ -136,7 +135,7 @@ module Late
|
|
|
136
135
|
:'platform_ad_set_id' => :'String',
|
|
137
136
|
:'campaign_name' => :'String',
|
|
138
137
|
:'ad_set_name' => :'String',
|
|
139
|
-
:'creative' => :'
|
|
138
|
+
:'creative' => :'AdCreative',
|
|
140
139
|
:'targeting' => :'Object',
|
|
141
140
|
:'schedule' => :'AdSchedule',
|
|
142
141
|
:'rejection_reason' => :'String',
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.1
|
|
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 Late
|
|
17
|
+
# Platform-specific creative data. Fields vary by platform.
|
|
18
|
+
class AdCreative < ApiModelBase
|
|
19
|
+
# Primary thumbnail/image URL
|
|
20
|
+
attr_accessor :thumbnail_url
|
|
21
|
+
|
|
22
|
+
# Alternative image URL
|
|
23
|
+
attr_accessor :image_url
|
|
24
|
+
|
|
25
|
+
# All media URLs for this ad (carousel images, multiple assets). Populated for Meta (carousel child_attachments), Google Ads (responsive display marketing_images), and LinkedIn (multi-image posts).
|
|
26
|
+
attr_accessor :media_urls
|
|
27
|
+
|
|
28
|
+
# Ad copy/text
|
|
29
|
+
attr_accessor :body
|
|
30
|
+
|
|
31
|
+
# Google Ads headline
|
|
32
|
+
attr_accessor :google_headline
|
|
33
|
+
|
|
34
|
+
# Google Ads description
|
|
35
|
+
attr_accessor :google_description
|
|
36
|
+
|
|
37
|
+
# Destination URL
|
|
38
|
+
attr_accessor :link_url
|
|
39
|
+
|
|
40
|
+
attr_accessor :pinterest_image_url
|
|
41
|
+
|
|
42
|
+
attr_accessor :pinterest_title
|
|
43
|
+
|
|
44
|
+
attr_accessor :pinterest_description
|
|
45
|
+
|
|
46
|
+
# Attribute mapping from ruby-style variable name to JSON key.
|
|
47
|
+
def self.attribute_map
|
|
48
|
+
{
|
|
49
|
+
:'thumbnail_url' => :'thumbnailUrl',
|
|
50
|
+
:'image_url' => :'imageUrl',
|
|
51
|
+
:'media_urls' => :'mediaUrls',
|
|
52
|
+
:'body' => :'body',
|
|
53
|
+
:'google_headline' => :'googleHeadline',
|
|
54
|
+
:'google_description' => :'googleDescription',
|
|
55
|
+
:'link_url' => :'linkUrl',
|
|
56
|
+
:'pinterest_image_url' => :'pinterestImageUrl',
|
|
57
|
+
:'pinterest_title' => :'pinterestTitle',
|
|
58
|
+
:'pinterest_description' => :'pinterestDescription'
|
|
59
|
+
}
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Returns attribute mapping this model knows about
|
|
63
|
+
def self.acceptable_attribute_map
|
|
64
|
+
attribute_map
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Returns all the JSON keys this model knows about
|
|
68
|
+
def self.acceptable_attributes
|
|
69
|
+
acceptable_attribute_map.values
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Attribute type mapping.
|
|
73
|
+
def self.openapi_types
|
|
74
|
+
{
|
|
75
|
+
:'thumbnail_url' => :'String',
|
|
76
|
+
:'image_url' => :'String',
|
|
77
|
+
:'media_urls' => :'Array<String>',
|
|
78
|
+
:'body' => :'String',
|
|
79
|
+
:'google_headline' => :'String',
|
|
80
|
+
:'google_description' => :'String',
|
|
81
|
+
:'link_url' => :'String',
|
|
82
|
+
:'pinterest_image_url' => :'String',
|
|
83
|
+
:'pinterest_title' => :'String',
|
|
84
|
+
:'pinterest_description' => :'String'
|
|
85
|
+
}
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# List of attributes with nullable: true
|
|
89
|
+
def self.openapi_nullable
|
|
90
|
+
Set.new([
|
|
91
|
+
])
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Initializes the object
|
|
95
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
96
|
+
def initialize(attributes = {})
|
|
97
|
+
if (!attributes.is_a?(Hash))
|
|
98
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `Late::AdCreative` initialize method"
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
|
102
|
+
acceptable_attribute_map = self.class.acceptable_attribute_map
|
|
103
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
104
|
+
if (!acceptable_attribute_map.key?(k.to_sym))
|
|
105
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `Late::AdCreative`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
|
|
106
|
+
end
|
|
107
|
+
h[k.to_sym] = v
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if attributes.key?(:'thumbnail_url')
|
|
111
|
+
self.thumbnail_url = attributes[:'thumbnail_url']
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
if attributes.key?(:'image_url')
|
|
115
|
+
self.image_url = attributes[:'image_url']
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
if attributes.key?(:'media_urls')
|
|
119
|
+
if (value = attributes[:'media_urls']).is_a?(Array)
|
|
120
|
+
self.media_urls = value
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
if attributes.key?(:'body')
|
|
125
|
+
self.body = attributes[:'body']
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
if attributes.key?(:'google_headline')
|
|
129
|
+
self.google_headline = attributes[:'google_headline']
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
if attributes.key?(:'google_description')
|
|
133
|
+
self.google_description = attributes[:'google_description']
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
if attributes.key?(:'link_url')
|
|
137
|
+
self.link_url = attributes[:'link_url']
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
if attributes.key?(:'pinterest_image_url')
|
|
141
|
+
self.pinterest_image_url = attributes[:'pinterest_image_url']
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
if attributes.key?(:'pinterest_title')
|
|
145
|
+
self.pinterest_title = attributes[:'pinterest_title']
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
if attributes.key?(:'pinterest_description')
|
|
149
|
+
self.pinterest_description = attributes[:'pinterest_description']
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
# Show invalid properties with the reasons. Usually used together with valid?
|
|
154
|
+
# @return Array for valid properties with the reasons
|
|
155
|
+
def list_invalid_properties
|
|
156
|
+
warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
|
|
157
|
+
invalid_properties = Array.new
|
|
158
|
+
invalid_properties
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# Check to see if the all the properties in the model are valid
|
|
162
|
+
# @return true if the model is valid
|
|
163
|
+
def valid?
|
|
164
|
+
warn '[DEPRECATED] the `valid?` method is obsolete'
|
|
165
|
+
true
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
# Checks equality by comparing each attribute.
|
|
169
|
+
# @param [Object] Object to be compared
|
|
170
|
+
def ==(o)
|
|
171
|
+
return true if self.equal?(o)
|
|
172
|
+
self.class == o.class &&
|
|
173
|
+
thumbnail_url == o.thumbnail_url &&
|
|
174
|
+
image_url == o.image_url &&
|
|
175
|
+
media_urls == o.media_urls &&
|
|
176
|
+
body == o.body &&
|
|
177
|
+
google_headline == o.google_headline &&
|
|
178
|
+
google_description == o.google_description &&
|
|
179
|
+
link_url == o.link_url &&
|
|
180
|
+
pinterest_image_url == o.pinterest_image_url &&
|
|
181
|
+
pinterest_title == o.pinterest_title &&
|
|
182
|
+
pinterest_description == o.pinterest_description
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
# @see the `==` method
|
|
186
|
+
# @param [Object] Object to be compared
|
|
187
|
+
def eql?(o)
|
|
188
|
+
self == o
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
# Calculates hash code according to all attributes.
|
|
192
|
+
# @return [Integer] Hash code
|
|
193
|
+
def hash
|
|
194
|
+
[thumbnail_url, image_url, media_urls, body, google_headline, google_description, link_url, pinterest_image_url, pinterest_title, pinterest_description].hash
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# Builds the object from hash
|
|
198
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
199
|
+
# @return [Object] Returns the model itself
|
|
200
|
+
def self.build_from_hash(attributes)
|
|
201
|
+
return nil unless attributes.is_a?(Hash)
|
|
202
|
+
attributes = attributes.transform_keys(&:to_sym)
|
|
203
|
+
transformed_hash = {}
|
|
204
|
+
openapi_types.each_pair do |key, type|
|
|
205
|
+
if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
|
|
206
|
+
transformed_hash["#{key}"] = nil
|
|
207
|
+
elsif type =~ /\AArray<(.*)>/i
|
|
208
|
+
# check to ensure the input is an array given that the attribute
|
|
209
|
+
# is documented as an array but the input is not
|
|
210
|
+
if attributes[attribute_map[key]].is_a?(Array)
|
|
211
|
+
transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
|
|
212
|
+
end
|
|
213
|
+
elsif !attributes[attribute_map[key]].nil?
|
|
214
|
+
transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
new(transformed_hash)
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
# Returns the object in the form of hash
|
|
221
|
+
# @return [Hash] Returns the object in the form of hash
|
|
222
|
+
def to_hash
|
|
223
|
+
hash = {}
|
|
224
|
+
self.class.attribute_map.each_pair do |attr, param|
|
|
225
|
+
value = self.send(attr)
|
|
226
|
+
if value.nil?
|
|
227
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
|
228
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
hash[param] = _to_hash(value)
|
|
232
|
+
end
|
|
233
|
+
hash
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
end
|
|
@@ -20,11 +20,15 @@ module Late
|
|
|
20
20
|
# Whether user has analytics add-on access
|
|
21
21
|
attr_accessor :has_analytics_access
|
|
22
22
|
|
|
23
|
+
# Only present when page/limit params are provided
|
|
24
|
+
attr_accessor :pagination
|
|
25
|
+
|
|
23
26
|
# Attribute mapping from ruby-style variable name to JSON key.
|
|
24
27
|
def self.attribute_map
|
|
25
28
|
{
|
|
26
29
|
:'accounts' => :'accounts',
|
|
27
|
-
:'has_analytics_access' => :'hasAnalyticsAccess'
|
|
30
|
+
:'has_analytics_access' => :'hasAnalyticsAccess',
|
|
31
|
+
:'pagination' => :'pagination'
|
|
28
32
|
}
|
|
29
33
|
end
|
|
30
34
|
|
|
@@ -42,7 +46,8 @@ module Late
|
|
|
42
46
|
def self.openapi_types
|
|
43
47
|
{
|
|
44
48
|
:'accounts' => :'Array<SocialAccount>',
|
|
45
|
-
:'has_analytics_access' => :'Boolean'
|
|
49
|
+
:'has_analytics_access' => :'Boolean',
|
|
50
|
+
:'pagination' => :'Pagination'
|
|
46
51
|
}
|
|
47
52
|
end
|
|
48
53
|
|
|
@@ -77,6 +82,10 @@ module Late
|
|
|
77
82
|
if attributes.key?(:'has_analytics_access')
|
|
78
83
|
self.has_analytics_access = attributes[:'has_analytics_access']
|
|
79
84
|
end
|
|
85
|
+
|
|
86
|
+
if attributes.key?(:'pagination')
|
|
87
|
+
self.pagination = attributes[:'pagination']
|
|
88
|
+
end
|
|
80
89
|
end
|
|
81
90
|
|
|
82
91
|
# Show invalid properties with the reasons. Usually used together with valid?
|
|
@@ -100,7 +109,8 @@ module Late
|
|
|
100
109
|
return true if self.equal?(o)
|
|
101
110
|
self.class == o.class &&
|
|
102
111
|
accounts == o.accounts &&
|
|
103
|
-
has_analytics_access == o.has_analytics_access
|
|
112
|
+
has_analytics_access == o.has_analytics_access &&
|
|
113
|
+
pagination == o.pagination
|
|
104
114
|
end
|
|
105
115
|
|
|
106
116
|
# @see the `==` method
|
|
@@ -112,7 +122,7 @@ module Late
|
|
|
112
122
|
# Calculates hash code according to all attributes.
|
|
113
123
|
# @return [Integer] Hash code
|
|
114
124
|
def hash
|
|
115
|
-
[accounts, has_analytics_access].hash
|
|
125
|
+
[accounts, has_analytics_access, pagination].hash
|
|
116
126
|
end
|
|
117
127
|
|
|
118
128
|
# Builds the object from hash
|
data/lib/late-sdk/version.rb
CHANGED
data/lib/late-sdk.rb
CHANGED
|
@@ -26,6 +26,7 @@ require 'late-sdk/models/activate_sequence200_response'
|
|
|
26
26
|
require 'late-sdk/models/ad'
|
|
27
27
|
require 'late-sdk/models/ad_budget'
|
|
28
28
|
require 'late-sdk/models/ad_campaign'
|
|
29
|
+
require 'late-sdk/models/ad_creative'
|
|
29
30
|
require 'late-sdk/models/ad_metrics'
|
|
30
31
|
require 'late-sdk/models/ad_schedule'
|
|
31
32
|
require 'late-sdk/models/ad_tree_ad_set'
|
data/openapi.yaml
CHANGED
|
@@ -2588,7 +2588,24 @@ components:
|
|
|
2588
2588
|
platformAdSetId: { type: string }
|
|
2589
2589
|
campaignName: { type: string }
|
|
2590
2590
|
adSetName: { type: string }
|
|
2591
|
-
creative:
|
|
2591
|
+
creative:
|
|
2592
|
+
type: object
|
|
2593
|
+
nullable: true
|
|
2594
|
+
description: Platform-specific creative data. Fields vary by platform.
|
|
2595
|
+
properties:
|
|
2596
|
+
thumbnailUrl: { type: string, description: Primary thumbnail/image URL }
|
|
2597
|
+
imageUrl: { type: string, description: Alternative image URL }
|
|
2598
|
+
mediaUrls:
|
|
2599
|
+
type: array
|
|
2600
|
+
items: { type: string }
|
|
2601
|
+
description: All media URLs for this ad (carousel images, multiple assets). Populated for Meta (carousel child_attachments), Google Ads (responsive display marketing_images), and LinkedIn (multi-image posts).
|
|
2602
|
+
body: { type: string, description: Ad copy/text }
|
|
2603
|
+
googleHeadline: { type: string, description: Google Ads headline }
|
|
2604
|
+
googleDescription: { type: string, description: Google Ads description }
|
|
2605
|
+
linkUrl: { type: string, description: Destination URL }
|
|
2606
|
+
pinterestImageUrl: { type: string }
|
|
2607
|
+
pinterestTitle: { type: string }
|
|
2608
|
+
pinterestDescription: { type: string }
|
|
2592
2609
|
targeting: { type: object }
|
|
2593
2610
|
schedule:
|
|
2594
2611
|
type: object
|
|
@@ -5760,7 +5777,9 @@ paths:
|
|
|
5760
5777
|
operationId: listAccounts
|
|
5761
5778
|
tags: [Accounts]
|
|
5762
5779
|
summary: List accounts
|
|
5763
|
-
description:
|
|
5780
|
+
description: |
|
|
5781
|
+
Returns connected social accounts. Only includes accounts within the plan limit by default. Follower data requires analytics add-on.
|
|
5782
|
+
Supports optional server-side pagination via page/limit params. When omitted, returns all accounts (backward-compatible).
|
|
5764
5783
|
parameters:
|
|
5765
5784
|
- name: profileId
|
|
5766
5785
|
in: query
|
|
@@ -5777,9 +5796,17 @@ paths:
|
|
|
5777
5796
|
type: boolean
|
|
5778
5797
|
default: false
|
|
5779
5798
|
description: When true, includes accounts from over-limit profiles.
|
|
5799
|
+
- name: page
|
|
5800
|
+
in: query
|
|
5801
|
+
schema: { type: integer, minimum: 1 }
|
|
5802
|
+
description: Page number (1-based). When provided with limit, enables server-side pagination. Omit for all accounts.
|
|
5803
|
+
- name: limit
|
|
5804
|
+
in: query
|
|
5805
|
+
schema: { type: integer, minimum: 1, maximum: 100 }
|
|
5806
|
+
description: Page size. Required alongside page for pagination.
|
|
5780
5807
|
responses:
|
|
5781
5808
|
'200':
|
|
5782
|
-
description: Accounts
|
|
5809
|
+
description: Accounts (with optional pagination)
|
|
5783
5810
|
content:
|
|
5784
5811
|
application/json:
|
|
5785
5812
|
schema:
|
|
@@ -5791,6 +5818,9 @@ paths:
|
|
|
5791
5818
|
hasAnalyticsAccess:
|
|
5792
5819
|
type: boolean
|
|
5793
5820
|
description: Whether user has analytics add-on access
|
|
5821
|
+
pagination:
|
|
5822
|
+
description: Only present when page/limit params are provided
|
|
5823
|
+
$ref: '#/components/schemas/Pagination'
|
|
5794
5824
|
examples:
|
|
5795
5825
|
example:
|
|
5796
5826
|
value:
|
|
@@ -101,11 +101,13 @@ describe 'AccountsApi' do
|
|
|
101
101
|
|
|
102
102
|
# unit tests for list_accounts
|
|
103
103
|
# List accounts
|
|
104
|
-
# Returns connected social accounts. Only includes accounts within the plan limit by default. Follower data requires analytics add-on.
|
|
104
|
+
# Returns connected social accounts. Only includes accounts within the plan limit by default. Follower data requires analytics add-on. Supports optional server-side pagination via page/limit params. When omitted, returns all accounts (backward-compatible).
|
|
105
105
|
# @param [Hash] opts the optional parameters
|
|
106
106
|
# @option opts [String] :profile_id Filter accounts by profile ID
|
|
107
107
|
# @option opts [String] :platform Filter accounts by platform (e.g. \"instagram\", \"twitter\").
|
|
108
108
|
# @option opts [Boolean] :include_over_limit When true, includes accounts from over-limit profiles.
|
|
109
|
+
# @option opts [Integer] :page Page number (1-based). When provided with limit, enables server-side pagination. Omit for all accounts.
|
|
110
|
+
# @option opts [Integer] :limit Page size. Required alongside page for pagination.
|
|
109
111
|
# @return [ListAccounts200Response]
|
|
110
112
|
describe 'list_accounts test' do
|
|
111
113
|
it 'should work' do
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.1
|
|
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 Late::AdCreative
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Late::AdCreative do
|
|
21
|
+
#let(:instance) { Late::AdCreative.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of AdCreative' do
|
|
24
|
+
it 'should create an instance of AdCreative' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Late::AdCreative)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "thumbnail_url"' 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 "image_url"' 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 "media_urls"' 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 "body"' do
|
|
49
|
+
it 'should work' do
|
|
50
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe 'test attribute "google_headline"' do
|
|
55
|
+
it 'should work' do
|
|
56
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe 'test attribute "google_description"' do
|
|
61
|
+
it 'should work' do
|
|
62
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
describe 'test attribute "link_url"' do
|
|
67
|
+
it 'should work' do
|
|
68
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
describe 'test attribute "pinterest_image_url"' do
|
|
73
|
+
it 'should work' do
|
|
74
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
describe 'test attribute "pinterest_title"' do
|
|
79
|
+
it 'should work' do
|
|
80
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
describe 'test attribute "pinterest_description"' do
|
|
85
|
+
it 'should work' do
|
|
86
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
end
|
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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.108
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- OpenAPI-Generator
|
|
@@ -77,6 +77,7 @@ files:
|
|
|
77
77
|
- docs/AdBudget.md
|
|
78
78
|
- docs/AdCampaign.md
|
|
79
79
|
- docs/AdCampaignsApi.md
|
|
80
|
+
- docs/AdCreative.md
|
|
80
81
|
- docs/AdMetrics.md
|
|
81
82
|
- docs/AdSchedule.md
|
|
82
83
|
- docs/AdTreeAdSet.md
|
|
@@ -864,6 +865,7 @@ files:
|
|
|
864
865
|
- lib/late-sdk/models/ad.rb
|
|
865
866
|
- lib/late-sdk/models/ad_budget.rb
|
|
866
867
|
- lib/late-sdk/models/ad_campaign.rb
|
|
868
|
+
- lib/late-sdk/models/ad_creative.rb
|
|
867
869
|
- lib/late-sdk/models/ad_metrics.rb
|
|
868
870
|
- lib/late-sdk/models/ad_schedule.rb
|
|
869
871
|
- lib/late-sdk/models/ad_tree_ad_set.rb
|
|
@@ -1612,6 +1614,7 @@ files:
|
|
|
1612
1614
|
- spec/models/activate_sequence200_response_spec.rb
|
|
1613
1615
|
- spec/models/ad_budget_spec.rb
|
|
1614
1616
|
- spec/models/ad_campaign_spec.rb
|
|
1617
|
+
- spec/models/ad_creative_spec.rb
|
|
1615
1618
|
- spec/models/ad_metrics_spec.rb
|
|
1616
1619
|
- spec/models/ad_schedule_spec.rb
|
|
1617
1620
|
- spec/models/ad_spec.rb
|
|
@@ -2313,7 +2316,7 @@ files:
|
|
|
2313
2316
|
- spec/models/you_tube_scope_missing_response_scope_status_spec.rb
|
|
2314
2317
|
- spec/models/you_tube_scope_missing_response_spec.rb
|
|
2315
2318
|
- spec/spec_helper.rb
|
|
2316
|
-
- zernio-sdk-0.0.
|
|
2319
|
+
- zernio-sdk-0.0.108.gem
|
|
2317
2320
|
homepage: https://openapi-generator.tech
|
|
2318
2321
|
licenses:
|
|
2319
2322
|
- Unlicense
|
|
@@ -2944,6 +2947,7 @@ test_files:
|
|
|
2944
2947
|
- spec/models/ad_campaign_spec.rb
|
|
2945
2948
|
- spec/models/set_contact_field_value_request_spec.rb
|
|
2946
2949
|
- spec/models/update_ad200_response_spec.rb
|
|
2950
|
+
- spec/models/ad_creative_spec.rb
|
|
2947
2951
|
- spec/models/linked_in_aggregate_analytics_daily_response_analytics_spec.rb
|
|
2948
2952
|
- spec/models/get_comment_automation200_response_automation_spec.rb
|
|
2949
2953
|
- spec/models/get_linked_in_mentions200_response_spec.rb
|
data/zernio-sdk-0.0.106.gem
DELETED
|
Binary file
|