license_manager 0.1.1 → 0.3.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 (129) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +152 -0
  3. data/README.md +3 -3
  4. data/docs/BillingPortalSession.md +18 -0
  5. data/docs/CancelLicense.md +22 -0
  6. data/docs/CancellationReason.md +15 -0
  7. data/docs/CancellationStats.md +30 -0
  8. data/docs/CancellationStatsByReasonInner.md +20 -0
  9. data/docs/ConnectStripe.md +1 -1
  10. data/docs/CreateBillingPortalSession.md +18 -0
  11. data/docs/CreateIntegrationMapping.md +1 -1
  12. data/docs/CreateLicense.md +2 -0
  13. data/docs/CreatePolicy.md +3 -1
  14. data/docs/CreateProductWithPolicy.md +1 -1
  15. data/docs/CreateToken.md +1 -1
  16. data/docs/EventActorOneOf.md +1 -1
  17. data/docs/Integration.md +11 -1
  18. data/docs/IntegrationMapping.md +2 -0
  19. data/docs/IntegrationMappingRecurring.md +20 -0
  20. data/docs/IntegrationsApi.md +74 -0
  21. data/docs/License.md +12 -0
  22. data/docs/LicenseSubscription.md +34 -0
  23. data/docs/LicensesApi.md +80 -3
  24. data/docs/Machine.md +3 -1
  25. data/docs/MachinesApi.md +1 -1
  26. data/docs/Mrr.md +26 -0
  27. data/docs/MrrByIntervalInner.md +24 -0
  28. data/docs/MrrByPolicyInner.md +22 -0
  29. data/docs/Policy.md +2 -0
  30. data/docs/PolicySettings.md +3 -1
  31. data/docs/PortalApi.md +80 -1
  32. data/docs/PortalLink.md +2 -2
  33. data/docs/Product.md +2 -0
  34. data/docs/ProductStats.md +8 -4
  35. data/docs/ProductsApi.md +2 -2
  36. data/docs/Revenue.md +10 -2
  37. data/docs/StripeIntegration.md +1 -1
  38. data/docs/StripePermission.md +5 -1
  39. data/docs/StripePrice.md +2 -0
  40. data/docs/StripePriceRecurring.md +20 -0
  41. data/docs/SubscriptionStats.md +38 -0
  42. data/docs/UpdateIntegration.md +20 -0
  43. data/docs/UpdateLicense.md +3 -1
  44. data/docs/UpdatePolicy.md +3 -1
  45. data/docs/UpdateProduct.md +3 -1
  46. data/lib/license_manager/api/integrations_api.rb +74 -0
  47. data/lib/license_manager/api/licenses_api.rb +80 -6
  48. data/lib/license_manager/api/machines_api.rb +3 -3
  49. data/lib/license_manager/api/portal_api.rb +72 -2
  50. data/lib/license_manager/api/products_api.rb +4 -4
  51. data/lib/license_manager/models/billing_portal_session.rb +178 -0
  52. data/lib/license_manager/models/cancel_license.rb +238 -0
  53. data/lib/license_manager/models/cancellation_reason.rb +45 -0
  54. data/lib/license_manager/models/cancellation_stats.rb +347 -0
  55. data/lib/license_manager/models/cancellation_stats_by_reason_inner.rb +225 -0
  56. data/lib/license_manager/models/connect_stripe.rb +1 -1
  57. data/lib/license_manager/models/create_billing_portal_session.rb +161 -0
  58. data/lib/license_manager/models/create_integration_mapping.rb +1 -1
  59. data/lib/license_manager/models/create_license.rb +12 -1
  60. data/lib/license_manager/models/create_policy.rb +40 -5
  61. data/lib/license_manager/models/create_product_with_policy.rb +1 -1
  62. data/lib/license_manager/models/create_token.rb +1 -1
  63. data/lib/license_manager/models/event_type.rb +7 -1
  64. data/lib/license_manager/models/integration.rb +136 -1
  65. data/lib/license_manager/models/integration_mapping.rb +13 -1
  66. data/lib/license_manager/models/integration_mapping_recurring.rb +228 -0
  67. data/lib/license_manager/models/license.rb +91 -1
  68. data/lib/license_manager/models/license_status.rb +2 -1
  69. data/lib/license_manager/models/license_subscription.rb +388 -0
  70. data/lib/license_manager/models/machine.rb +17 -4
  71. data/lib/license_manager/models/mrr.rb +291 -0
  72. data/lib/license_manager/models/mrr_by_interval_inner.rb +279 -0
  73. data/lib/license_manager/models/mrr_by_policy_inner.rb +229 -0
  74. data/lib/license_manager/models/policy.rb +14 -1
  75. data/lib/license_manager/models/policy_settings.rb +40 -5
  76. data/lib/license_manager/models/portal_link.rb +1 -1
  77. data/lib/license_manager/models/product.rb +28 -1
  78. data/lib/license_manager/models/product_stats.rb +31 -5
  79. data/lib/license_manager/models/revenue.rb +112 -4
  80. data/lib/license_manager/models/stripe_integration.rb +1 -1
  81. data/lib/license_manager/models/stripe_permission.rb +58 -4
  82. data/lib/license_manager/models/stripe_price.rb +13 -1
  83. data/lib/license_manager/models/stripe_price_recurring.rb +228 -0
  84. data/lib/license_manager/models/subscription_stats.rb +456 -0
  85. data/lib/license_manager/models/update_integration.rb +199 -0
  86. data/lib/license_manager/models/update_license.rb +16 -5
  87. data/lib/license_manager/models/update_policy.rb +40 -5
  88. data/lib/license_manager/models/update_product.rb +14 -4
  89. data/lib/license_manager/version.rb +1 -1
  90. data/lib/license_manager.rb +14 -0
  91. data/openapi.json +1146 -59
  92. data/spec/api/integrations_api_spec.rb +13 -0
  93. data/spec/api/licenses_api_spec.rb +16 -3
  94. data/spec/api/machines_api_spec.rb +1 -1
  95. data/spec/api/portal_api_spec.rb +14 -1
  96. data/spec/api/products_api_spec.rb +2 -2
  97. data/spec/models/billing_portal_session_spec.rb +36 -0
  98. data/spec/models/cancel_license_spec.rb +48 -0
  99. data/spec/models/cancellation_reason_spec.rb +30 -0
  100. data/spec/models/cancellation_stats_by_reason_inner_spec.rb +42 -0
  101. data/spec/models/cancellation_stats_spec.rb +72 -0
  102. data/spec/models/create_billing_portal_session_spec.rb +36 -0
  103. data/spec/models/create_license_spec.rb +6 -0
  104. data/spec/models/create_policy_spec.rb +6 -0
  105. data/spec/models/create_token_spec.rb +1 -1
  106. data/spec/models/integration_mapping_recurring_spec.rb +46 -0
  107. data/spec/models/integration_mapping_spec.rb +6 -0
  108. data/spec/models/integration_spec.rb +30 -0
  109. data/spec/models/license_spec.rb +36 -0
  110. data/spec/models/license_subscription_spec.rb +88 -0
  111. data/spec/models/machine_spec.rb +7 -1
  112. data/spec/models/mrr_by_interval_inner_spec.rb +58 -0
  113. data/spec/models/mrr_by_policy_inner_spec.rb +48 -0
  114. data/spec/models/mrr_spec.rb +60 -0
  115. data/spec/models/policy_settings_spec.rb +6 -0
  116. data/spec/models/policy_spec.rb +6 -0
  117. data/spec/models/product_spec.rb +6 -0
  118. data/spec/models/product_stats_spec.rb +12 -0
  119. data/spec/models/revenue_spec.rb +24 -0
  120. data/spec/models/stripe_permission_spec.rb +12 -0
  121. data/spec/models/stripe_price_recurring_spec.rb +46 -0
  122. data/spec/models/stripe_price_spec.rb +6 -0
  123. data/spec/models/subscription_stats_spec.rb +96 -0
  124. data/spec/models/token_spec.rb +1 -1
  125. data/spec/models/update_integration_spec.rb +42 -0
  126. data/spec/models/update_license_spec.rb +6 -0
  127. data/spec/models/update_policy_spec.rb +6 -0
  128. data/spec/models/update_product_spec.rb +6 -0
  129. metadata +57 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: df11434afa2a9be8fd6ec9871332171ca914152a8aa2285a7f407bec5f00a9b7
4
- data.tar.gz: 939d7f2662be1617ffbea8419207821c1840df7b71a07bfa6280b1413adb317a
3
+ metadata.gz: 1d2fad9e16d3194d5a682104cbf199cbadf37b8960a262943d61355963bbf5bc
4
+ data.tar.gz: 423f1d92ca5ce3b5f3f47368437131f53b47bb12811e54709902ade88e691c28
5
5
  SHA512:
6
- metadata.gz: adcd4c107f820fc357e3295a4fc559536a336d607555d0021344fdc189cfe24dc99004e9f43ac57b47a78a6e98fbfe204857e07a9d7a95fe946856a0fe867e44
7
- data.tar.gz: 719c8d3ebd7f357cc171c0f47622981fba13a36bf8c478fd6cabce01ac50679babac98d1327bbdbe2cd2d7cc30d862f46b23edde29ac122cba83dec4e20945c3
6
+ metadata.gz: ead20ee997f6de97969a0fe24d9e3e26d4f9e665e7f15ef1776e5f71227cc1805f7078f3c6bf0ebf1f56e3054642912e8cc2aa27e7db5dd715cafc0a91bfe25d
7
+ data.tar.gz: 46838fa3d3d6777363fb88e38372d21234ea1a837201c88f1942fcbf7f07076f28d28023fac6d33d95e1aa45a7942beac19500683a902a8036590df10f01227e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,157 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0 (2026-10-27)
4
+
5
+ ### Breaking changes
6
+
7
+ - `POST /v1/customers/{id}/tokens`: added the new `customer:billing` enum value to the `scope/items/` response property for the response status `201`
8
+ - `GET /v1/licenses/{id}/events`: added the new `license.payment_failed` enum value to the `data/items/type` response property for the response status `200`
9
+ - `GET /v1/licenses/{id}/events`: added the new `license.payment_succeeded` enum value to the `data/items/type` response property for the response status `200`
10
+ - `GET /v1/licenses/{id}/events`: added the new `license.subscription_ended` enum value to the `data/items/type` response property for the response status `200`
11
+ - `POST /v1/licenses/{id}/tokens`: added the new `customer:billing` enum value to the `scope/items/` response property for the response status `201`
12
+ - `POST /v1/machines/{id}/tokens`: added the new `customer:billing` enum value to the `scope/items/` response property for the response status `201`
13
+ - `GET /v1/policies/{id}/events`: added the new `license.payment_failed` enum value to the `data/items/type` response property for the response status `200`
14
+ - `GET /v1/policies/{id}/events`: added the new `license.payment_succeeded` enum value to the `data/items/type` response property for the response status `200`
15
+ - `GET /v1/policies/{id}/events`: added the new `license.subscription_ended` enum value to the `data/items/type` response property for the response status `200`
16
+
17
+ ### Changes
18
+
19
+ - `GET /v1/customers/{customerId}/licenses`: added the required property `data/items/subscription` to the response with the `200` status
20
+ - `POST /v1/customers/{id}/billing-portal-sessions`: endpoint added
21
+ - `POST /v1/customers/{id}/tokens`: added the new `customer:billing` enum value to the request property `scope/items/`
22
+ - `PATCH /v1/integration-mappings/{id}`: added the required property `recurring` to the response with the `200` status
23
+ - `PATCH /v1/integrations/{id}`: added the new optional request property `subscriptionGraceDays`
24
+ - `PATCH /v1/integrations/{id}`: added the required property `canBillingPortal` to the response with the `200` status
25
+ - `PATCH /v1/integrations/{id}`: added the required property `canManageSubscriptions` to the response with the `200` status
26
+ - `PATCH /v1/integrations/{id}`: added the required property `subscriptionGraceDays` to the response with the `200` status
27
+ - `POST /v1/integrations/{id}/check`: added the required property `canBillingPortal` to the response with the `200` status
28
+ - `POST /v1/integrations/{id}/check`: added the required property `canManageSubscriptions` to the response with the `200` status
29
+ - `POST /v1/integrations/{id}/check`: added the required property `subscriptionGraceDays` to the response with the `200` status
30
+ - `GET /v1/integrations/{id}/stripe/prices`: added the required property `data/items/recurring` to the response with the `200` status
31
+ - `GET /v1/licenses/{id}`: added the required property `subscription` to the response with the `200` status
32
+ - `PATCH /v1/licenses/{id}`: added the non-success response with the status `409`
33
+ - `PATCH /v1/licenses/{id}`: added the required property `subscription` to the response with the `200` status
34
+ - `POST /v1/licenses/{id}/cancel`: added the required property `subscription` to the response with the `200` status
35
+ - `GET /v1/licenses/{id}/events`: added the enum value `license.payment_failed` to the property `anyOf[#/components/schemas/EventType]/` of the `query` request parameter `type` (shared schema: `EventType`, also at `anyOf[#/components/schemas/EventType]`, `anyOf[subschema #2]/items`)
36
+ - `GET /v1/licenses/{id}/events`: added the enum value `license.payment_succeeded` to the property `anyOf[#/components/schemas/EventType]/` of the `query` request parameter `type` (shared schema: `EventType`, also at `anyOf[#/components/schemas/EventType]`, `anyOf[subschema #2]/items`)
37
+ - `GET /v1/licenses/{id}/events`: added the enum value `license.subscription_ended` to the property `anyOf[#/components/schemas/EventType]/` of the `query` request parameter `type` (shared schema: `EventType`, also at `anyOf[#/components/schemas/EventType]`, `anyOf[subschema #2]/items`)
38
+ - `POST /v1/licenses/{id}/tokens`: added the new `customer:billing` enum value to the request property `scope/items/`
39
+ - `POST /v1/machines/{id}/tokens`: added the new `customer:billing` enum value to the request property `scope/items/`
40
+ - `GET /v1/policies/{id}/events`: added the enum value `license.payment_failed` to the property `anyOf[#/components/schemas/EventType]/` of the `query` request parameter `type` (shared schema: `EventType`, also at `anyOf[#/components/schemas/EventType]`, `anyOf[subschema #2]/items`)
41
+ - `GET /v1/policies/{id}/events`: added the enum value `license.payment_succeeded` to the property `anyOf[#/components/schemas/EventType]/` of the `query` request parameter `type` (shared schema: `EventType`, also at `anyOf[#/components/schemas/EventType]`, `anyOf[subschema #2]/items`)
42
+ - `GET /v1/policies/{id}/events`: added the enum value `license.subscription_ended` to the property `anyOf[#/components/schemas/EventType]/` of the `query` request parameter `type` (shared schema: `EventType`, also at `anyOf[#/components/schemas/EventType]`, `anyOf[subschema #2]/items`)
43
+ - `GET /v1/products/{id}/stats`: added the required property `revenue/items/paymentCount` to the response with the `200` status
44
+ - `GET /v1/products/{id}/stats`: added the required property `revenue/items/subscriptionTotal` to the response with the `200` status
45
+ - `GET /v1/products/{id}/stats`: added the required property `subscriptions` to the response with the `200` status
46
+ - `GET /v1/products/{productId}/integrations/stripe`: added the required property `integration/anyOf[#/components/schemas/Integration]/canBillingPortal` to the response with the `200` status
47
+ - `GET /v1/products/{productId}/integrations/stripe`: added the required property `integration/anyOf[#/components/schemas/Integration]/canManageSubscriptions` to the response with the `200` status
48
+ - `GET /v1/products/{productId}/integrations/stripe`: added the required property `integration/anyOf[#/components/schemas/Integration]/subscriptionGraceDays` to the response with the `200` status
49
+ - `GET /v1/products/{productId}/integrations/stripe`: added the required property `mappings/items/recurring` to the response with the `200` status
50
+ - `GET /v1/products/{productId}/integrations/stripe`: added the required property `requiredPermissions/items/subscriptions` to the response with the `200` status
51
+ - `PUT /v1/products/{productId}/integrations/stripe`: added the required property `integration/anyOf[#/components/schemas/Integration]/canBillingPortal` to the response with the `200` status
52
+ - `PUT /v1/products/{productId}/integrations/stripe`: added the required property `integration/anyOf[#/components/schemas/Integration]/canManageSubscriptions` to the response with the `200` status
53
+ - `PUT /v1/products/{productId}/integrations/stripe`: added the required property `integration/anyOf[#/components/schemas/Integration]/subscriptionGraceDays` to the response with the `200` status
54
+ - `PUT /v1/products/{productId}/integrations/stripe`: added the required property `mappings/items/recurring` to the response with the `200` status
55
+ - `PUT /v1/products/{productId}/integrations/stripe`: added the required property `requiredPermissions/items/subscriptions` to the response with the `200` status
56
+ - `POST /v1/products/{productId}/integrations/stripe/mappings`: added the required property `recurring` to the response with the `201` status
57
+ - `GET /v1/products/{productId}/licenses`: added the required property `data/items/subscription` to the response with the `200` status
58
+ - `POST /v1/products/{productId}/licenses`: added the required property `subscription` to the response with the `201` status
59
+
60
+ ## 0.2.0 (2026-10-27)
61
+
62
+ ### Breaking changes
63
+
64
+ - `GET /v1/customers/{customerId}/licenses`: added the new `canceled` enum value to the `data/items/status` response property for the response status `200`
65
+ - `POST /v1/customers/{id}/tokens`: added the new `license:cancel` enum value to the `scope/items/` response property for the response status `201`
66
+ - `GET /v1/licenses/{id}`: added the new `canceled` enum value to the `status` response property for the response status `200`
67
+ - `PATCH /v1/licenses/{id}`: added the new `canceled` enum value to the `status` response property for the response status `200`
68
+ - `GET /v1/licenses/{id}/events`: added the new `license.canceled` enum value to the `data/items/type` response property for the response status `200`
69
+ - `GET /v1/licenses/{id}/events`: added the new `license.refund_failed` enum value to the `data/items/type` response property for the response status `200`
70
+ - `GET /v1/licenses/{id}/events`: added the new `license.refunded` enum value to the `data/items/type` response property for the response status `200`
71
+ - `POST /v1/licenses/{id}/tokens`: added the new `license:cancel` enum value to the `scope/items/` response property for the response status `201`
72
+ - `GET /v1/licenses/{licenseId}/machines`: added the new `locked` enum value to the `data/items/status` response property for the response status `200`
73
+ - `GET /v1/machines/{id}`: added the new `locked` enum value to the `status` response property for the response status `200`
74
+ - `POST /v1/machines/{id}/deactivate`: added the new `locked` enum value to the `status` response property for the response status `200`
75
+ - `POST /v1/machines/{id}/tokens`: added the new `license:cancel` enum value to the `scope/items/` response property for the response status `201`
76
+ - `GET /v1/policies/{id}/events`: added the new `license.canceled` enum value to the `data/items/type` response property for the response status `200`
77
+ - `GET /v1/policies/{id}/events`: added the new `license.refund_failed` enum value to the `data/items/type` response property for the response status `200`
78
+ - `GET /v1/policies/{id}/events`: added the new `license.refunded` enum value to the `data/items/type` response property for the response status `200`
79
+ - `GET /v1/products/{productId}/licenses`: added the new `canceled` enum value to the `data/items/status` response property for the response status `200`
80
+ - `POST /v1/products/{productId}/licenses`: added the new `canceled` enum value to the `status` response property for the response status `201`
81
+
82
+ ### Changes
83
+
84
+ - `GET /v1/customers/{customerId}/licenses`: added the enum value `canceled` to the property `allOf[#/components/schemas/LicenseStatus]/` of the `query` request parameter `status`
85
+ - `GET /v1/customers/{customerId}/licenses`: added the required property `data/items/canceledAt` to the response with the `200` status
86
+ - `GET /v1/customers/{customerId}/licenses`: added the required property `data/items/cancellableUntil` to the response with the `200` status
87
+ - `GET /v1/customers/{customerId}/licenses`: added the required property `data/items/cancellationComment` to the response with the `200` status
88
+ - `GET /v1/customers/{customerId}/licenses`: added the required property `data/items/cancellationReason` to the response with the `200` status
89
+ - `GET /v1/customers/{customerId}/licenses`: added the required property `data/items/stripeRefundId` to the response with the `200` status
90
+ - `POST /v1/customers/{id}/tokens`: added the new `license:cancel` enum value to the request property `scope/items/`
91
+ - `PATCH /v1/integrations/{id}`: endpoint added
92
+ - `POST /v1/integrations/{id}/check`: added the required property `autoRefund` to the response with the `200` status
93
+ - `POST /v1/integrations/{id}/check`: added the required property `canRefund` to the response with the `200` status
94
+ - `GET /v1/licenses/{id}`: added the required property `canceledAt` to the response with the `200` status
95
+ - `GET /v1/licenses/{id}`: added the required property `cancellableUntil` to the response with the `200` status
96
+ - `GET /v1/licenses/{id}`: added the required property `cancellationComment` to the response with the `200` status
97
+ - `GET /v1/licenses/{id}`: added the required property `cancellationReason` to the response with the `200` status
98
+ - `GET /v1/licenses/{id}`: added the required property `stripeRefundId` to the response with the `200` status
99
+ - `PATCH /v1/licenses/{id}`: added the new optional request property `cancellableUntil`
100
+ - `PATCH /v1/licenses/{id}`: added the required property `canceledAt` to the response with the `200` status
101
+ - `PATCH /v1/licenses/{id}`: added the required property `cancellableUntil` to the response with the `200` status
102
+ - `PATCH /v1/licenses/{id}`: added the required property `cancellationComment` to the response with the `200` status
103
+ - `PATCH /v1/licenses/{id}`: added the required property `cancellationReason` to the response with the `200` status
104
+ - `PATCH /v1/licenses/{id}`: added the required property `stripeRefundId` to the response with the `200` status
105
+ - `POST /v1/licenses/{id}/cancel`: endpoint added
106
+ - `GET /v1/licenses/{id}/events`: added the enum value `license.canceled` to the property `anyOf[#/components/schemas/EventType]/` of the `query` request parameter `type` (shared schema: `EventType`, also at `anyOf[#/components/schemas/EventType]`, `anyOf[subschema #2]/items`)
107
+ - `GET /v1/licenses/{id}/events`: added the enum value `license.refund_failed` to the property `anyOf[#/components/schemas/EventType]/` of the `query` request parameter `type` (shared schema: `EventType`, also at `anyOf[#/components/schemas/EventType]`, `anyOf[subschema #2]/items`)
108
+ - `GET /v1/licenses/{id}/events`: added the enum value `license.refunded` to the property `anyOf[#/components/schemas/EventType]/` of the `query` request parameter `type` (shared schema: `EventType`, also at `anyOf[#/components/schemas/EventType]`, `anyOf[subschema #2]/items`)
109
+ - `POST /v1/licenses/{id}/tokens`: added the new `license:cancel` enum value to the request property `scope/items/`
110
+ - `GET /v1/licenses/{licenseId}/machines`: added the new enum value `locked` to the `query` request parameter `status`
111
+ - `GET /v1/licenses/{licenseId}/machines`: added the required property `data/items/overriddenByMachineId` to the response with the `200` status
112
+ - `GET /v1/machines/{id}`: added the required property `overriddenByMachineId` to the response with the `200` status
113
+ - `POST /v1/machines/{id}/deactivate`: added the required property `overriddenByMachineId` to the response with the `200` status
114
+ - `POST /v1/machines/{id}/tokens`: added the new `license:cancel` enum value to the request property `scope/items/`
115
+ - `GET /v1/policies/{id}`: added the required property `moneyBackGuaranteeDays` to the response with the `200` status
116
+ - `PATCH /v1/policies/{id}`: added the new optional request property `moneyBackGuaranteeDays`
117
+ - `PATCH /v1/policies/{id}`: added the required property `moneyBackGuaranteeDays` to the response with the `200` status
118
+ - `GET /v1/policies/{id}/events`: added the enum value `license.canceled` to the property `anyOf[#/components/schemas/EventType]/` of the `query` request parameter `type` (shared schema: `EventType`, also at `anyOf[#/components/schemas/EventType]`, `anyOf[subschema #2]/items`)
119
+ - `GET /v1/policies/{id}/events`: added the enum value `license.refund_failed` to the property `anyOf[#/components/schemas/EventType]/` of the `query` request parameter `type` (shared schema: `EventType`, also at `anyOf[#/components/schemas/EventType]`, `anyOf[subschema #2]/items`)
120
+ - `GET /v1/policies/{id}/events`: added the enum value `license.refunded` to the property `anyOf[#/components/schemas/EventType]/` of the `query` request parameter `type` (shared schema: `EventType`, also at `anyOf[#/components/schemas/EventType]`, `anyOf[subschema #2]/items`)
121
+ - `GET /v1/products`: added the required property `data/items/autoMachineChange` to the response with the `200` status
122
+ - `POST /v1/products`: added the new optional request property `allOf[subschema #2]/defaultPolicy/moneyBackGuaranteeDays`
123
+ - `POST /v1/products`: added the required property `autoMachineChange` to the response with the `201` status
124
+ - `GET /v1/products/{id}`: added the required property `autoMachineChange` to the response with the `200` status
125
+ - `PATCH /v1/products/{id}`: added the new optional request property `autoMachineChange`
126
+ - `PATCH /v1/products/{id}`: added the required property `autoMachineChange` to the response with the `200` status
127
+ - `DELETE /v1/products/{id}/logo`: added the required property `autoMachineChange` to the response with the `200` status
128
+ - `PUT /v1/products/{id}/logo`: added the required property `autoMachineChange` to the response with the `200` status
129
+ - `POST /v1/products/{id}/reset`: added the required property `autoMachineChange` to the response with the `200` status
130
+ - `GET /v1/products/{id}/stats`: added the required property `cancellation` to the response with the `200` status
131
+ - `GET /v1/products/{id}/stats`: added the required property `revenue/items/canceledLicenseCount` to the response with the `200` status
132
+ - `GET /v1/products/{id}/stats`: added the required property `revenue/items/canceledTotal` to the response with the `200` status
133
+ - `GET /v1/products/{productId}/integrations/stripe`: added the required property `integration/anyOf[#/components/schemas/Integration]/autoRefund` to the response with the `200` status
134
+ - `GET /v1/products/{productId}/integrations/stripe`: added the required property `integration/anyOf[#/components/schemas/Integration]/canRefund` to the response with the `200` status
135
+ - `GET /v1/products/{productId}/integrations/stripe`: added the required property `requiredPermissions/items/optional` to the response with the `200` status
136
+ - `PUT /v1/products/{productId}/integrations/stripe`: added the required property `integration/anyOf[#/components/schemas/Integration]/autoRefund` to the response with the `200` status
137
+ - `PUT /v1/products/{productId}/integrations/stripe`: added the required property `integration/anyOf[#/components/schemas/Integration]/canRefund` to the response with the `200` status
138
+ - `PUT /v1/products/{productId}/integrations/stripe`: added the required property `requiredPermissions/items/optional` to the response with the `200` status
139
+ - `GET /v1/products/{productId}/licenses`: added the enum value `canceled` to the property `allOf[#/components/schemas/LicenseStatus]/` of the `query` request parameter `status`
140
+ - `GET /v1/products/{productId}/licenses`: added the required property `data/items/canceledAt` to the response with the `200` status
141
+ - `GET /v1/products/{productId}/licenses`: added the required property `data/items/cancellableUntil` to the response with the `200` status
142
+ - `GET /v1/products/{productId}/licenses`: added the required property `data/items/cancellationComment` to the response with the `200` status
143
+ - `GET /v1/products/{productId}/licenses`: added the required property `data/items/cancellationReason` to the response with the `200` status
144
+ - `GET /v1/products/{productId}/licenses`: added the required property `data/items/stripeRefundId` to the response with the `200` status
145
+ - `POST /v1/products/{productId}/licenses`: added the new optional request property `cancellableUntil`
146
+ - `POST /v1/products/{productId}/licenses`: added the required property `canceledAt` to the response with the `201` status
147
+ - `POST /v1/products/{productId}/licenses`: added the required property `cancellableUntil` to the response with the `201` status
148
+ - `POST /v1/products/{productId}/licenses`: added the required property `cancellationComment` to the response with the `201` status
149
+ - `POST /v1/products/{productId}/licenses`: added the required property `cancellationReason` to the response with the `201` status
150
+ - `POST /v1/products/{productId}/licenses`: added the required property `stripeRefundId` to the response with the `201` status
151
+ - `GET /v1/products/{productId}/policies`: added the required property `data/items/moneyBackGuaranteeDays` to the response with the `200` status
152
+ - `POST /v1/products/{productId}/policies`: added the new optional request property `moneyBackGuaranteeDays`
153
+ - `POST /v1/products/{productId}/policies`: added the required property `moneyBackGuaranteeDays` to the response with the `201` status
154
+
3
155
  ## 0.1.1 (2026-10-20)
4
156
 
5
157
  Regenerated from the same API.
data/README.md CHANGED
@@ -76,8 +76,8 @@ Every method is documented, with its parameters and responses, in the [`docs`](d
76
76
 
77
77
  | Class | Methods |
78
78
  | --- | --- |
79
- | [`LicensesApi`](docs/LicensesApi.md) | `validate_key`, `list_licenses`, `create_license`, `list_customer_licenses`, `get_license`, `delete_license`, `update_license`, `get_license_stats`, `send_license_keys`, `get_signing_key` |
80
- | [`PortalApi`](docs/PortalApi.md) | `get_portal`, `request_portal_link`, `create_portal_link`, `send_portal_link` |
79
+ | [`LicensesApi`](docs/LicensesApi.md) | `validate_key`, `list_licenses`, `create_license`, `list_customer_licenses`, `get_license`, `delete_license`, `update_license`, `get_license_stats`, `cancel_license`, `send_license_keys`, `get_signing_key` |
80
+ | [`PortalApi`](docs/PortalApi.md) | `get_portal`, `request_portal_link`, `create_portal_link`, `create_billing_portal_session`, `send_portal_link` |
81
81
  | [`ProductsApi`](docs/ProductsApi.md) | `list_products`, `create_product`, `get_product`, `delete_product`, `update_product`, `reset_product`, `upload_product_logo`, `delete_product_logo`, `get_product_stats` |
82
82
  | [`PoliciesApi`](docs/PoliciesApi.md) | `list_policies`, `create_policy`, `get_policy`, `delete_policy`, `update_policy` |
83
83
  | [`CustomersApi`](docs/CustomersApi.md) | `list_customers`, `create_customer`, `get_customer`, `delete_customer`, `update_customer` |
@@ -85,7 +85,7 @@ Every method is documented, with its parameters and responses, in the [`docs`](d
85
85
  | [`ReleasesApi`](docs/ReleasesApi.md) | `list_releases`, `create_release`, `get_release`, `delete_release`, `update_release` |
86
86
  | [`TokensApi`](docs/TokensApi.md) | `create_customer_token`, `create_license_token`, `create_machine_token` |
87
87
  | [`EventsApi`](docs/EventsApi.md) | `list_policy_events`, `list_license_events` |
88
- | [`IntegrationsApi`](docs/IntegrationsApi.md) | `get_stripe_integration`, `connect_stripe`, `disconnect_integration`, `check_integration`, `list_stripe_prices`, `create_stripe_mapping`, `delete_stripe_mapping`, `update_stripe_mapping` |
88
+ | [`IntegrationsApi`](docs/IntegrationsApi.md) | `get_stripe_integration`, `connect_stripe`, `disconnect_integration`, `update_integration`, `check_integration`, `list_stripe_prices`, `create_stripe_mapping`, `delete_stripe_mapping`, `update_stripe_mapping` |
89
89
 
90
90
  ## Versioning
91
91
 
@@ -0,0 +1,18 @@
1
+ # LicenseManager::BillingPortalSession
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **url** | **String** | Link to the Stripe customer portal, to open right away: it expires shortly. | |
8
+
9
+ ## Example
10
+
11
+ ```ruby
12
+ require 'license_manager'
13
+
14
+ instance = LicenseManager::BillingPortalSession.new(
15
+ url: https://billing.stripe.com/p/session/test_YWNjdF8x
16
+ )
17
+ ```
18
+
@@ -0,0 +1,22 @@
1
+ # LicenseManager::CancelLicense
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **reason** | [**CancellationReason**](CancellationReason.md) | | |
8
+ | **comment** | **String** | What the customer said about the cancellation. | [optional] |
9
+ | **refund** | **Boolean** | Whether to refund the license's Stripe payment, when it was bought through the Stripe integration. Defaults to the integration's `autoRefund`. Ignored for tokens, which always follow `autoRefund`, and when the integration's `canRefund` is false: its API key can't create refunds. | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'license_manager'
15
+
16
+ instance = LicenseManager::CancelLicense.new(
17
+ reason: null,
18
+ comment: I only needed it for one project.,
19
+ refund: true
20
+ )
21
+ ```
22
+
@@ -0,0 +1,15 @@
1
+ # LicenseManager::CancellationReason
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+
8
+ ## Example
9
+
10
+ ```ruby
11
+ require 'license_manager'
12
+
13
+ instance = LicenseManager::CancellationReason.new()
14
+ ```
15
+
@@ -0,0 +1,30 @@
1
+ # LicenseManager::CancellationStats
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **license_count** | **Integer** | Number of licenses with a money back guarantee: a `cancellableUntil`. | |
8
+ | **canceled_license_count** | **Integer** | Number of them that were canceled. | |
9
+ | **cancellable_license_count** | **Integer** | Number of them whose money back guarantee hasn't ended, and that weren't canceled: they can still be. | |
10
+ | **rate** | **Float** | Share of them that were canceled, from 0 to 1: `canceledLicenseCount` over `licenseCount`. | |
11
+ | **canceled_by_day** | **Array<Integer>** | Number of them canceled each day, aligned on `days`, on the day of their cancellation. | |
12
+ | **canceled_by_month** | **Array<Integer>** | Number of them canceled each month, aligned on `months`, on the month of their cancellation. | |
13
+ | **by_reason** | [**Array<CancellationStatsByReasonInner>**](CancellationStatsByReasonInner.md) | Number of them canceled for each reason, from the most given one. Reasons never given are left out. | |
14
+
15
+ ## Example
16
+
17
+ ```ruby
18
+ require 'license_manager'
19
+
20
+ instance = LicenseManager::CancellationStats.new(
21
+ license_count: 80,
22
+ canceled_license_count: 4,
23
+ cancellable_license_count: 12,
24
+ rate: 0.05,
25
+ canceled_by_day: [0, 1, 0],
26
+ canceled_by_month: [1, 0, 2],
27
+ by_reason: null
28
+ )
29
+ ```
30
+
@@ -0,0 +1,20 @@
1
+ # LicenseManager::CancellationStatsByReasonInner
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **reason** | [**CancellationReason**](CancellationReason.md) | | |
8
+ | **count** | **Integer** | | |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'license_manager'
14
+
15
+ instance = LicenseManager::CancellationStatsByReasonInner.new(
16
+ reason: null,
17
+ count: 2
18
+ )
19
+ ```
20
+
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **api_key** | **String** | Restricted API key of the Stripe account (`rk_live_…` for live products, `rk_test_…` for test products), with the `requiredPermissions` of `getStripeIntegration`. A secret key works too, but gives the app more access than it needs. | |
7
+ | **api_key** | **String** | Restricted API key of the Stripe account (`rk_live_…` for live products, `rk_test_…` for test products), with the `requiredPermissions` of `getStripeIntegration`. Without the optional ones, it connects with what they're for turned off. A secret key works too, but gives the app more access than it needs. | |
8
8
 
9
9
  ## Example
10
10
 
@@ -0,0 +1,18 @@
1
+ # LicenseManager::CreateBillingPortalSession
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **return_url** | **String** | Where the Stripe customer portal links back to: a page of the customer portal, or of one of the product's `returnDomains`. The customer portal of the product by default. | [optional] |
8
+
9
+ ## Example
10
+
11
+ ```ruby
12
+ require 'license_manager'
13
+
14
+ instance = LicenseManager::CreateBillingPortalSession.new(
15
+ return_url: https://example.com/account
16
+ )
17
+ ```
18
+
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **stripe_price_id** | **String** | Active one-time price of the Stripe account. | |
7
+ | **stripe_price_id** | **String** | Active one-time or licensed recurring price of the Stripe account. | |
8
8
  | **policy_id** | **String** | | |
9
9
 
10
10
  ## Example
@@ -13,6 +13,7 @@
13
13
  | **max_offline_duration_seconds** | **Integer** | Longest the applications can run offline with the license, in seconds. At least one hour (`3600`). Defaults to the one of the policy. | [optional] |
14
14
  | **price** | [**PriceInput**](PriceInput.md) | | [optional] |
15
15
  | **max_version** | [**LicenseMaxVersionInput**](LicenseMaxVersionInput.md) | | [optional] |
16
+ | **cancellable_until** | **Time** | End of the money back guarantee: until then, the customer can cancel the license from the customer portal, or with a token. `null` to not let them. Defaults to the creation date plus the policy's `moneyBackGuaranteeDays`, or `null` when it has none. | [optional] |
16
17
  | **send_key** | **Boolean** | `true` emails the key to the customer once the license is created, like `sendLicenseKeys`. Sent in the background: a failed email doesn't fail the creation. In test products, it's only sent when the customer's email is a member's of the organization. Defaults to `false`. | [optional] |
17
18
 
18
19
  ## Example
@@ -30,6 +31,7 @@ instance = LicenseManager::CreateLicense.new(
30
31
  max_offline_duration_seconds: 604800,
31
32
  price: null,
32
33
  max_version: null,
34
+ cancellable_until: 2026-02-14T09:30:00.000Z,
33
35
  send_key: true
34
36
  )
35
37
  ```
data/docs/CreatePolicy.md CHANGED
@@ -11,6 +11,7 @@
11
11
  | **max_machines** | **Integer** | Maximum number of active machines of the licenses created with this policy, copied to each of them. `null` for no limit. Defaults to `null`. | [optional] |
12
12
  | **max_offline_duration_seconds** | **Integer** | Longest the applications can run offline with the licenses created with this policy, in seconds, copied to each of them. At least one hour (`3600`). Defaults to one week. | [optional] |
13
13
  | **max_version** | [**PolicySettingsMaxVersion**](PolicySettingsMaxVersion.md) | | [optional] |
14
+ | **money_back_guarantee_days** | **Integer** | Number of days after their creation during which customers can cancel the licenses created with this policy, from the customer portal or with `cancelLicense`, which refunds their Stripe payment. Each license keeps the end of its own period as `cancellableUntil`. `null` for no money back guarantee. Defaults to `null`. | [optional] |
14
15
 
15
16
  ## Example
16
17
 
@@ -24,7 +25,8 @@ instance = LicenseManager::CreatePolicy.new(
24
25
  duration: null,
25
26
  max_machines: 3,
26
27
  max_offline_duration_seconds: 604800,
27
- max_version: null
28
+ max_version: null,
29
+ money_back_guarantee_days: 30
28
30
  )
29
31
  ```
30
32
 
@@ -7,7 +7,7 @@
7
7
  | **name** | **String** | | |
8
8
  | **slug** | **String** | Unique within the organization. Defaults to the name, lower cased, without accents and special characters. Starts with `test_` in test products, which is added when missing, and removed in live products. | [optional] |
9
9
  | **default_policy** | [**PolicySettings**](PolicySettings.md) | | [optional] |
10
- | **is_test_from_product_id** | **String** | Creates a test product: a sandbox of this live product of the organization, starting with copies of its policies, releases and portal settings. | [optional] |
10
+ | **is_test_from_product_id** | **String** | Creates a test product: a sandbox of this live product of the organization, starting with copies of its policies, releases, portal settings and `autoMachineChange`. | [optional] |
11
11
 
12
12
  ## Example
13
13
 
data/docs/CreateToken.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **scope** | **Array<String>** | Permissions of the token. A write permission implies the matching read one. A token creating a token can only give the permissions it has. | |
7
+ | **scope** | **Array<String>** | Permissions of the token. A write permission implies the other ones of its resource, like the read one: `license:write` implies `license:read` and `license:cancel`. A token creating a token can only give the permissions it has. | |
8
8
  | **expires_in_seconds** | **Integer** | How long the token works, in seconds, from 60 (1 minute) to 31536000 (365 days). Defaults to 900 (15 minutes). A token creating a token can't give it a later expiration than its own: it's shortened to it. | [optional][default to 900] |
9
9
 
10
10
  ## Example
@@ -19,7 +19,7 @@ instance = LicenseManager::EventActorOneOf.new(
19
19
  type: null,
20
20
  id: u2Hk9PzLq,
21
21
  name: Jane Doe,
22
- email: jane@example.com,
22
+ email: jane@licensemanager.dev,
23
23
  image: https://example.com/jane.png
24
24
  )
25
25
  ```
data/docs/Integration.md CHANGED
@@ -14,6 +14,11 @@
14
14
  | **status_reason** | **String** | Why the integration isn't `active`, `null` when it is. | |
15
15
  | **last_checked_at** | **Time** | Last time its health was checked, done every day. | |
16
16
  | **last_event_at** | **Time** | Last time it received an event from the provider. | |
17
+ | **auto_refund** | **Boolean** | Whether canceling a license bought through Stripe refunds its payment. On by default, always off when `canRefund` is false. | |
18
+ | **can_refund** | **Boolean** | Whether the API key has the optional Refunds: Write permission, checked when connecting and every day. Without it, canceled licenses aren't refunded: refund their payments from Stripe. | |
19
+ | **can_manage_subscriptions** | **Boolean** | Whether the API key has the optional Subscriptions: Write permission, checked when connecting and every day. Without it, subscription licenses can't be canceled from the app: cancel their subscriptions from Stripe. | |
20
+ | **can_billing_portal** | **Boolean** | Whether the API key has the optional Customer portal: Write permission, checked when connecting and every day. Without it, the license portal doesn't link to the Stripe customer portal. | |
21
+ | **subscription_grace_days** | **Integer** | Days a subscription license stays valid after its period ends while its renewal is unpaid, as Stripe retries the payment. 7 by default. | |
17
22
  | **created_at** | **Time** | | |
18
23
 
19
24
  ## Example
@@ -27,11 +32,16 @@ instance = LicenseManager::Integration.new(
27
32
  livemode: null,
28
33
  account_name: Acme Inc.,
29
34
  api_key_hint: rk_live_…Ab3d,
30
- webhook_url: https://api.example.com/v1/webhooks/stripe/i8Fz4QnRt,
35
+ webhook_url: https://api.licensemanager.dev/v1/webhooks/stripe/i8Fz4QnRt,
31
36
  status: null,
32
37
  status_reason: The API key can't manage webhook endpoints: give it the Webhook Endpoints: Write permission,
33
38
  last_checked_at: null,
34
39
  last_event_at: null,
40
+ auto_refund: true,
41
+ can_refund: true,
42
+ can_manage_subscriptions: true,
43
+ can_billing_portal: true,
44
+ subscription_grace_days: 7,
35
45
  created_at: null
36
46
  )
37
47
  ```
@@ -12,6 +12,7 @@
12
12
  | **stripe_price_id** | **String** | | |
13
13
  | **product_name** | **String** | Name of the Stripe product when it was mapped. | |
14
14
  | **price** | [**Price**](Price.md) | | |
15
+ | **recurring** | [**IntegrationMappingRecurring**](IntegrationMappingRecurring.md) | | |
15
16
  | **status** | **String** | `error` when the price can no longer be paid, explained by `statusReason`. | |
16
17
  | **status_reason** | **String** | | |
17
18
  | **created_at** | **Time** | | |
@@ -30,6 +31,7 @@ instance = LicenseManager::IntegrationMapping.new(
30
31
  stripe_price_id: price_1MoBy5LkdIwHu7ix,
31
32
  product_name: Acme Pro,
32
33
  price: null,
34
+ recurring: null,
33
35
  status: null,
34
36
  status_reason: The price is archived in Stripe,
35
37
  created_at: null
@@ -0,0 +1,20 @@
1
+ # LicenseManager::IntegrationMappingRecurring
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **interval** | **String** | | |
8
+ | **interval_count** | **Integer** | | |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'license_manager'
14
+
15
+ instance = LicenseManager::IntegrationMappingRecurring.new(
16
+ interval: null,
17
+ interval_count: 1
18
+ )
19
+ ```
20
+
@@ -11,6 +11,7 @@ All URIs are relative to *https://api.licensemanager.dev*
11
11
  | [**disconnect_integration**](IntegrationsApi.md#disconnect_integration) | **DELETE** /v1/integrations/{id} | Disconnect an integration |
12
12
  | [**get_stripe_integration**](IntegrationsApi.md#get_stripe_integration) | **GET** /v1/products/{productId}/integrations/stripe | Get the Stripe integration of a product |
13
13
  | [**list_stripe_prices**](IntegrationsApi.md#list_stripe_prices) | **GET** /v1/integrations/{id}/stripe/prices | List the Stripe prices of an integration |
14
+ | [**update_integration**](IntegrationsApi.md#update_integration) | **PATCH** /v1/integrations/{id} | Update an integration |
14
15
  | [**update_stripe_mapping**](IntegrationsApi.md#update_stripe_mapping) | **PATCH** /v1/integration-mappings/{id} | Change the policy of a mapping |
15
16
 
16
17
 
@@ -513,6 +514,79 @@ end
513
514
  - **Accept**: application/json
514
515
 
515
516
 
517
+ ## update_integration
518
+
519
+ > <Integration> update_integration(id, update_integration)
520
+
521
+ Update an integration
522
+
523
+ Changes the settings of the integration, for every product of its mode. Doesn't accept tokens: only API keys and sessions. **Required role permission**: `integration:update` when called with a session, granted by the member's role. API keys aren't limited by roles.
524
+
525
+ ### Examples
526
+
527
+ ```ruby
528
+ require 'time'
529
+ require 'license_manager'
530
+ # setup authorization
531
+ LicenseManager.configure do |config|
532
+ # Configure API key authorization: apiKey
533
+ config.api_key['x-api-key'] = 'YOUR API KEY'
534
+ # Uncomment the following line to set a prefix for the API key, e.g. 'Bearer' (defaults to nil)
535
+ # config.api_key_prefix['x-api-key'] = 'Bearer'
536
+ end
537
+
538
+ api_instance = LicenseManager::IntegrationsApi.new
539
+ id = 'i8Fz4QnRt' # String |
540
+ update_integration = LicenseManager::UpdateIntegration.new # UpdateIntegration |
541
+
542
+ begin
543
+ # Update an integration
544
+ result = api_instance.update_integration(id, update_integration)
545
+ p result
546
+ rescue LicenseManager::ApiError => e
547
+ puts "Error when calling IntegrationsApi->update_integration: #{e}"
548
+ end
549
+ ```
550
+
551
+ #### Using the update_integration_with_http_info variant
552
+
553
+ This returns an Array which contains the response data, status code and headers.
554
+
555
+ > <Array(<Integration>, Integer, Hash)> update_integration_with_http_info(id, update_integration)
556
+
557
+ ```ruby
558
+ begin
559
+ # Update an integration
560
+ data, status_code, headers = api_instance.update_integration_with_http_info(id, update_integration)
561
+ p status_code # => 2xx
562
+ p headers # => { ... }
563
+ p data # => <Integration>
564
+ rescue LicenseManager::ApiError => e
565
+ puts "Error when calling IntegrationsApi->update_integration_with_http_info: #{e}"
566
+ end
567
+ ```
568
+
569
+ ### Parameters
570
+
571
+ | Name | Type | Description | Notes |
572
+ | ---- | ---- | ----------- | ----- |
573
+ | **id** | **String** | | |
574
+ | **update_integration** | [**UpdateIntegration**](UpdateIntegration.md) | | |
575
+
576
+ ### Return type
577
+
578
+ [**Integration**](Integration.md)
579
+
580
+ ### Authorization
581
+
582
+ [apiKey](../README.md#apiKey)
583
+
584
+ ### HTTP request headers
585
+
586
+ - **Content-Type**: application/json
587
+ - **Accept**: application/json
588
+
589
+
516
590
  ## update_stripe_mapping
517
591
 
518
592
  > <IntegrationMapping> update_stripe_mapping(id, update_integration_mapping)
data/docs/License.md CHANGED
@@ -20,6 +20,12 @@
20
20
  | **max_version** | [**LicenseMaxVersion**](LicenseMaxVersion.md) | | |
21
21
  | **price** | [**Price**](Price.md) | | |
22
22
  | **status** | [**LicenseStatus**](LicenseStatus.md) | | |
23
+ | **cancellable_until** | **Time** | End of the money back guarantee: until then, the customer can cancel the license from the customer portal, or with a token. Set from the policy&#39;s &#x60;moneyBackGuaranteeDays&#x60; when the license is created. &#x60;null&#x60; when the customer can&#39;t cancel it. | |
24
+ | **canceled_at** | **Time** | When the license was canceled: validating its key fails since. &#x60;null&#x60; when it wasn&#39;t. | |
25
+ | **cancellation_reason** | [**CancellationReason**](CancellationReason.md) | | |
26
+ | **subscription** | [**LicenseSubscription**](LicenseSubscription.md) | | |
27
+ | **cancellation_comment** | **String** | Comment given when the license was canceled. &#x60;null&#x60; when there&#39;s none. | |
28
+ | **stripe_refund_id** | **String** | Id of the Stripe refund of the license&#39;s payment once it was canceled, through the Stripe integration. &#x60;null&#x60; otherwise. | |
23
29
  | **updated_at** | **Time** | Last time the license&#39;s settings were edited, not when its key was validated. | |
24
30
 
25
31
  ## Example
@@ -44,6 +50,12 @@ instance = LicenseManager::License.new(
44
50
  max_version: null,
45
51
  price: null,
46
52
  status: null,
53
+ cancellable_until: 2026-02-14T09:30:00.000Z,
54
+ canceled_at: 2026-01-20T16:12:00.000Z,
55
+ cancellation_reason: null,
56
+ subscription: null,
57
+ cancellation_comment: I only needed it for one project.,
58
+ stripe_refund_id: re_3MtwBwLkdIwHu7ix0Bs5rA2b,
47
59
  updated_at: 2026-01-15T09:30:00.000Z
48
60
  )
49
61
  ```