late-sdk 0.0.903 → 0.0.905
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 +3 -0
- data/docs/AdAccountsApi.md +70 -0
- data/docs/CheckPhoneNumberAvailability200Response.md +2 -0
- data/docs/CreateAdAccount201Response.md +30 -0
- data/docs/CreateAdAccountRequest.md +46 -0
- data/docs/ListPhoneNumberCountries200ResponseCountriesInner.md +2 -0
- data/docs/ListPhoneNumberCountries200ResponseCountriesInnerTypesInner.md +6 -2
- data/docs/PhoneNumbersApi.md +1 -1
- data/docs/SubmitPhoneNumberKyc200Response.md +2 -0
- data/lib/zernio-sdk/api/ad_accounts_api.rb +68 -0
- data/lib/zernio-sdk/api/phone_numbers_api.rb +2 -2
- data/lib/zernio-sdk/models/check_phone_number_availability200_response.rb +11 -1
- data/lib/zernio-sdk/models/create_ad_account201_response.rb +340 -0
- data/lib/zernio-sdk/models/create_ad_account_request.rb +611 -0
- data/lib/zernio-sdk/models/list_phone_number_countries200_response_countries_inner.rb +11 -1
- data/lib/zernio-sdk/models/list_phone_number_countries200_response_countries_inner_types_inner.rb +38 -4
- data/lib/zernio-sdk/models/submit_phone_number_kyc200_response.rb +11 -1
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +2 -0
- data/openapi.yaml +132 -4
- data/spec/api/ad_accounts_api_spec.rb +12 -0
- data/spec/api/phone_numbers_api_spec.rb +1 -1
- data/spec/models/check_phone_number_availability200_response_spec.rb +6 -0
- data/spec/models/create_ad_account201_response_spec.rb +72 -0
- data/spec/models/create_ad_account_request_spec.rb +120 -0
- data/spec/models/list_phone_number_countries200_response_countries_inner_spec.rb +6 -0
- data/spec/models/list_phone_number_countries200_response_countries_inner_types_inner_spec.rb +16 -0
- data/spec/models/submit_phone_number_kyc200_response_spec.rb +6 -0
- data/zernio-sdk-0.0.905.gem +0 -0
- metadata +10 -2
- data/zernio-sdk-0.0.903.gem +0 -0
data/lib/zernio-sdk/models/list_phone_number_countries200_response_countries_inner_types_inner.rb
CHANGED
|
@@ -17,6 +17,7 @@ module Zernio
|
|
|
17
17
|
class ListPhoneNumberCountries200ResponseCountriesInnerTypesInner < ApiModelBase
|
|
18
18
|
attr_accessor :number_type
|
|
19
19
|
|
|
20
|
+
# Null on a `fulfilment: request` type, whose document tier is only known once its requirements are read.
|
|
20
21
|
attr_accessor :tier
|
|
21
22
|
|
|
22
23
|
attr_accessor :needs_kyc
|
|
@@ -33,6 +34,12 @@ module Zernio
|
|
|
33
34
|
|
|
34
35
|
attr_accessor :in_stock
|
|
35
36
|
|
|
37
|
+
# `request`: the carrier stocks this type nowhere and only sources it to order, so it is always a pre-order.
|
|
38
|
+
attr_accessor :fulfilment
|
|
39
|
+
|
|
40
|
+
# Out of stock but orderable anyway. Submit KYC as usual (POST /v1/phone-numbers/kyc) and the carrier sources the number after review, usually about 3 weeks and never guaranteed. Only document tiers (3/4) qualify, and nothing is billed until the number is active.
|
|
41
|
+
attr_accessor :pre_orderable
|
|
42
|
+
|
|
36
43
|
class EnumAttributeValidator
|
|
37
44
|
attr_reader :datatype
|
|
38
45
|
attr_reader :allowable_values
|
|
@@ -65,7 +72,9 @@ module Zernio
|
|
|
65
72
|
:'whatsapp_available' => :'whatsappAvailable',
|
|
66
73
|
:'sms_available' => :'smsAvailable',
|
|
67
74
|
:'calls_available' => :'callsAvailable',
|
|
68
|
-
:'in_stock' => :'inStock'
|
|
75
|
+
:'in_stock' => :'inStock',
|
|
76
|
+
:'fulfilment' => :'fulfilment',
|
|
77
|
+
:'pre_orderable' => :'preOrderable'
|
|
69
78
|
}
|
|
70
79
|
end
|
|
71
80
|
|
|
@@ -89,13 +98,16 @@ module Zernio
|
|
|
89
98
|
:'whatsapp_available' => :'Boolean',
|
|
90
99
|
:'sms_available' => :'Boolean',
|
|
91
100
|
:'calls_available' => :'Boolean',
|
|
92
|
-
:'in_stock' => :'Boolean'
|
|
101
|
+
:'in_stock' => :'Boolean',
|
|
102
|
+
:'fulfilment' => :'String',
|
|
103
|
+
:'pre_orderable' => :'Boolean'
|
|
93
104
|
}
|
|
94
105
|
end
|
|
95
106
|
|
|
96
107
|
# List of attributes with nullable: true
|
|
97
108
|
def self.openapi_nullable
|
|
98
109
|
Set.new([
|
|
110
|
+
:'tier',
|
|
99
111
|
])
|
|
100
112
|
end
|
|
101
113
|
|
|
@@ -146,6 +158,14 @@ module Zernio
|
|
|
146
158
|
if attributes.key?(:'in_stock')
|
|
147
159
|
self.in_stock = attributes[:'in_stock']
|
|
148
160
|
end
|
|
161
|
+
|
|
162
|
+
if attributes.key?(:'fulfilment')
|
|
163
|
+
self.fulfilment = attributes[:'fulfilment']
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
if attributes.key?(:'pre_orderable')
|
|
167
|
+
self.pre_orderable = attributes[:'pre_orderable']
|
|
168
|
+
end
|
|
149
169
|
end
|
|
150
170
|
|
|
151
171
|
# Show invalid properties with the reasons. Usually used together with valid?
|
|
@@ -164,6 +184,8 @@ module Zernio
|
|
|
164
184
|
return false unless number_type_validator.valid?(@number_type)
|
|
165
185
|
tier_validator = EnumAttributeValidator.new('Integer', [1, 2, 3, 4])
|
|
166
186
|
return false unless tier_validator.valid?(@tier)
|
|
187
|
+
fulfilment_validator = EnumAttributeValidator.new('String', ["instant", "request"])
|
|
188
|
+
return false unless fulfilment_validator.valid?(@fulfilment)
|
|
167
189
|
true
|
|
168
190
|
end
|
|
169
191
|
|
|
@@ -187,6 +209,16 @@ module Zernio
|
|
|
187
209
|
@tier = tier
|
|
188
210
|
end
|
|
189
211
|
|
|
212
|
+
# Custom attribute writer method checking allowed values (enum).
|
|
213
|
+
# @param [Object] fulfilment Object to be assigned
|
|
214
|
+
def fulfilment=(fulfilment)
|
|
215
|
+
validator = EnumAttributeValidator.new('String', ["instant", "request"])
|
|
216
|
+
unless validator.valid?(fulfilment)
|
|
217
|
+
fail ArgumentError, "invalid value for \"fulfilment\", must be one of #{validator.allowable_values}."
|
|
218
|
+
end
|
|
219
|
+
@fulfilment = fulfilment
|
|
220
|
+
end
|
|
221
|
+
|
|
190
222
|
# Checks equality by comparing each attribute.
|
|
191
223
|
# @param [Object] Object to be compared
|
|
192
224
|
def ==(o)
|
|
@@ -199,7 +231,9 @@ module Zernio
|
|
|
199
231
|
whatsapp_available == o.whatsapp_available &&
|
|
200
232
|
sms_available == o.sms_available &&
|
|
201
233
|
calls_available == o.calls_available &&
|
|
202
|
-
in_stock == o.in_stock
|
|
234
|
+
in_stock == o.in_stock &&
|
|
235
|
+
fulfilment == o.fulfilment &&
|
|
236
|
+
pre_orderable == o.pre_orderable
|
|
203
237
|
end
|
|
204
238
|
|
|
205
239
|
# @see the `==` method
|
|
@@ -211,7 +245,7 @@ module Zernio
|
|
|
211
245
|
# Calculates hash code according to all attributes.
|
|
212
246
|
# @return [Integer] Hash code
|
|
213
247
|
def hash
|
|
214
|
-
[number_type, tier, needs_kyc, monthly_cents, whatsapp_available, sms_available, calls_available, in_stock].hash
|
|
248
|
+
[number_type, tier, needs_kyc, monthly_cents, whatsapp_available, sms_available, calls_available, in_stock, fulfilment, pre_orderable].hash
|
|
215
249
|
end
|
|
216
250
|
|
|
217
251
|
# Builds the object from hash
|
|
@@ -17,6 +17,9 @@ module Zernio
|
|
|
17
17
|
class SubmitPhoneNumberKyc200Response < ApiModelBase
|
|
18
18
|
attr_accessor :status
|
|
19
19
|
|
|
20
|
+
# True when nothing was in stock and this submission placed a pre-order. The number stays `pending_regulatory` until the carrier sources it (usually about 3 weeks) and is not billed until active. A pre-order is one number: `quantity` above 1 is rejected with 400.
|
|
21
|
+
attr_accessor :pre_order
|
|
22
|
+
|
|
20
23
|
attr_accessor :phone_number
|
|
21
24
|
|
|
22
25
|
# Every number provisioned from this submission. Length equals the requested `quantity` on full success (fewer if some orders failed; best-effort). The first element mirrors `phoneNumber`.
|
|
@@ -48,6 +51,7 @@ module Zernio
|
|
|
48
51
|
def self.attribute_map
|
|
49
52
|
{
|
|
50
53
|
:'status' => :'status',
|
|
54
|
+
:'pre_order' => :'preOrder',
|
|
51
55
|
:'phone_number' => :'phoneNumber',
|
|
52
56
|
:'numbers' => :'numbers'
|
|
53
57
|
}
|
|
@@ -67,6 +71,7 @@ module Zernio
|
|
|
67
71
|
def self.openapi_types
|
|
68
72
|
{
|
|
69
73
|
:'status' => :'String',
|
|
74
|
+
:'pre_order' => :'Boolean',
|
|
70
75
|
:'phone_number' => :'SubmitPhoneNumberKyc200ResponsePhoneNumber',
|
|
71
76
|
:'numbers' => :'Array<SubmitPhoneNumberKyc200ResponseNumbersInner>'
|
|
72
77
|
}
|
|
@@ -98,6 +103,10 @@ module Zernio
|
|
|
98
103
|
self.status = attributes[:'status']
|
|
99
104
|
end
|
|
100
105
|
|
|
106
|
+
if attributes.key?(:'pre_order')
|
|
107
|
+
self.pre_order = attributes[:'pre_order']
|
|
108
|
+
end
|
|
109
|
+
|
|
101
110
|
if attributes.key?(:'phone_number')
|
|
102
111
|
self.phone_number = attributes[:'phone_number']
|
|
103
112
|
end
|
|
@@ -142,6 +151,7 @@ module Zernio
|
|
|
142
151
|
return true if self.equal?(o)
|
|
143
152
|
self.class == o.class &&
|
|
144
153
|
status == o.status &&
|
|
154
|
+
pre_order == o.pre_order &&
|
|
145
155
|
phone_number == o.phone_number &&
|
|
146
156
|
numbers == o.numbers
|
|
147
157
|
end
|
|
@@ -155,7 +165,7 @@ module Zernio
|
|
|
155
165
|
# Calculates hash code according to all attributes.
|
|
156
166
|
# @return [Integer] Hash code
|
|
157
167
|
def hash
|
|
158
|
-
[status, phone_number, numbers].hash
|
|
168
|
+
[status, pre_order, phone_number, numbers].hash
|
|
159
169
|
end
|
|
160
170
|
|
|
161
171
|
# Builds the object from hash
|
data/lib/zernio-sdk/version.rb
CHANGED
data/lib/zernio-sdk.rb
CHANGED
|
@@ -258,6 +258,8 @@ require 'zernio-sdk/models/conversion_event_user_click_ids'
|
|
|
258
258
|
require 'zernio-sdk/models/create_account_group201_response'
|
|
259
259
|
require 'zernio-sdk/models/create_account_group201_response_group'
|
|
260
260
|
require 'zernio-sdk/models/create_account_group_request'
|
|
261
|
+
require 'zernio-sdk/models/create_ad_account201_response'
|
|
262
|
+
require 'zernio-sdk/models/create_ad_account_request'
|
|
261
263
|
require 'zernio-sdk/models/create_ad_audience201_response'
|
|
262
264
|
require 'zernio-sdk/models/create_ad_audience_request'
|
|
263
265
|
require 'zernio-sdk/models/create_ad_campaign200_response'
|
data/openapi.yaml
CHANGED
|
@@ -36148,6 +36148,7 @@ paths:
|
|
|
36148
36148
|
smsAvailable: { type: boolean, description: Whether this country's number type can do SMS. Use it to filter the picker when the buyer wants SMS (pair with `wantsSms` on purchase). }
|
|
36149
36149
|
outboundCallingAvailable: { type: boolean, description: "WhatsApp Business Calling (BIC) outbound availability, a Meta feature blocked in some countries. NOT the PSTN Calls feature (`callsAvailable`)." }
|
|
36150
36150
|
inStock: { type: boolean, description: "Live carrier-stock snapshot (refreshed every 6h + on availability checks): false when NO offered type currently has deliverable inventory, so a purchase would fail. Treat as advisory; the purchase itself re-checks." }
|
|
36151
|
+
preOrderable: { type: boolean, description: "At least one out-of-stock type here can be pre-ordered (see `types[].preOrderable`)." }
|
|
36151
36152
|
types:
|
|
36152
36153
|
type: array
|
|
36153
36154
|
description: >
|
|
@@ -36160,13 +36161,15 @@ paths:
|
|
|
36160
36161
|
type: object
|
|
36161
36162
|
properties:
|
|
36162
36163
|
numberType: { type: string, enum: [local, mobile, national, toll_free] }
|
|
36163
|
-
tier: { type: integer, enum: [1, 2, 3, 4] }
|
|
36164
|
+
tier: { type: [integer, "null"], enum: [1, 2, 3, 4, null], description: "Null on a `fulfilment: request` type, whose document tier is only known once its requirements are read." }
|
|
36164
36165
|
needsKyc: { type: boolean }
|
|
36165
36166
|
monthlyCents: { type: integer, description: "Price a NEW number of this type costs per month, in cents." }
|
|
36166
36167
|
whatsappAvailable: { type: boolean, description: "Always false for toll_free (WhatsApp does not reliably register toll-free numbers)." }
|
|
36167
36168
|
smsAvailable: { type: boolean }
|
|
36168
36169
|
callsAvailable: { type: boolean }
|
|
36169
36170
|
inStock: { type: boolean }
|
|
36171
|
+
fulfilment: { type: string, enum: [instant, request], description: "`request`: the carrier stocks this type nowhere and only sources it to order, so it is always a pre-order." }
|
|
36172
|
+
preOrderable: { type: boolean, description: "Out of stock but orderable anyway. Submit KYC as usual (POST /v1/phone-numbers/kyc) and the carrier sources the number after review, usually about 3 weeks and never guaranteed. Only document tiers (3/4) qualify, and nothing is billed until the number is active." }
|
|
36170
36173
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
36171
36174
|
|
|
36172
36175
|
/v1/phone-numbers/available:
|
|
@@ -36245,6 +36248,7 @@ paths:
|
|
|
36245
36248
|
country: { type: string }
|
|
36246
36249
|
numberType: { type: string }
|
|
36247
36250
|
available: { type: boolean, description: Whether deliverable voice inventory exists right now. }
|
|
36251
|
+
preOrderable: { type: boolean, description: "Nothing deliverable now, but this pair can be pre-ordered: submit KYC as usual and the carrier sources the number after review (usually about 3 weeks, never guaranteed). Only document tiers (3/4) qualify." }
|
|
36248
36252
|
addressConstraint: { type: string, enum: [geo, country, none] }
|
|
36249
36253
|
areas:
|
|
36250
36254
|
type: array
|
|
@@ -36630,6 +36634,7 @@ paths:
|
|
|
36630
36634
|
country: { type: string }
|
|
36631
36635
|
numberType: { type: string }
|
|
36632
36636
|
available: { type: boolean, description: Whether deliverable voice inventory exists right now. }
|
|
36637
|
+
preOrderable: { type: boolean, description: "Nothing deliverable now, but this pair can be pre-ordered: submit KYC as usual and the carrier sources the number after review (usually about 3 weeks, never guaranteed). Only document tiers (3/4) qualify." }
|
|
36633
36638
|
addressConstraint: { type: string, enum: [geo, country, none] }
|
|
36634
36639
|
areas:
|
|
36635
36640
|
type: array
|
|
@@ -36814,6 +36819,7 @@ paths:
|
|
|
36814
36819
|
type: object
|
|
36815
36820
|
properties:
|
|
36816
36821
|
status: { type: string, enum: [kyc_submitted, kyc_reused, kyc_already_submitted] }
|
|
36822
|
+
preOrder: { type: boolean, description: "True when nothing was in stock and this submission placed a pre-order. The number stays `pending_regulatory` until the carrier sources it (usually about 3 weeks) and is not billed until active. A pre-order is one number: `quantity` above 1 is rejected with 400." }
|
|
36817
36823
|
phoneNumber:
|
|
36818
36824
|
type: object
|
|
36819
36825
|
description: The first/primary number, kept at the top level for backward compatibility. See `numbers` for the full set when `quantity` > 1.
|
|
@@ -37807,6 +37813,7 @@ paths:
|
|
|
37807
37813
|
type: object
|
|
37808
37814
|
properties:
|
|
37809
37815
|
status: { type: string, enum: [kyc_submitted, kyc_reused, kyc_already_submitted] }
|
|
37816
|
+
preOrder: { type: boolean, description: "True when nothing was in stock and this submission placed a pre-order. The number stays `pending_regulatory` until the carrier sources it (usually about 3 weeks) and is not billed until active. A pre-order is one number: `quantity` above 1 is rejected with 400." }
|
|
37810
37817
|
phoneNumber:
|
|
37811
37818
|
type: object
|
|
37812
37819
|
description: The first/primary number, kept at the top level for backward compatibility. See `numbers` for the full set when `quantity` > 1.
|
|
@@ -38279,9 +38286,9 @@ paths:
|
|
|
38279
38286
|
it if you miss the stock. Up to 20 watches at once.
|
|
38280
38287
|
|
|
38281
38288
|
Countries and types marked `fulfilment: request` by
|
|
38282
|
-
GET /v1/phone-numbers/countries can also be watched
|
|
38283
|
-
|
|
38284
|
-
|
|
38289
|
+
GET /v1/phone-numbers/countries can also be watched, but anything with
|
|
38290
|
+
`preOrderable: true` does not need a watch: submit KYC and the carrier
|
|
38291
|
+
sources the number to order.
|
|
38285
38292
|
security:
|
|
38286
38293
|
- bearerAuth: []
|
|
38287
38294
|
requestBody:
|
|
@@ -49561,6 +49568,127 @@ paths:
|
|
|
49561
49568
|
'501': { description: Only supported on Meta (facebook/instagram) }
|
|
49562
49569
|
|
|
49563
49570
|
/v1/ads/accounts:
|
|
49571
|
+
post:
|
|
49572
|
+
operationId: createAdAccount
|
|
49573
|
+
summary: Create Meta ad account
|
|
49574
|
+
tags: ["Ad Accounts"]
|
|
49575
|
+
x-resource-group: "ads"
|
|
49576
|
+
x-platforms: ["meta"]
|
|
49577
|
+
description: |
|
|
49578
|
+
Creates a durable Meta ad account in the end user's own business portfolio using
|
|
49579
|
+
their connected Meta Ads token. Requires an active metaads accountId, Ads access,
|
|
49580
|
+
business_management permission and business admin access. Discover portfolios with
|
|
49581
|
+
GET /v1/ads/businesses. System-user tokens may return an empty businesses list;
|
|
49582
|
+
supply the known business ID in that case.
|
|
49583
|
+
|
|
49584
|
+
The self-serve account starts without a payment method. The user must add a payment
|
|
49585
|
+
method in Ads Manager before ads can deliver. Zernio cannot add payment methods.
|
|
49586
|
+
Meta may require business verification and limits how many accounts a business can
|
|
49587
|
+
create. Closing an account does not guarantee more capacity. An ad account cannot
|
|
49588
|
+
truly be deleted, even after closing it and removing it from a business.
|
|
49589
|
+
|
|
49590
|
+
timezoneId is Meta's numeric ID, not an IANA timezone name. Select it from
|
|
49591
|
+
https://developers.facebook.com/docs/marketing-api/reference/ad-account/timezone-ids/.
|
|
49592
|
+
For example, 1 is America/Los_Angeles. Meta validates supported currencies and IDs.
|
|
49593
|
+
endAdvertiser, mediaAgency and partner default to NONE for the self-serve flow.
|
|
49594
|
+
|
|
49595
|
+
The new account is added atomically to an existing scoped ad-account allowlist.
|
|
49596
|
+
Unrestricted connections stay unrestricted. Reconnecting the same Meta identity
|
|
49597
|
+
preserves this scope unless a caller explicitly replaces it. Discovery is nudged
|
|
49598
|
+
immediately. Use the returned adAccountId with the existing ads endpoints.
|
|
49599
|
+
|
|
49600
|
+
This operation is not idempotent and Zernio never automatically retries it.
|
|
49601
|
+
Unknown body fields are rejected. No validateOnly or dry-run option is supported.
|
|
49602
|
+
After a timeout or a 502 with details.creationStatus=unknown, check the business
|
|
49603
|
+
in Ads Manager before attempting another creation. A 201 with connectionUpdated=false
|
|
49604
|
+
means the account exists but needs reconnecting with adAccountIds containing the returned ID and the previous
|
|
49605
|
+
scoped IDs via GET /v1/connect/facebook/ads. Do not repeat the create call.
|
|
49606
|
+
security:
|
|
49607
|
+
- bearerAuth: []
|
|
49608
|
+
requestBody:
|
|
49609
|
+
required: true
|
|
49610
|
+
content:
|
|
49611
|
+
application/json:
|
|
49612
|
+
schema:
|
|
49613
|
+
type: object
|
|
49614
|
+
additionalProperties: false
|
|
49615
|
+
required: [accountId, businessId, name, currency, timezoneId]
|
|
49616
|
+
properties:
|
|
49617
|
+
accountId: { type: string, pattern: '^[a-fA-F0-9]{24}$', description: "Zernio metaads SocialAccount ID." }
|
|
49618
|
+
businessId: { type: string, pattern: '^[1-9][0-9]*$', description: "Business portfolio that will own the account." }
|
|
49619
|
+
name: { type: string, minLength: 1, maxLength: 255, description: "Ad account name. Whitespace is trimmed." }
|
|
49620
|
+
currency: { type: string, pattern: '^[A-Z]{3}$', description: "Uppercase ISO 4217 currency supported by Meta." }
|
|
49621
|
+
timezoneId: { type: integer, minimum: 0, maximum: 4294967295, description: "Numeric Meta timezone ID from the linked timezone list. For example 1 is America/Los_Angeles." }
|
|
49622
|
+
endAdvertiser: { type: string, pattern: '^(NONE|[1-9][0-9]*)$', default: NONE, description: "End advertiser business or page ID. NONE uses the owning business." }
|
|
49623
|
+
mediaAgency: { type: string, pattern: '^(NONE|[1-9][0-9]*)$', default: NONE, description: "Media agency business or page ID. NONE for self-serve customers." }
|
|
49624
|
+
partner: { type: string, pattern: '^(NONE|[1-9][0-9]*)$', default: NONE, description: "Partner business or page ID. NONE for self-serve customers." }
|
|
49625
|
+
invoice: { type: boolean, description: "Request Meta invoicing. Eligibility is determined by Meta." }
|
|
49626
|
+
invoiceGroupId: { type: string, pattern: '^[1-9][0-9]*$', description: "Existing Meta invoice group ID." }
|
|
49627
|
+
invoicingEmails: { type: array, minItems: 1, maxItems: 100, items: { type: string, format: email }, description: "Addresses for Meta invoices." }
|
|
49628
|
+
io: { type: boolean, description: "Meta insertion-order invoicing option." }
|
|
49629
|
+
poNumber: { type: string, minLength: 1, maxLength: 255, description: "Purchase order number." }
|
|
49630
|
+
fundingId: { type: string, pattern: '^[1-9][0-9]*$', description: "Existing Meta funding reference. Does not add a payment method." }
|
|
49631
|
+
adAccountCreatedFromBmFlag: { type: boolean, description: "Meta Business Manager creation flag." }
|
|
49632
|
+
example:
|
|
49633
|
+
accountId: "69fc524892b3d8e85f893e73"
|
|
49634
|
+
businessId: "123456789012345"
|
|
49635
|
+
name: "Customer advertising"
|
|
49636
|
+
currency: "EUR"
|
|
49637
|
+
timezoneId: 1
|
|
49638
|
+
responses:
|
|
49639
|
+
'201':
|
|
49640
|
+
description: "Ad account created. Check connectionUpdated and payment instructions."
|
|
49641
|
+
content:
|
|
49642
|
+
application/json:
|
|
49643
|
+
schema:
|
|
49644
|
+
type: object
|
|
49645
|
+
required: [adAccountId, businessId, connectionUpdated, paymentMethodRequired, adsManagerUrl, nextSteps, warnings]
|
|
49646
|
+
properties:
|
|
49647
|
+
adAccountId: { type: string, pattern: '^act_[0-9]+$', description: "New Meta ad account ID for subsequent ads calls." }
|
|
49648
|
+
businessId: { type: string, description: "Owning business portfolio ID." }
|
|
49649
|
+
connectionUpdated: { type: boolean, description: "Whether the connection scope and discovery schedule were updated." }
|
|
49650
|
+
paymentMethodRequired: { type: boolean, description: "Always true as a delivery prerequisite. This is not a live funding-source check. Confirm payment or invoicing in Ads Manager." }
|
|
49651
|
+
adsManagerUrl: { type: string, format: uri, description: "Open the created account in Ads Manager." }
|
|
49652
|
+
nextSteps: { type: string, description: "Payment setup instructions for the user." }
|
|
49653
|
+
warnings: { type: array, items: { type: string }, description: "Recovery instructions if the account could not be attached to the connection." }
|
|
49654
|
+
example:
|
|
49655
|
+
adAccountId: "act_123456789012345"
|
|
49656
|
+
businessId: "123456789012345"
|
|
49657
|
+
connectionUpdated: true
|
|
49658
|
+
paymentMethodRequired: true
|
|
49659
|
+
adsManagerUrl: "https://adsmanager.facebook.com/adsmanager/manage/accounts?act=123456789012345"
|
|
49660
|
+
nextSteps: "The user must configure payment in Meta Ads Manager before ads can deliver. Add a payment method there, or confirm an existing funding or invoicing arrangement. Zernio cannot add payment methods through the API."
|
|
49661
|
+
warnings: []
|
|
49662
|
+
'400':
|
|
49663
|
+
description: "Invalid input or Meta rejection. details.reason identifies creation_limit, business_verification_required, unsupported_currency, unsupported_timezone or business_unavailable when recognized."
|
|
49664
|
+
content:
|
|
49665
|
+
application/json:
|
|
49666
|
+
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
|
49667
|
+
example:
|
|
49668
|
+
error: "This business has reached its Meta ad account creation limit. Use an existing ad account or ask Meta Business Support about increasing the limit. Closing accounts does not guarantee additional capacity."
|
|
49669
|
+
code: "invalid_field_value"
|
|
49670
|
+
type: "invalid_request_error"
|
|
49671
|
+
param: "businessId"
|
|
49672
|
+
platform: "meta"
|
|
49673
|
+
details: { reason: "creation_limit" }
|
|
49674
|
+
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
49675
|
+
'403':
|
|
49676
|
+
description: "Ads access denied or Meta permission missing. details.reason may be business_management_required, business_admin_required or business_access_required."
|
|
49677
|
+
content:
|
|
49678
|
+
application/json:
|
|
49679
|
+
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
|
49680
|
+
'404': { $ref: '#/components/responses/NotFound' }
|
|
49681
|
+
'502':
|
|
49682
|
+
description: "Creation outcome unknown. Check Ads Manager before repeating this non-idempotent request."
|
|
49683
|
+
content:
|
|
49684
|
+
application/json:
|
|
49685
|
+
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
|
49686
|
+
example:
|
|
49687
|
+
error: "Meta did not confirm whether the ad account was created. Do not repeat this request until you check the business portfolio in Ads Manager."
|
|
49688
|
+
code: "platform_api_error"
|
|
49689
|
+
type: "platform_error"
|
|
49690
|
+
platform: "meta"
|
|
49691
|
+
details: { creationStatus: "unknown" }
|
|
49564
49692
|
get:
|
|
49565
49693
|
x-resource-group: "ads"
|
|
49566
49694
|
operationId: listAdAccounts
|
|
@@ -68,6 +68,18 @@ describe 'AdAccountsApi' do
|
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
+
# unit tests for create_ad_account
|
|
72
|
+
# Create Meta ad account
|
|
73
|
+
# Creates a durable Meta ad account in the end user's own business portfolio using their connected Meta Ads token. Requires an active metaads accountId, Ads access, business_management permission and business admin access. Discover portfolios with GET /v1/ads/businesses. System-user tokens may return an empty businesses list; supply the known business ID in that case. The self-serve account starts without a payment method. The user must add a payment method in Ads Manager before ads can deliver. Zernio cannot add payment methods. Meta may require business verification and limits how many accounts a business can create. Closing an account does not guarantee more capacity. An ad account cannot truly be deleted, even after closing it and removing it from a business. timezoneId is Meta's numeric ID, not an IANA timezone name. Select it from https://developers.facebook.com/docs/marketing-api/reference/ad-account/timezone-ids/. For example, 1 is America/Los_Angeles. Meta validates supported currencies and IDs. endAdvertiser, mediaAgency and partner default to NONE for the self-serve flow. The new account is added atomically to an existing scoped ad-account allowlist. Unrestricted connections stay unrestricted. Reconnecting the same Meta identity preserves this scope unless a caller explicitly replaces it. Discovery is nudged immediately. Use the returned adAccountId with the existing ads endpoints. This operation is not idempotent and Zernio never automatically retries it. Unknown body fields are rejected. No validateOnly or dry-run option is supported. After a timeout or a 502 with details.creationStatus=unknown, check the business in Ads Manager before attempting another creation. A 201 with connectionUpdated=false means the account exists but needs reconnecting with adAccountIds containing the returned ID and the previous scoped IDs via GET /v1/connect/facebook/ads. Do not repeat the create call.
|
|
74
|
+
# @param create_ad_account_request
|
|
75
|
+
# @param [Hash] opts the optional parameters
|
|
76
|
+
# @return [CreateAdAccount201Response]
|
|
77
|
+
describe 'create_ad_account test' do
|
|
78
|
+
it 'should work' do
|
|
79
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
71
83
|
# unit tests for create_ad_negative_keyword_list
|
|
72
84
|
# Create a negative keyword list
|
|
73
85
|
# Creates one Google Ads shared negative keyword list with optional initial keywords in a single atomic mutation. Daily quota is reserved for every mutate item, so large batches may return 429 before any change. This operation is not idempotent. The list is not attached to any campaign.
|
|
@@ -96,7 +96,7 @@ describe 'PhoneNumbersApi' do
|
|
|
96
96
|
|
|
97
97
|
# unit tests for create_phone_number_stock_watch
|
|
98
98
|
# Watch an out-of-stock country
|
|
99
|
-
# Get notified the first time an out-of-stock country has deliverable numbers again: an email to the account holder plus the `phone_number.stock_available` webhook. Stock is re-checked every 6h. One watch per country and number type; a repeat request returns the existing watch (200). The watch is consumed when it fires, so re-create it if you miss the stock. Up to 20 watches at once. Countries and types marked `fulfilment: request` by GET /v1/phone-numbers/countries can also be watched
|
|
99
|
+
# Get notified the first time an out-of-stock country has deliverable numbers again: an email to the account holder plus the `phone_number.stock_available` webhook. Stock is re-checked every 6h. One watch per country and number type; a repeat request returns the existing watch (200). The watch is consumed when it fires, so re-create it if you miss the stock. Up to 20 watches at once. Countries and types marked `fulfilment: request` by GET /v1/phone-numbers/countries can also be watched, but anything with `preOrderable: true` does not need a watch: submit KYC and the carrier sources the number to order.
|
|
100
100
|
# @param create_phone_number_stock_watch_request
|
|
101
101
|
# @param [Hash] opts the optional parameters
|
|
102
102
|
# @return [PhoneNumberStockWatch]
|
|
@@ -45,6 +45,12 @@ describe Zernio::CheckPhoneNumberAvailability200Response do
|
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
+
describe 'test attribute "pre_orderable"' 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
|
+
|
|
48
54
|
describe 'test attribute "address_constraint"' do
|
|
49
55
|
it 'should work' do
|
|
50
56
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
@@ -0,0 +1,72 @@
|
|
|
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::CreateAdAccount201Response
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::CreateAdAccount201Response do
|
|
21
|
+
#let(:instance) { Zernio::CreateAdAccount201Response.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of CreateAdAccount201Response' do
|
|
24
|
+
it 'should create an instance of CreateAdAccount201Response' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::CreateAdAccount201Response)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "ad_account_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 "business_id"' 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 "connection_updated"' 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 "payment_method_required"' 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 "ads_manager_url"' 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 "next_steps"' 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 "warnings"' 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
|
+
end
|
|
@@ -0,0 +1,120 @@
|
|
|
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::CreateAdAccountRequest
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::CreateAdAccountRequest do
|
|
21
|
+
#let(:instance) { Zernio::CreateAdAccountRequest.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of CreateAdAccountRequest' do
|
|
24
|
+
it 'should create an instance of CreateAdAccountRequest' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::CreateAdAccountRequest)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "account_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 "business_id"' 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 "name"' 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 "currency"' 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 "timezone_id"' 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 "end_advertiser"' 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 "media_agency"' 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 "partner"' 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 "invoice"' 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 "invoice_group_id"' 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
|
+
describe 'test attribute "invoicing_emails"' do
|
|
91
|
+
it 'should work' do
|
|
92
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe 'test attribute "io"' do
|
|
97
|
+
it 'should work' do
|
|
98
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
describe 'test attribute "po_number"' do
|
|
103
|
+
it 'should work' do
|
|
104
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
describe 'test attribute "funding_id"' do
|
|
109
|
+
it 'should work' do
|
|
110
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
describe 'test attribute "ad_account_created_from_bm_flag"' do
|
|
115
|
+
it 'should work' do
|
|
116
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
end
|
|
@@ -85,6 +85,12 @@ describe Zernio::ListPhoneNumberCountries200ResponseCountriesInner do
|
|
|
85
85
|
end
|
|
86
86
|
end
|
|
87
87
|
|
|
88
|
+
describe 'test attribute "pre_orderable"' do
|
|
89
|
+
it 'should work' do
|
|
90
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
88
94
|
describe 'test attribute "types"' do
|
|
89
95
|
it 'should work' do
|
|
90
96
|
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
data/spec/models/list_phone_number_countries200_response_countries_inner_types_inner_spec.rb
CHANGED
|
@@ -83,4 +83,20 @@ describe Zernio::ListPhoneNumberCountries200ResponseCountriesInnerTypesInner do
|
|
|
83
83
|
end
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
+
describe 'test attribute "fulfilment"' do
|
|
87
|
+
it 'should work' do
|
|
88
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
89
|
+
# validator = Petstore::EnumTest::EnumAttributeValidator.new('String', ["instant", "request"])
|
|
90
|
+
# validator.allowable_values.each do |value|
|
|
91
|
+
# expect { instance.fulfilment = value }.not_to raise_error
|
|
92
|
+
# end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe 'test attribute "pre_orderable"' do
|
|
97
|
+
it 'should work' do
|
|
98
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
86
102
|
end
|