recurly 4.13.0 → 4.17.0

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 (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