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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +152 -0
- data/README.md +3 -3
- data/docs/BillingPortalSession.md +18 -0
- data/docs/CancelLicense.md +22 -0
- data/docs/CancellationReason.md +15 -0
- data/docs/CancellationStats.md +30 -0
- data/docs/CancellationStatsByReasonInner.md +20 -0
- data/docs/ConnectStripe.md +1 -1
- data/docs/CreateBillingPortalSession.md +18 -0
- data/docs/CreateIntegrationMapping.md +1 -1
- data/docs/CreateLicense.md +2 -0
- data/docs/CreatePolicy.md +3 -1
- data/docs/CreateProductWithPolicy.md +1 -1
- data/docs/CreateToken.md +1 -1
- data/docs/EventActorOneOf.md +1 -1
- data/docs/Integration.md +11 -1
- data/docs/IntegrationMapping.md +2 -0
- data/docs/IntegrationMappingRecurring.md +20 -0
- data/docs/IntegrationsApi.md +74 -0
- data/docs/License.md +12 -0
- data/docs/LicenseSubscription.md +34 -0
- data/docs/LicensesApi.md +80 -3
- data/docs/Machine.md +3 -1
- data/docs/MachinesApi.md +1 -1
- data/docs/Mrr.md +26 -0
- data/docs/MrrByIntervalInner.md +24 -0
- data/docs/MrrByPolicyInner.md +22 -0
- data/docs/Policy.md +2 -0
- data/docs/PolicySettings.md +3 -1
- data/docs/PortalApi.md +80 -1
- data/docs/PortalLink.md +2 -2
- data/docs/Product.md +2 -0
- data/docs/ProductStats.md +8 -4
- data/docs/ProductsApi.md +2 -2
- data/docs/Revenue.md +10 -2
- data/docs/StripeIntegration.md +1 -1
- data/docs/StripePermission.md +5 -1
- data/docs/StripePrice.md +2 -0
- data/docs/StripePriceRecurring.md +20 -0
- data/docs/SubscriptionStats.md +38 -0
- data/docs/UpdateIntegration.md +20 -0
- data/docs/UpdateLicense.md +3 -1
- data/docs/UpdatePolicy.md +3 -1
- data/docs/UpdateProduct.md +3 -1
- data/lib/license_manager/api/integrations_api.rb +74 -0
- data/lib/license_manager/api/licenses_api.rb +80 -6
- data/lib/license_manager/api/machines_api.rb +3 -3
- data/lib/license_manager/api/portal_api.rb +72 -2
- data/lib/license_manager/api/products_api.rb +4 -4
- data/lib/license_manager/models/billing_portal_session.rb +178 -0
- data/lib/license_manager/models/cancel_license.rb +238 -0
- data/lib/license_manager/models/cancellation_reason.rb +45 -0
- data/lib/license_manager/models/cancellation_stats.rb +347 -0
- data/lib/license_manager/models/cancellation_stats_by_reason_inner.rb +225 -0
- data/lib/license_manager/models/connect_stripe.rb +1 -1
- data/lib/license_manager/models/create_billing_portal_session.rb +161 -0
- data/lib/license_manager/models/create_integration_mapping.rb +1 -1
- data/lib/license_manager/models/create_license.rb +12 -1
- data/lib/license_manager/models/create_policy.rb +40 -5
- data/lib/license_manager/models/create_product_with_policy.rb +1 -1
- data/lib/license_manager/models/create_token.rb +1 -1
- data/lib/license_manager/models/event_type.rb +7 -1
- data/lib/license_manager/models/integration.rb +136 -1
- data/lib/license_manager/models/integration_mapping.rb +13 -1
- data/lib/license_manager/models/integration_mapping_recurring.rb +228 -0
- data/lib/license_manager/models/license.rb +91 -1
- data/lib/license_manager/models/license_status.rb +2 -1
- data/lib/license_manager/models/license_subscription.rb +388 -0
- data/lib/license_manager/models/machine.rb +17 -4
- data/lib/license_manager/models/mrr.rb +291 -0
- data/lib/license_manager/models/mrr_by_interval_inner.rb +279 -0
- data/lib/license_manager/models/mrr_by_policy_inner.rb +229 -0
- data/lib/license_manager/models/policy.rb +14 -1
- data/lib/license_manager/models/policy_settings.rb +40 -5
- data/lib/license_manager/models/portal_link.rb +1 -1
- data/lib/license_manager/models/product.rb +28 -1
- data/lib/license_manager/models/product_stats.rb +31 -5
- data/lib/license_manager/models/revenue.rb +112 -4
- data/lib/license_manager/models/stripe_integration.rb +1 -1
- data/lib/license_manager/models/stripe_permission.rb +58 -4
- data/lib/license_manager/models/stripe_price.rb +13 -1
- data/lib/license_manager/models/stripe_price_recurring.rb +228 -0
- data/lib/license_manager/models/subscription_stats.rb +456 -0
- data/lib/license_manager/models/update_integration.rb +199 -0
- data/lib/license_manager/models/update_license.rb +16 -5
- data/lib/license_manager/models/update_policy.rb +40 -5
- data/lib/license_manager/models/update_product.rb +14 -4
- data/lib/license_manager/version.rb +1 -1
- data/lib/license_manager.rb +14 -0
- data/openapi.json +1146 -59
- data/spec/api/integrations_api_spec.rb +13 -0
- data/spec/api/licenses_api_spec.rb +16 -3
- data/spec/api/machines_api_spec.rb +1 -1
- data/spec/api/portal_api_spec.rb +14 -1
- data/spec/api/products_api_spec.rb +2 -2
- data/spec/models/billing_portal_session_spec.rb +36 -0
- data/spec/models/cancel_license_spec.rb +48 -0
- data/spec/models/cancellation_reason_spec.rb +30 -0
- data/spec/models/cancellation_stats_by_reason_inner_spec.rb +42 -0
- data/spec/models/cancellation_stats_spec.rb +72 -0
- data/spec/models/create_billing_portal_session_spec.rb +36 -0
- data/spec/models/create_license_spec.rb +6 -0
- data/spec/models/create_policy_spec.rb +6 -0
- data/spec/models/create_token_spec.rb +1 -1
- data/spec/models/integration_mapping_recurring_spec.rb +46 -0
- data/spec/models/integration_mapping_spec.rb +6 -0
- data/spec/models/integration_spec.rb +30 -0
- data/spec/models/license_spec.rb +36 -0
- data/spec/models/license_subscription_spec.rb +88 -0
- data/spec/models/machine_spec.rb +7 -1
- data/spec/models/mrr_by_interval_inner_spec.rb +58 -0
- data/spec/models/mrr_by_policy_inner_spec.rb +48 -0
- data/spec/models/mrr_spec.rb +60 -0
- data/spec/models/policy_settings_spec.rb +6 -0
- data/spec/models/policy_spec.rb +6 -0
- data/spec/models/product_spec.rb +6 -0
- data/spec/models/product_stats_spec.rb +12 -0
- data/spec/models/revenue_spec.rb +24 -0
- data/spec/models/stripe_permission_spec.rb +12 -0
- data/spec/models/stripe_price_recurring_spec.rb +46 -0
- data/spec/models/stripe_price_spec.rb +6 -0
- data/spec/models/subscription_stats_spec.rb +96 -0
- data/spec/models/token_spec.rb +1 -1
- data/spec/models/update_integration_spec.rb +42 -0
- data/spec/models/update_license_spec.rb +6 -0
- data/spec/models/update_policy_spec.rb +6 -0
- data/spec/models/update_product_spec.rb +6 -0
- metadata +57 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1d2fad9e16d3194d5a682104cbf199cbadf37b8960a262943d61355963bbf5bc
|
|
4
|
+
data.tar.gz: 423f1d92ca5ce3b5f3f47368437131f53b47bb12811e54709902ade88e691c28
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
+
|
data/docs/ConnectStripe.md
CHANGED
|
@@ -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
|
data/docs/CreateLicense.md
CHANGED
|
@@ -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
|
|
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
|
|
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
|
data/docs/EventActorOneOf.md
CHANGED
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.
|
|
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
|
```
|
data/docs/IntegrationMapping.md
CHANGED
|
@@ -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
|
+
|
data/docs/IntegrationsApi.md
CHANGED
|
@@ -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's `moneyBackGuaranteeDays` when the license is created. `null` when the customer can't cancel it. | |
|
|
24
|
+
| **canceled_at** | **Time** | When the license was canceled: validating its key fails since. `null` when it wasn't. | |
|
|
25
|
+
| **cancellation_reason** | [**CancellationReason**](CancellationReason.md) | | |
|
|
26
|
+
| **subscription** | [**LicenseSubscription**](LicenseSubscription.md) | | |
|
|
27
|
+
| **cancellation_comment** | **String** | Comment given when the license was canceled. `null` when there's none. | |
|
|
28
|
+
| **stripe_refund_id** | **String** | Id of the Stripe refund of the license's payment once it was canceled, through the Stripe integration. `null` otherwise. | |
|
|
23
29
|
| **updated_at** | **Time** | Last time the license'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
|
```
|