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.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -0
  3. data/docs/AdAccountsApi.md +70 -0
  4. data/docs/CheckPhoneNumberAvailability200Response.md +2 -0
  5. data/docs/CreateAdAccount201Response.md +30 -0
  6. data/docs/CreateAdAccountRequest.md +46 -0
  7. data/docs/ListPhoneNumberCountries200ResponseCountriesInner.md +2 -0
  8. data/docs/ListPhoneNumberCountries200ResponseCountriesInnerTypesInner.md +6 -2
  9. data/docs/PhoneNumbersApi.md +1 -1
  10. data/docs/SubmitPhoneNumberKyc200Response.md +2 -0
  11. data/lib/zernio-sdk/api/ad_accounts_api.rb +68 -0
  12. data/lib/zernio-sdk/api/phone_numbers_api.rb +2 -2
  13. data/lib/zernio-sdk/models/check_phone_number_availability200_response.rb +11 -1
  14. data/lib/zernio-sdk/models/create_ad_account201_response.rb +340 -0
  15. data/lib/zernio-sdk/models/create_ad_account_request.rb +611 -0
  16. data/lib/zernio-sdk/models/list_phone_number_countries200_response_countries_inner.rb +11 -1
  17. data/lib/zernio-sdk/models/list_phone_number_countries200_response_countries_inner_types_inner.rb +38 -4
  18. data/lib/zernio-sdk/models/submit_phone_number_kyc200_response.rb +11 -1
  19. data/lib/zernio-sdk/version.rb +1 -1
  20. data/lib/zernio-sdk.rb +2 -0
  21. data/openapi.yaml +132 -4
  22. data/spec/api/ad_accounts_api_spec.rb +12 -0
  23. data/spec/api/phone_numbers_api_spec.rb +1 -1
  24. data/spec/models/check_phone_number_availability200_response_spec.rb +6 -0
  25. data/spec/models/create_ad_account201_response_spec.rb +72 -0
  26. data/spec/models/create_ad_account_request_spec.rb +120 -0
  27. data/spec/models/list_phone_number_countries200_response_countries_inner_spec.rb +6 -0
  28. data/spec/models/list_phone_number_countries200_response_countries_inner_types_inner_spec.rb +16 -0
  29. data/spec/models/submit_phone_number_kyc200_response_spec.rb +6 -0
  30. data/zernio-sdk-0.0.905.gem +0 -0
  31. metadata +10 -2
  32. data/zernio-sdk-0.0.903.gem +0 -0
@@ -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
@@ -11,5 +11,5 @@ Generator version: 7.19.0
11
11
  =end
12
12
 
13
13
  module Zernio
14
- VERSION = '0.0.903'
14
+ VERSION = '0.0.905'
15
15
  end
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. Those are sourced
38283
- by a carrier request rather than held in stock, so a watch records
38284
- interest and no date is implied.
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&#39;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&#39;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&#x3D;unknown, check the business in Ads Manager before attempting another creation. A 201 with connectionUpdated&#x3D;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 &#x60;phone_number.stock_available&#x60; 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 &#x60;fulfilment: request&#x60; by GET /v1/phone-numbers/countries can also be watched. Those are sourced by a carrier request rather than held in stock, so a watch records interest and no date is implied.
99
+ # Get notified the first time an out-of-stock country has deliverable numbers again: an email to the account holder plus the &#x60;phone_number.stock_available&#x60; 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 &#x60;fulfilment: request&#x60; by GET /v1/phone-numbers/countries can also be watched, but anything with &#x60;preOrderable: true&#x60; 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/
@@ -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