license_manager 0.1.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 (323) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +5 -0
  3. data/Gemfile +9 -0
  4. data/LICENSE +201 -0
  5. data/README.md +96 -0
  6. data/Rakefile +10 -0
  7. data/docs/ConnectStripe.md +18 -0
  8. data/docs/CreateCustomer.md +20 -0
  9. data/docs/CreateIntegrationMapping.md +20 -0
  10. data/docs/CreateLicense.md +36 -0
  11. data/docs/CreatePolicy.md +30 -0
  12. data/docs/CreatePortalLink.md +18 -0
  13. data/docs/CreateProduct.md +20 -0
  14. data/docs/CreateProductWithPolicy.md +24 -0
  15. data/docs/CreateRelease.md +20 -0
  16. data/docs/CreateToken.md +20 -0
  17. data/docs/Customer.md +30 -0
  18. data/docs/CustomerList.md +20 -0
  19. data/docs/CustomersApi.md +385 -0
  20. data/docs/Error.md +18 -0
  21. data/docs/ErrorError.md +22 -0
  22. data/docs/ErrorErrorIssuesInner.md +20 -0
  23. data/docs/ErrorErrorIssuesInnerPathInner.md +15 -0
  24. data/docs/Event.md +34 -0
  25. data/docs/EventActor.md +55 -0
  26. data/docs/EventActorOneOf.md +26 -0
  27. data/docs/EventActorOneOf1.md +24 -0
  28. data/docs/EventActorOneOf2.md +22 -0
  29. data/docs/EventActorOneOf3.md +18 -0
  30. data/docs/EventActorOneOf4.md +22 -0
  31. data/docs/EventList.md +20 -0
  32. data/docs/EventMachine.md +22 -0
  33. data/docs/EventType.md +15 -0
  34. data/docs/EventsApi.md +173 -0
  35. data/docs/FixedMaxVersion.md +20 -0
  36. data/docs/Integration.md +38 -0
  37. data/docs/IntegrationMapping.md +38 -0
  38. data/docs/IntegrationStatus.md +15 -0
  39. data/docs/IntegrationsApi.md +587 -0
  40. data/docs/License.md +50 -0
  41. data/docs/LicenseList.md +20 -0
  42. data/docs/LicenseMaxVersion.md +22 -0
  43. data/docs/LicenseMaxVersionInput.md +22 -0
  44. data/docs/LicenseStats.md +26 -0
  45. data/docs/LicenseStatsActivationsByMachineInner.md +24 -0
  46. data/docs/LicenseStatsActivationsByVersionInner.md +20 -0
  47. data/docs/LicenseStatus.md +15 -0
  48. data/docs/LicenseToken.md +18 -0
  49. data/docs/LicensesApi.md +817 -0
  50. data/docs/ListPolicyEventsTypeParameter.md +15 -0
  51. data/docs/ListStripePrices200Response.md +18 -0
  52. data/docs/LockMaxVersion.md +22 -0
  53. data/docs/LockMaxVersionMajorAfter.md +49 -0
  54. data/docs/LockMaxVersionMajorAfterOneOf.md +20 -0
  55. data/docs/LockMaxVersionMajorAfterOneOf1.md +20 -0
  56. data/docs/LockMaxVersionMinorAfter.md +20 -0
  57. data/docs/Machine.md +36 -0
  58. data/docs/MachineList.md +20 -0
  59. data/docs/MachinesApi.md +246 -0
  60. data/docs/Pagination.md +24 -0
  61. data/docs/PoliciesApi.md +388 -0
  62. data/docs/Policy.md +40 -0
  63. data/docs/PolicyDuration.md +20 -0
  64. data/docs/PolicyList.md +20 -0
  65. data/docs/PolicyMaxVersion.md +24 -0
  66. data/docs/PolicySettings.md +24 -0
  67. data/docs/PolicySettingsDuration.md +20 -0
  68. data/docs/PolicySettingsDurationAnyOf.md +20 -0
  69. data/docs/PolicySettingsDurationAnyOf1.md +20 -0
  70. data/docs/PolicySettingsMaxVersion.md +24 -0
  71. data/docs/Portal.md +30 -0
  72. data/docs/PortalApi.md +289 -0
  73. data/docs/PortalLink.md +22 -0
  74. data/docs/PortalNotFound.md +22 -0
  75. data/docs/PortalSettings.md +26 -0
  76. data/docs/Price.md +20 -0
  77. data/docs/PriceInput.md +20 -0
  78. data/docs/Product.md +32 -0
  79. data/docs/ProductList.md +20 -0
  80. data/docs/ProductStats.md +54 -0
  81. data/docs/ProductStatsActivationsByVersionInner.md +20 -0
  82. data/docs/ProductStatsActiveMachinesByPlatformInner.md +20 -0
  83. data/docs/ProductStatsActiveMachinesByVersionInner.md +20 -0
  84. data/docs/ProductStatsNewLicensesByPolicyInner.md +22 -0
  85. data/docs/ProductsApi.md +666 -0
  86. data/docs/Release.md +28 -0
  87. data/docs/ReleaseList.md +20 -0
  88. data/docs/ReleasesApi.md +388 -0
  89. data/docs/RequestPortalLink.md +20 -0
  90. data/docs/Revenue.md +34 -0
  91. data/docs/SendLicenseKeys.md +18 -0
  92. data/docs/SendPortalLink.md +18 -0
  93. data/docs/SigningKey.md +27 -0
  94. data/docs/StripeIntegration.md +26 -0
  95. data/docs/StripePermission.md +22 -0
  96. data/docs/StripePrice.md +28 -0
  97. data/docs/Token.md +24 -0
  98. data/docs/TokensApi.md +235 -0
  99. data/docs/UpdateCustomer.md +20 -0
  100. data/docs/UpdateIntegrationMapping.md +18 -0
  101. data/docs/UpdateLicense.md +28 -0
  102. data/docs/UpdatePolicy.md +30 -0
  103. data/docs/UpdateProduct.md +22 -0
  104. data/docs/UpdateProductPortal.md +26 -0
  105. data/docs/UpdateRelease.md +20 -0
  106. data/docs/ValidateKey.md +26 -0
  107. data/docs/ValidateKeyError.md +18 -0
  108. data/docs/ValidateKeyErrorError.md +24 -0
  109. data/git_push.sh +54 -0
  110. data/lib/license_manager/api/customers_api.rb +398 -0
  111. data/lib/license_manager/api/events_api.rb +207 -0
  112. data/lib/license_manager/api/integrations_api.rb +559 -0
  113. data/lib/license_manager/api/licenses_api.rb +885 -0
  114. data/lib/license_manager/api/machines_api.rb +257 -0
  115. data/lib/license_manager/api/policies_api.rb +412 -0
  116. data/lib/license_manager/api/portal_api.rb +310 -0
  117. data/lib/license_manager/api/products_api.rb +653 -0
  118. data/lib/license_manager/api/releases_api.rb +408 -0
  119. data/lib/license_manager/api/tokens_api.rb +244 -0
  120. data/lib/license_manager/api_client.rb +441 -0
  121. data/lib/license_manager/api_error.rb +58 -0
  122. data/lib/license_manager/api_model_base.rb +88 -0
  123. data/lib/license_manager/configuration.rb +400 -0
  124. data/lib/license_manager/models/connect_stripe.rb +187 -0
  125. data/lib/license_manager/models/create_customer.rb +222 -0
  126. data/lib/license_manager/models/create_integration_mapping.rb +222 -0
  127. data/lib/license_manager/models/create_license.rb +361 -0
  128. data/lib/license_manager/models/create_policy.rb +347 -0
  129. data/lib/license_manager/models/create_portal_link.rb +196 -0
  130. data/lib/license_manager/models/create_product.rb +244 -0
  131. data/lib/license_manager/models/create_product_with_policy.rb +270 -0
  132. data/lib/license_manager/models/create_release.rb +208 -0
  133. data/lib/license_manager/models/create_token.rb +237 -0
  134. data/lib/license_manager/models/customer.rb +308 -0
  135. data/lib/license_manager/models/customer_list.rb +206 -0
  136. data/lib/license_manager/models/error.rb +177 -0
  137. data/lib/license_manager/models/error_error.rb +215 -0
  138. data/lib/license_manager/models/error_error_issues_inner.rb +205 -0
  139. data/lib/license_manager/models/error_error_issues_inner_path_inner.rb +103 -0
  140. data/lib/license_manager/models/event.rb +340 -0
  141. data/lib/license_manager/models/event_actor.rb +108 -0
  142. data/lib/license_manager/models/event_actor_one_of.rb +251 -0
  143. data/lib/license_manager/models/event_actor_one_of1.rb +239 -0
  144. data/lib/license_manager/models/event_actor_one_of2.rb +257 -0
  145. data/lib/license_manager/models/event_actor_one_of3.rb +201 -0
  146. data/lib/license_manager/models/event_actor_one_of4.rb +243 -0
  147. data/lib/license_manager/models/event_list.rb +206 -0
  148. data/lib/license_manager/models/event_machine.rb +216 -0
  149. data/lib/license_manager/models/event_type.rb +46 -0
  150. data/lib/license_manager/models/fixed_max_version.rb +240 -0
  151. data/lib/license_manager/models/integration.rb +412 -0
  152. data/lib/license_manager/models/integration_mapping.rb +435 -0
  153. data/lib/license_manager/models/integration_status.rb +42 -0
  154. data/lib/license_manager/models/license.rb +542 -0
  155. data/lib/license_manager/models/license_list.rb +206 -0
  156. data/lib/license_manager/models/license_max_version.rb +208 -0
  157. data/lib/license_manager/models/license_max_version_input.rb +202 -0
  158. data/lib/license_manager/models/license_stats.rb +292 -0
  159. data/lib/license_manager/models/license_stats_activations_by_machine_inner.rb +244 -0
  160. data/lib/license_manager/models/license_stats_activations_by_version_inner.rb +206 -0
  161. data/lib/license_manager/models/license_status.rb +42 -0
  162. data/lib/license_manager/models/license_token.rb +178 -0
  163. data/lib/license_manager/models/list_policy_events_type_parameter.rb +104 -0
  164. data/lib/license_manager/models/list_stripe_prices200_response.rb +179 -0
  165. data/lib/license_manager/models/lock_max_version.rb +240 -0
  166. data/lib/license_manager/models/lock_max_version_major_after.rb +105 -0
  167. data/lib/license_manager/models/lock_max_version_major_after_one_of.rb +245 -0
  168. data/lib/license_manager/models/lock_max_version_major_after_one_of1.rb +246 -0
  169. data/lib/license_manager/models/lock_max_version_minor_after.rb +104 -0
  170. data/lib/license_manager/models/machine.rb +383 -0
  171. data/lib/license_manager/models/machine_list.rb +206 -0
  172. data/lib/license_manager/models/pagination.rb +260 -0
  173. data/lib/license_manager/models/policy.rb +425 -0
  174. data/lib/license_manager/models/policy_duration.rb +104 -0
  175. data/lib/license_manager/models/policy_list.rb +206 -0
  176. data/lib/license_manager/models/policy_max_version.rb +104 -0
  177. data/lib/license_manager/models/policy_settings.rb +244 -0
  178. data/lib/license_manager/models/policy_settings_duration.rb +104 -0
  179. data/lib/license_manager/models/policy_settings_duration_any_of.rb +245 -0
  180. data/lib/license_manager/models/policy_settings_duration_any_of1.rb +246 -0
  181. data/lib/license_manager/models/policy_settings_max_version.rb +104 -0
  182. data/lib/license_manager/models/portal.rb +281 -0
  183. data/lib/license_manager/models/portal_link.rb +232 -0
  184. data/lib/license_manager/models/portal_not_found.rb +204 -0
  185. data/lib/license_manager/models/portal_settings.rb +304 -0
  186. data/lib/license_manager/models/price.rb +206 -0
  187. data/lib/license_manager/models/price_input.rb +224 -0
  188. data/lib/license_manager/models/product.rb +333 -0
  189. data/lib/license_manager/models/product_list.rb +206 -0
  190. data/lib/license_manager/models/product_stats.rb +682 -0
  191. data/lib/license_manager/models/product_stats_activations_by_version_inner.rb +193 -0
  192. data/lib/license_manager/models/product_stats_active_machines_by_platform_inner.rb +190 -0
  193. data/lib/license_manager/models/product_stats_active_machines_by_version_inner.rb +190 -0
  194. data/lib/license_manager/models/product_stats_new_licenses_by_policy_inner.rb +235 -0
  195. data/lib/license_manager/models/release.rb +308 -0
  196. data/lib/license_manager/models/release_list.rb +206 -0
  197. data/lib/license_manager/models/request_portal_link.rb +216 -0
  198. data/lib/license_manager/models/revenue.rb +401 -0
  199. data/lib/license_manager/models/send_license_keys.rb +198 -0
  200. data/lib/license_manager/models/send_portal_link.rb +187 -0
  201. data/lib/license_manager/models/signing_key.rb +282 -0
  202. data/lib/license_manager/models/stripe_integration.rb +276 -0
  203. data/lib/license_manager/models/stripe_permission.rb +253 -0
  204. data/lib/license_manager/models/stripe_price.rb +280 -0
  205. data/lib/license_manager/models/token.rb +274 -0
  206. data/lib/license_manager/models/update_customer.rb +215 -0
  207. data/lib/license_manager/models/update_integration_mapping.rb +186 -0
  208. data/lib/license_manager/models/update_license.rb +268 -0
  209. data/lib/license_manager/models/update_policy.rb +340 -0
  210. data/lib/license_manager/models/update_product.rb +246 -0
  211. data/lib/license_manager/models/update_product_portal.rb +274 -0
  212. data/lib/license_manager/models/update_release.rb +201 -0
  213. data/lib/license_manager/models/validate_key.rb +362 -0
  214. data/lib/license_manager/models/validate_key_error.rb +177 -0
  215. data/lib/license_manager/models/validate_key_error_error.rb +226 -0
  216. data/lib/license_manager/version.rb +15 -0
  217. data/lib/license_manager.rb +142 -0
  218. data/license_manager.gemspec +41 -0
  219. data/openapi.json +9825 -0
  220. data/spec/api/customers_api_spec.rb +102 -0
  221. data/spec/api/events_api_spec.rb +68 -0
  222. data/spec/api/integrations_api_spec.rb +134 -0
  223. data/spec/api/licenses_api_spec.rb +200 -0
  224. data/spec/api/machines_api_spec.rb +77 -0
  225. data/spec/api/policies_api_spec.rb +105 -0
  226. data/spec/api/portal_api_spec.rb +87 -0
  227. data/spec/api/products_api_spec.rb +148 -0
  228. data/spec/api/releases_api_spec.rb +105 -0
  229. data/spec/api/tokens_api_spec.rb +74 -0
  230. data/spec/models/connect_stripe_spec.rb +36 -0
  231. data/spec/models/create_customer_spec.rb +42 -0
  232. data/spec/models/create_integration_mapping_spec.rb +42 -0
  233. data/spec/models/create_license_spec.rb +90 -0
  234. data/spec/models/create_policy_spec.rb +72 -0
  235. data/spec/models/create_portal_link_spec.rb +36 -0
  236. data/spec/models/create_product_spec.rb +42 -0
  237. data/spec/models/create_product_with_policy_spec.rb +54 -0
  238. data/spec/models/create_release_spec.rb +42 -0
  239. data/spec/models/create_token_spec.rb +46 -0
  240. data/spec/models/customer_list_spec.rb +42 -0
  241. data/spec/models/customer_spec.rb +72 -0
  242. data/spec/models/error_error_issues_inner_path_inner_spec.rb +21 -0
  243. data/spec/models/error_error_issues_inner_spec.rb +42 -0
  244. data/spec/models/error_error_spec.rb +48 -0
  245. data/spec/models/error_spec.rb +36 -0
  246. data/spec/models/event_actor_one_of1_spec.rb +58 -0
  247. data/spec/models/event_actor_one_of2_spec.rb +56 -0
  248. data/spec/models/event_actor_one_of3_spec.rb +40 -0
  249. data/spec/models/event_actor_one_of4_spec.rb +56 -0
  250. data/spec/models/event_actor_one_of_spec.rb +64 -0
  251. data/spec/models/event_actor_spec.rb +32 -0
  252. data/spec/models/event_list_spec.rb +42 -0
  253. data/spec/models/event_machine_spec.rb +48 -0
  254. data/spec/models/event_spec.rb +84 -0
  255. data/spec/models/event_type_spec.rb +30 -0
  256. data/spec/models/fixed_max_version_spec.rb +46 -0
  257. data/spec/models/integration_mapping_spec.rb +100 -0
  258. data/spec/models/integration_spec.rb +100 -0
  259. data/spec/models/integration_status_spec.rb +30 -0
  260. data/spec/models/license_list_spec.rb +42 -0
  261. data/spec/models/license_max_version_input_spec.rb +48 -0
  262. data/spec/models/license_max_version_spec.rb +48 -0
  263. data/spec/models/license_spec.rb +132 -0
  264. data/spec/models/license_stats_activations_by_machine_inner_spec.rb +54 -0
  265. data/spec/models/license_stats_activations_by_version_inner_spec.rb +42 -0
  266. data/spec/models/license_stats_spec.rb +60 -0
  267. data/spec/models/license_status_spec.rb +30 -0
  268. data/spec/models/license_token_spec.rb +36 -0
  269. data/spec/models/list_policy_events_type_parameter_spec.rb +21 -0
  270. data/spec/models/list_stripe_prices200_response_spec.rb +36 -0
  271. data/spec/models/lock_max_version_major_after_one_of1_spec.rb +46 -0
  272. data/spec/models/lock_max_version_major_after_one_of_spec.rb +46 -0
  273. data/spec/models/lock_max_version_major_after_spec.rb +32 -0
  274. data/spec/models/lock_max_version_minor_after_spec.rb +21 -0
  275. data/spec/models/lock_max_version_spec.rb +52 -0
  276. data/spec/models/machine_list_spec.rb +42 -0
  277. data/spec/models/machine_spec.rb +94 -0
  278. data/spec/models/pagination_spec.rb +54 -0
  279. data/spec/models/policy_duration_spec.rb +21 -0
  280. data/spec/models/policy_list_spec.rb +42 -0
  281. data/spec/models/policy_max_version_spec.rb +21 -0
  282. data/spec/models/policy_settings_duration_any_of1_spec.rb +46 -0
  283. data/spec/models/policy_settings_duration_any_of_spec.rb +46 -0
  284. data/spec/models/policy_settings_duration_spec.rb +21 -0
  285. data/spec/models/policy_settings_max_version_spec.rb +21 -0
  286. data/spec/models/policy_settings_spec.rb +54 -0
  287. data/spec/models/policy_spec.rb +102 -0
  288. data/spec/models/portal_link_spec.rb +48 -0
  289. data/spec/models/portal_not_found_spec.rb +48 -0
  290. data/spec/models/portal_settings_spec.rb +60 -0
  291. data/spec/models/portal_spec.rb +72 -0
  292. data/spec/models/price_input_spec.rb +42 -0
  293. data/spec/models/price_spec.rb +42 -0
  294. data/spec/models/product_list_spec.rb +42 -0
  295. data/spec/models/product_spec.rb +78 -0
  296. data/spec/models/product_stats_activations_by_version_inner_spec.rb +42 -0
  297. data/spec/models/product_stats_active_machines_by_platform_inner_spec.rb +42 -0
  298. data/spec/models/product_stats_active_machines_by_version_inner_spec.rb +42 -0
  299. data/spec/models/product_stats_new_licenses_by_policy_inner_spec.rb +48 -0
  300. data/spec/models/product_stats_spec.rb +144 -0
  301. data/spec/models/release_list_spec.rb +42 -0
  302. data/spec/models/release_spec.rb +66 -0
  303. data/spec/models/request_portal_link_spec.rb +42 -0
  304. data/spec/models/revenue_spec.rb +84 -0
  305. data/spec/models/send_license_keys_spec.rb +36 -0
  306. data/spec/models/send_portal_link_spec.rb +36 -0
  307. data/spec/models/signing_key_spec.rb +58 -0
  308. data/spec/models/stripe_integration_spec.rb +60 -0
  309. data/spec/models/stripe_permission_spec.rb +52 -0
  310. data/spec/models/stripe_price_spec.rb +66 -0
  311. data/spec/models/token_spec.rb +62 -0
  312. data/spec/models/update_customer_spec.rb +42 -0
  313. data/spec/models/update_integration_mapping_spec.rb +36 -0
  314. data/spec/models/update_license_spec.rb +66 -0
  315. data/spec/models/update_policy_spec.rb +72 -0
  316. data/spec/models/update_product_portal_spec.rb +60 -0
  317. data/spec/models/update_product_spec.rb +48 -0
  318. data/spec/models/update_release_spec.rb +42 -0
  319. data/spec/models/validate_key_error_error_spec.rb +54 -0
  320. data/spec/models/validate_key_error_spec.rb +36 -0
  321. data/spec/models/validate_key_spec.rb +60 -0
  322. data/spec/spec_helper.rb +111 -0
  323. metadata +532 -0
data/docs/PortalApi.md ADDED
@@ -0,0 +1,289 @@
1
+ # LicenseManager::PortalApi
2
+
3
+ All URIs are relative to *https://api.licensemanager.dev*
4
+
5
+ | Method | HTTP request | Description |
6
+ | ------ | ------------ | ----------- |
7
+ | [**create_portal_link**](PortalApi.md#create_portal_link) | **POST** /v1/customers/{id}/portal-links | Create a link to the customer portal |
8
+ | [**get_portal**](PortalApi.md#get_portal) | **GET** /v1/portal/{productId} | Get the customer portal of a product |
9
+ | [**request_portal_link**](PortalApi.md#request_portal_link) | **POST** /v1/portal/{productId}/request-link | Email a link to the customer portal |
10
+ | [**send_portal_link**](PortalApi.md#send_portal_link) | **POST** /v1/customers/{id}/portal-links/send | Email a link to the customer portal to the customer |
11
+
12
+
13
+ ## create_portal_link
14
+
15
+ > <PortalLink> create_portal_link(id, create_portal_link)
16
+
17
+ Create a link to the customer portal
18
+
19
+ Link letting the customer see their licenses and deactivate their machines in the customer portal, without signing in. Anyone with the link can, until it expires or the customer is deleted: it can't be revoked otherwise. The token also works with the API endpoints that accept customer tokens. Links can be created while the product's customer portal is disabled, but the portal answers `404` until it's enabled, and `sendPortalLink` refuses to email them. **Required role permission**: `portalLink:create` when called with a session, granted by the member's role. API keys aren't limited by roles.
20
+
21
+ ### Examples
22
+
23
+ ```ruby
24
+ require 'time'
25
+ require 'license_manager'
26
+ # setup authorization
27
+ LicenseManager.configure do |config|
28
+ # Configure API key authorization: apiKey
29
+ config.api_key['x-api-key'] = 'YOUR API KEY'
30
+ # Uncomment the following line to set a prefix for the API key, e.g. 'Bearer' (defaults to nil)
31
+ # config.api_key_prefix['x-api-key'] = 'Bearer'
32
+ end
33
+
34
+ api_instance = LicenseManager::PortalApi.new
35
+ id = 'c9Wd3RtE' # String |
36
+ create_portal_link = LicenseManager::CreatePortalLink.new({expires_in_seconds: 604800}) # CreatePortalLink |
37
+
38
+ begin
39
+ # Create a link to the customer portal
40
+ result = api_instance.create_portal_link(id, create_portal_link)
41
+ p result
42
+ rescue LicenseManager::ApiError => e
43
+ puts "Error when calling PortalApi->create_portal_link: #{e}"
44
+ end
45
+ ```
46
+
47
+ #### Using the create_portal_link_with_http_info variant
48
+
49
+ This returns an Array which contains the response data, status code and headers.
50
+
51
+ > <Array(<PortalLink>, Integer, Hash)> create_portal_link_with_http_info(id, create_portal_link)
52
+
53
+ ```ruby
54
+ begin
55
+ # Create a link to the customer portal
56
+ data, status_code, headers = api_instance.create_portal_link_with_http_info(id, create_portal_link)
57
+ p status_code # => 2xx
58
+ p headers # => { ... }
59
+ p data # => <PortalLink>
60
+ rescue LicenseManager::ApiError => e
61
+ puts "Error when calling PortalApi->create_portal_link_with_http_info: #{e}"
62
+ end
63
+ ```
64
+
65
+ ### Parameters
66
+
67
+ | Name | Type | Description | Notes |
68
+ | ---- | ---- | ----------- | ----- |
69
+ | **id** | **String** | | |
70
+ | **create_portal_link** | [**CreatePortalLink**](CreatePortalLink.md) | | |
71
+
72
+ ### Return type
73
+
74
+ [**PortalLink**](PortalLink.md)
75
+
76
+ ### Authorization
77
+
78
+ [apiKey](../README.md#apiKey)
79
+
80
+ ### HTTP request headers
81
+
82
+ - **Content-Type**: application/json
83
+ - **Accept**: application/json
84
+
85
+
86
+ ## get_portal
87
+
88
+ > <Portal> get_portal(product_id, opts)
89
+
90
+ Get the customer portal of a product
91
+
92
+ Names of the product and of its organization, colors of the customer portal, and link back to the product's website. Answers `404` when the product's customer portal is disabled: with the `portal_disabled` code and the slugs of the product and its organization when signed in as a member of the organization, so they can enable it. Doesn't need authentication.
93
+
94
+ ### Examples
95
+
96
+ ```ruby
97
+ require 'time'
98
+ require 'license_manager'
99
+
100
+ api_instance = LicenseManager::PortalApi.new
101
+ product_id = 'x7Kp2QaZ' # String |
102
+ opts = {
103
+ return_url: 'https://example.com/account' # String | Link back to your website to show, used when its domain is one of the product's `returnDomains`.
104
+ }
105
+
106
+ begin
107
+ # Get the customer portal of a product
108
+ result = api_instance.get_portal(product_id, opts)
109
+ p result
110
+ rescue LicenseManager::ApiError => e
111
+ puts "Error when calling PortalApi->get_portal: #{e}"
112
+ end
113
+ ```
114
+
115
+ #### Using the get_portal_with_http_info variant
116
+
117
+ This returns an Array which contains the response data, status code and headers.
118
+
119
+ > <Array(<Portal>, Integer, Hash)> get_portal_with_http_info(product_id, opts)
120
+
121
+ ```ruby
122
+ begin
123
+ # Get the customer portal of a product
124
+ data, status_code, headers = api_instance.get_portal_with_http_info(product_id, opts)
125
+ p status_code # => 2xx
126
+ p headers # => { ... }
127
+ p data # => <Portal>
128
+ rescue LicenseManager::ApiError => e
129
+ puts "Error when calling PortalApi->get_portal_with_http_info: #{e}"
130
+ end
131
+ ```
132
+
133
+ ### Parameters
134
+
135
+ | Name | Type | Description | Notes |
136
+ | ---- | ---- | ----------- | ----- |
137
+ | **product_id** | **String** | | |
138
+ | **return_url** | **String** | Link back to your website to show, used when its domain is one of the product&#39;s &#x60;returnDomains&#x60;. | [optional] |
139
+
140
+ ### Return type
141
+
142
+ [**Portal**](Portal.md)
143
+
144
+ ### Authorization
145
+
146
+ No authorization required
147
+
148
+ ### HTTP request headers
149
+
150
+ - **Content-Type**: Not defined
151
+ - **Accept**: application/json
152
+
153
+
154
+ ## request_portal_link
155
+
156
+ > request_portal_link(product_id, request_portal_link)
157
+
158
+ Email a link to the customer portal
159
+
160
+ Emails the customer of the product with this email a link to the customer portal, working for 1 hour. Answers `404` when the product's customer portal is disabled. Answers the same whether the customer exists or not, so the API doesn't tell which emails are customers. Test products only email the members of the organization: the link isn't sent to other customers, with the same answer. Doesn't need authentication.
161
+
162
+ ### Examples
163
+
164
+ ```ruby
165
+ require 'time'
166
+ require 'license_manager'
167
+
168
+ api_instance = LicenseManager::PortalApi.new
169
+ product_id = 'x7Kp2QaZ' # String |
170
+ request_portal_link = LicenseManager::RequestPortalLink.new({email: 'jane@example.com'}) # RequestPortalLink |
171
+
172
+ begin
173
+ # Email a link to the customer portal
174
+ api_instance.request_portal_link(product_id, request_portal_link)
175
+ rescue LicenseManager::ApiError => e
176
+ puts "Error when calling PortalApi->request_portal_link: #{e}"
177
+ end
178
+ ```
179
+
180
+ #### Using the request_portal_link_with_http_info variant
181
+
182
+ This returns an Array which contains the response data (`nil` in this case), status code and headers.
183
+
184
+ > <Array(nil, Integer, Hash)> request_portal_link_with_http_info(product_id, request_portal_link)
185
+
186
+ ```ruby
187
+ begin
188
+ # Email a link to the customer portal
189
+ data, status_code, headers = api_instance.request_portal_link_with_http_info(product_id, request_portal_link)
190
+ p status_code # => 2xx
191
+ p headers # => { ... }
192
+ p data # => nil
193
+ rescue LicenseManager::ApiError => e
194
+ puts "Error when calling PortalApi->request_portal_link_with_http_info: #{e}"
195
+ end
196
+ ```
197
+
198
+ ### Parameters
199
+
200
+ | Name | Type | Description | Notes |
201
+ | ---- | ---- | ----------- | ----- |
202
+ | **product_id** | **String** | | |
203
+ | **request_portal_link** | [**RequestPortalLink**](RequestPortalLink.md) | | |
204
+
205
+ ### Return type
206
+
207
+ nil (empty response body)
208
+
209
+ ### Authorization
210
+
211
+ No authorization required
212
+
213
+ ### HTTP request headers
214
+
215
+ - **Content-Type**: application/json
216
+ - **Accept**: application/json
217
+
218
+
219
+ ## send_portal_link
220
+
221
+ > send_portal_link(id, send_portal_link)
222
+
223
+ Email a link to the customer portal to the customer
224
+
225
+ Emails a link created with `createPortalLink` to the customer's email. Fails while the product's customer portal is disabled, and, in test products, when the customer's email isn't a member's of the organization: test products only email members, so testing never emails real customers. **Required role permission**: `portalLink:create` when called with a session, granted by the member's role. API keys aren't limited by roles.
226
+
227
+ ### Examples
228
+
229
+ ```ruby
230
+ require 'time'
231
+ require 'license_manager'
232
+ # setup authorization
233
+ LicenseManager.configure do |config|
234
+ # Configure API key authorization: apiKey
235
+ config.api_key['x-api-key'] = 'YOUR API KEY'
236
+ # Uncomment the following line to set a prefix for the API key, e.g. 'Bearer' (defaults to nil)
237
+ # config.api_key_prefix['x-api-key'] = 'Bearer'
238
+ end
239
+
240
+ api_instance = LicenseManager::PortalApi.new
241
+ id = 'c9Wd3RtE' # String |
242
+ send_portal_link = LicenseManager::SendPortalLink.new({token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…'}) # SendPortalLink |
243
+
244
+ begin
245
+ # Email a link to the customer portal to the customer
246
+ api_instance.send_portal_link(id, send_portal_link)
247
+ rescue LicenseManager::ApiError => e
248
+ puts "Error when calling PortalApi->send_portal_link: #{e}"
249
+ end
250
+ ```
251
+
252
+ #### Using the send_portal_link_with_http_info variant
253
+
254
+ This returns an Array which contains the response data (`nil` in this case), status code and headers.
255
+
256
+ > <Array(nil, Integer, Hash)> send_portal_link_with_http_info(id, send_portal_link)
257
+
258
+ ```ruby
259
+ begin
260
+ # Email a link to the customer portal to the customer
261
+ data, status_code, headers = api_instance.send_portal_link_with_http_info(id, send_portal_link)
262
+ p status_code # => 2xx
263
+ p headers # => { ... }
264
+ p data # => nil
265
+ rescue LicenseManager::ApiError => e
266
+ puts "Error when calling PortalApi->send_portal_link_with_http_info: #{e}"
267
+ end
268
+ ```
269
+
270
+ ### Parameters
271
+
272
+ | Name | Type | Description | Notes |
273
+ | ---- | ---- | ----------- | ----- |
274
+ | **id** | **String** | | |
275
+ | **send_portal_link** | [**SendPortalLink**](SendPortalLink.md) | | |
276
+
277
+ ### Return type
278
+
279
+ nil (empty response body)
280
+
281
+ ### Authorization
282
+
283
+ [apiKey](../README.md#apiKey)
284
+
285
+ ### HTTP request headers
286
+
287
+ - **Content-Type**: application/json
288
+ - **Accept**: application/json
289
+
@@ -0,0 +1,22 @@
1
+ # LicenseManager::PortalLink
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **url** | **String** | Link to the customer portal, holding the token. | |
8
+ | **token** | **String** | Customer token in the link, with the &#x60;customer:read&#x60;, &#x60;license:read&#x60; and &#x60;machine:write&#x60; permissions. | |
9
+ | **expires_at** | **Time** | When the link stops working. | |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'license_manager'
15
+
16
+ instance = LicenseManager::PortalLink.new(
17
+ url: https://app.example.com/portal/x7Kp2QaZ?token&#x3D;eyJhbGciOi…,
18
+ token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…,
19
+ expires_at: 2026-01-22T09:30:00.000Z
20
+ )
21
+ ```
22
+
@@ -0,0 +1,22 @@
1
+ # LicenseManager::PortalNotFound
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **error** | [**ErrorError**](ErrorError.md) | | |
8
+ | **organization_slug** | **String** | Slug of the product&#39;s organization. Present on &#x60;portal_disabled&#x60; errors. | [optional] |
9
+ | **product_slug** | **String** | Slug of the product. Present on &#x60;portal_disabled&#x60; errors. | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'license_manager'
15
+
16
+ instance = LicenseManager::PortalNotFound.new(
17
+ error: null,
18
+ organization_slug: acme,
19
+ product_slug: acme-pro
20
+ )
21
+ ```
22
+
@@ -0,0 +1,26 @@
1
+ # LicenseManager::PortalSettings
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **enabled** | **Boolean** | Whether customers can use the customer portal. When disabled, it answers &#x60;404&#x60;. | |
8
+ | **brand_color** | **String** | Background of the portal&#39;s side panel, as &#x60;#rrggbb&#x60;, stored lower cased. &#x60;null&#x60; for the default color. | |
9
+ | **accent_color** | **String** | Color of the portal&#39;s inputs and buttons, as &#x60;#rrggbb&#x60;, stored lower cased. &#x60;null&#x60; for the default color. | |
10
+ | **return_url** | **String** | Link back to your website shown in the portal, when the portal&#39;s URL has no allowed &#x60;return_url&#x60;. &#x60;null&#x60; for no link. | |
11
+ | **return_domains** | **Array&lt;String&gt;** | Domains the portal&#39;s &#x60;return_url&#x60; query parameter may point to, their subdomains included. Other return URLs are ignored, in favor of &#x60;returnUrl&#x60;. | |
12
+
13
+ ## Example
14
+
15
+ ```ruby
16
+ require 'license_manager'
17
+
18
+ instance = LicenseManager::PortalSettings.new(
19
+ enabled: true,
20
+ brand_color: #1e3a8a,
21
+ accent_color: #2563eb,
22
+ return_url: https://example.com/account,
23
+ return_domains: [example.com]
24
+ )
25
+ ```
26
+
data/docs/Price.md ADDED
@@ -0,0 +1,20 @@
1
+ # LicenseManager::Price
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **amount** | **Float** | Amount in major units of the currency: &#x60;49.99&#x60; for $49.99, &#x60;5000&#x60; for ¥5,000. &#x60;0&#x60; for a free license. | |
8
+ | **currency** | **String** | ISO 4217 code of the currency, in upper case. | |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'license_manager'
14
+
15
+ instance = LicenseManager::Price.new(
16
+ amount: 49.99,
17
+ currency: USD
18
+ )
19
+ ```
20
+
@@ -0,0 +1,20 @@
1
+ # LicenseManager::PriceInput
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **amount** | **Float** | Amount in major units of the currency: &#x60;49.99&#x60; for $49.99, &#x60;5000&#x60; for ¥5,000. &#x60;0&#x60; for a free license. At most as many decimals as the currency&#39;s minor unit: 2 for USD, 0 for JPY. | |
8
+ | **currency** | **String** | ISO 4217 code of the currency, in upper case. | |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'license_manager'
14
+
15
+ instance = LicenseManager::PriceInput.new(
16
+ amount: 49.99,
17
+ currency: USD
18
+ )
19
+ ```
20
+
data/docs/Product.md ADDED
@@ -0,0 +1,32 @@
1
+ # LicenseManager::Product
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **id** | **String** | | |
8
+ | **slug** | **String** | | |
9
+ | **name** | **String** | | |
10
+ | **is_test_from_product_id** | **String** | For test products, id of the live product they&#39;re a sandbox of. &#x60;null&#x60; for live products. | |
11
+ | **logo_url** | **String** | Public URL of the product&#39;s logo, shown in the web app and the customer portal. &#x60;null&#x60; without a logo. | |
12
+ | **portal** | [**PortalSettings**](PortalSettings.md) | | |
13
+ | **created_at** | **Time** | | |
14
+ | **updated_at** | **Time** | | |
15
+
16
+ ## Example
17
+
18
+ ```ruby
19
+ require 'license_manager'
20
+
21
+ instance = LicenseManager::Product.new(
22
+ id: x7Kp2QaZ,
23
+ slug: acme-pro,
24
+ name: Acme Pro,
25
+ is_test_from_product_id: null,
26
+ logo_url: https://cdn.example.com/logos/x7Kp2QaZ/k3f9a2LpQ7xw.webp,
27
+ portal: null,
28
+ created_at: 2026-01-15T09:30:00.000Z,
29
+ updated_at: 2026-01-15T09:30:00.000Z
30
+ )
31
+ ```
32
+
@@ -0,0 +1,20 @@
1
+ # LicenseManager::ProductList
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **data** | [**Array&lt;Product&gt;**](Product.md) | Items of the page, in the requested order. Empty past the last page. | |
8
+ | **pagination** | [**Pagination**](Pagination.md) | | |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'license_manager'
14
+
15
+ instance = LicenseManager::ProductList.new(
16
+ data: null,
17
+ pagination: null
18
+ )
19
+ ```
20
+
@@ -0,0 +1,54 @@
1
+ # LicenseManager::ProductStats
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **license_count** | **Integer** | Number of licenses of the product. | |
8
+ | **active_license_count** | **Integer** | Number of licenses that haven&#39;t expired, and that a machine validated in the last 90 days. | |
9
+ | **new_license_count** | **Integer** | Number of licenses created in the last 30 days, today included, in UTC. | |
10
+ | **expiring_license_count** | **Integer** | Number of licenses expiring in the next 30 days. | |
11
+ | **expired_license_count** | **Integer** | Number of licenses that expired in the last 30 days. | |
12
+ | **active_machine_count** | **Integer** | Number of active machines of the licenses of the product. | |
13
+ | **in_use_license_count** | **Integer** | Number of licenses with at least one active machine. | |
14
+ | **seat_count** | **Integer** | Sum of the maximum numbers of machines of the licenses that haven&#39;t expired. Licenses without a maximum are left out. | |
15
+ | **used_seat_count** | **Integer** | Number of active machines of the licenses counted in &#x60;seatCount&#x60;, at most their maximum number of machines each. | |
16
+ | **full_license_count** | **Integer** | Number of licenses counted in &#x60;seatCount&#x60; active on their maximum number of machines. | |
17
+ | **days** | **Array&lt;Date&gt;** | The 30 days covered by the daily stats, from the oldest one, in UTC. | |
18
+ | **months** | **Array&lt;String&gt;** | The 12 months covered by the monthly stats, from the oldest one, in UTC. | |
19
+ | **new_licenses_by_day** | **Array&lt;Integer&gt;** | Number of licenses created each day, aligned on &#x60;days&#x60;. | |
20
+ | **new_licenses_by_month** | **Array&lt;Integer&gt;** | Number of licenses created each month, aligned on &#x60;months&#x60;. | |
21
+ | **new_licenses_by_policy** | [**Array&lt;ProductStatsNewLicensesByPolicyInner&gt;**](ProductStatsNewLicensesByPolicyInner.md) | Number of licenses of each policy created each day and each month, for the policies with licenses created over the covered months. | |
22
+ | **revenue** | [**Array&lt;Revenue&gt;**](Revenue.md) | Revenue in each currency licenses were sold in, from the one with the most licenses sold. Amounts aren&#39;t converted between currencies. | |
23
+ | **activations_by_version** | [**Array&lt;ProductStatsActivationsByVersionInner&gt;**](ProductStatsActivationsByVersionInner.md) | Successful activations of the licenses of the product each day, per version of the application, from the most recent one. | |
24
+ | **active_machines_by_version** | [**Array&lt;ProductStatsActiveMachinesByVersionInner&gt;**](ProductStatsActiveMachinesByVersionInner.md) | Number of active machines running each version of the application, from the most recent one. | |
25
+ | **active_machines_by_platform** | [**Array&lt;ProductStatsActiveMachinesByPlatformInner&gt;**](ProductStatsActiveMachinesByPlatformInner.md) | Number of active machines on each platform, from the one with the most machines. | |
26
+
27
+ ## Example
28
+
29
+ ```ruby
30
+ require 'license_manager'
31
+
32
+ instance = LicenseManager::ProductStats.new(
33
+ license_count: 120,
34
+ active_license_count: 87,
35
+ new_license_count: 14,
36
+ expiring_license_count: 3,
37
+ expired_license_count: 2,
38
+ active_machine_count: 154,
39
+ in_use_license_count: 80,
40
+ seat_count: 200,
41
+ used_seat_count: 130,
42
+ full_license_count: 12,
43
+ days: null,
44
+ months: null,
45
+ new_licenses_by_day: [0, 2, 1],
46
+ new_licenses_by_month: [4, 9, 12],
47
+ new_licenses_by_policy: null,
48
+ revenue: null,
49
+ activations_by_version: null,
50
+ active_machines_by_version: null,
51
+ active_machines_by_platform: null
52
+ )
53
+ ```
54
+
@@ -0,0 +1,20 @@
1
+ # LicenseManager::ProductStatsActivationsByVersionInner
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **version** | **String** | &#x60;null&#x60; for the activations that didn&#39;t send a version. | |
8
+ | **counts** | **Array&lt;Integer&gt;** | Number of successful activations each day, aligned on &#x60;days&#x60;. | |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'license_manager'
14
+
15
+ instance = LicenseManager::ProductStatsActivationsByVersionInner.new(
16
+ version: 1.10.0,
17
+ counts: [0, 3, 1]
18
+ )
19
+ ```
20
+
@@ -0,0 +1,20 @@
1
+ # LicenseManager::ProductStatsActiveMachinesByPlatformInner
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **platform** | **String** | &#x60;null&#x60; for the machines that didn&#39;t send a platform. | |
8
+ | **count** | **Integer** | | |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'license_manager'
14
+
15
+ instance = LicenseManager::ProductStatsActiveMachinesByPlatformInner.new(
16
+ platform: macOS,
17
+ count: 42
18
+ )
19
+ ```
20
+
@@ -0,0 +1,20 @@
1
+ # LicenseManager::ProductStatsActiveMachinesByVersionInner
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **version** | **String** | &#x60;null&#x60; for the machines that didn&#39;t send a version. | |
8
+ | **count** | **Integer** | | |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'license_manager'
14
+
15
+ instance = LicenseManager::ProductStatsActiveMachinesByVersionInner.new(
16
+ version: 1.10.0,
17
+ count: 42
18
+ )
19
+ ```
20
+
@@ -0,0 +1,22 @@
1
+ # LicenseManager::ProductStatsNewLicensesByPolicyInner
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **policy_id** | **String** | | |
8
+ | **by_day** | **Array&lt;Float&gt;** | Value each day, aligned on &#x60;days&#x60;. | |
9
+ | **by_month** | **Array&lt;Float&gt;** | Value each month, aligned on &#x60;months&#x60;. | |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'license_manager'
15
+
16
+ instance = LicenseManager::ProductStatsNewLicensesByPolicyInner.new(
17
+ policy_id: p4Rt8LmQ,
18
+ by_day: [0, 2, 1],
19
+ by_month: [4, 9, 12]
20
+ )
21
+ ```
22
+