recurly 4.13.0 → 4.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.bumpversion.cfg +1 -1
  3. data/CHANGELOG.md +44 -0
  4. data/GETTING_STARTED.md +1 -1
  5. data/lib/recurly/client/operations.rb +209 -136
  6. data/lib/recurly/requests/account_create.rb +1 -1
  7. data/lib/recurly/requests/account_purchase.rb +1 -1
  8. data/lib/recurly/requests/account_update.rb +1 -1
  9. data/lib/recurly/requests/add_on_create.rb +9 -1
  10. data/lib/recurly/requests/add_on_update.rb +5 -1
  11. data/lib/recurly/requests/billing_info_create.rb +8 -0
  12. data/lib/recurly/requests/percentage_tier.rb +18 -0
  13. data/lib/recurly/requests/percentage_tiers_by_currency.rb +18 -0
  14. data/lib/recurly/requests/plan_create.rb +1 -1
  15. data/lib/recurly/requests/plan_update.rb +1 -1
  16. data/lib/recurly/requests/subscription_add_on_create.rb +5 -1
  17. data/lib/recurly/requests/subscription_add_on_percentage_tier.rb +18 -0
  18. data/lib/recurly/requests/subscription_add_on_tier.rb +2 -2
  19. data/lib/recurly/requests/subscription_add_on_update.rb +5 -1
  20. data/lib/recurly/requests/subscription_update.rb +1 -1
  21. data/lib/recurly/requests/tier.rb +2 -2
  22. data/lib/recurly/resources/account.rb +4 -4
  23. data/lib/recurly/resources/account_mini.rb +1 -1
  24. data/lib/recurly/resources/add_on.rb +8 -0
  25. data/lib/recurly/resources/invoice.rb +5 -1
  26. data/lib/recurly/resources/invoice_template.rb +34 -0
  27. data/lib/recurly/resources/percentage_tier.rb +18 -0
  28. data/lib/recurly/resources/{account_invoice_template.rb → percentage_tiers_by_currency.rb} +7 -7
  29. data/lib/recurly/resources/plan.rb +1 -1
  30. data/lib/recurly/resources/subscription.rb +4 -0
  31. data/lib/recurly/resources/subscription_add_on.rb +9 -1
  32. data/lib/recurly/resources/subscription_add_on_percentage_tier.rb +18 -0
  33. data/lib/recurly/resources/subscription_add_on_tier.rb +2 -2
  34. data/lib/recurly/resources/tier.rb +2 -2
  35. data/lib/recurly/resources/usage.rb +5 -1
  36. data/lib/recurly/version.rb +1 -1
  37. data/openapi/api.yaml +617 -78
  38. metadata +10 -4
data/openapi/api.yaml CHANGED
@@ -14265,11 +14265,286 @@ paths:
14265
14265
  var_dump($e);
14266
14266
  }
14267
14267
  - lang: Go
14268
- source: "collection, err := client.PreviewPurchase(purchaseReq)\nif e, ok
14269
- := err.(*recurly.Error); ok {\n\tif e.Type == recurly.ErrorTypeValidation
14270
- {\n\t\tfmt.Printf(\"Failed validation: %v\", e)\n\t\treturn nil, err\n\t}\n\tfmt.Printf(\"Unexpected
14268
+ source: "purchaseReq := &recurly.PurchaseCreate{\n\tCurrency: recurly.String(\"USD\"),\n\tAccount:
14269
+ &recurly.AccountPurchase{\n\t\tCode: recurly.String(account.Code),\n\t},\n\tSubscriptions:
14270
+ []recurly.SubscriptionPurchase{\n\t\t{\n\t\t\tPlanCode: recurly.String(plan.Code),\n\t\t\tNextBillDate:
14271
+ recurly.Time(time.Date(2078, time.November, 10, 23, 0, 0, 0, time.UTC)),\n\t\t},\n\t},\n\tShipping:
14272
+ &recurly.ShippingPurchase{\n\t\tAddressId: recurly.String(shippingAddressID),\n\t},\n}\ncollection,
14273
+ err := client.PreviewPurchase(purchaseReq)\nif e, ok := err.(*recurly.Error);
14274
+ ok {\n\tif e.Type == recurly.ErrorTypeValidation {\n\t\tfmt.Printf(\"Failed
14275
+ validation: %v\", e)\n\t\treturn nil, err\n\t}\n\tfmt.Printf(\"Unexpected
14271
14276
  Recurly error: %v\", e)\n\treturn nil, err\n}\nfmt.Printf(\"Preview Charge
14272
14277
  Invoice %v\", collection.ChargeInvoice)"
14278
+ "/purchases/pending":
14279
+ post:
14280
+ tags:
14281
+ - purchase
14282
+ operationId: create_pending_purchase
14283
+ summary: Create a pending purchase
14284
+ description: |-
14285
+ A purchase is a hybrid checkout containing at least one or more subscriptions or one-time charges (adjustments) and supports both coupon and gift card redemptions. All items purchased will be on one invoice and paid for with one transaction. A purchase is only a request data type and is not persistent in Recurly and an invoice collection will be the returned type.
14286
+
14287
+ Use for **Adyen HPP** and **Online Banking** transaction requests.
14288
+ This runs the validations but not the transactions.
14289
+ The API request allows the inclusion of one of the following fields: **external_hpp_type** with `'adyen'` and **online_banking_payment_type** with `'ideal'` or `'sofort'` in the **billing_info** object.
14290
+
14291
+ For additional information regarding shipping fees, please see https://docs.recurly.com/docs/shipping
14292
+ requestBody:
14293
+ content:
14294
+ application/json:
14295
+ schema:
14296
+ "$ref": "#/components/schemas/PurchaseCreate"
14297
+ required: true
14298
+ responses:
14299
+ '200':
14300
+ description: Returns the pending invoice
14301
+ content:
14302
+ application/json:
14303
+ schema:
14304
+ "$ref": "#/components/schemas/InvoiceCollection"
14305
+ '400':
14306
+ description: Bad request; perhaps missing or invalid parameters.
14307
+ content:
14308
+ application/json:
14309
+ schema:
14310
+ "$ref": "#/components/schemas/Error"
14311
+ '422':
14312
+ description: Pending purchase cannot be completed for the specified reason.
14313
+ content:
14314
+ application/json:
14315
+ schema:
14316
+ "$ref": "#/components/schemas/Error"
14317
+ default:
14318
+ description: Unexpected error.
14319
+ content:
14320
+ application/json:
14321
+ schema:
14322
+ "$ref": "#/components/schemas/Error"
14323
+ x-code-samples:
14324
+ - lang: Node.js
14325
+ source: |
14326
+ try {
14327
+ const purchaseReq = {
14328
+ currency: 'EUR',
14329
+ account: {
14330
+ code: accountCode,
14331
+ email: 'example@recurly.com',
14332
+ billingInfo: {
14333
+ firstName: 'Benjamin',
14334
+ lastName: 'Du Monde',
14335
+ onlineBankingPaymentType: 'ideal'
14336
+ },
14337
+ },
14338
+ lineItems: [
14339
+ {
14340
+ currency: 'EUR',
14341
+ unitAmount: 1000,
14342
+ type: 'charge'
14343
+ }
14344
+ ]
14345
+ };
14346
+ const invoiceCollection = await client.createPendingPurchase(purchaseReq)
14347
+ console.log('Created ChargeInvoice with UUID: ', invoiceCollection.chargeInvoice.uuid)
14348
+ } catch (err) {
14349
+ if (err instanceof recurly.errors.ValidationError) {
14350
+ // If the request was not valid, you may want to tell your user
14351
+ // why. You can find the invalid params and reasons in err.params
14352
+ console.log('Failed validation', err.params)
14353
+ } else {
14354
+ // If we don't know what to do with the err, we should
14355
+ // probably re-raise and let our web framework and logger handle it
14356
+ console.log('Unknown Error: ', err)
14357
+ }
14358
+ }
14359
+ - lang: Python
14360
+ source: |
14361
+ try:
14362
+ purchase = {
14363
+ "currency": "EUR",
14364
+ "account": {
14365
+ "code": account_code,
14366
+ "email": "benjamin@example.com",
14367
+ "billing_info": {
14368
+ "first_name": "Benjamin",
14369
+ "last_name": "Du Monde",
14370
+ "online_banking_payment_type": "ideal"
14371
+ }
14372
+ },
14373
+ "line_items": [
14374
+ {
14375
+ "currency": "EUR",
14376
+ "unit_amount": 1000,
14377
+ "type": "charge"
14378
+ }
14379
+ ],
14380
+ }
14381
+ invoice_collection = client.create_pending_purchase(purchase)
14382
+ print("Created ChargeInvoice with UUID %s" % invoice_collection.charge_invoice.uuid)
14383
+ except recurly.errors.ValidationError as e:
14384
+ # If the request was invalid, you may want to tell your user
14385
+ # why. You can find the invalid params and reasons in e.error.params
14386
+ print("ValidationError: %s" % e.error.message)
14387
+ print(e.error.params)
14388
+ - lang: ".NET"
14389
+ source: |
14390
+ try
14391
+ {
14392
+ var purchaseReq = new PurchaseCreate()
14393
+ {
14394
+ Currency = "EUR",
14395
+ Account = new AccountPurchase()
14396
+ {
14397
+ Code = accountCode,
14398
+ Email = "benjamin@example.com",
14399
+ BillingInfo = new BillingInfoCreate()
14400
+ {
14401
+ FirstName = "Benjamin",
14402
+ LastName = "Du Monde",
14403
+ OnlineBankingPaymentType = OnlineBankingPaymentType.Ideal
14404
+ }
14405
+ },
14406
+ LineItems = new List<LineItemCreate>()
14407
+ {
14408
+ new LineItemCreate()
14409
+ {
14410
+ Currency = "EUR",
14411
+ UnitAmount = 1000,
14412
+ Type = LineItemType.Charge
14413
+ }
14414
+ }
14415
+ };
14416
+ InvoiceCollection collection = client.CreatePendingPurchase(purchaseReq);
14417
+ Console.WriteLine($"Created ChargeInvoice with UUID: {collection.ChargeInvoice.Uuid}");
14418
+ }
14419
+ catch (Recurly.Errors.Validation ex)
14420
+ {
14421
+ // If the request was not valid, you may want to tell your user
14422
+ // why. You can find the invalid params and reasons in ex.Error.Params
14423
+ Console.WriteLine($"Failed validation: {ex.Error.Message}");
14424
+ }
14425
+ catch (Recurly.Errors.ApiError ex)
14426
+ {
14427
+ // Use ApiError to catch a generic error from the API
14428
+ Console.WriteLine($"Unexpected Recurly Error: {ex.Error.Message}");
14429
+ }
14430
+ - lang: Ruby
14431
+ source: |
14432
+ begin
14433
+ purchase = {
14434
+ currency: 'EUR',
14435
+ account: {
14436
+ code: account_code,
14437
+ email: 'benjamin@example.com',
14438
+ billing_info: {
14439
+ first_name: 'Benjamin',
14440
+ last_name: 'Du Monde',
14441
+ online_banking_payment_type: 'ideal'
14442
+ },
14443
+ },
14444
+ line_items: [
14445
+ {
14446
+ currency: 'EUR',
14447
+ unit_amount: 1000,
14448
+ type: 'charge'
14449
+ }
14450
+ ]
14451
+ }
14452
+ invoice_collection = @client.create_pending_purchase(body: purchase)
14453
+ puts "Created ChargeInvoice with UUID: #{invoice_collection.charge_invoice.uuid}"
14454
+ rescue Recurly::Errors::ValidationError => e
14455
+ # If the request was invalid, you may want to tell your user
14456
+ # why. You can find the invalid params and reasons in e.recurly_error.params
14457
+ puts "ValidationError: #{e.recurly_error.params}"
14458
+ end
14459
+ - lang: Java
14460
+ source: |
14461
+ try {
14462
+ AccountPurchase account = new AccountPurchase();
14463
+ account.setCode(accountCode);
14464
+ account.setEmail("benjamin@example.com");
14465
+
14466
+ BillingInfoCreate billingInfo = new BillingInfoCreate();
14467
+ billingInfo.setFirstName("Benjamin");
14468
+ billingInfo.setLastName("Du Monde");
14469
+ billingInfo.setOnlineBankingPaymentType(Constants.OnlineBankingPaymentType.IDEAL);
14470
+ account.setBillingInfo(billingInfo);
14471
+
14472
+ List<LineItemCreate> lineItems = new ArrayList<LineItemCreate>();
14473
+ LineItemCreate lineItem = new LineItemCreate();
14474
+ lineItem.setCurrency("EUR");
14475
+ lineItem.setUnitAmount(new BigDecimal("1000.0"));
14476
+ lineItem.setType(Constants.LineItemType.CHARGE);
14477
+ lineItems.add(lineItem);
14478
+
14479
+ PurchaseCreate purchase = new PurchaseCreate();
14480
+ purchase.setCurrency("EUR");
14481
+ purchase.setAccount(account);
14482
+ purchase.setLineItems(lineItems);
14483
+
14484
+ InvoiceCollection collection = client.createPendingPurchase(purchase);
14485
+ System.out.println("Created ChargeInvoice with UUID: " + collection.getChargeInvoice().getUuid());
14486
+ } catch (ValidationException e) {
14487
+ // If the request was not valid, you may want to tell your user
14488
+ // why. You can find the invalid params and reasons in e.getError().getParams()
14489
+ System.out.println("Failed validation: " + e.getError().getMessage());
14490
+ System.out.println("Params: " + e.getError().getParams());
14491
+ } catch (TransactionException e) {
14492
+ TransactionError tError = e.getError().getTransactionError();
14493
+ if (tError.getCategory() == Constants.ErrorCategory.THREE_D_SECURE_ACTION_REQUIRED) {
14494
+ String actionTokenId = tError.getThreeDSecureActionTokenId();
14495
+ System.out.println("Got 3DSecure TransactionError token: " + actionTokenId);
14496
+ }
14497
+ }
14498
+ catch (ApiException e) {
14499
+ // Use ApiException to catch a generic error from the API
14500
+ System.out.println("Unexpected Recurly Error: " + e.getError().getMessage());
14501
+ }
14502
+ - lang: PHP
14503
+ source: |
14504
+ try {
14505
+ $purchase_create = [
14506
+ "currency" => "EUR",
14507
+ "account" => [
14508
+ "code" => $account_code,
14509
+ "email" => "benjamin@example.com",
14510
+ "billing_info" => [
14511
+ "first_name" => "Benjamin",
14512
+ "last_name" => "Du Monde",
14513
+ "online_banking_payment_type" => "ideal"
14514
+ ],
14515
+ ],
14516
+ "line_items" => [
14517
+ [
14518
+ "currency" => "EUR",
14519
+ "unit_amount" => 1000,
14520
+ "type" => "charge",
14521
+ ]
14522
+ ]
14523
+ ];
14524
+ $invoice_collection = $client->createPendingPurchase($purchase_create);
14525
+ echo 'Created ChargeInvoice with UUID' . $invoice_collection->getChargeInvoice()->getUuid() . PHP_EOL;
14526
+ } catch (\Recurly\Errors\Validation $e) {
14527
+ // If the request was not valid, you may want to tell your user
14528
+ // why. You can find the invalid params and reasons in err.params
14529
+ var_dump($e);
14530
+ } catch (\Recurly\RecurlyError $e) {
14531
+ // If we don't know what to do with the err, we should
14532
+ // probably re-raise and let our web framework and logger handle it
14533
+ var_dump($e);
14534
+ }
14535
+ - lang: Go
14536
+ source: "purchaseReq := &recurly.PurchaseCreate{\n\tCurrency: recurly.String(\"EUR\"),\n\tAccount:
14537
+ &recurly.AccountPurchase{\n\t\tCode: recurly.String(accountCode),\n\t\tEmail:
14538
+ recurly.String(\"benjamin@example.com\"),\n\t\tBillingInfo: &recurly.BillingInfoCreate{\n\t\t\tFirstName:
14539
+ \ recurly.String(\"Benjamin\"),\n\t\t\tLastName: recurly.String(\"Du
14540
+ Monde\"),\n\t\t\tOnlineBankingPaymentType: recurly.String(\"ideal\"),\n\t\t},\n\t},\n\tLineItems:
14541
+ []recurly.LineItemCreate{\n\t\t{\n\t\t\tCurrency: recurly.String(\"EUR\"),\n\t\t\tUnitAmount:
14542
+ recurly.Float(1000),\n\t\t\tType: recurly.String(\"charge\"),\n\t\t},\n\t},\n}\ncollection,
14543
+ err := client.CreatePendingPurchase(purchaseReq)\nif e, ok := err.(*recurly.Error);
14544
+ ok {\n\tif e.Type == recurly.ErrorTypeValidation {\n\t\tfmt.Printf(\"Failed
14545
+ validation: %v\", e)\n\t\treturn nil, err\n\t}\n\n\tfmt.Printf(\"Unexpected
14546
+ Recurly error: %v\", e)\n\treturn nil, err\n}\n\nfmt.Printf(\"Created ChargeInvoice
14547
+ with UUID: %s.\\n\", collection.ChargeInvoice.Uuid)\n"
14273
14548
  "/export_dates":
14274
14549
  get:
14275
14550
  tags:
@@ -14593,8 +14868,73 @@ paths:
14593
14868
  schema:
14594
14869
  "$ref": "#/components/schemas/Error"
14595
14870
  x-code-samples: []
14871
+ "/invoice_templates":
14872
+ get:
14873
+ tags:
14874
+ - invoice_templates
14875
+ operationId: list_invoice_templates
14876
+ summary: Show the invoice templates for a site
14877
+ description: See the [Pagination Guide](/guides/pagination.html) to learn how
14878
+ to use pagination in the API and Client Libraries.
14879
+ parameters:
14880
+ - "$ref": "#/components/parameters/sort_dates"
14881
+ responses:
14882
+ '200':
14883
+ description: A list of the the invoice templates on a site.
14884
+ content:
14885
+ application/json:
14886
+ schema:
14887
+ "$ref": "#/components/schemas/InvoiceTemplateList"
14888
+ '404':
14889
+ description: Incorrect site.
14890
+ content:
14891
+ application/json:
14892
+ schema:
14893
+ "$ref": "#/components/schemas/Error"
14894
+ default:
14895
+ description: Unexpected error.
14896
+ content:
14897
+ application/json:
14898
+ schema:
14899
+ "$ref": "#/components/schemas/Error"
14900
+ x-code-samples: []
14901
+ "/invoice_templates/{invoice_template_id}":
14902
+ parameters:
14903
+ - "$ref": "#/components/parameters/invoice_template_id"
14904
+ get:
14905
+ tags:
14906
+ - invoice_templates
14907
+ operationId: get_invoice_template
14908
+ summary: Show the settings for an invoice template
14909
+ responses:
14910
+ '200':
14911
+ description: Settings for an invoice template.
14912
+ content:
14913
+ application/json:
14914
+ schema:
14915
+ "$ref": "#/components/schemas/InvoiceTemplate"
14916
+ '400':
14917
+ description: Bad request; perhaps missing or invalid parameters.
14918
+ content:
14919
+ application/json:
14920
+ schema:
14921
+ "$ref": "#/components/schemas/Error"
14922
+ '404':
14923
+ description: Incorrect site or invoice template ID.
14924
+ content:
14925
+ application/json:
14926
+ schema:
14927
+ "$ref": "#/components/schemas/Error"
14928
+ default:
14929
+ description: Unexpected error.
14930
+ content:
14931
+ application/json:
14932
+ schema:
14933
+ "$ref": "#/components/schemas/Error"
14934
+ x-code-samples: []
14596
14935
  servers:
14597
14936
  - url: https://v3.recurly.com
14937
+ - url: https://v3.eu.recurly.com
14598
14938
  components:
14599
14939
  parameters:
14600
14940
  site_id:
@@ -14662,7 +15002,8 @@ components:
14662
15002
  invoice_template_id:
14663
15003
  name: invoice_template_id
14664
15004
  in: path
14665
- description: Invoice template ID.
15005
+ description: Invoice template ID or code. For ID no prefix is used e.g. `e28zov4fw0v2`.
15006
+ For code use prefix `code-`, e.g. `code-bob`.
14666
15007
  required: true
14667
15008
  schema:
14668
15009
  type: string
@@ -15503,11 +15844,10 @@ components:
15503
15844
  dunning_campaign_id:
15504
15845
  type: string
15505
15846
  title: Dunning Campaign ID
15506
- description: Unique ID to identify a dunning campaign. Available when the
15507
- Dunning Campaigns feature is enabled. Used to specify if a non-default
15508
- dunning campaign should be assigned to this account. For sites without
15509
- multiple dunning campaigns enabled, the default dunning campaign will
15510
- always be used.
15847
+ description: Unique ID to identify a dunning campaign. Used to specify if
15848
+ a non-default dunning campaign should be assigned to this account. For
15849
+ sites without multiple dunning campaigns enabled, the default dunning
15850
+ campaign will always be used.
15511
15851
  invoice_template_id:
15512
15852
  type: string
15513
15853
  title: Invoice Template ID
@@ -15587,19 +15927,24 @@ components:
15587
15927
  dunning_campaign_id:
15588
15928
  type: string
15589
15929
  title: Dunning Campaign ID
15590
- description: Unique ID to identify a dunning campaign. Available when the
15591
- Dunning Campaigns feature is enabled. Used to specify if a non-default
15592
- dunning campaign should be assigned to this account. For sites without
15593
- multiple dunning campaigns enabled, the default dunning campaign will
15594
- always be used.
15930
+ description: Unique ID to identify a dunning campaign. Used to specify if
15931
+ a non-default dunning campaign should be assigned to this account. For
15932
+ sites without multiple dunning campaigns enabled, the default dunning
15933
+ campaign will always be used.
15934
+ invoice_template_id:
15935
+ type: string
15936
+ title: Invoice Template ID
15937
+ description: Unique ID to identify an invoice template. Available when the
15938
+ Invoice Customization feature is enabled. Used to specify if a non-default
15939
+ invoice template will be used to generate invoices for the account. For
15940
+ sites without multiple invoice templates enabled, the default template
15941
+ will always be used.
15595
15942
  address:
15596
15943
  "$ref": "#/components/schemas/Address"
15597
15944
  billing_info:
15598
15945
  "$ref": "#/components/schemas/BillingInfo"
15599
15946
  custom_fields:
15600
15947
  "$ref": "#/components/schemas/CustomFields"
15601
- invoice_template:
15602
- "$ref": "#/components/schemas/AccountInvoiceTemplate"
15603
15948
  AccountNote:
15604
15949
  type: object
15605
15950
  required:
@@ -15662,11 +16007,10 @@ components:
15662
16007
  dunning_campaign_id:
15663
16008
  type: string
15664
16009
  title: Dunning Campaign ID
15665
- description: Unique ID to identify a dunning campaign. Available when the
15666
- Dunning Campaigns feature is enabled. Used to specify if a non-default
15667
- dunning campaign should be assigned to this account. For sites without
15668
- multiple dunning campaigns enabled, the default dunning campaign will
15669
- always be used.
16010
+ description: Unique ID to identify a dunning campaign. Used to specify if
16011
+ a non-default dunning campaign should be assigned to this account. For
16012
+ sites without multiple dunning campaigns enabled, the default dunning
16013
+ campaign will always be used.
15670
16014
  AccountBalance:
15671
16015
  type: object
15672
16016
  properties:
@@ -15696,20 +16040,6 @@ components:
15696
16040
  format: float
15697
16041
  title: Amount
15698
16042
  description: Total amount the account is past due.
15699
- AccountInvoiceTemplate:
15700
- type: object
15701
- title: Invoice Template
15702
- description: Invoice template associated to the account. Available when invoice
15703
- customization flag is enabled.
15704
- properties:
15705
- id:
15706
- type: string
15707
- title: ID
15708
- description: Unique ID to identify the invoice template.
15709
- name:
15710
- type: string
15711
- title: Name
15712
- description: Template name
15713
16043
  InvoiceAddress:
15714
16044
  allOf:
15715
16045
  - "$ref": "#/components/schemas/Address"
@@ -15935,11 +16265,18 @@ components:
15935
16265
  readOnly: true
15936
16266
  tier_type:
15937
16267
  "$ref": "#/components/schemas/TierTypeEnum"
16268
+ usage_timeframe:
16269
+ "$ref": "#/components/schemas/UsageTimeframeEnum"
15938
16270
  tiers:
15939
16271
  type: array
15940
16272
  title: Tiers
15941
16273
  items:
15942
16274
  "$ref": "#/components/schemas/Tier"
16275
+ percentage_tiers:
16276
+ type: array
16277
+ title: Percentage Tiers
16278
+ items:
16279
+ "$ref": "#/components/schemas/PercentageTiersByCurrency"
15943
16280
  external_sku:
15944
16281
  type: string
15945
16282
  title: External SKU
@@ -16108,6 +16445,8 @@ components:
16108
16445
  * Must be absent if `add_on_type` is `usage` and `usage_type` is `percentage`.
16109
16446
  tier_type:
16110
16447
  "$ref": "#/components/schemas/TierTypeEnum"
16448
+ usage_timeframe:
16449
+ "$ref": "#/components/schemas/UsageTimeframeCreateEnum"
16111
16450
  tiers:
16112
16451
  type: array
16113
16452
  title: Tiers
@@ -16116,8 +16455,18 @@ components:
16116
16455
  description: |
16117
16456
  If the tier_type is `flat`, then `tiers` must be absent. The `tiers` object
16118
16457
  must include one to many tiers with `ending_quantity` and `unit_amount` for
16119
- the desired `currencies`, or alternatively, `usage_percentage` for usage percentage type usage add ons. There must be one tier with an `ending_quantity`
16120
- of 999999999 which is the default if not provided.
16458
+ the desired `currencies`. There must be one tier without an `ending_quantity` value
16459
+ which represents the final tier.
16460
+ percentage_tiers:
16461
+ type: array
16462
+ title: Percentage Tiers By Currency
16463
+ items:
16464
+ "$ref": "#/components/schemas/PercentageTiersByCurrency"
16465
+ description: |
16466
+ Array of objects which must have at least one set of tiers
16467
+ per currency and the currency code. The tier_type must be `volume` or `tiered`,
16468
+ if not, it must be absent. There must be one tier without an `ending_amount` value
16469
+ which represents the final tier.
16121
16470
  required:
16122
16471
  - code
16123
16472
  - name
@@ -16245,8 +16594,18 @@ components:
16245
16594
  description: |
16246
16595
  If the tier_type is `flat`, then `tiers` must be absent. The `tiers` object
16247
16596
  must include one to many tiers with `ending_quantity` and `unit_amount` for
16248
- the desired `currencies`, or alternatively, `usage_percentage` for usage percentage type usage add ons. There must be one tier with an `ending_quantity`
16249
- of 999999999 which is the default if not provided.
16597
+ the desired `currencies`. There must be one tier without an `ending_quantity` value
16598
+ which represents the final tier.
16599
+ percentage_tiers:
16600
+ type: array
16601
+ title: Percentage Tiers By Currency
16602
+ items:
16603
+ "$ref": "#/components/schemas/PercentageTiersByCurrency"
16604
+ description: |
16605
+ `percentage_tiers` is an array of objects, which must have the set of tiers
16606
+ per currency and the currency code. The tier_type must be `volume` or `tiered`,
16607
+ if not, it must be absent. There must be one tier without an `ending_amount` value
16608
+ which represents the final tier.
16250
16609
  BillingInfo:
16251
16610
  type: object
16252
16611
  properties:
@@ -16471,6 +16830,10 @@ components:
16471
16830
  billing info marked `primary_payment_method` can be set as a backup. An
16472
16831
  account can have a maximum of 1 backup, if a user sets a different payment
16473
16832
  method as a backup, the existing backup will no longer be marked as such.
16833
+ external_hpp_type:
16834
+ "$ref": "#/components/schemas/ExternalHppTypeEnum"
16835
+ online_banking_payment_type:
16836
+ "$ref": "#/components/schemas/OnlineBankingPaymentTypeEnum"
16474
16837
  BillingInfoVerify:
16475
16838
  type: object
16476
16839
  properties:
@@ -17429,6 +17792,10 @@ components:
17429
17792
  type: string
17430
17793
  title: Invoice ID
17431
17794
  readOnly: true
17795
+ uuid:
17796
+ type: string
17797
+ title: Invoice UUID
17798
+ readOnly: true
17432
17799
  object:
17433
17800
  type: string
17434
17801
  title: Object type
@@ -17624,9 +17991,8 @@ components:
17624
17991
  type: string
17625
17992
  title: Dunning Campaign ID
17626
17993
  description: Unique ID to identify the dunning campaign used when dunning
17627
- the invoice. Available when the Dunning Campaigns feature is enabled.
17628
- For sites without multiple dunning campaigns enabled, this will always
17629
- be the default dunning campaign.
17994
+ the invoice. For sites without multiple dunning campaigns enabled, this
17995
+ will always be the default dunning campaign.
17630
17996
  InvoiceCreate:
17631
17997
  type: object
17632
17998
  properties:
@@ -18556,11 +18922,10 @@ components:
18556
18922
  dunning_campaign_id:
18557
18923
  type: string
18558
18924
  title: Dunning Campaign ID
18559
- description: Unique ID to identify a dunning campaign. Available when the
18560
- Dunning Campaigns feature is enabled. Used to specify if a non-default
18561
- dunning campaign should be assigned to this plan. For sites without multiple
18562
- dunning campaigns enabled, the default dunning campaign will always be
18563
- used.
18925
+ description: Unique ID to identify a dunning campaign. Used to specify if
18926
+ a non-default dunning campaign should be assigned to this plan. For sites
18927
+ without multiple dunning campaigns enabled, the default dunning campaign
18928
+ will always be used.
18564
18929
  created_at:
18565
18930
  type: string
18566
18931
  format: date-time
@@ -18720,11 +19085,10 @@ components:
18720
19085
  dunning_campaign_id:
18721
19086
  type: string
18722
19087
  title: Dunning Campaign ID
18723
- description: Unique ID to identify a dunning campaign. Available when the
18724
- Dunning Campaigns feature is enabled. Used to specify if a non-default
18725
- dunning campaign should be assigned to this plan. For sites without multiple
18726
- dunning campaigns enabled, the default dunning campaign will always be
18727
- used.
19088
+ description: Unique ID to identify a dunning campaign. Used to specify if
19089
+ a non-default dunning campaign should be assigned to this plan. For sites
19090
+ without multiple dunning campaigns enabled, the default dunning campaign
19091
+ will always be used.
18728
19092
  required:
18729
19093
  - code
18730
19094
  - name
@@ -18911,11 +19275,10 @@ components:
18911
19275
  dunning_campaign_id:
18912
19276
  type: string
18913
19277
  title: Dunning Campaign ID
18914
- description: Unique ID to identify a dunning campaign. Available when the
18915
- Dunning Campaigns feature is enabled. Used to specify if a non-default
18916
- dunning campaign should be assigned to this plan. For sites without multiple
18917
- dunning campaigns enabled, the default dunning campaign will always be
18918
- used.
19278
+ description: Unique ID to identify a dunning campaign. Used to specify if
19279
+ a non-default dunning campaign should be assigned to this plan. For sites
19280
+ without multiple dunning campaigns enabled, the default dunning campaign
19281
+ will always be used.
18919
19282
  AddOnPricing:
18920
19283
  type: object
18921
19284
  properties:
@@ -19005,22 +19368,56 @@ components:
19005
19368
  ending_quantity:
19006
19369
  type: integer
19007
19370
  title: Ending quantity
19008
- description: Ending quantity for the tier. This represents a unit amount
19009
- for unit-priced add ons, but for percentage type usage add ons, represents
19010
- the site default currency in its minimum divisible unit.
19011
19371
  minimum: 1
19012
19372
  maximum: 999999999
19013
- default: 999999999
19373
+ default:
19374
+ description: Ending quantity for the tier. This represents a unit amount
19375
+ for unit-priced add ons. Must be left empty if it is the final tier.
19014
19376
  usage_percentage:
19015
19377
  type: string
19016
19378
  title: Usage Percentage
19017
- description: Decimal usage percentage.
19379
+ description: "(deprecated) -- Use the percentage_tiers object instead."
19380
+ deprecated: true
19018
19381
  currencies:
19019
19382
  type: array
19020
19383
  title: Tier pricing
19021
19384
  items:
19022
19385
  "$ref": "#/components/schemas/TierPricing"
19023
19386
  minItems: 1
19387
+ PercentageTiersByCurrency:
19388
+ type: object
19389
+ properties:
19390
+ currency:
19391
+ type: string
19392
+ title: Currency
19393
+ description: 3-letter ISO 4217 currency code.
19394
+ maxLength: 3
19395
+ tiers:
19396
+ type: array
19397
+ title: Tiers
19398
+ items:
19399
+ "$ref": "#/components/schemas/PercentageTier"
19400
+ minItems: 1
19401
+ PercentageTier:
19402
+ type: object
19403
+ properties:
19404
+ ending_amount:
19405
+ type: number
19406
+ format: float
19407
+ title: Ending amount
19408
+ minimum: 0.01
19409
+ maximum: 9999999999999.99
19410
+ default:
19411
+ description: Ending amount for the tier. Allows up to 2 decimal places.
19412
+ Must be left empty if it is the final tier.
19413
+ usage_percentage:
19414
+ type: string
19415
+ title: Usage Percentage
19416
+ minimum: 0
19417
+ maximum: 100
19418
+ description: |
19419
+ The percentage taken of the monetary amount of usage tracked.
19420
+ This can be up to 4 decimal places represented as a string.
19024
19421
  Settings:
19025
19422
  type: object
19026
19423
  properties:
@@ -19666,6 +20063,13 @@ components:
19666
20063
  type: string
19667
20064
  title: Billing Info ID
19668
20065
  description: Billing Info ID.
20066
+ active_invoice_id:
20067
+ type: string
20068
+ title: Active invoice ID
20069
+ description: The invoice ID of the latest invoice created for an active
20070
+ subscription.
20071
+ maxLength: 13
20072
+ readOnly: true
19669
20073
  SubscriptionAddOn:
19670
20074
  type: object
19671
20075
  title: Subscription Add-on
@@ -19705,15 +20109,30 @@ components:
19705
20109
  "$ref": "#/components/schemas/RevenueScheduleTypeEnum"
19706
20110
  tier_type:
19707
20111
  "$ref": "#/components/schemas/TierTypeEnum"
20112
+ usage_timeframe:
20113
+ "$ref": "#/components/schemas/UsageTimeframeEnum"
19708
20114
  tiers:
19709
20115
  type: array
19710
20116
  title: Tiers
19711
20117
  items:
19712
20118
  "$ref": "#/components/schemas/SubscriptionAddOnTier"
19713
20119
  minItems: 1
20120
+ description: "If tiers are provided in the request, all existing tiers on
20121
+ the Subscription Add-on will be\nremoved and replaced by the tiers in
20122
+ the request. If add_on.tier_type is tiered or volume and\nadd_on.usage_type
20123
+ is percentage use percentage_tiers instead. \nThere must be one tier without
20124
+ an `ending_quantity` value which represents the final tier.\n"
20125
+ percentage_tiers:
20126
+ type: array
20127
+ title: Percentage Tiers
20128
+ items:
20129
+ "$ref": "#/components/schemas/SubscriptionAddOnPercentageTier"
20130
+ minItems: 1
19714
20131
  description: |
19715
- If tiers are provided in the request, all existing tiers on the Subscription Add-on will be
19716
- removed and replaced by the tiers in the request.
20132
+ If percentage tiers are provided in the request, all existing percentage tiers on the Subscription Add-on will be
20133
+ removed and replaced by the percentage tiers in the request. Use only if add_on.tier_type is tiered or volume and
20134
+ add_on.usage_type is percentage.
20135
+ There must be one tier without an `ending_amount` value which represents the final tier.
19717
20136
  usage_percentage:
19718
20137
  type: number
19719
20138
  format: float
@@ -19779,13 +20198,25 @@ components:
19779
20198
  description: |
19780
20199
  If the plan add-on's `tier_type` is `flat`, then `tiers` must be absent. The `tiers` object
19781
20200
  must include one to many tiers with `ending_quantity` and `unit_amount`.
19782
- There must be one tier with an `ending_quantity` of 999999999 which is the
19783
- default if not provided. See our [Guide](https://developers.recurly.com/guides/item-addon-guide.html)
20201
+ There must be one tier without an `ending_quantity` value which represents the final tier.
20202
+ See our [Guide](https://developers.recurly.com/guides/item-addon-guide.html)
19784
20203
  for an overview of how to configure quantity-based pricing models.
20204
+ percentage_tiers:
20205
+ type: array
20206
+ title: Percentage Tiers
20207
+ items:
20208
+ "$ref": "#/components/schemas/SubscriptionAddOnPercentageTier"
20209
+ minItems: 1
20210
+ description: |
20211
+ If percentage tiers are provided in the request, all existing percentage tiers on the Subscription Add-on will be
20212
+ removed and replaced by the percentage tiers in the request. There must be one tier without ending_amount value which represents the final tier.
20213
+ Use only if add_on.tier_type is tiered or volume and add_on.usage_type is percentage.
19785
20214
  usage_percentage:
19786
20215
  type: number
19787
20216
  format: float
19788
20217
  title: Usage Percentage
20218
+ minimum: 0
20219
+ maximum: 100
19789
20220
  description: The percentage taken of the monetary amount of usage tracked.
19790
20221
  This can be up to 4 decimal places. A value between 0.0 and 100.0. Required
19791
20222
  if `add_on_type` is usage and `usage_type` is percentage. Must be omitted
@@ -19848,8 +20279,18 @@ components:
19848
20279
  description: |
19849
20280
  If the plan add-on's `tier_type` is `flat`, then `tiers` must be absent. The `tiers` object
19850
20281
  must include one to many tiers with `ending_quantity` and `unit_amount`.
19851
- There must be one tier with an `ending_quantity` of 999999999 which is the
19852
- default if not provided.
20282
+ There must be one tier without an `ending_quantity` value which represents the final tier.
20283
+ percentage_tiers:
20284
+ type: array
20285
+ title: Percentage Tiers
20286
+ items:
20287
+ "$ref": "#/components/schemas/SubscriptionAddOnPercentageTier"
20288
+ minItems: 1
20289
+ description: |
20290
+ If percentage tiers are provided in the request, all existing percentage tiers on the Subscription Add-on will be
20291
+ removed and replaced by the percentage tiers in the request. Use only if add_on.tier_type is tiered or volume and
20292
+ add_on.usage_type is percentage.
20293
+ There must be one tier without an `ending_amount` value which represents the final tier.
19853
20294
  usage_percentage:
19854
20295
  type: number
19855
20296
  format: float
@@ -19868,7 +20309,9 @@ components:
19868
20309
  title: Ending quantity
19869
20310
  minimum: 1
19870
20311
  maximum: 999999999
19871
- default: 999999999
20312
+ default:
20313
+ description: Ending quantity for the tier. This represents a unit amount
20314
+ for unit-priced add ons. Must be left empty if it is the final tier.
19872
20315
  unit_amount:
19873
20316
  type: number
19874
20317
  format: float
@@ -19888,11 +20331,28 @@ components:
19888
20331
  usage_percentage:
19889
20332
  type: string
19890
20333
  title: Usage Percentage
19891
- description: The percentage taken of the monetary amount of usage tracked.
19892
- This can be up to 4 decimal places represented as a string. A value between
19893
- 0.0 and 100.0. Optionally, override tiers' default usage percentage. Required
19894
- if add-on's `add_on_type` is `usage` and `usage_type` is `percentage`.
19895
- Must be omitted otherwise.
20334
+ description: "(deprecated) -- Use the percentage_tiers object instead."
20335
+ deprecated: true
20336
+ SubscriptionAddOnPercentageTier:
20337
+ type: object
20338
+ properties:
20339
+ ending_amount:
20340
+ type: number
20341
+ format: float
20342
+ title: Ending amount
20343
+ minimum: 1
20344
+ maximum: 9999999999999.99
20345
+ default:
20346
+ description: Ending amount for the tier. Allows up to 2 decimal places.
20347
+ Must be left empty if it is the final tier.
20348
+ usage_percentage:
20349
+ type: string
20350
+ title: Usage Percentage
20351
+ minimum: 0
20352
+ maximum: 100
20353
+ description: |
20354
+ The percentage taken of the monetary amount of usage tracked.
20355
+ This can be up to 4 decimal places represented as a string.
19896
20356
  SubscriptionCancel:
19897
20357
  type: object
19898
20358
  properties:
@@ -20472,9 +20932,10 @@ components:
20472
20932
  type: boolean
20473
20933
  title: Tax Inclusive?
20474
20934
  default: false
20475
- description: Determines whether or not tax is included in the unit amount.
20476
- The Tax Inclusive Pricing feature (separate from the Mixed Tax Pricing
20477
- feature) must be enabled to use this flag.
20935
+ description: This field is deprecated. Do not use it anymore to update a
20936
+ subscription's tax inclusivity. Use the POST subscription change route
20937
+ instead.
20938
+ deprecated: true
20478
20939
  shipping:
20479
20940
  "$ref": "#/components/schemas/SubscriptionShippingUpdate"
20480
20941
  billing_info_id:
@@ -20955,7 +21416,14 @@ components:
20955
21416
  items:
20956
21417
  "$ref": "#/components/schemas/SubscriptionAddOnTier"
20957
21418
  description: The tiers and prices of the subscription based on the usage_timestamp.
20958
- If tier_type = flat, tiers = null
21419
+ If tier_type = flat, tiers = []
21420
+ percentage_tiers:
21421
+ type: array
21422
+ title: Percentage Tiers
21423
+ items:
21424
+ "$ref": "#/components/schemas/SubscriptionAddOnPercentageTier"
21425
+ description: The percentage tiers of the subscription based on the usage_timestamp.
21426
+ If tier_type = flat, percentage_tiers = []
20959
21427
  measured_unit_id:
20960
21428
  type: string
20961
21429
  description: The ID of the measured unit associated with the add-on the
@@ -21327,6 +21795,46 @@ components:
21327
21795
  maxItems: 200
21328
21796
  items:
21329
21797
  "$ref": "#/components/schemas/Plan"
21798
+ InvoiceTemplateList:
21799
+ type: object
21800
+ properties:
21801
+ object:
21802
+ type: string
21803
+ title: Object type
21804
+ description: Will always be List.
21805
+ has_more:
21806
+ type: boolean
21807
+ description: Indicates there are more results on subsequent pages.
21808
+ next:
21809
+ type: string
21810
+ description: Path to subsequent page of results.
21811
+ data:
21812
+ type: array
21813
+ items:
21814
+ "$ref": "#/components/schemas/InvoiceTemplate"
21815
+ InvoiceTemplate:
21816
+ type: object
21817
+ description: Settings for an invoice template.
21818
+ properties:
21819
+ id:
21820
+ type: string
21821
+ code:
21822
+ type: string
21823
+ description: Invoice template code.
21824
+ name:
21825
+ type: string
21826
+ description: Invoice template name.
21827
+ description:
21828
+ type: string
21829
+ description: Invoice template description.
21830
+ created_at:
21831
+ type: string
21832
+ format: date-time
21833
+ description: When the invoice template was created in Recurly.
21834
+ updated_at:
21835
+ type: string
21836
+ format: date-time
21837
+ description: When the invoice template was updated in Recurly.
21330
21838
  PaymentMethod:
21331
21839
  properties:
21332
21840
  object:
@@ -21681,6 +22189,25 @@ components:
21681
22189
  - tiered
21682
22190
  - stairstep
21683
22191
  - volume
22192
+ UsageTimeframeEnum:
22193
+ type: string
22194
+ title: Usage Timeframe
22195
+ description: The time at which usage totals are reset for billing purposes.
22196
+ enum:
22197
+ - billing_period
22198
+ - subscription_term
22199
+ default: billing_period
22200
+ UsageTimeframeCreateEnum:
22201
+ type: string
22202
+ title: Usage Timeframe
22203
+ description: |
22204
+ The time at which usage totals are reset for billing purposes.
22205
+ Allows for `tiered` add-ons to accumulate usage over the course of multiple
22206
+ billing periods.
22207
+ enum:
22208
+ - billing_period
22209
+ - subscription_term
22210
+ default: billing_period
21684
22211
  CreditPaymentActionEnum:
21685
22212
  type: string
21686
22213
  enum:
@@ -22163,6 +22690,7 @@ components:
22163
22690
  - three_d_secure_connection_error
22164
22691
  - three_d_secure_credential_error
22165
22692
  - three_d_secure_not_supported
22693
+ - too_busy
22166
22694
  - too_many_attempts
22167
22695
  - total_credit_exceeds_capture
22168
22696
  - transaction_already_refunded
@@ -22245,3 +22773,14 @@ components:
22245
22773
  enum:
22246
22774
  - checking
22247
22775
  - savings
22776
+ ExternalHppTypeEnum:
22777
+ type: string
22778
+ description: Use for Adyen HPP billing info.
22779
+ enum:
22780
+ - adyen
22781
+ OnlineBankingPaymentTypeEnum:
22782
+ type: string
22783
+ description: Use for Online Banking billing info.
22784
+ enum:
22785
+ - ideal
22786
+ - sofort