recurly 4.12.0 → 4.15.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 +34 -0
  4. data/GETTING_STARTED.md +9 -1
  5. data/lib/recurly/client/operations.rb +209 -136
  6. data/lib/recurly/client.rb +14 -2
  7. data/lib/recurly/errors/api_errors.rb +2 -0
  8. data/lib/recurly/requests/account_create.rb +1 -1
  9. data/lib/recurly/requests/account_purchase.rb +1 -1
  10. data/lib/recurly/requests/account_update.rb +1 -1
  11. data/lib/recurly/requests/add_on_create.rb +5 -1
  12. data/lib/recurly/requests/add_on_update.rb +5 -1
  13. data/lib/recurly/requests/billing_info_create.rb +8 -0
  14. data/lib/recurly/requests/percentage_tier.rb +18 -0
  15. data/lib/recurly/requests/percentage_tiers_by_currency.rb +18 -0
  16. data/lib/recurly/requests/plan_create.rb +1 -1
  17. data/lib/recurly/requests/plan_update.rb +1 -1
  18. data/lib/recurly/requests/subscription_add_on_create.rb +5 -1
  19. data/lib/recurly/requests/subscription_add_on_percentage_tier.rb +18 -0
  20. data/lib/recurly/requests/subscription_add_on_tier.rb +1 -1
  21. data/lib/recurly/requests/subscription_update.rb +1 -1
  22. data/lib/recurly/requests/tier.rb +2 -2
  23. data/lib/recurly/resources/account.rb +4 -4
  24. data/lib/recurly/resources/account_mini.rb +1 -1
  25. data/lib/recurly/resources/add_on.rb +4 -0
  26. data/lib/recurly/resources/invoice.rb +5 -1
  27. data/lib/recurly/resources/invoice_template.rb +34 -0
  28. data/lib/recurly/resources/percentage_tier.rb +18 -0
  29. data/lib/recurly/resources/{account_invoice_template.rb → percentage_tiers_by_currency.rb} +7 -7
  30. data/lib/recurly/resources/plan.rb +1 -1
  31. data/lib/recurly/resources/subscription_add_on.rb +5 -1
  32. data/lib/recurly/resources/subscription_add_on_percentage_tier.rb +18 -0
  33. data/lib/recurly/resources/subscription_add_on_tier.rb +1 -1
  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 +552 -71
  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"
@@ -15940,6 +16270,11 @@ components:
15940
16270
  title: Tiers
15941
16271
  items:
15942
16272
  "$ref": "#/components/schemas/Tier"
16273
+ percentage_tiers:
16274
+ type: array
16275
+ title: Percentage Tiers
16276
+ items:
16277
+ "$ref": "#/components/schemas/PercentageTiersByCurrency"
15943
16278
  external_sku:
15944
16279
  type: string
15945
16280
  title: External SKU
@@ -16116,8 +16451,17 @@ components:
16116
16451
  description: |
16117
16452
  If the tier_type is `flat`, then `tiers` must be absent. The `tiers` object
16118
16453
  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`
16454
+ the desired `currencies`. There must be one tier with an `ending_quantity`
16120
16455
  of 999999999 which is the default if not provided.
16456
+ percentage_tiers:
16457
+ type: array
16458
+ title: Percentage Tiers By Currency
16459
+ items:
16460
+ "$ref": "#/components/schemas/PercentageTiersByCurrency"
16461
+ description: |
16462
+ Array of objects which must have at least one set of tiers
16463
+ per currency and the currency code. The tier_type must be `volume` or `tiered`,
16464
+ if not, it must be absent. There must be one tier without ending_amount value.
16121
16465
  required:
16122
16466
  - code
16123
16467
  - name
@@ -16245,8 +16589,17 @@ components:
16245
16589
  description: |
16246
16590
  If the tier_type is `flat`, then `tiers` must be absent. The `tiers` object
16247
16591
  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.
16592
+ the desired `currencies`. There must be one tier without an `ending_quantity` value
16593
+ that represents the final tier.
16594
+ percentage_tiers:
16595
+ type: array
16596
+ title: Percentage Tiers By Currency
16597
+ items:
16598
+ "$ref": "#/components/schemas/PercentageTiersByCurrency"
16599
+ description: |
16600
+ `percentage_tiers` is an array of objects, which must have the set of tiers
16601
+ per currency and the currency code. The tier_type must be `volume` or `tiered`,
16602
+ if not, it must be absent.
16250
16603
  BillingInfo:
16251
16604
  type: object
16252
16605
  properties:
@@ -16471,6 +16824,10 @@ components:
16471
16824
  billing info marked `primary_payment_method` can be set as a backup. An
16472
16825
  account can have a maximum of 1 backup, if a user sets a different payment
16473
16826
  method as a backup, the existing backup will no longer be marked as such.
16827
+ external_hpp_type:
16828
+ "$ref": "#/components/schemas/ExternalHppTypeEnum"
16829
+ online_banking_payment_type:
16830
+ "$ref": "#/components/schemas/OnlineBankingPaymentTypeEnum"
16474
16831
  BillingInfoVerify:
16475
16832
  type: object
16476
16833
  properties:
@@ -17429,6 +17786,10 @@ components:
17429
17786
  type: string
17430
17787
  title: Invoice ID
17431
17788
  readOnly: true
17789
+ uuid:
17790
+ type: string
17791
+ title: Invoice UUID
17792
+ readOnly: true
17432
17793
  object:
17433
17794
  type: string
17434
17795
  title: Object type
@@ -17624,9 +17985,8 @@ components:
17624
17985
  type: string
17625
17986
  title: Dunning Campaign ID
17626
17987
  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.
17988
+ the invoice. For sites without multiple dunning campaigns enabled, this
17989
+ will always be the default dunning campaign.
17630
17990
  InvoiceCreate:
17631
17991
  type: object
17632
17992
  properties:
@@ -18556,11 +18916,10 @@ components:
18556
18916
  dunning_campaign_id:
18557
18917
  type: string
18558
18918
  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.
18919
+ description: Unique ID to identify a dunning campaign. Used to specify if
18920
+ a non-default dunning campaign should be assigned to this plan. For sites
18921
+ without multiple dunning campaigns enabled, the default dunning campaign
18922
+ will always be used.
18564
18923
  created_at:
18565
18924
  type: string
18566
18925
  format: date-time
@@ -18720,11 +19079,10 @@ components:
18720
19079
  dunning_campaign_id:
18721
19080
  type: string
18722
19081
  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.
19082
+ description: Unique ID to identify a dunning campaign. Used to specify if
19083
+ a non-default dunning campaign should be assigned to this plan. For sites
19084
+ without multiple dunning campaigns enabled, the default dunning campaign
19085
+ will always be used.
18728
19086
  required:
18729
19087
  - code
18730
19088
  - name
@@ -18911,11 +19269,10 @@ components:
18911
19269
  dunning_campaign_id:
18912
19270
  type: string
18913
19271
  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.
19272
+ description: Unique ID to identify a dunning campaign. Used to specify if
19273
+ a non-default dunning campaign should be assigned to this plan. For sites
19274
+ without multiple dunning campaigns enabled, the default dunning campaign
19275
+ will always be used.
18919
19276
  AddOnPricing:
18920
19277
  type: object
18921
19278
  properties:
@@ -19006,21 +19363,50 @@ components:
19006
19363
  type: integer
19007
19364
  title: Ending quantity
19008
19365
  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.
19366
+ for unit-priced add ons.
19011
19367
  minimum: 1
19012
19368
  maximum: 999999999
19013
19369
  default: 999999999
19014
19370
  usage_percentage:
19015
19371
  type: string
19016
19372
  title: Usage Percentage
19017
- description: Decimal usage percentage.
19373
+ description: "(deprecated) -- Use the percentage_tiers object instead."
19374
+ deprecated: true
19018
19375
  currencies:
19019
19376
  type: array
19020
19377
  title: Tier pricing
19021
19378
  items:
19022
19379
  "$ref": "#/components/schemas/TierPricing"
19023
19380
  minItems: 1
19381
+ PercentageTiersByCurrency:
19382
+ type: object
19383
+ properties:
19384
+ currency:
19385
+ type: string
19386
+ title: Currency
19387
+ description: 3-letter ISO 4217 currency code.
19388
+ maxLength: 3
19389
+ tiers:
19390
+ type: array
19391
+ title: Tiers
19392
+ items:
19393
+ "$ref": "#/components/schemas/PercentageTier"
19394
+ minItems: 1
19395
+ PercentageTier:
19396
+ type: object
19397
+ properties:
19398
+ ending_amount:
19399
+ type: number
19400
+ format: float
19401
+ title: Ending amount
19402
+ minimum: 0.1
19403
+ maximum: 9999999999999
19404
+ description: Ending amount for the tier. Allows up to 2 decimal places.
19405
+ The last tier ending_amount is null.
19406
+ usage_percentage:
19407
+ type: string
19408
+ title: Usage Percentage
19409
+ description: Decimal usage percentage.
19024
19410
  Settings:
19025
19411
  type: object
19026
19412
  properties:
@@ -19713,7 +20099,18 @@ components:
19713
20099
  minItems: 1
19714
20100
  description: |
19715
20101
  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.
20102
+ removed and replaced by the tiers in the request. If add_on.tier_type is tiered or volume and
20103
+ add_on.usage_type is percentage use percentage_tiers instead.
20104
+ percentage_tiers:
20105
+ type: array
20106
+ title: Percentage Tiers
20107
+ items:
20108
+ "$ref": "#/components/schemas/SubscriptionAddOnPercentageTier"
20109
+ minItems: 1
20110
+ description: |
20111
+ If percentage tiers are provided in the request, all existing percentage tiers on the Subscription Add-on will be
20112
+ removed and replaced by the percentage tiers in the request. Use only if add_on.tier_type is tiered or volume and
20113
+ add_on.usage_type is percentage
19717
20114
  usage_percentage:
19718
20115
  type: number
19719
20116
  format: float
@@ -19779,9 +20176,19 @@ components:
19779
20176
  description: |
19780
20177
  If the plan add-on's `tier_type` is `flat`, then `tiers` must be absent. The `tiers` object
19781
20178
  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)
20179
+ There must be one tier without ending_quantity value.
20180
+ See our [Guide](https://developers.recurly.com/guides/item-addon-guide.html)
19784
20181
  for an overview of how to configure quantity-based pricing models.
20182
+ percentage_tiers:
20183
+ type: array
20184
+ title: Percentage Tiers
20185
+ items:
20186
+ "$ref": "#/components/schemas/SubscriptionAddOnPercentageTier"
20187
+ minItems: 1
20188
+ description: |
20189
+ If percentage tiers are provided in the request, all existing percentage tiers on the Subscription Add-on will be
20190
+ removed and replaced by the percentage tiers in the request. There must be one tier without ending_amount value.
20191
+ Use only if add_on.tier_type is tiered or volume and add_on.usage_type is percentage.
19785
20192
  usage_percentage:
19786
20193
  type: number
19787
20194
  format: float
@@ -19868,7 +20275,7 @@ components:
19868
20275
  title: Ending quantity
19869
20276
  minimum: 1
19870
20277
  maximum: 999999999
19871
- default: 999999999
20278
+ default:
19872
20279
  unit_amount:
19873
20280
  type: number
19874
20281
  format: float
@@ -19888,11 +20295,25 @@ components:
19888
20295
  usage_percentage:
19889
20296
  type: string
19890
20297
  title: Usage Percentage
19891
- description: The percentage taken of the monetary amount of usage tracked.
20298
+ description: "(deprecated) -- Use the percentage_tiers object instead."
20299
+ deprecated: true
20300
+ SubscriptionAddOnPercentageTier:
20301
+ type: object
20302
+ properties:
20303
+ ending_amount:
20304
+ type: number
20305
+ format: float
20306
+ title: Ending amount
20307
+ minimum: 1
20308
+ maximum: 9999999999999.99
20309
+ default:
20310
+ usage_percentage:
20311
+ type: string
20312
+ title: Usage Percentage
20313
+ description: |
20314
+ The percentage taken of the monetary amount of usage tracked.
19892
20315
  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.
20316
+ 0.0 and 100.0.
19896
20317
  SubscriptionCancel:
19897
20318
  type: object
19898
20319
  properties:
@@ -20472,9 +20893,10 @@ components:
20472
20893
  type: boolean
20473
20894
  title: Tax Inclusive?
20474
20895
  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.
20896
+ description: This field is deprecated. Do not use it anymore to update a
20897
+ subscription's tax inclusivity. Use the POST subscription change route
20898
+ instead.
20899
+ deprecated: true
20478
20900
  shipping:
20479
20901
  "$ref": "#/components/schemas/SubscriptionShippingUpdate"
20480
20902
  billing_info_id:
@@ -20955,7 +21377,14 @@ components:
20955
21377
  items:
20956
21378
  "$ref": "#/components/schemas/SubscriptionAddOnTier"
20957
21379
  description: The tiers and prices of the subscription based on the usage_timestamp.
20958
- If tier_type = flat, tiers = null
21380
+ If tier_type = flat, tiers = []
21381
+ percentage_tiers:
21382
+ type: array
21383
+ title: Percentage Tiers
21384
+ items:
21385
+ "$ref": "#/components/schemas/SubscriptionAddOnPercentageTier"
21386
+ description: The percentage tiers of the subscription based on the usage_timestamp.
21387
+ If tier_type = flat, percentage_tiers = []
20959
21388
  measured_unit_id:
20960
21389
  type: string
20961
21390
  description: The ID of the measured unit associated with the add-on the
@@ -21327,6 +21756,46 @@ components:
21327
21756
  maxItems: 200
21328
21757
  items:
21329
21758
  "$ref": "#/components/schemas/Plan"
21759
+ InvoiceTemplateList:
21760
+ type: object
21761
+ properties:
21762
+ object:
21763
+ type: string
21764
+ title: Object type
21765
+ description: Will always be List.
21766
+ has_more:
21767
+ type: boolean
21768
+ description: Indicates there are more results on subsequent pages.
21769
+ next:
21770
+ type: string
21771
+ description: Path to subsequent page of results.
21772
+ data:
21773
+ type: array
21774
+ items:
21775
+ "$ref": "#/components/schemas/InvoiceTemplate"
21776
+ InvoiceTemplate:
21777
+ type: object
21778
+ description: Settings for an invoice template.
21779
+ properties:
21780
+ id:
21781
+ type: string
21782
+ code:
21783
+ type: string
21784
+ description: Invoice template code.
21785
+ name:
21786
+ type: string
21787
+ description: Invoice template name.
21788
+ description:
21789
+ type: string
21790
+ description: Invoice template description.
21791
+ created_at:
21792
+ type: string
21793
+ format: date-time
21794
+ description: When the invoice template was created in Recurly.
21795
+ updated_at:
21796
+ type: string
21797
+ format: date-time
21798
+ description: When the invoice template was updated in Recurly.
21330
21799
  PaymentMethod:
21331
21800
  properties:
21332
21801
  object:
@@ -22001,6 +22470,7 @@ components:
22001
22470
  - rate_limited
22002
22471
  - service_not_available
22003
22472
  - simultaneous_request
22473
+ - tax_service_error
22004
22474
  - transaction
22005
22475
  - unauthorized
22006
22476
  - unavailable_in_api_version
@@ -22244,3 +22714,14 @@ components:
22244
22714
  enum:
22245
22715
  - checking
22246
22716
  - savings
22717
+ ExternalHppTypeEnum:
22718
+ type: string
22719
+ description: Use for Adyen HPP billing info.
22720
+ enum:
22721
+ - adyen
22722
+ OnlineBankingPaymentTypeEnum:
22723
+ type: string
22724
+ description: Use for Online Banking billing info.
22725
+ enum:
22726
+ - ideal
22727
+ - sofort